From 79604819c3574f56ecb58ff70cde5da46c01ba91 Mon Sep 17 00:00:00 2001 From: Matthew Berry Date: Wed, 24 Sep 2025 18:29:53 +0000 Subject: [PATCH 01/57] test(compiler): fix a @keyframes style encapsulation test (#64036) I've updated the test to assert what I believe it was trying to assert before. Without this change, the CSS is invalid so it's unclear what behavior we're demonstrating. PR Close #64036 --- packages/compiler/test/shadow_css/keyframes_spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/compiler/test/shadow_css/keyframes_spec.ts b/packages/compiler/test/shadow_css/keyframes_spec.ts index ed927886726..7624fc617c0 100644 --- a/packages/compiler/test/shadow_css/keyframes_spec.ts +++ b/packages/compiler/test/shadow_css/keyframes_spec.ts @@ -467,7 +467,7 @@ describe('ShadowCss, keyframes and animations', () => { @keyframes foo {} @keyframes 'fo\\'o' {} - @keyframes 'foo'' {} + @keyframes 'foo\\'' {} @keyframes 'foo\\\\' {} @keyframes "bar" {} @keyframes 'ba\\'r' {} @@ -476,7 +476,7 @@ describe('ShadowCss, keyframes and animations', () => { const result = shim(css, 'host-a'); expect(result).toContain('@keyframes host-a_foo {}'); expect(result).toContain("@keyframes 'host-a_fo\\'o' {}"); - expect(result).toContain("@keyframes 'host-a_foo'' {}"); + expect(result).toContain("@keyframes 'host-a_foo\\'' {}"); expect(result).toContain("@keyframes 'host-a_foo\\\\' {}"); expect(result).toContain('@keyframes "host-a_bar" {}'); expect(result).toContain("@keyframes 'host-a_ba\\'r' {}"); From 3658f211f81aa81d319d57f8ecd2ff7c5a85f422 Mon Sep 17 00:00:00 2001 From: Matthieu Riegler Date: Fri, 26 Sep 2025 17:53:32 +0200 Subject: [PATCH 02/57] docs: update banner with AI RFC (#64107) PR Close #64107 --- adev/src/app/features/home/home.component.html | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/adev/src/app/features/home/home.component.html b/adev/src/app/features/home/home.component.html index 5267f2917b4..93c5b9502a0 100644 --- a/adev/src/app/features/home/home.component.html +++ b/adev/src/app/features/home/home.component.html @@ -1,9 +1,13 @@
From fdb2a95929b26d0323e6ccdb86779b63f73ca951 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 9 Oct 2025 10:58:41 +0000 Subject: [PATCH 03/57] build: update bazel dependencies (#64196) See associated pull request for more information. PR Close #64196 --- MODULE.bazel | 6 ++--- MODULE.bazel.lock | 59 +++++++++++++++++++++++------------------------ 2 files changed, 32 insertions(+), 33 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 1990c55a3d0..85f9e7b1275 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -13,7 +13,7 @@ bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") bazel_dep(name = "aspect_rules_rollup", version = "2.0.1") bazel_dep(name = "bazel_skylib", version = "1.8.2") bazel_dep(name = "aspect_bazel_lib", version = "2.21.2") -bazel_dep(name = "tar.bzl", version = "0.5.6") +bazel_dep(name = "tar.bzl", version = "0.6.0") bazel_dep(name = "yq.bzl", version = "0.3.1") bazel_dep(name = "rules_angular") git_override( @@ -32,14 +32,14 @@ git_override( bazel_dep(name = "rules_sass") git_override( module_name = "rules_sass", - commit = "4a54e0e4e75fc6456ff874e53fb4a78bdfeb44b9", + commit = "1184a80751a21af8348f308abc5b38a41f26850e", remote = "https://github.com/devversion/rules_sass.git", ) bazel_dep(name = "rules_browsers") git_override( module_name = "rules_browsers", - commit = "6749ba4c0dc5e04536369fa91fdb2d827b6705ff", + commit = "0e04a5443e783ef983c84314e311e68410dd82e1", remote = "https://github.com/devversion/rules_browsers.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 1bab56a7ccb..9041fb76dee 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -187,7 +187,6 @@ "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", "https://bcr.bazel.build/modules/tar.bzl/0.2.1/MODULE.bazel": "52d1c00a80a8cc67acbd01649e83d8dd6a9dc426a6c0b754a04fe8c219c76468", "https://bcr.bazel.build/modules/tar.bzl/0.5.1/MODULE.bazel": "7c2eb3dcfc53b0f3d6f9acdfd911ca803eaf92aadf54f8ca6e4c1f3aee288351", - "https://bcr.bazel.build/modules/tar.bzl/0.5.6/MODULE.bazel": "c5b8bfa6bc7b640883d41bfec4a200fb45c16a2a7b2fb081323f499197cfcc09", "https://bcr.bazel.build/modules/tar.bzl/0.6.0/MODULE.bazel": "a3584b4edcfafcabd9b0ef9819808f05b372957bbdff41601429d5fd0aac2e7c", "https://bcr.bazel.build/modules/tar.bzl/0.6.0/source.json": "4a620381df075a16cb3a7ed57bd1d05f7480222394c64a20fa51bdb636fda658", "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", @@ -551,9 +550,9 @@ "@@aspect_rules_ts~//ts:extensions.bzl%ext": { "general": { "bzlTransitiveDigest": "9IJp6IlB/FMHFBJe4MX/DQM4zi3oArC8yqYE/+NyPwk=", - "usagesDigest": "abj7r4KPInRGXFmdtxnPZLdCW2ZiYfw9PFtrOzvZBos=", + "usagesDigest": "t6Zw3rR7pEOIJeK1XJrArtC+rVXzgwUM7ejo8WEMlVc=", "recordedFileInputs": { - "@@rules_browsers~//package.json": "45572077938c7a4916e4aaedf7db7ce8425854ab92f35348cff02a2134023bb8" + "@@rules_browsers~//package.json": "84dc1ba9b1c667a25894e97218bd8f247d54f24bb694efb397a881be3c06a4c5" }, "recordedDirentsInputs": {}, "envVariables": {}, @@ -723,8 +722,8 @@ }, "@@rules_browsers~//browsers:extensions.bzl%browsers": { "general": { - "bzlTransitiveDigest": "ep2OrXzFai22oPOQwhS3aeTWxT9Jn6Us7ws4lRa4bU8=", - "usagesDigest": "78aLbl2cYObLkrJFomb3ZkfFUiUFbqzqZK8lnW+Y7Uk=", + "bzlTransitiveDigest": "wG3lfivSBp6/w6pp9XxmrFKs0j4BJ1G7oDv4DpFa62g=", + "usagesDigest": "1PlExi+b77pSr2tAxFCVbpCtFoA7oixHabaL3dmas4Y=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -733,9 +732,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "14086c6c0844122d4066a5e3a846b963259648945d7fb6c51b520f2105edd597", + "sha256": "79a3a4d3a5f9efae04dbb7c2164393ff8fee5f352ec73e36900848c75f4f906f", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/linux64/chrome-headless-shell-linux64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/linux64/chrome-headless-shell-linux64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-linux64/chrome-headless-shell" @@ -752,9 +751,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "fa2ff20c870e289511cdde481d069f167e403d289b91b1d9d063dd7b2f77ed6e", + "sha256": "cdba96e69a423adc1f2647f35643a10e33260b4dfcc233977f3724f28bffd8f2", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/mac-x64/chrome-headless-shell-mac-x64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/mac-x64/chrome-headless-shell-mac-x64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-mac-x64/chrome-headless-shell" @@ -771,9 +770,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "cbb938bd24ed648280e3654592c46f7eb8e2e184ca331f2138816bd59fcaed32", + "sha256": "56eb0c57958b50dc6c0de810ea9fcf1ff800baf2a4b14ae0fea536e633806098", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/mac-arm64/chrome-headless-shell-mac-arm64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-mac-arm64/chrome-headless-shell" @@ -790,9 +789,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "68bf73ab78647e697bf7b81e8329f23c1331d8792af6e2ab66553aeb9ede9cd3", + "sha256": "506b23250323f3eb4cdfe298cfd599571e428f6f3a64e86818ee975f4e585b75", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/win64/chrome-headless-shell-win64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/win64/chrome-headless-shell-win64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-win64/chrome-headless-shell.exe" @@ -809,9 +808,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "ec29104132a6ff1ae5f2ffe7b27b7ff675a58ab9b1ef616badcbdd35577b31b3", + "sha256": "8bf018ed7c383dfd4a4a8f26702265e58b053e71583c4b7a6f8a3eaa6e9b9e6f", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/linux64/chromedriver-linux64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/linux64/chromedriver-linux64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-linux64/chromedriver" @@ -826,9 +825,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "2b9787f5f758c9f3e3888ac23270f8de47b168679718a4440bd1cea2b3cc57e9", + "sha256": "4eb9cc848823444374bf2d3d388eaa949cee92114a611ce850024bf6b91352d1", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/mac-x64/chromedriver-mac-x64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/mac-x64/chromedriver-mac-x64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-mac-x64/chromedriver" @@ -843,9 +842,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "6da850508d250c00c10b09dcac00c97a58d51346047972c2c47d3e3b850d4662", + "sha256": "13f142a6c53f38d26552ee21a874e3d11497bf6fb580b79a6b6b4b042875bef6", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/mac-arm64/chromedriver-mac-arm64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/mac-arm64/chromedriver-mac-arm64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-mac-arm64/chromedriver" @@ -860,9 +859,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "d4af3e6c8f3a7ceb50ff298e43ff07efcad46c1d6ceb0d894eeb2d593db7e522", + "sha256": "65c25dfbe56801d342ae027f365194d0d5b31602ec94e644fe21b6edb876904a", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/win64/chromedriver-win64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/win64/chromedriver-win64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-win64/chromedriver.exe" @@ -877,9 +876,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "6fcc1a2f95a6b232af82b4b7644566638c5df349e3095c65b7c18d1a63412d3d", + "sha256": "1c87a9de21941a15177384d4820a6aa3c7dacb38d34089c73a621734ebf1ea9a", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/135.0/linux-x86_64/en-US/firefox-135.0.tar.xz" + "https://archive.mozilla.org/pub/firefox/releases/143.0/linux-x86_64/en-US/firefox-143.0.tar.xz" ], "named_files": { "FIREFOX": "firefox/firefox" @@ -894,9 +893,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "e55e24e6b2a4980f4b9091900835977b282f599dcdd5e38b753d95bad8a11da9", + "sha256": "a5c570e277021b61df1295efe77446617ebd768d8ad36a20b309aa382685f6f2", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/135.0/mac/en-US/Firefox%20135.0.dmg" + "https://archive.mozilla.org/pub/firefox/releases/143.0/mac/en-US/Firefox%20143.0.dmg" ], "named_files": { "FIREFOX": "Firefox.app/Contents/MacOS/firefox" @@ -911,9 +910,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "e55e24e6b2a4980f4b9091900835977b282f599dcdd5e38b753d95bad8a11da9", + "sha256": "a5c570e277021b61df1295efe77446617ebd768d8ad36a20b309aa382685f6f2", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/135.0/mac/en-US/Firefox%20135.0.dmg" + "https://archive.mozilla.org/pub/firefox/releases/143.0/mac/en-US/Firefox%20143.0.dmg" ], "named_files": { "FIREFOX": "Firefox.app/Contents/MacOS/firefox" @@ -928,9 +927,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "f46d3cb68caa4d4366b942c225d256e0fc15a189263cd9efe29eff0dbfe02685", + "sha256": "fbbadc9a6881aa90d266b572304a75e8814b91817a1db7fc01015d667f60318d", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/135.0/win64/en-US/Firefox%20Setup%20135.0.exe" + "https://archive.mozilla.org/pub/firefox/releases/143.0/win64/en-US/Firefox%20Setup%20143.0.exe" ], "named_files": { "FIREFOX": "core/firefox.exe" @@ -1131,7 +1130,7 @@ "@@rules_nodejs~//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "FmfMiNXAxRoLWw3NloQbssosE1egrSvzirbQnso7j7E=", - "usagesDigest": "xHkFztDWYtKJ37XnwOK4sKovvRwpnGtzZns6k+dDdyI=", + "usagesDigest": "qZI2qtKx1RA9pNdiXijZLgoCMOz6kBMns0I2zUYsSzY=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, From 5baaf979dbd4e505c6fcbb5a75fa7df93c21dcac Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Wed, 8 Oct 2025 21:47:12 -0500 Subject: [PATCH 04/57] docs: Replace ngIf programmatic rendering to control flow (#64301) PR Close #64301 --- .../components/programmatic-rendering.md | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/adev/src/content/guide/components/programmatic-rendering.md b/adev/src/content/guide/components/programmatic-rendering.md index 678d49dc219..6b3948e31b3 100644 --- a/adev/src/content/guide/components/programmatic-rendering.md +++ b/adev/src/content/guide/components/programmatic-rendering.md @@ -2,16 +2,16 @@ TIP: This guide assumes you've already read the [Essentials Guide](essentials). Read that first if you're new to Angular. -In addition to using a component directly in a template, you can also dynamically render components -programmatically. This is helpful for situations when a component is unknown initially (thus can not +In addition to using a component directly in a template, you can also dynamically render components +programmatically. This is helpful for situations when a component is unknown initially (thus can not be referenced in a template directly) and it depends on some conditions. There are two main ways to render a component programmatically: in a template using `NgComponentOutlet`, -or in your TypeScript code using `ViewContainerRef`. +or in your TypeScript code using `ViewContainerRef`. -HELPFUL: for lazy-loading use-cases (for example if you want to delay loading of a heavy component), consider -using the built-in [`@defer` feature](/guide/templates/defer) instead. The `@defer` feature allows the code -of any components, directives, and pipes inside the `@defer` block to be extracted into separate JavaScript +HELPFUL: for lazy-loading use-cases (for example if you want to delay loading of a heavy component), consider +using the built-in [`@defer` feature](/guide/templates/defer) instead. The `@defer` feature allows the code +of any components, directives, and pipes inside the `@defer` block to be extracted into separate JavaScript chunks automatically and loaded only when necessary, based on the configured triggers. ## Using NgComponentOutlet @@ -103,10 +103,10 @@ In the example above, clicking the "Load content" button results in the followin ## Lazy-loading components -HELPFUL: if you want to lazy-load some components, you may consider using the built-in [`@defer` feature](/guide/templates/defer) +HELPFUL: if you want to lazy-load some components, you may consider using the built-in [`@defer` feature](/guide/templates/defer) instead. -If your use-case is not covered by the `@defer` feature, you can use either `NgComponentOutlet` or +If your use-case is not covered by the `@defer` feature, you can use either `NgComponentOutlet` or `ViewContainerRef` with a standard JavaScript [dynamic import](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/import). ```angular-ts @@ -119,9 +119,11 @@ If your use-case is not covered by the `@defer` feature, you can use either `NgC

Advanced settings

- + @if(!advancedSettings) { + + }
` From e8de1b481cedb38975641adef77393f7e5b33528 Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Wed, 8 Oct 2025 21:51:35 -0500 Subject: [PATCH 05/57] refactor(docs-infra): replace @Input with signal input for ignoredElementsIds in ClickOutside directive (#64302) replace @Input with signal input for ignoredElementsIds in ClickOutside directive PR Close #64302 --- .../directives/click-outside/click-outside.directive.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/adev/shared-docs/directives/click-outside/click-outside.directive.ts b/adev/shared-docs/directives/click-outside/click-outside.directive.ts index 14fbcb889bc..b9486cba66e 100644 --- a/adev/shared-docs/directives/click-outside/click-outside.directive.ts +++ b/adev/shared-docs/directives/click-outside/click-outside.directive.ts @@ -7,7 +7,7 @@ */ import {DOCUMENT} from '@angular/common'; -import {Directive, ElementRef, Input, inject, output} from '@angular/core'; +import {Directive, ElementRef, inject, input, output} from '@angular/core'; @Directive({ selector: '[docsClickOutside]', @@ -16,8 +16,7 @@ import {Directive, ElementRef, Input, inject, output} from '@angular/core'; }, }) export class ClickOutside { - // TODO: Understand why replacing this @Input with a signal input breaks the tests - @Input('docsClickOutsideIgnore') public ignoredElementsIds: string[] = []; + readonly ignoredElementsIds = input([], {alias: 'docsClickOutsideIgnore'}); public readonly clickOutside = output({alias: 'docsClickOutside'}); private readonly document = inject(DOCUMENT); @@ -33,11 +32,11 @@ export class ClickOutside { } private wasClickedOnIgnoredElement(event: MouseEvent): boolean { - if (this.ignoredElementsIds.length === 0) { + if (this.ignoredElementsIds().length === 0) { return false; } - return this.ignoredElementsIds.some((elementId) => { + return this.ignoredElementsIds().some((elementId) => { const element = this.document.getElementById(elementId); const target = event.target as Node; const contains = element?.contains(target); From 4ea008e68340b11aec7ed1d5d642fd577c1e6d84 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 8 Oct 2025 07:06:48 +0000 Subject: [PATCH 06/57] build: update github/codeql-action action to v3.30.7 (#64286) See associated pull request for more information. PR Close #64286 --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 188499309ae..355d80362aa 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -47,6 +47,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 + uses: github/codeql-action/upload-sarif@a8d1ac45b9a34d11fe398d5503176af0d06b303e # v3.30.7 with: sarif_file: results.sarif From 950a05c8e1d61f4b7a4680fe13ab02ff1ab94db2 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 9 Oct 2025 11:11:41 +0000 Subject: [PATCH 07/57] build: update cross-repo angular dependencies (#64308) See associated pull request for more information. PR Close #64308 --- .github/actions/deploy-docs-site/main.js | 24 +- .github/actions/saucelabs-legacy/action.yml | 4 +- .github/workflows/adev-preview-build.yml | 8 +- .github/workflows/adev-preview-deploy.yml | 2 +- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/benchmark-compare.yml | 2 +- .github/workflows/ci.yml | 44 +-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/google-internal-tests.yml | 2 +- .github/workflows/manual.yml | 8 +- .github/workflows/merge-ready-status.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 34 +-- MODULE.bazel | 2 +- adev/package.json | 12 +- .../cli-hello-world-ivy-i18n/package.json | 6 +- .../cli-hello-world-ivy-i18n/pnpm-lock.yaml | 100 +++---- integration/cli-hello-world-lazy/package.json | 8 +- .../cli-hello-world-lazy/pnpm-lock.yaml | 114 +++---- integration/cli-hello-world/package.json | 8 +- integration/cli-hello-world/pnpm-lock.yaml | 114 +++---- integration/cli-signal-inputs/package.json | 4 +- integration/cli-signal-inputs/pnpm-lock.yaml | 96 +++--- integration/defer/package.json | 6 +- integration/defer/pnpm-lock.yaml | 100 +++---- .../legacy-animations-async/package.json | 4 +- .../legacy-animations-async/pnpm-lock.yaml | 96 +++--- integration/legacy-animations/package.json | 4 +- integration/legacy-animations/pnpm-lock.yaml | 96 +++--- integration/ng-add-localize/package.json | 4 +- integration/ng-add-localize/pnpm-lock.yaml | 96 +++--- .../platform-server-hydration/package.json | 8 +- .../platform-server-hydration/pnpm-lock.yaml | 114 +++---- .../platform-server-zoneless/package.json | 8 +- .../platform-server-zoneless/pnpm-lock.yaml | 114 +++---- integration/platform-server/package.json | 8 +- integration/platform-server/pnpm-lock.yaml | 114 +++---- integration/standalone-bootstrap/package.json | 8 +- .../standalone-bootstrap/pnpm-lock.yaml | 114 +++---- integration/trusted-types/package.json | 8 +- integration/trusted-types/pnpm-lock.yaml | 114 +++---- modules/package.json | 2 +- package.json | 22 +- packages/core/test/bundling/package.json | 2 +- pnpm-lock.yaml | 277 +++++++++--------- 45 files changed, 977 insertions(+), 948 deletions(-) diff --git a/.github/actions/deploy-docs-site/main.js b/.github/actions/deploy-docs-site/main.js index 856dc52af8d..a0f03c29146 100644 --- a/.github/actions/deploy-docs-site/main.js +++ b/.github/actions/deploy-docs-site/main.js @@ -15779,6 +15779,9 @@ var require_identifiers = __commonJS({ "use strict"; var numeric = /^[0-9]+$/; var compareIdentifiers = (a7, b3) => { + if (typeof a7 === "number" && typeof b3 === "number") { + return a7 === b3 ? 0 : a7 < b3 ? -1 : 1; + } const anum = numeric.test(a7); const bnum = numeric.test(b3); if (anum && bnum) { @@ -15885,7 +15888,25 @@ var require_semver = __commonJS({ if (!(other instanceof _SemVer)) { other = new _SemVer(other, this.options); } - return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch); + if (this.major < other.major) { + return -1; + } + if (this.major > other.major) { + return 1; + } + if (this.minor < other.minor) { + return -1; + } + if (this.minor > other.minor) { + return 1; + } + if (this.patch < other.patch) { + return -1; + } + if (this.patch > other.patch) { + return 1; + } + return 0; } comparePre(other) { if (!(other instanceof _SemVer)) { @@ -16642,6 +16663,7 @@ var require_range = __commonJS({ return result; }; var parseComparator = (comp, options) => { + comp = comp.replace(re3[t3.BUILD], ""); debug("comp", comp, options); comp = replaceCarets(comp, options); debug("caret", comp); diff --git a/.github/actions/saucelabs-legacy/action.yml b/.github/actions/saucelabs-legacy/action.yml index f3f9e2b7b1b..41307b92d39 100644 --- a/.github/actions/saucelabs-legacy/action.yml +++ b/.github/actions/saucelabs-legacy/action.yml @@ -5,9 +5,9 @@ runs: using: 'composite' steps: - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Saucelabs Variables - uses: angular/dev-infra/github-actions/saucelabs@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/saucelabs@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Starting Saucelabs tunnel service shell: bash run: ./tools/saucelabs/sauce-service.sh run & diff --git a/.github/workflows/adev-preview-build.yml b/.github/workflows/adev-preview-build.yml index 17c53b2cff3..206396abe56 100644 --- a/.github/workflows/adev-preview-build.yml +++ b/.github/workflows/adev-preview-build.yml @@ -21,16 +21,16 @@ jobs: (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'adev: preview')) steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Build adev run: pnpm bazel build //adev:build.production - - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@18fece68983a6e0ecaed2456ffc4035d493688f3 + - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: workflow-artifact-name: 'adev-preview' pull-number: '${{github.event.pull_request.number}}' diff --git a/.github/workflows/adev-preview-deploy.yml b/.github/workflows/adev-preview-deploy.yml index d6e8d4640ed..ec1f58f7408 100644 --- a/.github/workflows/adev-preview-deploy.yml +++ b/.github/workflows/adev-preview-deploy.yml @@ -40,7 +40,7 @@ jobs: npx -y firebase-tools@latest target:clear --config adev/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting angular-docs npx -y firebase-tools@latest target:apply --config adev/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting angular-docs ${{env.PREVIEW_SITE}} - - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@18fece68983a6e0ecaed2456ffc4035d493688f3 + - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: github-token: '${{secrets.GITHUB_TOKEN}}' workflow-artifact-name: 'adev-preview' diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index ca375413eae..bdfbf99221f 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -16,6 +16,6 @@ jobs: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@18fece68983a6e0ecaed2456ffc4035d493688f3 + - uses: angular/dev-infra/github-actions/branch-manager@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/benchmark-compare.yml b/.github/workflows/benchmark-compare.yml index 082a577dc41..4b7623e83dc 100644 --- a/.github/workflows/benchmark-compare.yml +++ b/.github/workflows/benchmark-compare.yml @@ -38,7 +38,7 @@ jobs: - run: pnpm install --frozen-lockfile - - uses: angular/dev-infra/github-actions/bazel/configure-remote@18fece68983a6e0ecaed2456ffc4035d493688f3 + - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: bazelrc: ./.bazelrc.user diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7499ae2be94..55907891b69 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Check code lint @@ -39,13 +39,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: disable-package-manager-cache: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Cache downloaded Cypress binary @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -88,11 +88,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -105,11 +105,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -124,13 +124,13 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - run: echo "https://${{secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN}}:@github.com" > ${HOME}/.git_credentials @@ -142,11 +142,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -196,11 +196,11 @@ jobs: runs-on: ubuntu-latest-8core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Build adev diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 8dea45d5404..a4e64b00aaf 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@18fece68983a6e0ecaed2456ffc4035d493688f3 + - uses: angular/dev-infra/github-actions/pull-request-labeling@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@18fece68983a6e0ecaed2456ffc4035d493688f3 + - uses: angular/dev-infra/github-actions/post-approval-changes@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/google-internal-tests.yml b/.github/workflows/google-internal-tests.yml index 9ae09f85603..90a7c048cdb 100644 --- a/.github/workflows/google-internal-tests.yml +++ b/.github/workflows/google-internal-tests.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/google-internal-tests@18fece68983a6e0ecaed2456ffc4035d493688f3 + - uses: angular/dev-infra/github-actions/google-internal-tests@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: run-tests-guide-url: http://go/angular-g3sync-start github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml index fe0952a433f..afa0136412d 100644 --- a/.github/workflows/manual.yml +++ b/.github/workflows/manual.yml @@ -13,17 +13,17 @@ jobs: JOBS: 2 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: cache-node-modules: true - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Saucelabs Variables - uses: angular/dev-infra/github-actions/saucelabs@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/saucelabs@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Set up Sauce Tunnel Daemon run: pnpm bazel run //tools/saucelabs-daemon/background-service -- $JOBS & env: diff --git a/.github/workflows/merge-ready-status.yml b/.github/workflows/merge-ready-status.yml index 5a89a5a4366..ee0a4bb2918 100644 --- a/.github/workflows/merge-ready-status.yml +++ b/.github/workflows/merge-ready-status.yml @@ -9,6 +9,6 @@ jobs: status: runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/unified-status-check@18fece68983a6e0ecaed2456ffc4035d493688f3 + - uses: angular/dev-infra/github-actions/unified-status-check@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index e48bf4d9f68..970b0d72db1 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -21,7 +21,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - id: workflows @@ -36,9 +36,9 @@ jobs: workflow: ${{ fromJSON(needs.list.outputs.workflows) }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile # We utilize the google-github-actions/auth action to allow us to get an active credential using workflow diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index d02649892d5..e73e4e05143 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Check code lint @@ -37,7 +37,7 @@ jobs: - name: Check code format run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/linting/licenses@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: allow-dependencies-licenses: 'pkg:npm/google-protobuf@' @@ -45,13 +45,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: disable-package-manager-cache: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Cache downloaded Cypress binary uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -76,11 +76,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Run CI tests for framework @@ -100,11 +100,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Run integration CI tests for framework @@ -115,11 +115,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Run tests @@ -132,11 +132,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18fece68983a6e0ecaed2456ffc4035d493688f3 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - run: | diff --git a/MODULE.bazel b/MODULE.bazel index 85f9e7b1275..9acbfcb09c8 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "18fece68983a6e0ecaed2456ffc4035d493688f3", + commit = "56543b10ddb9941c76b4413cc24ec3fa7a43cf5c", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/adev/package.json b/adev/package.json index 21b569b41e4..d136abd3452 100644 --- a/adev/package.json +++ b/adev/package.json @@ -1,21 +1,21 @@ { "dependencies": { - "@angular-devkit/build-angular": "20.3.4", + "@angular-devkit/build-angular": "20.3.5", "@angular/animations": "workspace:*", - "@angular/build": "20.3.4", - "@angular/cdk": "20.2.7", - "@angular/cli": "20.3.4", + "@angular/build": "20.3.5", + "@angular/cdk": "20.2.8", + "@angular/cli": "20.3.5", "@angular/common": "workspace:*", "@angular/compiler-cli": "workspace:*", "@angular/compiler": "workspace:*", "@angular/core": "workspace:*", "@angular/docs": "workspace:*", "@angular/forms": "workspace:*", - "@angular/material": "20.2.7", + "@angular/material": "20.2.8", "@angular/platform-browser": "workspace:*", "@angular/platform-server": "workspace:*", "@angular/router": "workspace:*", - "@angular/ssr": "20.3.4", + "@angular/ssr": "20.3.5", "@codemirror/autocomplete": "6.18.6", "@codemirror/commands": "6.8.1", "@codemirror/lang-angular": "0.1.4", diff --git a/integration/cli-hello-world-ivy-i18n/package.json b/integration/cli-hello-world-ivy-i18n/package.json index 0e2cbc2c811..d2fea628b64 100644 --- a/integration/cli-hello-world-ivy-i18n/package.json +++ b/integration/cli-hello-world-ivy-i18n/package.json @@ -27,9 +27,9 @@ "zone.js": "0.15.1" }, "devDependencies": { - "@angular-devkit/build-angular": "20.3.4", - "@angular/build": "20.3.4", - "@angular/cli": "20.3.4", + "@angular-devkit/build-angular": "20.3.5", + "@angular/build": "20.3.5", + "@angular/cli": "20.3.5", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/jasmine": "^5.0.0", "@types/jasminewd2": "^2.0.8", diff --git a/integration/cli-hello-world-ivy-i18n/pnpm-lock.yaml b/integration/cli-hello-world-ivy-i18n/pnpm-lock.yaml index 19cb0c0ea9b..c45987e1837 100644 --- a/integration/cli-hello-world-ivy-i18n/pnpm-lock.yaml +++ b/integration/cli-hello-world-ivy-i18n/pnpm-lock.yaml @@ -40,14 +40,14 @@ importers: version: 0.15.1 devDependencies: '@angular-devkit/build-angular': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(protractor@7.0.0)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(protractor@7.0.0)(typescript@5.9.2) '@angular/build': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/cli': - specifier: 20.3.4 - version: 20.3.4(@types/node@20.19.17)(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(@types/node@20.19.17)(chokidar@4.0.3) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -144,12 +144,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2003.4': - resolution: {integrity: sha512-OKT6QuoG+rZZmRQ9mSZoh1pCGB5jBrkb45CzI8VdaLFhrZ7Uqg1wri1tj5KpSQYLAd22uUFNIE0uzMmGwXHbYA==} + '@angular-devkit/architect@0.2003.5': + resolution: {integrity: sha512-KtA//ucTIdnKp1+vTYnqBallEbiZHLx3Gs7XgYm+p4VJfVjbMZHWY2vrbJoyCUp05goiv2XnDy0bKQ9VYHePWg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.3.4': - resolution: {integrity: sha512-Lc/Hi4A0xBDbPb0tg7JHofIkqTigwKFOTU4Y/y/sN/9BQ7z3M/cHylaFceCtTjwnqybOzWyR58bStLO1wIN8Gw==} + '@angular-devkit/build-angular@20.3.5': + resolution: {integrity: sha512-33bG6ic/GC9OrqPiR6ynTpnw9vKfebZtWQzFO9ovjkUoZt4lUFWUgo/F0zeoaJgj0N35Ihn3Dvtxz/x2rwr9lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -158,7 +158,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -198,15 +198,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2003.4': - resolution: {integrity: sha512-p5nBSTu9ijz+v3ku+eWc8m+nYjn8q36dkupoKUCgaG1UkPTeHvgI341xPqvY1uxyYzCaxuUms44XIkdAJbmzww==} + '@angular-devkit/build-webpack@0.2003.5': + resolution: {integrity: sha512-BdcaJ5c/a+SD8ZaUo1Qq0a03zeTvGX4ydIaM4li5JYuA8bPCibU9tnb/1FcOWgIZVL1RdV6oIIqbAW6ufq7e1g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.3.4': - resolution: {integrity: sha512-r83jn9yVdPh618oGgoKPggMsQGOkQqJbxEutd4CE9mnotPCE2uRTIyaFMh8sohNUeoQNRmj9rbr2pWGVlgERpg==} + '@angular-devkit/core@20.3.5': + resolution: {integrity: sha512-NpAP5j3q/n+SC1s0yAWKDAbc7Y8xUxlmJ5iDRJBGu6qDKM7lMnYA1tn2UEy/JnXluJ2XZqqiymrtucw7yux2xQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -214,12 +214,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.3.4': - resolution: {integrity: sha512-JYlcmVBKNT9+cQ6T2tmu+yVQ2bJk8tG0mXvPHWXrl/M4c6NObhSSThK50tJHy0Xo3gl8WgogOxUeJNnBq67cIQ==} + '@angular-devkit/schematics@20.3.5': + resolution: {integrity: sha512-BDizJp7QIoCyMZmuGKoryNUH3QgFPnkEIv0gRdpLhZum4+ZN/DYWaf/jSSGnSVGK88oMrgq7420VEjYPlgJ5MA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@20.3.4': - resolution: {integrity: sha512-2ZPyEQxg9FCM7gv5NZHZVCec6ubb7HM/fkzr7wcYQArN8E8EknlyfXn6G5AoqkEsQZGqtJOD8sfti0m4kYiwkQ==} + '@angular/build@20.3.5': + resolution: {integrity: sha512-Nwwwm8U7lolkdHt75PiPkW93689SBFUN9qEQeu02sPfq2Tqyn20PZGifXkV8A/6mlWbQUjfUnGpRTVk/WhW9Eg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 @@ -229,7 +229,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 @@ -264,8 +264,8 @@ packages: vitest: optional: true - '@angular/cli@20.3.4': - resolution: {integrity: sha512-aNPk9ljY2PTc+ZoA7M67rxNvhbUJvzkuYcAdJuHbAIDoWcr2HhyFM2aGrLH3DVemY39xN/haJHj3FYJ8rCdXNw==} + '@angular/cli@20.3.5': + resolution: {integrity: sha512-UA843Mh5uHIWnrzKUotGmhJmvefyEizFS7X8xJEUJsX5pa1EKUB/145rKHoLHxRRpHGxFcXtvciJCksFz1lSBA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true @@ -1348,8 +1348,8 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@ngtools/webpack@20.3.4': - resolution: {integrity: sha512-5G2Q9VguR73RaSbqVpsW1LumITsPxceLL0+L94IOHoV4eYlFciJTXLWgcRUoChh73bt0wLMgdwUVWKjaVtjOLQ==} + '@ngtools/webpack@20.3.5': + resolution: {integrity: sha512-LThQWzgEw6a1eTRWn2hUxwVe8WalL75yola4AaI8gJVqlRhfTcjqpleULihCm9cynn3HnVsaHFElaoLdxhugCA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -1618,8 +1618,8 @@ packages: cpu: [x64] os: [win32] - '@schematics/angular@20.3.4': - resolution: {integrity: sha512-aIgeRAfSJdxVfsES521vNb6Nuy+Uei7xE85hD+mQHX+62bN7vJhM/tmMFIYS7UF8d0rRnMPiGEr2Rfx6Om5iPg==} + '@schematics/angular@20.3.5': + resolution: {integrity: sha512-mrVWO64psqah8E8HgpF30NMizVZyX6aH3k6hqf2tDgU3+giKX7xvTG9UQCaXA4MLBsQbpcWAmwPLipwLnPm8wA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sigstore/bundle@3.1.0': @@ -5206,20 +5206,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2003.4(chokidar@4.0.3)': + '@angular-devkit/architect@0.2003.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(protractor@7.0.0)(typescript@5.9.2)': + '@angular-devkit/build-angular@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(protractor@7.0.0)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular/build': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular/build': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 '@babel/generator': 7.28.3 @@ -5231,7 +5231,7 @@ snapshots: '@babel/preset-env': 7.28.3(@babel/core@7.28.3) '@babel/runtime': 7.28.3 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) + '@ngtools/webpack': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.6) babel-loader: 10.0.0(@babel/core@7.28.3)(webpack@5.101.2(esbuild@0.25.9)) @@ -5300,16 +5300,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': + '@angular-devkit/build-webpack@0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.101.2(esbuild@0.25.9) webpack-dev-server: 5.2.2(webpack@5.101.2) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.3.4(chokidar@4.0.3)': + '@angular-devkit/core@20.3.5(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -5320,9 +5320,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.3.4(chokidar@4.0.3)': + '@angular-devkit/schematics@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 8.2.0 @@ -5330,10 +5330,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': + '@angular/build@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 @@ -5382,15 +5382,15 @@ snapshots: - tsx - yaml - '@angular/cli@20.3.4(@types/node@20.19.17)(chokidar@4.0.3)': + '@angular/cli@20.3.5(@types/node@20.19.17)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@20.19.17) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@20.19.17))(@types/node@20.19.17)(listr2@9.0.1) '@modelcontextprotocol/sdk': 1.17.3 - '@schematics/angular': 20.3.4(chokidar@4.0.3) + '@schematics/angular': 20.3.5(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 ini: 5.0.0 @@ -6511,7 +6511,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@ngtools/webpack@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': + '@ngtools/webpack@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 5.9.2 @@ -6718,10 +6718,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.3': optional: true - '@schematics/angular@20.3.4(chokidar@4.0.3)': + '@schematics/angular@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar diff --git a/integration/cli-hello-world-lazy/package.json b/integration/cli-hello-world-lazy/package.json index 6c822c78b46..f2b48cfdddb 100644 --- a/integration/cli-hello-world-lazy/package.json +++ b/integration/cli-hello-world-lazy/package.json @@ -13,15 +13,15 @@ "@angular/core": "link:./in-existing-linked-by-bazel", "@angular/platform-browser": "link:./in-existing-linked-by-bazel", "@angular/router": "link:./in-existing-linked-by-bazel", - "@angular/ssr": "20.3.4", + "@angular/ssr": "20.3.5", "rxjs": "^7.0.0", "tslib": "^2.3.0", "zone.js": "0.15.1" }, "devDependencies": { - "@angular-devkit/build-angular": "20.3.4", - "@angular/build": "20.3.4", - "@angular/cli": "20.3.4", + "@angular-devkit/build-angular": "20.3.5", + "@angular/build": "20.3.5", + "@angular/cli": "20.3.5", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/node": "^20.14.8", "ts-node": "^10.9.1", diff --git a/integration/cli-hello-world-lazy/pnpm-lock.yaml b/integration/cli-hello-world-lazy/pnpm-lock.yaml index eea81a89e33..9b63a6bc079 100644 --- a/integration/cli-hello-world-lazy/pnpm-lock.yaml +++ b/integration/cli-hello-world-lazy/pnpm-lock.yaml @@ -24,8 +24,8 @@ importers: specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel '@angular/ssr': - specifier: 20.3.4 - version: 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + specifier: 20.3.5 + version: 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) rxjs: specifier: ^7.0.0 version: 7.8.2 @@ -37,14 +37,14 @@ importers: version: 0.15.1 devDependencies: '@angular-devkit/build-angular': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2) '@angular/build': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/cli': - specifier: 20.3.4 - version: 20.3.4(@types/node@20.19.17)(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(@types/node@20.19.17)(chokidar@4.0.3) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -120,12 +120,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2003.4': - resolution: {integrity: sha512-OKT6QuoG+rZZmRQ9mSZoh1pCGB5jBrkb45CzI8VdaLFhrZ7Uqg1wri1tj5KpSQYLAd22uUFNIE0uzMmGwXHbYA==} + '@angular-devkit/architect@0.2003.5': + resolution: {integrity: sha512-KtA//ucTIdnKp1+vTYnqBallEbiZHLx3Gs7XgYm+p4VJfVjbMZHWY2vrbJoyCUp05goiv2XnDy0bKQ9VYHePWg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.3.4': - resolution: {integrity: sha512-Lc/Hi4A0xBDbPb0tg7JHofIkqTigwKFOTU4Y/y/sN/9BQ7z3M/cHylaFceCtTjwnqybOzWyR58bStLO1wIN8Gw==} + '@angular-devkit/build-angular@20.3.5': + resolution: {integrity: sha512-33bG6ic/GC9OrqPiR6ynTpnw9vKfebZtWQzFO9ovjkUoZt4lUFWUgo/F0zeoaJgj0N35Ihn3Dvtxz/x2rwr9lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -134,7 +134,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -174,15 +174,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2003.4': - resolution: {integrity: sha512-p5nBSTu9ijz+v3ku+eWc8m+nYjn8q36dkupoKUCgaG1UkPTeHvgI341xPqvY1uxyYzCaxuUms44XIkdAJbmzww==} + '@angular-devkit/build-webpack@0.2003.5': + resolution: {integrity: sha512-BdcaJ5c/a+SD8ZaUo1Qq0a03zeTvGX4ydIaM4li5JYuA8bPCibU9tnb/1FcOWgIZVL1RdV6oIIqbAW6ufq7e1g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.3.4': - resolution: {integrity: sha512-r83jn9yVdPh618oGgoKPggMsQGOkQqJbxEutd4CE9mnotPCE2uRTIyaFMh8sohNUeoQNRmj9rbr2pWGVlgERpg==} + '@angular-devkit/core@20.3.5': + resolution: {integrity: sha512-NpAP5j3q/n+SC1s0yAWKDAbc7Y8xUxlmJ5iDRJBGu6qDKM7lMnYA1tn2UEy/JnXluJ2XZqqiymrtucw7yux2xQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -190,12 +190,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.3.4': - resolution: {integrity: sha512-JYlcmVBKNT9+cQ6T2tmu+yVQ2bJk8tG0mXvPHWXrl/M4c6NObhSSThK50tJHy0Xo3gl8WgogOxUeJNnBq67cIQ==} + '@angular-devkit/schematics@20.3.5': + resolution: {integrity: sha512-BDizJp7QIoCyMZmuGKoryNUH3QgFPnkEIv0gRdpLhZum4+ZN/DYWaf/jSSGnSVGK88oMrgq7420VEjYPlgJ5MA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@20.3.4': - resolution: {integrity: sha512-2ZPyEQxg9FCM7gv5NZHZVCec6ubb7HM/fkzr7wcYQArN8E8EknlyfXn6G5AoqkEsQZGqtJOD8sfti0m4kYiwkQ==} + '@angular/build@20.3.5': + resolution: {integrity: sha512-Nwwwm8U7lolkdHt75PiPkW93689SBFUN9qEQeu02sPfq2Tqyn20PZGifXkV8A/6mlWbQUjfUnGpRTVk/WhW9Eg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 @@ -205,7 +205,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 @@ -240,13 +240,13 @@ packages: vitest: optional: true - '@angular/cli@20.3.4': - resolution: {integrity: sha512-aNPk9ljY2PTc+ZoA7M67rxNvhbUJvzkuYcAdJuHbAIDoWcr2HhyFM2aGrLH3DVemY39xN/haJHj3FYJ8rCdXNw==} + '@angular/cli@20.3.5': + resolution: {integrity: sha512-UA843Mh5uHIWnrzKUotGmhJmvefyEizFS7X8xJEUJsX5pa1EKUB/145rKHoLHxRRpHGxFcXtvciJCksFz1lSBA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/ssr@20.3.4': - resolution: {integrity: sha512-0jfFHUz5JkKI4DJ05lkob4AAOt1LPNsQ3A/u0k1Ctej15jR4fOdE+NcHBV+AZ3XV8eNPqlYbOuTa0lGOon9y/A==} + '@angular/ssr@20.3.5': + resolution: {integrity: sha512-Zec8N738/MpfyyTDo37dQ/EQAonOFCjSkKrVpI4b8itYPy0LVlT5zEBKft1kjwEWE2dTiQT/JoVCqswBbc0Dig==} peerDependencies: '@angular/common': ^20.0.0 '@angular/core': ^20.0.0 @@ -1335,8 +1335,8 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@ngtools/webpack@20.3.4': - resolution: {integrity: sha512-5G2Q9VguR73RaSbqVpsW1LumITsPxceLL0+L94IOHoV4eYlFciJTXLWgcRUoChh73bt0wLMgdwUVWKjaVtjOLQ==} + '@ngtools/webpack@20.3.5': + resolution: {integrity: sha512-LThQWzgEw6a1eTRWn2hUxwVe8WalL75yola4AaI8gJVqlRhfTcjqpleULihCm9cynn3HnVsaHFElaoLdxhugCA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -1605,8 +1605,8 @@ packages: cpu: [x64] os: [win32] - '@schematics/angular@20.3.4': - resolution: {integrity: sha512-aIgeRAfSJdxVfsES521vNb6Nuy+Uei7xE85hD+mQHX+62bN7vJhM/tmMFIYS7UF8d0rRnMPiGEr2Rfx6Om5iPg==} + '@schematics/angular@20.3.5': + resolution: {integrity: sha512-mrVWO64psqah8E8HgpF30NMizVZyX6aH3k6hqf2tDgU3+giKX7xvTG9UQCaXA4MLBsQbpcWAmwPLipwLnPm8wA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sigstore/bundle@3.1.0': @@ -4211,20 +4211,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2003.4(chokidar@4.0.3)': + '@angular-devkit/architect@0.2003.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2)': + '@angular-devkit/build-angular@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular/build': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular/build': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 '@babel/generator': 7.28.3 @@ -4236,7 +4236,7 @@ snapshots: '@babel/preset-env': 7.28.3(@babel/core@7.28.3) '@babel/runtime': 7.28.3 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) + '@ngtools/webpack': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.6) babel-loader: 10.0.0(@babel/core@7.28.3)(webpack@5.101.2(esbuild@0.25.9)) @@ -4279,7 +4279,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) esbuild: 0.25.9 transitivePeerDependencies: - '@angular/compiler' @@ -4304,16 +4304,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': + '@angular-devkit/build-webpack@0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.101.2(esbuild@0.25.9) webpack-dev-server: 5.2.2(webpack@5.101.2) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.3.4(chokidar@4.0.3)': + '@angular-devkit/core@20.3.5(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -4324,9 +4324,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.3.4(chokidar@4.0.3)': + '@angular-devkit/schematics@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 8.2.0 @@ -4334,10 +4334,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': + '@angular/build@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 @@ -4369,7 +4369,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) less: 4.4.0 lmdb: 3.4.2 postcss: 8.5.6 @@ -4386,15 +4386,15 @@ snapshots: - tsx - yaml - '@angular/cli@20.3.4(@types/node@20.19.17)(chokidar@4.0.3)': + '@angular/cli@20.3.5(@types/node@20.19.17)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@20.19.17) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@20.19.17))(@types/node@20.19.17)(listr2@9.0.1) '@modelcontextprotocol/sdk': 1.17.3 - '@schematics/angular': 20.3.4(chokidar@4.0.3) + '@schematics/angular': 20.3.5(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 ini: 5.0.0 @@ -4411,7 +4411,7 @@ snapshots: - chokidar - supports-color - '@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': + '@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': dependencies: '@angular/common': link:in-existing-linked-by-bazel '@angular/core': link:in-existing-linked-by-bazel @@ -5522,7 +5522,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@ngtools/webpack@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': + '@ngtools/webpack@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 5.9.2 @@ -5729,10 +5729,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.3': optional: true - '@schematics/angular@20.3.4(chokidar@4.0.3)': + '@schematics/angular@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar diff --git a/integration/cli-hello-world/package.json b/integration/cli-hello-world/package.json index 696b58fdb81..a81b3c3b8b6 100644 --- a/integration/cli-hello-world/package.json +++ b/integration/cli-hello-world/package.json @@ -18,15 +18,15 @@ "@angular/forms": "link:./in-existing-linked-by-bazel", "@angular/platform-browser": "link:./in-existing-linked-by-bazel", "@angular/router": "link:./in-existing-linked-by-bazel", - "@angular/ssr": "20.3.4", + "@angular/ssr": "20.3.5", "rxjs": "^7.0.0", "tslib": "^2.3.0", "zone.js": "0.15.1" }, "devDependencies": { - "@angular-devkit/build-angular": "20.3.4", - "@angular/build": "20.3.4", - "@angular/cli": "20.3.4", + "@angular-devkit/build-angular": "20.3.5", + "@angular/build": "20.3.5", + "@angular/cli": "20.3.5", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/node": "^20.14.8", "ts-node": "^10.9.1", diff --git a/integration/cli-hello-world/pnpm-lock.yaml b/integration/cli-hello-world/pnpm-lock.yaml index bc67fec71a4..c58277c7e80 100644 --- a/integration/cli-hello-world/pnpm-lock.yaml +++ b/integration/cli-hello-world/pnpm-lock.yaml @@ -27,8 +27,8 @@ importers: specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel '@angular/ssr': - specifier: 20.3.4 - version: 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + specifier: 20.3.5 + version: 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) rxjs: specifier: ^7.0.0 version: 7.8.2 @@ -40,14 +40,14 @@ importers: version: 0.15.1 devDependencies: '@angular-devkit/build-angular': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2) '@angular/build': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/cli': - specifier: 20.3.4 - version: 20.3.4(@types/node@20.19.17)(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(@types/node@20.19.17)(chokidar@4.0.3) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -123,12 +123,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2003.4': - resolution: {integrity: sha512-OKT6QuoG+rZZmRQ9mSZoh1pCGB5jBrkb45CzI8VdaLFhrZ7Uqg1wri1tj5KpSQYLAd22uUFNIE0uzMmGwXHbYA==} + '@angular-devkit/architect@0.2003.5': + resolution: {integrity: sha512-KtA//ucTIdnKp1+vTYnqBallEbiZHLx3Gs7XgYm+p4VJfVjbMZHWY2vrbJoyCUp05goiv2XnDy0bKQ9VYHePWg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.3.4': - resolution: {integrity: sha512-Lc/Hi4A0xBDbPb0tg7JHofIkqTigwKFOTU4Y/y/sN/9BQ7z3M/cHylaFceCtTjwnqybOzWyR58bStLO1wIN8Gw==} + '@angular-devkit/build-angular@20.3.5': + resolution: {integrity: sha512-33bG6ic/GC9OrqPiR6ynTpnw9vKfebZtWQzFO9ovjkUoZt4lUFWUgo/F0zeoaJgj0N35Ihn3Dvtxz/x2rwr9lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -137,7 +137,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -177,15 +177,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2003.4': - resolution: {integrity: sha512-p5nBSTu9ijz+v3ku+eWc8m+nYjn8q36dkupoKUCgaG1UkPTeHvgI341xPqvY1uxyYzCaxuUms44XIkdAJbmzww==} + '@angular-devkit/build-webpack@0.2003.5': + resolution: {integrity: sha512-BdcaJ5c/a+SD8ZaUo1Qq0a03zeTvGX4ydIaM4li5JYuA8bPCibU9tnb/1FcOWgIZVL1RdV6oIIqbAW6ufq7e1g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.3.4': - resolution: {integrity: sha512-r83jn9yVdPh618oGgoKPggMsQGOkQqJbxEutd4CE9mnotPCE2uRTIyaFMh8sohNUeoQNRmj9rbr2pWGVlgERpg==} + '@angular-devkit/core@20.3.5': + resolution: {integrity: sha512-NpAP5j3q/n+SC1s0yAWKDAbc7Y8xUxlmJ5iDRJBGu6qDKM7lMnYA1tn2UEy/JnXluJ2XZqqiymrtucw7yux2xQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -193,12 +193,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.3.4': - resolution: {integrity: sha512-JYlcmVBKNT9+cQ6T2tmu+yVQ2bJk8tG0mXvPHWXrl/M4c6NObhSSThK50tJHy0Xo3gl8WgogOxUeJNnBq67cIQ==} + '@angular-devkit/schematics@20.3.5': + resolution: {integrity: sha512-BDizJp7QIoCyMZmuGKoryNUH3QgFPnkEIv0gRdpLhZum4+ZN/DYWaf/jSSGnSVGK88oMrgq7420VEjYPlgJ5MA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@20.3.4': - resolution: {integrity: sha512-2ZPyEQxg9FCM7gv5NZHZVCec6ubb7HM/fkzr7wcYQArN8E8EknlyfXn6G5AoqkEsQZGqtJOD8sfti0m4kYiwkQ==} + '@angular/build@20.3.5': + resolution: {integrity: sha512-Nwwwm8U7lolkdHt75PiPkW93689SBFUN9qEQeu02sPfq2Tqyn20PZGifXkV8A/6mlWbQUjfUnGpRTVk/WhW9Eg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 @@ -208,7 +208,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 @@ -243,13 +243,13 @@ packages: vitest: optional: true - '@angular/cli@20.3.4': - resolution: {integrity: sha512-aNPk9ljY2PTc+ZoA7M67rxNvhbUJvzkuYcAdJuHbAIDoWcr2HhyFM2aGrLH3DVemY39xN/haJHj3FYJ8rCdXNw==} + '@angular/cli@20.3.5': + resolution: {integrity: sha512-UA843Mh5uHIWnrzKUotGmhJmvefyEizFS7X8xJEUJsX5pa1EKUB/145rKHoLHxRRpHGxFcXtvciJCksFz1lSBA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/ssr@20.3.4': - resolution: {integrity: sha512-0jfFHUz5JkKI4DJ05lkob4AAOt1LPNsQ3A/u0k1Ctej15jR4fOdE+NcHBV+AZ3XV8eNPqlYbOuTa0lGOon9y/A==} + '@angular/ssr@20.3.5': + resolution: {integrity: sha512-Zec8N738/MpfyyTDo37dQ/EQAonOFCjSkKrVpI4b8itYPy0LVlT5zEBKft1kjwEWE2dTiQT/JoVCqswBbc0Dig==} peerDependencies: '@angular/common': ^20.0.0 '@angular/core': ^20.0.0 @@ -1338,8 +1338,8 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@ngtools/webpack@20.3.4': - resolution: {integrity: sha512-5G2Q9VguR73RaSbqVpsW1LumITsPxceLL0+L94IOHoV4eYlFciJTXLWgcRUoChh73bt0wLMgdwUVWKjaVtjOLQ==} + '@ngtools/webpack@20.3.5': + resolution: {integrity: sha512-LThQWzgEw6a1eTRWn2hUxwVe8WalL75yola4AaI8gJVqlRhfTcjqpleULihCm9cynn3HnVsaHFElaoLdxhugCA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -1608,8 +1608,8 @@ packages: cpu: [x64] os: [win32] - '@schematics/angular@20.3.4': - resolution: {integrity: sha512-aIgeRAfSJdxVfsES521vNb6Nuy+Uei7xE85hD+mQHX+62bN7vJhM/tmMFIYS7UF8d0rRnMPiGEr2Rfx6Om5iPg==} + '@schematics/angular@20.3.5': + resolution: {integrity: sha512-mrVWO64psqah8E8HgpF30NMizVZyX6aH3k6hqf2tDgU3+giKX7xvTG9UQCaXA4MLBsQbpcWAmwPLipwLnPm8wA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sigstore/bundle@3.1.0': @@ -4214,20 +4214,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2003.4(chokidar@4.0.3)': + '@angular-devkit/architect@0.2003.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2)': + '@angular-devkit/build-angular@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular/build': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular/build': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 '@babel/generator': 7.28.3 @@ -4239,7 +4239,7 @@ snapshots: '@babel/preset-env': 7.28.3(@babel/core@7.28.3) '@babel/runtime': 7.28.3 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) + '@ngtools/webpack': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.6) babel-loader: 10.0.0(@babel/core@7.28.3)(webpack@5.101.2(esbuild@0.25.9)) @@ -4282,7 +4282,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) esbuild: 0.25.9 transitivePeerDependencies: - '@angular/compiler' @@ -4307,16 +4307,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': + '@angular-devkit/build-webpack@0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.101.2(esbuild@0.25.9) webpack-dev-server: 5.2.2(webpack@5.101.2) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.3.4(chokidar@4.0.3)': + '@angular-devkit/core@20.3.5(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -4327,9 +4327,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.3.4(chokidar@4.0.3)': + '@angular-devkit/schematics@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 8.2.0 @@ -4337,10 +4337,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': + '@angular/build@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 @@ -4372,7 +4372,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) less: 4.4.0 lmdb: 3.4.2 postcss: 8.5.6 @@ -4389,15 +4389,15 @@ snapshots: - tsx - yaml - '@angular/cli@20.3.4(@types/node@20.19.17)(chokidar@4.0.3)': + '@angular/cli@20.3.5(@types/node@20.19.17)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@20.19.17) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@20.19.17))(@types/node@20.19.17)(listr2@9.0.1) '@modelcontextprotocol/sdk': 1.17.3 - '@schematics/angular': 20.3.4(chokidar@4.0.3) + '@schematics/angular': 20.3.5(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 ini: 5.0.0 @@ -4414,7 +4414,7 @@ snapshots: - chokidar - supports-color - '@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': + '@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': dependencies: '@angular/common': link:in-existing-linked-by-bazel '@angular/core': link:in-existing-linked-by-bazel @@ -5525,7 +5525,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@ngtools/webpack@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': + '@ngtools/webpack@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 5.9.2 @@ -5732,10 +5732,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.3': optional: true - '@schematics/angular@20.3.4(chokidar@4.0.3)': + '@schematics/angular@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar diff --git a/integration/cli-signal-inputs/package.json b/integration/cli-signal-inputs/package.json index 7b8dd90c254..b760a0a5399 100644 --- a/integration/cli-signal-inputs/package.json +++ b/integration/cli-signal-inputs/package.json @@ -25,8 +25,8 @@ "zone.js": "0.15.1" }, "devDependencies": { - "@angular-devkit/build-angular": "20.3.4", - "@angular/cli": "20.3.4", + "@angular-devkit/build-angular": "20.3.5", + "@angular/cli": "20.3.5", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/jasmine": "^5.0.0", "@types/jasminewd2": "^2.0.8", diff --git a/integration/cli-signal-inputs/pnpm-lock.yaml b/integration/cli-signal-inputs/pnpm-lock.yaml index 9dff160cc45..8e91f7651a3 100644 --- a/integration/cli-signal-inputs/pnpm-lock.yaml +++ b/integration/cli-signal-inputs/pnpm-lock.yaml @@ -40,11 +40,11 @@ importers: version: 0.15.1 devDependencies: '@angular-devkit/build-angular': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(protractor@7.0.0)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(protractor@7.0.0)(typescript@5.9.2) '@angular/cli': - specifier: 20.3.4 - version: 20.3.4(@types/node@20.19.17)(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(@types/node@20.19.17)(chokidar@4.0.3) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -150,12 +150,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2003.4': - resolution: {integrity: sha512-OKT6QuoG+rZZmRQ9mSZoh1pCGB5jBrkb45CzI8VdaLFhrZ7Uqg1wri1tj5KpSQYLAd22uUFNIE0uzMmGwXHbYA==} + '@angular-devkit/architect@0.2003.5': + resolution: {integrity: sha512-KtA//ucTIdnKp1+vTYnqBallEbiZHLx3Gs7XgYm+p4VJfVjbMZHWY2vrbJoyCUp05goiv2XnDy0bKQ9VYHePWg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.3.4': - resolution: {integrity: sha512-Lc/Hi4A0xBDbPb0tg7JHofIkqTigwKFOTU4Y/y/sN/9BQ7z3M/cHylaFceCtTjwnqybOzWyR58bStLO1wIN8Gw==} + '@angular-devkit/build-angular@20.3.5': + resolution: {integrity: sha512-33bG6ic/GC9OrqPiR6ynTpnw9vKfebZtWQzFO9ovjkUoZt4lUFWUgo/F0zeoaJgj0N35Ihn3Dvtxz/x2rwr9lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -164,7 +164,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -204,15 +204,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2003.4': - resolution: {integrity: sha512-p5nBSTu9ijz+v3ku+eWc8m+nYjn8q36dkupoKUCgaG1UkPTeHvgI341xPqvY1uxyYzCaxuUms44XIkdAJbmzww==} + '@angular-devkit/build-webpack@0.2003.5': + resolution: {integrity: sha512-BdcaJ5c/a+SD8ZaUo1Qq0a03zeTvGX4ydIaM4li5JYuA8bPCibU9tnb/1FcOWgIZVL1RdV6oIIqbAW6ufq7e1g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.3.4': - resolution: {integrity: sha512-r83jn9yVdPh618oGgoKPggMsQGOkQqJbxEutd4CE9mnotPCE2uRTIyaFMh8sohNUeoQNRmj9rbr2pWGVlgERpg==} + '@angular-devkit/core@20.3.5': + resolution: {integrity: sha512-NpAP5j3q/n+SC1s0yAWKDAbc7Y8xUxlmJ5iDRJBGu6qDKM7lMnYA1tn2UEy/JnXluJ2XZqqiymrtucw7yux2xQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -220,12 +220,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.3.4': - resolution: {integrity: sha512-JYlcmVBKNT9+cQ6T2tmu+yVQ2bJk8tG0mXvPHWXrl/M4c6NObhSSThK50tJHy0Xo3gl8WgogOxUeJNnBq67cIQ==} + '@angular-devkit/schematics@20.3.5': + resolution: {integrity: sha512-BDizJp7QIoCyMZmuGKoryNUH3QgFPnkEIv0gRdpLhZum4+ZN/DYWaf/jSSGnSVGK88oMrgq7420VEjYPlgJ5MA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@20.3.4': - resolution: {integrity: sha512-2ZPyEQxg9FCM7gv5NZHZVCec6ubb7HM/fkzr7wcYQArN8E8EknlyfXn6G5AoqkEsQZGqtJOD8sfti0m4kYiwkQ==} + '@angular/build@20.3.5': + resolution: {integrity: sha512-Nwwwm8U7lolkdHt75PiPkW93689SBFUN9qEQeu02sPfq2Tqyn20PZGifXkV8A/6mlWbQUjfUnGpRTVk/WhW9Eg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 @@ -235,7 +235,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 @@ -270,8 +270,8 @@ packages: vitest: optional: true - '@angular/cli@20.3.4': - resolution: {integrity: sha512-aNPk9ljY2PTc+ZoA7M67rxNvhbUJvzkuYcAdJuHbAIDoWcr2HhyFM2aGrLH3DVemY39xN/haJHj3FYJ8rCdXNw==} + '@angular/cli@20.3.5': + resolution: {integrity: sha512-UA843Mh5uHIWnrzKUotGmhJmvefyEizFS7X8xJEUJsX5pa1EKUB/145rKHoLHxRRpHGxFcXtvciJCksFz1lSBA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true @@ -1358,8 +1358,8 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@ngtools/webpack@20.3.4': - resolution: {integrity: sha512-5G2Q9VguR73RaSbqVpsW1LumITsPxceLL0+L94IOHoV4eYlFciJTXLWgcRUoChh73bt0wLMgdwUVWKjaVtjOLQ==} + '@ngtools/webpack@20.3.5': + resolution: {integrity: sha512-LThQWzgEw6a1eTRWn2hUxwVe8WalL75yola4AaI8gJVqlRhfTcjqpleULihCm9cynn3HnVsaHFElaoLdxhugCA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -1628,8 +1628,8 @@ packages: cpu: [x64] os: [win32] - '@schematics/angular@20.3.4': - resolution: {integrity: sha512-aIgeRAfSJdxVfsES521vNb6Nuy+Uei7xE85hD+mQHX+62bN7vJhM/tmMFIYS7UF8d0rRnMPiGEr2Rfx6Om5iPg==} + '@schematics/angular@20.3.5': + resolution: {integrity: sha512-mrVWO64psqah8E8HgpF30NMizVZyX6aH3k6hqf2tDgU3+giKX7xvTG9UQCaXA4MLBsQbpcWAmwPLipwLnPm8wA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sigstore/bundle@3.1.0': @@ -4891,20 +4891,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2003.4(chokidar@4.0.3)': + '@angular-devkit/architect@0.2003.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(protractor@7.0.0)(typescript@5.9.2)': + '@angular-devkit/build-angular@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(protractor@7.0.0)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular/build': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular/build': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 '@babel/generator': 7.28.3 @@ -4916,7 +4916,7 @@ snapshots: '@babel/preset-env': 7.28.3(@babel/core@7.28.3) '@babel/runtime': 7.28.3 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) + '@ngtools/webpack': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.6) babel-loader: 10.0.0(@babel/core@7.28.3)(webpack@5.101.2(esbuild@0.25.9)) @@ -4985,16 +4985,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': + '@angular-devkit/build-webpack@0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.101.2(esbuild@0.25.9) webpack-dev-server: 5.2.2(webpack@5.101.2) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.3.4(chokidar@4.0.3)': + '@angular-devkit/core@20.3.5(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -5005,9 +5005,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.3.4(chokidar@4.0.3)': + '@angular-devkit/schematics@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 8.2.0 @@ -5015,10 +5015,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': + '@angular/build@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 @@ -5067,15 +5067,15 @@ snapshots: - tsx - yaml - '@angular/cli@20.3.4(@types/node@20.19.17)(chokidar@4.0.3)': + '@angular/cli@20.3.5(@types/node@20.19.17)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@20.19.17) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@20.19.17))(@types/node@20.19.17)(listr2@9.0.1) '@modelcontextprotocol/sdk': 1.17.3 - '@schematics/angular': 20.3.4(chokidar@4.0.3) + '@schematics/angular': 20.3.5(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 ini: 5.0.0 @@ -6198,7 +6198,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@ngtools/webpack@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': + '@ngtools/webpack@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 5.9.2 @@ -6405,10 +6405,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.3': optional: true - '@schematics/angular@20.3.4(chokidar@4.0.3)': + '@schematics/angular@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar diff --git a/integration/defer/package.json b/integration/defer/package.json index 019fe44daaa..3d0b1c9df2f 100644 --- a/integration/defer/package.json +++ b/integration/defer/package.json @@ -23,9 +23,9 @@ "zone.js": "0.15.1" }, "devDependencies": { - "@angular-devkit/build-angular": "20.3.4", - "@angular/build": "20.3.4", - "@angular/cli": "20.3.4", + "@angular-devkit/build-angular": "20.3.5", + "@angular/build": "20.3.5", + "@angular/cli": "20.3.5", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "ts-node": "10.9.1", "typescript": "5.9.2" diff --git a/integration/defer/pnpm-lock.yaml b/integration/defer/pnpm-lock.yaml index e65a5db4e93..891a4ac30cc 100644 --- a/integration/defer/pnpm-lock.yaml +++ b/integration/defer/pnpm-lock.yaml @@ -37,14 +37,14 @@ importers: version: 0.15.1 devDependencies: '@angular-devkit/build-angular': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@24.5.2)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@24.5.2)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2) '@angular/build': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@24.5.2)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@24.5.2)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/cli': - specifier: 20.3.4 - version: 20.3.4(@types/node@24.5.2)(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(@types/node@24.5.2)(chokidar@4.0.3) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -117,12 +117,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2003.4': - resolution: {integrity: sha512-OKT6QuoG+rZZmRQ9mSZoh1pCGB5jBrkb45CzI8VdaLFhrZ7Uqg1wri1tj5KpSQYLAd22uUFNIE0uzMmGwXHbYA==} + '@angular-devkit/architect@0.2003.5': + resolution: {integrity: sha512-KtA//ucTIdnKp1+vTYnqBallEbiZHLx3Gs7XgYm+p4VJfVjbMZHWY2vrbJoyCUp05goiv2XnDy0bKQ9VYHePWg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.3.4': - resolution: {integrity: sha512-Lc/Hi4A0xBDbPb0tg7JHofIkqTigwKFOTU4Y/y/sN/9BQ7z3M/cHylaFceCtTjwnqybOzWyR58bStLO1wIN8Gw==} + '@angular-devkit/build-angular@20.3.5': + resolution: {integrity: sha512-33bG6ic/GC9OrqPiR6ynTpnw9vKfebZtWQzFO9ovjkUoZt4lUFWUgo/F0zeoaJgj0N35Ihn3Dvtxz/x2rwr9lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -131,7 +131,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -171,15 +171,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2003.4': - resolution: {integrity: sha512-p5nBSTu9ijz+v3ku+eWc8m+nYjn8q36dkupoKUCgaG1UkPTeHvgI341xPqvY1uxyYzCaxuUms44XIkdAJbmzww==} + '@angular-devkit/build-webpack@0.2003.5': + resolution: {integrity: sha512-BdcaJ5c/a+SD8ZaUo1Qq0a03zeTvGX4ydIaM4li5JYuA8bPCibU9tnb/1FcOWgIZVL1RdV6oIIqbAW6ufq7e1g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.3.4': - resolution: {integrity: sha512-r83jn9yVdPh618oGgoKPggMsQGOkQqJbxEutd4CE9mnotPCE2uRTIyaFMh8sohNUeoQNRmj9rbr2pWGVlgERpg==} + '@angular-devkit/core@20.3.5': + resolution: {integrity: sha512-NpAP5j3q/n+SC1s0yAWKDAbc7Y8xUxlmJ5iDRJBGu6qDKM7lMnYA1tn2UEy/JnXluJ2XZqqiymrtucw7yux2xQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -187,12 +187,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.3.4': - resolution: {integrity: sha512-JYlcmVBKNT9+cQ6T2tmu+yVQ2bJk8tG0mXvPHWXrl/M4c6NObhSSThK50tJHy0Xo3gl8WgogOxUeJNnBq67cIQ==} + '@angular-devkit/schematics@20.3.5': + resolution: {integrity: sha512-BDizJp7QIoCyMZmuGKoryNUH3QgFPnkEIv0gRdpLhZum4+ZN/DYWaf/jSSGnSVGK88oMrgq7420VEjYPlgJ5MA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@20.3.4': - resolution: {integrity: sha512-2ZPyEQxg9FCM7gv5NZHZVCec6ubb7HM/fkzr7wcYQArN8E8EknlyfXn6G5AoqkEsQZGqtJOD8sfti0m4kYiwkQ==} + '@angular/build@20.3.5': + resolution: {integrity: sha512-Nwwwm8U7lolkdHt75PiPkW93689SBFUN9qEQeu02sPfq2Tqyn20PZGifXkV8A/6mlWbQUjfUnGpRTVk/WhW9Eg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 @@ -202,7 +202,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 @@ -237,8 +237,8 @@ packages: vitest: optional: true - '@angular/cli@20.3.4': - resolution: {integrity: sha512-aNPk9ljY2PTc+ZoA7M67rxNvhbUJvzkuYcAdJuHbAIDoWcr2HhyFM2aGrLH3DVemY39xN/haJHj3FYJ8rCdXNw==} + '@angular/cli@20.3.5': + resolution: {integrity: sha512-UA843Mh5uHIWnrzKUotGmhJmvefyEizFS7X8xJEUJsX5pa1EKUB/145rKHoLHxRRpHGxFcXtvciJCksFz1lSBA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true @@ -1321,8 +1321,8 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@ngtools/webpack@20.3.4': - resolution: {integrity: sha512-5G2Q9VguR73RaSbqVpsW1LumITsPxceLL0+L94IOHoV4eYlFciJTXLWgcRUoChh73bt0wLMgdwUVWKjaVtjOLQ==} + '@ngtools/webpack@20.3.5': + resolution: {integrity: sha512-LThQWzgEw6a1eTRWn2hUxwVe8WalL75yola4AaI8gJVqlRhfTcjqpleULihCm9cynn3HnVsaHFElaoLdxhugCA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -1591,8 +1591,8 @@ packages: cpu: [x64] os: [win32] - '@schematics/angular@20.3.4': - resolution: {integrity: sha512-aIgeRAfSJdxVfsES521vNb6Nuy+Uei7xE85hD+mQHX+62bN7vJhM/tmMFIYS7UF8d0rRnMPiGEr2Rfx6Om5iPg==} + '@schematics/angular@20.3.5': + resolution: {integrity: sha512-mrVWO64psqah8E8HgpF30NMizVZyX6aH3k6hqf2tDgU3+giKX7xvTG9UQCaXA4MLBsQbpcWAmwPLipwLnPm8wA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sigstore/bundle@3.1.0': @@ -4197,20 +4197,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2003.4(chokidar@4.0.3)': + '@angular-devkit/architect@0.2003.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@24.5.2)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2)': + '@angular-devkit/build-angular@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@24.5.2)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular/build': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@24.5.2)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular/build': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@24.5.2)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 '@babel/generator': 7.28.3 @@ -4222,7 +4222,7 @@ snapshots: '@babel/preset-env': 7.28.3(@babel/core@7.28.3) '@babel/runtime': 7.28.3 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) + '@ngtools/webpack': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.6) babel-loader: 10.0.0(@babel/core@7.28.3)(webpack@5.101.2(esbuild@0.25.9)) @@ -4289,16 +4289,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': + '@angular-devkit/build-webpack@0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.101.2(esbuild@0.25.9) webpack-dev-server: 5.2.2(webpack@5.101.2) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.3.4(chokidar@4.0.3)': + '@angular-devkit/core@20.3.5(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -4309,9 +4309,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.3.4(chokidar@4.0.3)': + '@angular-devkit/schematics@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 8.2.0 @@ -4319,10 +4319,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@24.5.2)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': + '@angular/build@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@24.5.2)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 @@ -4370,15 +4370,15 @@ snapshots: - tsx - yaml - '@angular/cli@20.3.4(@types/node@24.5.2)(chokidar@4.0.3)': + '@angular/cli@20.3.5(@types/node@24.5.2)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@24.5.2) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@24.5.2))(@types/node@24.5.2)(listr2@9.0.1) '@modelcontextprotocol/sdk': 1.17.3 - '@schematics/angular': 20.3.4(chokidar@4.0.3) + '@schematics/angular': 20.3.5(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 ini: 5.0.0 @@ -5499,7 +5499,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@ngtools/webpack@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': + '@ngtools/webpack@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 5.9.2 @@ -5706,10 +5706,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.3': optional: true - '@schematics/angular@20.3.4(chokidar@4.0.3)': + '@schematics/angular@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar diff --git a/integration/legacy-animations-async/package.json b/integration/legacy-animations-async/package.json index 5e96985c58d..70eace46296 100644 --- a/integration/legacy-animations-async/package.json +++ b/integration/legacy-animations-async/package.json @@ -23,8 +23,8 @@ "zone.js": "0.15.1" }, "devDependencies": { - "@angular-devkit/build-angular": "20.3.4", - "@angular/cli": "20.3.4", + "@angular-devkit/build-angular": "20.3.5", + "@angular/cli": "20.3.5", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/node": "^20.14.8", "ts-node": "^10.9.1", diff --git a/integration/legacy-animations-async/pnpm-lock.yaml b/integration/legacy-animations-async/pnpm-lock.yaml index d8db6b05af8..cb2bb3df64f 100644 --- a/integration/legacy-animations-async/pnpm-lock.yaml +++ b/integration/legacy-animations-async/pnpm-lock.yaml @@ -37,11 +37,11 @@ importers: version: 0.15.1 devDependencies: '@angular-devkit/build-angular': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2) '@angular/cli': - specifier: 20.3.4 - version: 20.3.4(@types/node@20.19.17)(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(@types/node@20.19.17)(chokidar@4.0.3) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -117,12 +117,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2003.4': - resolution: {integrity: sha512-OKT6QuoG+rZZmRQ9mSZoh1pCGB5jBrkb45CzI8VdaLFhrZ7Uqg1wri1tj5KpSQYLAd22uUFNIE0uzMmGwXHbYA==} + '@angular-devkit/architect@0.2003.5': + resolution: {integrity: sha512-KtA//ucTIdnKp1+vTYnqBallEbiZHLx3Gs7XgYm+p4VJfVjbMZHWY2vrbJoyCUp05goiv2XnDy0bKQ9VYHePWg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.3.4': - resolution: {integrity: sha512-Lc/Hi4A0xBDbPb0tg7JHofIkqTigwKFOTU4Y/y/sN/9BQ7z3M/cHylaFceCtTjwnqybOzWyR58bStLO1wIN8Gw==} + '@angular-devkit/build-angular@20.3.5': + resolution: {integrity: sha512-33bG6ic/GC9OrqPiR6ynTpnw9vKfebZtWQzFO9ovjkUoZt4lUFWUgo/F0zeoaJgj0N35Ihn3Dvtxz/x2rwr9lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -131,7 +131,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -171,15 +171,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2003.4': - resolution: {integrity: sha512-p5nBSTu9ijz+v3ku+eWc8m+nYjn8q36dkupoKUCgaG1UkPTeHvgI341xPqvY1uxyYzCaxuUms44XIkdAJbmzww==} + '@angular-devkit/build-webpack@0.2003.5': + resolution: {integrity: sha512-BdcaJ5c/a+SD8ZaUo1Qq0a03zeTvGX4ydIaM4li5JYuA8bPCibU9tnb/1FcOWgIZVL1RdV6oIIqbAW6ufq7e1g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.3.4': - resolution: {integrity: sha512-r83jn9yVdPh618oGgoKPggMsQGOkQqJbxEutd4CE9mnotPCE2uRTIyaFMh8sohNUeoQNRmj9rbr2pWGVlgERpg==} + '@angular-devkit/core@20.3.5': + resolution: {integrity: sha512-NpAP5j3q/n+SC1s0yAWKDAbc7Y8xUxlmJ5iDRJBGu6qDKM7lMnYA1tn2UEy/JnXluJ2XZqqiymrtucw7yux2xQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -187,12 +187,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.3.4': - resolution: {integrity: sha512-JYlcmVBKNT9+cQ6T2tmu+yVQ2bJk8tG0mXvPHWXrl/M4c6NObhSSThK50tJHy0Xo3gl8WgogOxUeJNnBq67cIQ==} + '@angular-devkit/schematics@20.3.5': + resolution: {integrity: sha512-BDizJp7QIoCyMZmuGKoryNUH3QgFPnkEIv0gRdpLhZum4+ZN/DYWaf/jSSGnSVGK88oMrgq7420VEjYPlgJ5MA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@20.3.4': - resolution: {integrity: sha512-2ZPyEQxg9FCM7gv5NZHZVCec6ubb7HM/fkzr7wcYQArN8E8EknlyfXn6G5AoqkEsQZGqtJOD8sfti0m4kYiwkQ==} + '@angular/build@20.3.5': + resolution: {integrity: sha512-Nwwwm8U7lolkdHt75PiPkW93689SBFUN9qEQeu02sPfq2Tqyn20PZGifXkV8A/6mlWbQUjfUnGpRTVk/WhW9Eg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 @@ -202,7 +202,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 @@ -237,8 +237,8 @@ packages: vitest: optional: true - '@angular/cli@20.3.4': - resolution: {integrity: sha512-aNPk9ljY2PTc+ZoA7M67rxNvhbUJvzkuYcAdJuHbAIDoWcr2HhyFM2aGrLH3DVemY39xN/haJHj3FYJ8rCdXNw==} + '@angular/cli@20.3.5': + resolution: {integrity: sha512-UA843Mh5uHIWnrzKUotGmhJmvefyEizFS7X8xJEUJsX5pa1EKUB/145rKHoLHxRRpHGxFcXtvciJCksFz1lSBA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true @@ -1321,8 +1321,8 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@ngtools/webpack@20.3.4': - resolution: {integrity: sha512-5G2Q9VguR73RaSbqVpsW1LumITsPxceLL0+L94IOHoV4eYlFciJTXLWgcRUoChh73bt0wLMgdwUVWKjaVtjOLQ==} + '@ngtools/webpack@20.3.5': + resolution: {integrity: sha512-LThQWzgEw6a1eTRWn2hUxwVe8WalL75yola4AaI8gJVqlRhfTcjqpleULihCm9cynn3HnVsaHFElaoLdxhugCA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -1591,8 +1591,8 @@ packages: cpu: [x64] os: [win32] - '@schematics/angular@20.3.4': - resolution: {integrity: sha512-aIgeRAfSJdxVfsES521vNb6Nuy+Uei7xE85hD+mQHX+62bN7vJhM/tmMFIYS7UF8d0rRnMPiGEr2Rfx6Om5iPg==} + '@schematics/angular@20.3.5': + resolution: {integrity: sha512-mrVWO64psqah8E8HgpF30NMizVZyX6aH3k6hqf2tDgU3+giKX7xvTG9UQCaXA4MLBsQbpcWAmwPLipwLnPm8wA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sigstore/bundle@3.1.0': @@ -4197,20 +4197,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2003.4(chokidar@4.0.3)': + '@angular-devkit/architect@0.2003.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2)': + '@angular-devkit/build-angular@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular/build': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular/build': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 '@babel/generator': 7.28.3 @@ -4222,7 +4222,7 @@ snapshots: '@babel/preset-env': 7.28.3(@babel/core@7.28.3) '@babel/runtime': 7.28.3 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) + '@ngtools/webpack': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.6) babel-loader: 10.0.0(@babel/core@7.28.3)(webpack@5.101.2(esbuild@0.25.9)) @@ -4289,16 +4289,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': + '@angular-devkit/build-webpack@0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.101.2(esbuild@0.25.9) webpack-dev-server: 5.2.2(webpack@5.101.2) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.3.4(chokidar@4.0.3)': + '@angular-devkit/core@20.3.5(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -4309,9 +4309,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.3.4(chokidar@4.0.3)': + '@angular-devkit/schematics@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 8.2.0 @@ -4319,10 +4319,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': + '@angular/build@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 @@ -4370,15 +4370,15 @@ snapshots: - tsx - yaml - '@angular/cli@20.3.4(@types/node@20.19.17)(chokidar@4.0.3)': + '@angular/cli@20.3.5(@types/node@20.19.17)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@20.19.17) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@20.19.17))(@types/node@20.19.17)(listr2@9.0.1) '@modelcontextprotocol/sdk': 1.17.3 - '@schematics/angular': 20.3.4(chokidar@4.0.3) + '@schematics/angular': 20.3.5(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 ini: 5.0.0 @@ -5499,7 +5499,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@ngtools/webpack@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': + '@ngtools/webpack@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 5.9.2 @@ -5706,10 +5706,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.3': optional: true - '@schematics/angular@20.3.4(chokidar@4.0.3)': + '@schematics/angular@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar diff --git a/integration/legacy-animations/package.json b/integration/legacy-animations/package.json index 46b49626562..324f30d03aa 100644 --- a/integration/legacy-animations/package.json +++ b/integration/legacy-animations/package.json @@ -23,8 +23,8 @@ "zone.js": "0.15.1" }, "devDependencies": { - "@angular-devkit/build-angular": "20.3.4", - "@angular/cli": "20.3.4", + "@angular-devkit/build-angular": "20.3.5", + "@angular/cli": "20.3.5", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@angular/language-service": "link:./in-existing-linked-by-bazel", "@types/jasmine": "^5.0.0", diff --git a/integration/legacy-animations/pnpm-lock.yaml b/integration/legacy-animations/pnpm-lock.yaml index 304286aded1..d57ba8c4d31 100644 --- a/integration/legacy-animations/pnpm-lock.yaml +++ b/integration/legacy-animations/pnpm-lock.yaml @@ -37,11 +37,11 @@ importers: version: 0.15.1 devDependencies: '@angular-devkit/build-angular': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(protractor@7.0.0)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(protractor@7.0.0)(typescript@5.9.2) '@angular/cli': - specifier: 20.3.4 - version: 20.3.4(@types/node@20.19.17)(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(@types/node@20.19.17)(chokidar@4.0.3) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -147,12 +147,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2003.4': - resolution: {integrity: sha512-OKT6QuoG+rZZmRQ9mSZoh1pCGB5jBrkb45CzI8VdaLFhrZ7Uqg1wri1tj5KpSQYLAd22uUFNIE0uzMmGwXHbYA==} + '@angular-devkit/architect@0.2003.5': + resolution: {integrity: sha512-KtA//ucTIdnKp1+vTYnqBallEbiZHLx3Gs7XgYm+p4VJfVjbMZHWY2vrbJoyCUp05goiv2XnDy0bKQ9VYHePWg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.3.4': - resolution: {integrity: sha512-Lc/Hi4A0xBDbPb0tg7JHofIkqTigwKFOTU4Y/y/sN/9BQ7z3M/cHylaFceCtTjwnqybOzWyR58bStLO1wIN8Gw==} + '@angular-devkit/build-angular@20.3.5': + resolution: {integrity: sha512-33bG6ic/GC9OrqPiR6ynTpnw9vKfebZtWQzFO9ovjkUoZt4lUFWUgo/F0zeoaJgj0N35Ihn3Dvtxz/x2rwr9lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -161,7 +161,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -201,15 +201,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2003.4': - resolution: {integrity: sha512-p5nBSTu9ijz+v3ku+eWc8m+nYjn8q36dkupoKUCgaG1UkPTeHvgI341xPqvY1uxyYzCaxuUms44XIkdAJbmzww==} + '@angular-devkit/build-webpack@0.2003.5': + resolution: {integrity: sha512-BdcaJ5c/a+SD8ZaUo1Qq0a03zeTvGX4ydIaM4li5JYuA8bPCibU9tnb/1FcOWgIZVL1RdV6oIIqbAW6ufq7e1g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.3.4': - resolution: {integrity: sha512-r83jn9yVdPh618oGgoKPggMsQGOkQqJbxEutd4CE9mnotPCE2uRTIyaFMh8sohNUeoQNRmj9rbr2pWGVlgERpg==} + '@angular-devkit/core@20.3.5': + resolution: {integrity: sha512-NpAP5j3q/n+SC1s0yAWKDAbc7Y8xUxlmJ5iDRJBGu6qDKM7lMnYA1tn2UEy/JnXluJ2XZqqiymrtucw7yux2xQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -217,12 +217,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.3.4': - resolution: {integrity: sha512-JYlcmVBKNT9+cQ6T2tmu+yVQ2bJk8tG0mXvPHWXrl/M4c6NObhSSThK50tJHy0Xo3gl8WgogOxUeJNnBq67cIQ==} + '@angular-devkit/schematics@20.3.5': + resolution: {integrity: sha512-BDizJp7QIoCyMZmuGKoryNUH3QgFPnkEIv0gRdpLhZum4+ZN/DYWaf/jSSGnSVGK88oMrgq7420VEjYPlgJ5MA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@20.3.4': - resolution: {integrity: sha512-2ZPyEQxg9FCM7gv5NZHZVCec6ubb7HM/fkzr7wcYQArN8E8EknlyfXn6G5AoqkEsQZGqtJOD8sfti0m4kYiwkQ==} + '@angular/build@20.3.5': + resolution: {integrity: sha512-Nwwwm8U7lolkdHt75PiPkW93689SBFUN9qEQeu02sPfq2Tqyn20PZGifXkV8A/6mlWbQUjfUnGpRTVk/WhW9Eg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 @@ -232,7 +232,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 @@ -267,8 +267,8 @@ packages: vitest: optional: true - '@angular/cli@20.3.4': - resolution: {integrity: sha512-aNPk9ljY2PTc+ZoA7M67rxNvhbUJvzkuYcAdJuHbAIDoWcr2HhyFM2aGrLH3DVemY39xN/haJHj3FYJ8rCdXNw==} + '@angular/cli@20.3.5': + resolution: {integrity: sha512-UA843Mh5uHIWnrzKUotGmhJmvefyEizFS7X8xJEUJsX5pa1EKUB/145rKHoLHxRRpHGxFcXtvciJCksFz1lSBA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true @@ -1355,8 +1355,8 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@ngtools/webpack@20.3.4': - resolution: {integrity: sha512-5G2Q9VguR73RaSbqVpsW1LumITsPxceLL0+L94IOHoV4eYlFciJTXLWgcRUoChh73bt0wLMgdwUVWKjaVtjOLQ==} + '@ngtools/webpack@20.3.5': + resolution: {integrity: sha512-LThQWzgEw6a1eTRWn2hUxwVe8WalL75yola4AaI8gJVqlRhfTcjqpleULihCm9cynn3HnVsaHFElaoLdxhugCA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -1625,8 +1625,8 @@ packages: cpu: [x64] os: [win32] - '@schematics/angular@20.3.4': - resolution: {integrity: sha512-aIgeRAfSJdxVfsES521vNb6Nuy+Uei7xE85hD+mQHX+62bN7vJhM/tmMFIYS7UF8d0rRnMPiGEr2Rfx6Om5iPg==} + '@schematics/angular@20.3.5': + resolution: {integrity: sha512-mrVWO64psqah8E8HgpF30NMizVZyX6aH3k6hqf2tDgU3+giKX7xvTG9UQCaXA4MLBsQbpcWAmwPLipwLnPm8wA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sigstore/bundle@3.1.0': @@ -4858,20 +4858,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2003.4(chokidar@4.0.3)': + '@angular-devkit/architect@0.2003.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(protractor@7.0.0)(typescript@5.9.2)': + '@angular-devkit/build-angular@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(protractor@7.0.0)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular/build': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular/build': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 '@babel/generator': 7.28.3 @@ -4883,7 +4883,7 @@ snapshots: '@babel/preset-env': 7.28.3(@babel/core@7.28.3) '@babel/runtime': 7.28.3 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) + '@ngtools/webpack': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.6) babel-loader: 10.0.0(@babel/core@7.28.3)(webpack@5.101.2(esbuild@0.25.9)) @@ -4952,16 +4952,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': + '@angular-devkit/build-webpack@0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.101.2(esbuild@0.25.9) webpack-dev-server: 5.2.2(webpack@5.101.2) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.3.4(chokidar@4.0.3)': + '@angular-devkit/core@20.3.5(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -4972,9 +4972,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.3.4(chokidar@4.0.3)': + '@angular-devkit/schematics@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 8.2.0 @@ -4982,10 +4982,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': + '@angular/build@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 @@ -5034,15 +5034,15 @@ snapshots: - tsx - yaml - '@angular/cli@20.3.4(@types/node@20.19.17)(chokidar@4.0.3)': + '@angular/cli@20.3.5(@types/node@20.19.17)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@20.19.17) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@20.19.17))(@types/node@20.19.17)(listr2@9.0.1) '@modelcontextprotocol/sdk': 1.17.3 - '@schematics/angular': 20.3.4(chokidar@4.0.3) + '@schematics/angular': 20.3.5(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 ini: 5.0.0 @@ -6165,7 +6165,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@ngtools/webpack@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': + '@ngtools/webpack@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 5.9.2 @@ -6372,10 +6372,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.3': optional: true - '@schematics/angular@20.3.4(chokidar@4.0.3)': + '@schematics/angular@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar diff --git a/integration/ng-add-localize/package.json b/integration/ng-add-localize/package.json index 648bba4f78f..fb0660cf773 100644 --- a/integration/ng-add-localize/package.json +++ b/integration/ng-add-localize/package.json @@ -21,8 +21,8 @@ "zone.js": "0.15.1" }, "devDependencies": { - "@angular-devkit/build-angular": "20.3.4", - "@angular/cli": "20.3.4", + "@angular-devkit/build-angular": "20.3.5", + "@angular/cli": "20.3.5", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/node": "^20.14.8", "typescript": "5.9.2" diff --git a/integration/ng-add-localize/pnpm-lock.yaml b/integration/ng-add-localize/pnpm-lock.yaml index 3cb3b64ca89..e5b823ad311 100644 --- a/integration/ng-add-localize/pnpm-lock.yaml +++ b/integration/ng-add-localize/pnpm-lock.yaml @@ -37,11 +37,11 @@ importers: version: 0.15.1 devDependencies: '@angular-devkit/build-angular': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2) '@angular/cli': - specifier: 20.3.4 - version: 20.3.4(@types/node@20.19.17)(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(@types/node@20.19.17)(chokidar@4.0.3) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -114,12 +114,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2003.4': - resolution: {integrity: sha512-OKT6QuoG+rZZmRQ9mSZoh1pCGB5jBrkb45CzI8VdaLFhrZ7Uqg1wri1tj5KpSQYLAd22uUFNIE0uzMmGwXHbYA==} + '@angular-devkit/architect@0.2003.5': + resolution: {integrity: sha512-KtA//ucTIdnKp1+vTYnqBallEbiZHLx3Gs7XgYm+p4VJfVjbMZHWY2vrbJoyCUp05goiv2XnDy0bKQ9VYHePWg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.3.4': - resolution: {integrity: sha512-Lc/Hi4A0xBDbPb0tg7JHofIkqTigwKFOTU4Y/y/sN/9BQ7z3M/cHylaFceCtTjwnqybOzWyR58bStLO1wIN8Gw==} + '@angular-devkit/build-angular@20.3.5': + resolution: {integrity: sha512-33bG6ic/GC9OrqPiR6ynTpnw9vKfebZtWQzFO9ovjkUoZt4lUFWUgo/F0zeoaJgj0N35Ihn3Dvtxz/x2rwr9lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -128,7 +128,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -168,15 +168,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2003.4': - resolution: {integrity: sha512-p5nBSTu9ijz+v3ku+eWc8m+nYjn8q36dkupoKUCgaG1UkPTeHvgI341xPqvY1uxyYzCaxuUms44XIkdAJbmzww==} + '@angular-devkit/build-webpack@0.2003.5': + resolution: {integrity: sha512-BdcaJ5c/a+SD8ZaUo1Qq0a03zeTvGX4ydIaM4li5JYuA8bPCibU9tnb/1FcOWgIZVL1RdV6oIIqbAW6ufq7e1g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.3.4': - resolution: {integrity: sha512-r83jn9yVdPh618oGgoKPggMsQGOkQqJbxEutd4CE9mnotPCE2uRTIyaFMh8sohNUeoQNRmj9rbr2pWGVlgERpg==} + '@angular-devkit/core@20.3.5': + resolution: {integrity: sha512-NpAP5j3q/n+SC1s0yAWKDAbc7Y8xUxlmJ5iDRJBGu6qDKM7lMnYA1tn2UEy/JnXluJ2XZqqiymrtucw7yux2xQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -184,12 +184,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.3.4': - resolution: {integrity: sha512-JYlcmVBKNT9+cQ6T2tmu+yVQ2bJk8tG0mXvPHWXrl/M4c6NObhSSThK50tJHy0Xo3gl8WgogOxUeJNnBq67cIQ==} + '@angular-devkit/schematics@20.3.5': + resolution: {integrity: sha512-BDizJp7QIoCyMZmuGKoryNUH3QgFPnkEIv0gRdpLhZum4+ZN/DYWaf/jSSGnSVGK88oMrgq7420VEjYPlgJ5MA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@20.3.4': - resolution: {integrity: sha512-2ZPyEQxg9FCM7gv5NZHZVCec6ubb7HM/fkzr7wcYQArN8E8EknlyfXn6G5AoqkEsQZGqtJOD8sfti0m4kYiwkQ==} + '@angular/build@20.3.5': + resolution: {integrity: sha512-Nwwwm8U7lolkdHt75PiPkW93689SBFUN9qEQeu02sPfq2Tqyn20PZGifXkV8A/6mlWbQUjfUnGpRTVk/WhW9Eg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 @@ -199,7 +199,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 @@ -234,8 +234,8 @@ packages: vitest: optional: true - '@angular/cli@20.3.4': - resolution: {integrity: sha512-aNPk9ljY2PTc+ZoA7M67rxNvhbUJvzkuYcAdJuHbAIDoWcr2HhyFM2aGrLH3DVemY39xN/haJHj3FYJ8rCdXNw==} + '@angular/cli@20.3.5': + resolution: {integrity: sha512-UA843Mh5uHIWnrzKUotGmhJmvefyEizFS7X8xJEUJsX5pa1EKUB/145rKHoLHxRRpHGxFcXtvciJCksFz1lSBA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true @@ -1311,8 +1311,8 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@ngtools/webpack@20.3.4': - resolution: {integrity: sha512-5G2Q9VguR73RaSbqVpsW1LumITsPxceLL0+L94IOHoV4eYlFciJTXLWgcRUoChh73bt0wLMgdwUVWKjaVtjOLQ==} + '@ngtools/webpack@20.3.5': + resolution: {integrity: sha512-LThQWzgEw6a1eTRWn2hUxwVe8WalL75yola4AaI8gJVqlRhfTcjqpleULihCm9cynn3HnVsaHFElaoLdxhugCA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -1581,8 +1581,8 @@ packages: cpu: [x64] os: [win32] - '@schematics/angular@20.3.4': - resolution: {integrity: sha512-aIgeRAfSJdxVfsES521vNb6Nuy+Uei7xE85hD+mQHX+62bN7vJhM/tmMFIYS7UF8d0rRnMPiGEr2Rfx6Om5iPg==} + '@schematics/angular@20.3.5': + resolution: {integrity: sha512-mrVWO64psqah8E8HgpF30NMizVZyX6aH3k6hqf2tDgU3+giKX7xvTG9UQCaXA4MLBsQbpcWAmwPLipwLnPm8wA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sigstore/bundle@3.1.0': @@ -4137,20 +4137,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2003.4(chokidar@4.0.3)': + '@angular-devkit/architect@0.2003.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2)': + '@angular-devkit/build-angular@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular/build': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular/build': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 '@babel/generator': 7.28.3 @@ -4162,7 +4162,7 @@ snapshots: '@babel/preset-env': 7.28.3(@babel/core@7.28.3) '@babel/runtime': 7.28.3 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) + '@ngtools/webpack': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.6) babel-loader: 10.0.0(@babel/core@7.28.3)(webpack@5.101.2(esbuild@0.25.9)) @@ -4230,16 +4230,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': + '@angular-devkit/build-webpack@0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.101.2(esbuild@0.25.9) webpack-dev-server: 5.2.2(webpack@5.101.2) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.3.4(chokidar@4.0.3)': + '@angular-devkit/core@20.3.5(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -4250,9 +4250,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.3.4(chokidar@4.0.3)': + '@angular-devkit/schematics@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 8.2.0 @@ -4260,10 +4260,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': + '@angular/build@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 @@ -4312,15 +4312,15 @@ snapshots: - tsx - yaml - '@angular/cli@20.3.4(@types/node@20.19.17)(chokidar@4.0.3)': + '@angular/cli@20.3.5(@types/node@20.19.17)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@20.19.17) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@20.19.17))(@types/node@20.19.17)(listr2@9.0.1) '@modelcontextprotocol/sdk': 1.17.3 - '@schematics/angular': 20.3.4(chokidar@4.0.3) + '@schematics/angular': 20.3.5(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 ini: 5.0.0 @@ -5432,7 +5432,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@ngtools/webpack@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': + '@ngtools/webpack@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 5.9.2 @@ -5639,10 +5639,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.3': optional: true - '@schematics/angular@20.3.4(chokidar@4.0.3)': + '@schematics/angular@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar diff --git a/integration/platform-server-hydration/package.json b/integration/platform-server-hydration/package.json index 6b8ccfc477b..7ce18d5e3ad 100644 --- a/integration/platform-server-hydration/package.json +++ b/integration/platform-server-hydration/package.json @@ -19,15 +19,15 @@ "@angular/platform-browser": "link:./in-existing-linked-by-bazel", "@angular/platform-server": "link:./in-existing-linked-by-bazel", "@angular/router": "link:./in-existing-linked-by-bazel", - "@angular/ssr": "20.3.4", + "@angular/ssr": "20.3.5", "rxjs": "^7.0.0", "tslib": "^2.3.0", "zone.js": "0.15.1" }, "devDependencies": { - "@angular-devkit/build-angular": "20.3.4", - "@angular/build": "20.3.4", - "@angular/cli": "20.3.4", + "@angular-devkit/build-angular": "20.3.5", + "@angular/build": "20.3.5", + "@angular/cli": "20.3.5", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/jasmine": "^5.0.0", "@types/node": "^20.14.8", diff --git a/integration/platform-server-hydration/pnpm-lock.yaml b/integration/platform-server-hydration/pnpm-lock.yaml index a6125b1b009..7b2b66b77b8 100644 --- a/integration/platform-server-hydration/pnpm-lock.yaml +++ b/integration/platform-server-hydration/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel '@angular/ssr': - specifier: 20.3.4 - version: 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + specifier: 20.3.5 + version: 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) rxjs: specifier: ^7.0.0 version: 7.8.2 @@ -43,14 +43,14 @@ importers: version: 0.15.1 devDependencies: '@angular-devkit/build-angular': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(protractor@7.0.0)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(protractor@7.0.0)(typescript@5.9.2) '@angular/build': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/cli': - specifier: 20.3.4 - version: 20.3.4(@types/node@20.19.17)(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(@types/node@20.19.17)(chokidar@4.0.3) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -144,12 +144,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2003.4': - resolution: {integrity: sha512-OKT6QuoG+rZZmRQ9mSZoh1pCGB5jBrkb45CzI8VdaLFhrZ7Uqg1wri1tj5KpSQYLAd22uUFNIE0uzMmGwXHbYA==} + '@angular-devkit/architect@0.2003.5': + resolution: {integrity: sha512-KtA//ucTIdnKp1+vTYnqBallEbiZHLx3Gs7XgYm+p4VJfVjbMZHWY2vrbJoyCUp05goiv2XnDy0bKQ9VYHePWg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.3.4': - resolution: {integrity: sha512-Lc/Hi4A0xBDbPb0tg7JHofIkqTigwKFOTU4Y/y/sN/9BQ7z3M/cHylaFceCtTjwnqybOzWyR58bStLO1wIN8Gw==} + '@angular-devkit/build-angular@20.3.5': + resolution: {integrity: sha512-33bG6ic/GC9OrqPiR6ynTpnw9vKfebZtWQzFO9ovjkUoZt4lUFWUgo/F0zeoaJgj0N35Ihn3Dvtxz/x2rwr9lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -158,7 +158,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -198,15 +198,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2003.4': - resolution: {integrity: sha512-p5nBSTu9ijz+v3ku+eWc8m+nYjn8q36dkupoKUCgaG1UkPTeHvgI341xPqvY1uxyYzCaxuUms44XIkdAJbmzww==} + '@angular-devkit/build-webpack@0.2003.5': + resolution: {integrity: sha512-BdcaJ5c/a+SD8ZaUo1Qq0a03zeTvGX4ydIaM4li5JYuA8bPCibU9tnb/1FcOWgIZVL1RdV6oIIqbAW6ufq7e1g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.3.4': - resolution: {integrity: sha512-r83jn9yVdPh618oGgoKPggMsQGOkQqJbxEutd4CE9mnotPCE2uRTIyaFMh8sohNUeoQNRmj9rbr2pWGVlgERpg==} + '@angular-devkit/core@20.3.5': + resolution: {integrity: sha512-NpAP5j3q/n+SC1s0yAWKDAbc7Y8xUxlmJ5iDRJBGu6qDKM7lMnYA1tn2UEy/JnXluJ2XZqqiymrtucw7yux2xQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -214,12 +214,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.3.4': - resolution: {integrity: sha512-JYlcmVBKNT9+cQ6T2tmu+yVQ2bJk8tG0mXvPHWXrl/M4c6NObhSSThK50tJHy0Xo3gl8WgogOxUeJNnBq67cIQ==} + '@angular-devkit/schematics@20.3.5': + resolution: {integrity: sha512-BDizJp7QIoCyMZmuGKoryNUH3QgFPnkEIv0gRdpLhZum4+ZN/DYWaf/jSSGnSVGK88oMrgq7420VEjYPlgJ5MA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@20.3.4': - resolution: {integrity: sha512-2ZPyEQxg9FCM7gv5NZHZVCec6ubb7HM/fkzr7wcYQArN8E8EknlyfXn6G5AoqkEsQZGqtJOD8sfti0m4kYiwkQ==} + '@angular/build@20.3.5': + resolution: {integrity: sha512-Nwwwm8U7lolkdHt75PiPkW93689SBFUN9qEQeu02sPfq2Tqyn20PZGifXkV8A/6mlWbQUjfUnGpRTVk/WhW9Eg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 @@ -229,7 +229,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 @@ -264,13 +264,13 @@ packages: vitest: optional: true - '@angular/cli@20.3.4': - resolution: {integrity: sha512-aNPk9ljY2PTc+ZoA7M67rxNvhbUJvzkuYcAdJuHbAIDoWcr2HhyFM2aGrLH3DVemY39xN/haJHj3FYJ8rCdXNw==} + '@angular/cli@20.3.5': + resolution: {integrity: sha512-UA843Mh5uHIWnrzKUotGmhJmvefyEizFS7X8xJEUJsX5pa1EKUB/145rKHoLHxRRpHGxFcXtvciJCksFz1lSBA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/ssr@20.3.4': - resolution: {integrity: sha512-0jfFHUz5JkKI4DJ05lkob4AAOt1LPNsQ3A/u0k1Ctej15jR4fOdE+NcHBV+AZ3XV8eNPqlYbOuTa0lGOon9y/A==} + '@angular/ssr@20.3.5': + resolution: {integrity: sha512-Zec8N738/MpfyyTDo37dQ/EQAonOFCjSkKrVpI4b8itYPy0LVlT5zEBKft1kjwEWE2dTiQT/JoVCqswBbc0Dig==} peerDependencies: '@angular/common': ^20.0.0 '@angular/core': ^20.0.0 @@ -1359,8 +1359,8 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@ngtools/webpack@20.3.4': - resolution: {integrity: sha512-5G2Q9VguR73RaSbqVpsW1LumITsPxceLL0+L94IOHoV4eYlFciJTXLWgcRUoChh73bt0wLMgdwUVWKjaVtjOLQ==} + '@ngtools/webpack@20.3.5': + resolution: {integrity: sha512-LThQWzgEw6a1eTRWn2hUxwVe8WalL75yola4AaI8gJVqlRhfTcjqpleULihCm9cynn3HnVsaHFElaoLdxhugCA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -1629,8 +1629,8 @@ packages: cpu: [x64] os: [win32] - '@schematics/angular@20.3.4': - resolution: {integrity: sha512-aIgeRAfSJdxVfsES521vNb6Nuy+Uei7xE85hD+mQHX+62bN7vJhM/tmMFIYS7UF8d0rRnMPiGEr2Rfx6Om5iPg==} + '@schematics/angular@20.3.5': + resolution: {integrity: sha512-mrVWO64psqah8E8HgpF30NMizVZyX6aH3k6hqf2tDgU3+giKX7xvTG9UQCaXA4MLBsQbpcWAmwPLipwLnPm8wA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sigstore/bundle@3.1.0': @@ -4671,20 +4671,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2003.4(chokidar@4.0.3)': + '@angular-devkit/architect@0.2003.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(protractor@7.0.0)(typescript@5.9.2)': + '@angular-devkit/build-angular@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(protractor@7.0.0)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular/build': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular/build': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 '@babel/generator': 7.28.3 @@ -4696,7 +4696,7 @@ snapshots: '@babel/preset-env': 7.28.3(@babel/core@7.28.3) '@babel/runtime': 7.28.3 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) + '@ngtools/webpack': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.6) babel-loader: 10.0.0(@babel/core@7.28.3)(webpack@5.101.2(esbuild@0.25.9)) @@ -4740,7 +4740,7 @@ snapshots: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel '@angular/platform-server': link:in-existing-linked-by-bazel - '@angular/ssr': 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) esbuild: 0.25.9 protractor: 7.0.0 transitivePeerDependencies: @@ -4766,16 +4766,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': + '@angular-devkit/build-webpack@0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.101.2(esbuild@0.25.9) webpack-dev-server: 5.2.2(webpack@5.101.2) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.3.4(chokidar@4.0.3)': + '@angular-devkit/core@20.3.5(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -4786,9 +4786,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.3.4(chokidar@4.0.3)': + '@angular-devkit/schematics@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 8.2.0 @@ -4796,10 +4796,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': + '@angular/build@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 @@ -4832,7 +4832,7 @@ snapshots: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel '@angular/platform-server': link:in-existing-linked-by-bazel - '@angular/ssr': 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) less: 4.4.0 lmdb: 3.4.2 postcss: 8.5.6 @@ -4849,15 +4849,15 @@ snapshots: - tsx - yaml - '@angular/cli@20.3.4(@types/node@20.19.17)(chokidar@4.0.3)': + '@angular/cli@20.3.5(@types/node@20.19.17)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@20.19.17) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@20.19.17))(@types/node@20.19.17)(listr2@9.0.1) '@modelcontextprotocol/sdk': 1.17.3 - '@schematics/angular': 20.3.4(chokidar@4.0.3) + '@schematics/angular': 20.3.5(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 ini: 5.0.0 @@ -4874,7 +4874,7 @@ snapshots: - chokidar - supports-color - '@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': + '@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': dependencies: '@angular/common': link:in-existing-linked-by-bazel '@angular/core': link:in-existing-linked-by-bazel @@ -5987,7 +5987,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@ngtools/webpack@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': + '@ngtools/webpack@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 5.9.2 @@ -6194,10 +6194,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.3': optional: true - '@schematics/angular@20.3.4(chokidar@4.0.3)': + '@schematics/angular@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar diff --git a/integration/platform-server-zoneless/package.json b/integration/platform-server-zoneless/package.json index 663027a57b7..cb8eec051d7 100644 --- a/integration/platform-server-zoneless/package.json +++ b/integration/platform-server-zoneless/package.json @@ -21,15 +21,15 @@ "@angular/platform-browser": "link:./in-existing-linked-by-bazel", "@angular/platform-server": "link:./in-existing-linked-by-bazel", "@angular/router": "link:./in-existing-linked-by-bazel", - "@angular/ssr": "20.3.4", + "@angular/ssr": "20.3.5", "express": "~5.1.0", "rxjs": "^7.0.0", "tslib": "^2.3.0" }, "devDependencies": { - "@angular-devkit/build-angular": "20.3.4", - "@angular/build": "20.3.4", - "@angular/cli": "20.3.4", + "@angular-devkit/build-angular": "20.3.5", + "@angular/build": "20.3.5", + "@angular/cli": "20.3.5", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/express": "^5.0.3", "@types/jasmine": "^5.0.0", diff --git a/integration/platform-server-zoneless/pnpm-lock.yaml b/integration/platform-server-zoneless/pnpm-lock.yaml index 67c1d7b54cb..364b9be47ea 100644 --- a/integration/platform-server-zoneless/pnpm-lock.yaml +++ b/integration/platform-server-zoneless/pnpm-lock.yaml @@ -33,8 +33,8 @@ importers: specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel '@angular/ssr': - specifier: 20.3.4 - version: 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + specifier: 20.3.5 + version: 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) express: specifier: ~5.1.0 version: 5.1.0 @@ -46,14 +46,14 @@ importers: version: 2.8.1 devDependencies: '@angular-devkit/build-angular': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(protractor@7.0.0)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(protractor@7.0.0)(typescript@5.9.2) '@angular/build': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/cli': - specifier: 20.3.4 - version: 20.3.4(@types/node@20.19.17)(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(@types/node@20.19.17)(chokidar@4.0.3) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -153,12 +153,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2003.4': - resolution: {integrity: sha512-OKT6QuoG+rZZmRQ9mSZoh1pCGB5jBrkb45CzI8VdaLFhrZ7Uqg1wri1tj5KpSQYLAd22uUFNIE0uzMmGwXHbYA==} + '@angular-devkit/architect@0.2003.5': + resolution: {integrity: sha512-KtA//ucTIdnKp1+vTYnqBallEbiZHLx3Gs7XgYm+p4VJfVjbMZHWY2vrbJoyCUp05goiv2XnDy0bKQ9VYHePWg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.3.4': - resolution: {integrity: sha512-Lc/Hi4A0xBDbPb0tg7JHofIkqTigwKFOTU4Y/y/sN/9BQ7z3M/cHylaFceCtTjwnqybOzWyR58bStLO1wIN8Gw==} + '@angular-devkit/build-angular@20.3.5': + resolution: {integrity: sha512-33bG6ic/GC9OrqPiR6ynTpnw9vKfebZtWQzFO9ovjkUoZt4lUFWUgo/F0zeoaJgj0N35Ihn3Dvtxz/x2rwr9lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -167,7 +167,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -207,15 +207,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2003.4': - resolution: {integrity: sha512-p5nBSTu9ijz+v3ku+eWc8m+nYjn8q36dkupoKUCgaG1UkPTeHvgI341xPqvY1uxyYzCaxuUms44XIkdAJbmzww==} + '@angular-devkit/build-webpack@0.2003.5': + resolution: {integrity: sha512-BdcaJ5c/a+SD8ZaUo1Qq0a03zeTvGX4ydIaM4li5JYuA8bPCibU9tnb/1FcOWgIZVL1RdV6oIIqbAW6ufq7e1g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.3.4': - resolution: {integrity: sha512-r83jn9yVdPh618oGgoKPggMsQGOkQqJbxEutd4CE9mnotPCE2uRTIyaFMh8sohNUeoQNRmj9rbr2pWGVlgERpg==} + '@angular-devkit/core@20.3.5': + resolution: {integrity: sha512-NpAP5j3q/n+SC1s0yAWKDAbc7Y8xUxlmJ5iDRJBGu6qDKM7lMnYA1tn2UEy/JnXluJ2XZqqiymrtucw7yux2xQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -223,12 +223,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.3.4': - resolution: {integrity: sha512-JYlcmVBKNT9+cQ6T2tmu+yVQ2bJk8tG0mXvPHWXrl/M4c6NObhSSThK50tJHy0Xo3gl8WgogOxUeJNnBq67cIQ==} + '@angular-devkit/schematics@20.3.5': + resolution: {integrity: sha512-BDizJp7QIoCyMZmuGKoryNUH3QgFPnkEIv0gRdpLhZum4+ZN/DYWaf/jSSGnSVGK88oMrgq7420VEjYPlgJ5MA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@20.3.4': - resolution: {integrity: sha512-2ZPyEQxg9FCM7gv5NZHZVCec6ubb7HM/fkzr7wcYQArN8E8EknlyfXn6G5AoqkEsQZGqtJOD8sfti0m4kYiwkQ==} + '@angular/build@20.3.5': + resolution: {integrity: sha512-Nwwwm8U7lolkdHt75PiPkW93689SBFUN9qEQeu02sPfq2Tqyn20PZGifXkV8A/6mlWbQUjfUnGpRTVk/WhW9Eg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 @@ -238,7 +238,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 @@ -273,13 +273,13 @@ packages: vitest: optional: true - '@angular/cli@20.3.4': - resolution: {integrity: sha512-aNPk9ljY2PTc+ZoA7M67rxNvhbUJvzkuYcAdJuHbAIDoWcr2HhyFM2aGrLH3DVemY39xN/haJHj3FYJ8rCdXNw==} + '@angular/cli@20.3.5': + resolution: {integrity: sha512-UA843Mh5uHIWnrzKUotGmhJmvefyEizFS7X8xJEUJsX5pa1EKUB/145rKHoLHxRRpHGxFcXtvciJCksFz1lSBA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/ssr@20.3.4': - resolution: {integrity: sha512-0jfFHUz5JkKI4DJ05lkob4AAOt1LPNsQ3A/u0k1Ctej15jR4fOdE+NcHBV+AZ3XV8eNPqlYbOuTa0lGOon9y/A==} + '@angular/ssr@20.3.5': + resolution: {integrity: sha512-Zec8N738/MpfyyTDo37dQ/EQAonOFCjSkKrVpI4b8itYPy0LVlT5zEBKft1kjwEWE2dTiQT/JoVCqswBbc0Dig==} peerDependencies: '@angular/common': ^20.0.0 '@angular/core': ^20.0.0 @@ -1368,8 +1368,8 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@ngtools/webpack@20.3.4': - resolution: {integrity: sha512-5G2Q9VguR73RaSbqVpsW1LumITsPxceLL0+L94IOHoV4eYlFciJTXLWgcRUoChh73bt0wLMgdwUVWKjaVtjOLQ==} + '@ngtools/webpack@20.3.5': + resolution: {integrity: sha512-LThQWzgEw6a1eTRWn2hUxwVe8WalL75yola4AaI8gJVqlRhfTcjqpleULihCm9cynn3HnVsaHFElaoLdxhugCA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -1638,8 +1638,8 @@ packages: cpu: [x64] os: [win32] - '@schematics/angular@20.3.4': - resolution: {integrity: sha512-aIgeRAfSJdxVfsES521vNb6Nuy+Uei7xE85hD+mQHX+62bN7vJhM/tmMFIYS7UF8d0rRnMPiGEr2Rfx6Om5iPg==} + '@schematics/angular@20.3.5': + resolution: {integrity: sha512-mrVWO64psqah8E8HgpF30NMizVZyX6aH3k6hqf2tDgU3+giKX7xvTG9UQCaXA4MLBsQbpcWAmwPLipwLnPm8wA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sigstore/bundle@3.1.0': @@ -4733,20 +4733,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2003.4(chokidar@4.0.3)': + '@angular-devkit/architect@0.2003.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(protractor@7.0.0)(typescript@5.9.2)': + '@angular-devkit/build-angular@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(protractor@7.0.0)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular/build': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular/build': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 '@babel/generator': 7.28.3 @@ -4758,7 +4758,7 @@ snapshots: '@babel/preset-env': 7.28.3(@babel/core@7.28.3) '@babel/runtime': 7.28.3 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) + '@ngtools/webpack': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.6) babel-loader: 10.0.0(@babel/core@7.28.3)(webpack@5.101.2(esbuild@0.25.9)) @@ -4802,7 +4802,7 @@ snapshots: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel '@angular/platform-server': link:in-existing-linked-by-bazel - '@angular/ssr': 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) esbuild: 0.25.9 protractor: 7.0.0 transitivePeerDependencies: @@ -4828,16 +4828,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': + '@angular-devkit/build-webpack@0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.101.2(esbuild@0.25.9) webpack-dev-server: 5.2.2(webpack@5.101.2) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.3.4(chokidar@4.0.3)': + '@angular-devkit/core@20.3.5(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -4848,9 +4848,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.3.4(chokidar@4.0.3)': + '@angular-devkit/schematics@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 8.2.0 @@ -4858,10 +4858,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': + '@angular/build@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 @@ -4894,7 +4894,7 @@ snapshots: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel '@angular/platform-server': link:in-existing-linked-by-bazel - '@angular/ssr': 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) less: 4.4.0 lmdb: 3.4.2 postcss: 8.5.6 @@ -4911,15 +4911,15 @@ snapshots: - tsx - yaml - '@angular/cli@20.3.4(@types/node@20.19.17)(chokidar@4.0.3)': + '@angular/cli@20.3.5(@types/node@20.19.17)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@20.19.17) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@20.19.17))(@types/node@20.19.17)(listr2@9.0.1) '@modelcontextprotocol/sdk': 1.17.3 - '@schematics/angular': 20.3.4(chokidar@4.0.3) + '@schematics/angular': 20.3.5(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 ini: 5.0.0 @@ -4936,7 +4936,7 @@ snapshots: - chokidar - supports-color - '@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': + '@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': dependencies: '@angular/common': link:in-existing-linked-by-bazel '@angular/core': link:in-existing-linked-by-bazel @@ -6049,7 +6049,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@ngtools/webpack@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': + '@ngtools/webpack@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 5.9.2 @@ -6256,10 +6256,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.3': optional: true - '@schematics/angular@20.3.4(chokidar@4.0.3)': + '@schematics/angular@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar diff --git a/integration/platform-server/package.json b/integration/platform-server/package.json index 97cbf055e17..594fb95b1ac 100644 --- a/integration/platform-server/package.json +++ b/integration/platform-server/package.json @@ -24,16 +24,16 @@ "@angular/platform-browser": "link:./in-existing-linked-by-bazel", "@angular/platform-server": "link:./in-existing-linked-by-bazel", "@angular/router": "link:./in-existing-linked-by-bazel", - "@angular/ssr": "20.3.4", + "@angular/ssr": "20.3.5", "express": "~5.1.0", "rxjs": "^7.0.0", "tslib": "^2.3.0", "zone.js": "0.15.1" }, "devDependencies": { - "@angular-devkit/build-angular": "20.3.4", - "@angular/build": "20.3.4", - "@angular/cli": "20.3.4", + "@angular-devkit/build-angular": "20.3.5", + "@angular/build": "20.3.5", + "@angular/cli": "20.3.5", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/express": "^5.0.3", "@types/jasmine": "^5.0.0", diff --git a/integration/platform-server/pnpm-lock.yaml b/integration/platform-server/pnpm-lock.yaml index 7193b7af966..c11483a1bf2 100644 --- a/integration/platform-server/pnpm-lock.yaml +++ b/integration/platform-server/pnpm-lock.yaml @@ -33,8 +33,8 @@ importers: specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel '@angular/ssr': - specifier: 20.3.4 - version: 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + specifier: 20.3.5 + version: 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) express: specifier: ~5.1.0 version: 5.1.0 @@ -49,14 +49,14 @@ importers: version: 0.15.1 devDependencies: '@angular-devkit/build-angular': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(protractor@7.0.0)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(protractor@7.0.0)(typescript@5.9.2) '@angular/build': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/cli': - specifier: 20.3.4 - version: 20.3.4(@types/node@20.19.17)(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(@types/node@20.19.17)(chokidar@4.0.3) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -156,12 +156,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2003.4': - resolution: {integrity: sha512-OKT6QuoG+rZZmRQ9mSZoh1pCGB5jBrkb45CzI8VdaLFhrZ7Uqg1wri1tj5KpSQYLAd22uUFNIE0uzMmGwXHbYA==} + '@angular-devkit/architect@0.2003.5': + resolution: {integrity: sha512-KtA//ucTIdnKp1+vTYnqBallEbiZHLx3Gs7XgYm+p4VJfVjbMZHWY2vrbJoyCUp05goiv2XnDy0bKQ9VYHePWg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.3.4': - resolution: {integrity: sha512-Lc/Hi4A0xBDbPb0tg7JHofIkqTigwKFOTU4Y/y/sN/9BQ7z3M/cHylaFceCtTjwnqybOzWyR58bStLO1wIN8Gw==} + '@angular-devkit/build-angular@20.3.5': + resolution: {integrity: sha512-33bG6ic/GC9OrqPiR6ynTpnw9vKfebZtWQzFO9ovjkUoZt4lUFWUgo/F0zeoaJgj0N35Ihn3Dvtxz/x2rwr9lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -170,7 +170,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -210,15 +210,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2003.4': - resolution: {integrity: sha512-p5nBSTu9ijz+v3ku+eWc8m+nYjn8q36dkupoKUCgaG1UkPTeHvgI341xPqvY1uxyYzCaxuUms44XIkdAJbmzww==} + '@angular-devkit/build-webpack@0.2003.5': + resolution: {integrity: sha512-BdcaJ5c/a+SD8ZaUo1Qq0a03zeTvGX4ydIaM4li5JYuA8bPCibU9tnb/1FcOWgIZVL1RdV6oIIqbAW6ufq7e1g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.3.4': - resolution: {integrity: sha512-r83jn9yVdPh618oGgoKPggMsQGOkQqJbxEutd4CE9mnotPCE2uRTIyaFMh8sohNUeoQNRmj9rbr2pWGVlgERpg==} + '@angular-devkit/core@20.3.5': + resolution: {integrity: sha512-NpAP5j3q/n+SC1s0yAWKDAbc7Y8xUxlmJ5iDRJBGu6qDKM7lMnYA1tn2UEy/JnXluJ2XZqqiymrtucw7yux2xQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -226,12 +226,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.3.4': - resolution: {integrity: sha512-JYlcmVBKNT9+cQ6T2tmu+yVQ2bJk8tG0mXvPHWXrl/M4c6NObhSSThK50tJHy0Xo3gl8WgogOxUeJNnBq67cIQ==} + '@angular-devkit/schematics@20.3.5': + resolution: {integrity: sha512-BDizJp7QIoCyMZmuGKoryNUH3QgFPnkEIv0gRdpLhZum4+ZN/DYWaf/jSSGnSVGK88oMrgq7420VEjYPlgJ5MA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@20.3.4': - resolution: {integrity: sha512-2ZPyEQxg9FCM7gv5NZHZVCec6ubb7HM/fkzr7wcYQArN8E8EknlyfXn6G5AoqkEsQZGqtJOD8sfti0m4kYiwkQ==} + '@angular/build@20.3.5': + resolution: {integrity: sha512-Nwwwm8U7lolkdHt75PiPkW93689SBFUN9qEQeu02sPfq2Tqyn20PZGifXkV8A/6mlWbQUjfUnGpRTVk/WhW9Eg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 @@ -241,7 +241,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 @@ -276,13 +276,13 @@ packages: vitest: optional: true - '@angular/cli@20.3.4': - resolution: {integrity: sha512-aNPk9ljY2PTc+ZoA7M67rxNvhbUJvzkuYcAdJuHbAIDoWcr2HhyFM2aGrLH3DVemY39xN/haJHj3FYJ8rCdXNw==} + '@angular/cli@20.3.5': + resolution: {integrity: sha512-UA843Mh5uHIWnrzKUotGmhJmvefyEizFS7X8xJEUJsX5pa1EKUB/145rKHoLHxRRpHGxFcXtvciJCksFz1lSBA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/ssr@20.3.4': - resolution: {integrity: sha512-0jfFHUz5JkKI4DJ05lkob4AAOt1LPNsQ3A/u0k1Ctej15jR4fOdE+NcHBV+AZ3XV8eNPqlYbOuTa0lGOon9y/A==} + '@angular/ssr@20.3.5': + resolution: {integrity: sha512-Zec8N738/MpfyyTDo37dQ/EQAonOFCjSkKrVpI4b8itYPy0LVlT5zEBKft1kjwEWE2dTiQT/JoVCqswBbc0Dig==} peerDependencies: '@angular/common': ^20.0.0 '@angular/core': ^20.0.0 @@ -1371,8 +1371,8 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@ngtools/webpack@20.3.4': - resolution: {integrity: sha512-5G2Q9VguR73RaSbqVpsW1LumITsPxceLL0+L94IOHoV4eYlFciJTXLWgcRUoChh73bt0wLMgdwUVWKjaVtjOLQ==} + '@ngtools/webpack@20.3.5': + resolution: {integrity: sha512-LThQWzgEw6a1eTRWn2hUxwVe8WalL75yola4AaI8gJVqlRhfTcjqpleULihCm9cynn3HnVsaHFElaoLdxhugCA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -1641,8 +1641,8 @@ packages: cpu: [x64] os: [win32] - '@schematics/angular@20.3.4': - resolution: {integrity: sha512-aIgeRAfSJdxVfsES521vNb6Nuy+Uei7xE85hD+mQHX+62bN7vJhM/tmMFIYS7UF8d0rRnMPiGEr2Rfx6Om5iPg==} + '@schematics/angular@20.3.5': + resolution: {integrity: sha512-mrVWO64psqah8E8HgpF30NMizVZyX6aH3k6hqf2tDgU3+giKX7xvTG9UQCaXA4MLBsQbpcWAmwPLipwLnPm8wA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sigstore/bundle@3.1.0': @@ -4739,20 +4739,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2003.4(chokidar@4.0.3)': + '@angular-devkit/architect@0.2003.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(protractor@7.0.0)(typescript@5.9.2)': + '@angular-devkit/build-angular@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(protractor@7.0.0)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular/build': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular/build': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 '@babel/generator': 7.28.3 @@ -4764,7 +4764,7 @@ snapshots: '@babel/preset-env': 7.28.3(@babel/core@7.28.3) '@babel/runtime': 7.28.3 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) + '@ngtools/webpack': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.6) babel-loader: 10.0.0(@babel/core@7.28.3)(webpack@5.101.2(esbuild@0.25.9)) @@ -4808,7 +4808,7 @@ snapshots: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel '@angular/platform-server': link:in-existing-linked-by-bazel - '@angular/ssr': 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) esbuild: 0.25.9 protractor: 7.0.0 transitivePeerDependencies: @@ -4834,16 +4834,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': + '@angular-devkit/build-webpack@0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.101.2(esbuild@0.25.9) webpack-dev-server: 5.2.2(webpack@5.101.2) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.3.4(chokidar@4.0.3)': + '@angular-devkit/core@20.3.5(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -4854,9 +4854,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.3.4(chokidar@4.0.3)': + '@angular-devkit/schematics@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 8.2.0 @@ -4864,10 +4864,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': + '@angular/build@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 @@ -4900,7 +4900,7 @@ snapshots: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel '@angular/platform-server': link:in-existing-linked-by-bazel - '@angular/ssr': 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) less: 4.4.0 lmdb: 3.4.2 postcss: 8.5.6 @@ -4917,15 +4917,15 @@ snapshots: - tsx - yaml - '@angular/cli@20.3.4(@types/node@20.19.17)(chokidar@4.0.3)': + '@angular/cli@20.3.5(@types/node@20.19.17)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@20.19.17) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@20.19.17))(@types/node@20.19.17)(listr2@9.0.1) '@modelcontextprotocol/sdk': 1.17.3 - '@schematics/angular': 20.3.4(chokidar@4.0.3) + '@schematics/angular': 20.3.5(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 ini: 5.0.0 @@ -4942,7 +4942,7 @@ snapshots: - chokidar - supports-color - '@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': + '@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': dependencies: '@angular/common': link:in-existing-linked-by-bazel '@angular/core': link:in-existing-linked-by-bazel @@ -6055,7 +6055,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@ngtools/webpack@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': + '@ngtools/webpack@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 5.9.2 @@ -6262,10 +6262,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.3': optional: true - '@schematics/angular@20.3.4(chokidar@4.0.3)': + '@schematics/angular@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar diff --git a/integration/standalone-bootstrap/package.json b/integration/standalone-bootstrap/package.json index 127cb59d1c8..20567d5209b 100644 --- a/integration/standalone-bootstrap/package.json +++ b/integration/standalone-bootstrap/package.json @@ -17,15 +17,15 @@ "@angular/core": "link:./in-existing-linked-by-bazel", "@angular/platform-browser": "link:./in-existing-linked-by-bazel", "@angular/router": "link:./in-existing-linked-by-bazel", - "@angular/ssr": "20.3.4", + "@angular/ssr": "20.3.5", "rxjs": "^7.0.0", "tslib": "^2.3.0", "zone.js": "0.15.1" }, "devDependencies": { - "@angular-devkit/build-angular": "20.3.4", - "@angular/build": "20.3.4", - "@angular/cli": "20.3.4", + "@angular-devkit/build-angular": "20.3.5", + "@angular/build": "20.3.5", + "@angular/cli": "20.3.5", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/node": "^20.14.8", "ts-node": "^10.9.1", diff --git a/integration/standalone-bootstrap/pnpm-lock.yaml b/integration/standalone-bootstrap/pnpm-lock.yaml index eea81a89e33..9b63a6bc079 100644 --- a/integration/standalone-bootstrap/pnpm-lock.yaml +++ b/integration/standalone-bootstrap/pnpm-lock.yaml @@ -24,8 +24,8 @@ importers: specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel '@angular/ssr': - specifier: 20.3.4 - version: 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + specifier: 20.3.5 + version: 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) rxjs: specifier: ^7.0.0 version: 7.8.2 @@ -37,14 +37,14 @@ importers: version: 0.15.1 devDependencies: '@angular-devkit/build-angular': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2) '@angular/build': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/cli': - specifier: 20.3.4 - version: 20.3.4(@types/node@20.19.17)(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(@types/node@20.19.17)(chokidar@4.0.3) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -120,12 +120,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2003.4': - resolution: {integrity: sha512-OKT6QuoG+rZZmRQ9mSZoh1pCGB5jBrkb45CzI8VdaLFhrZ7Uqg1wri1tj5KpSQYLAd22uUFNIE0uzMmGwXHbYA==} + '@angular-devkit/architect@0.2003.5': + resolution: {integrity: sha512-KtA//ucTIdnKp1+vTYnqBallEbiZHLx3Gs7XgYm+p4VJfVjbMZHWY2vrbJoyCUp05goiv2XnDy0bKQ9VYHePWg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.3.4': - resolution: {integrity: sha512-Lc/Hi4A0xBDbPb0tg7JHofIkqTigwKFOTU4Y/y/sN/9BQ7z3M/cHylaFceCtTjwnqybOzWyR58bStLO1wIN8Gw==} + '@angular-devkit/build-angular@20.3.5': + resolution: {integrity: sha512-33bG6ic/GC9OrqPiR6ynTpnw9vKfebZtWQzFO9ovjkUoZt4lUFWUgo/F0zeoaJgj0N35Ihn3Dvtxz/x2rwr9lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -134,7 +134,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -174,15 +174,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2003.4': - resolution: {integrity: sha512-p5nBSTu9ijz+v3ku+eWc8m+nYjn8q36dkupoKUCgaG1UkPTeHvgI341xPqvY1uxyYzCaxuUms44XIkdAJbmzww==} + '@angular-devkit/build-webpack@0.2003.5': + resolution: {integrity: sha512-BdcaJ5c/a+SD8ZaUo1Qq0a03zeTvGX4ydIaM4li5JYuA8bPCibU9tnb/1FcOWgIZVL1RdV6oIIqbAW6ufq7e1g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.3.4': - resolution: {integrity: sha512-r83jn9yVdPh618oGgoKPggMsQGOkQqJbxEutd4CE9mnotPCE2uRTIyaFMh8sohNUeoQNRmj9rbr2pWGVlgERpg==} + '@angular-devkit/core@20.3.5': + resolution: {integrity: sha512-NpAP5j3q/n+SC1s0yAWKDAbc7Y8xUxlmJ5iDRJBGu6qDKM7lMnYA1tn2UEy/JnXluJ2XZqqiymrtucw7yux2xQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -190,12 +190,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.3.4': - resolution: {integrity: sha512-JYlcmVBKNT9+cQ6T2tmu+yVQ2bJk8tG0mXvPHWXrl/M4c6NObhSSThK50tJHy0Xo3gl8WgogOxUeJNnBq67cIQ==} + '@angular-devkit/schematics@20.3.5': + resolution: {integrity: sha512-BDizJp7QIoCyMZmuGKoryNUH3QgFPnkEIv0gRdpLhZum4+ZN/DYWaf/jSSGnSVGK88oMrgq7420VEjYPlgJ5MA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@20.3.4': - resolution: {integrity: sha512-2ZPyEQxg9FCM7gv5NZHZVCec6ubb7HM/fkzr7wcYQArN8E8EknlyfXn6G5AoqkEsQZGqtJOD8sfti0m4kYiwkQ==} + '@angular/build@20.3.5': + resolution: {integrity: sha512-Nwwwm8U7lolkdHt75PiPkW93689SBFUN9qEQeu02sPfq2Tqyn20PZGifXkV8A/6mlWbQUjfUnGpRTVk/WhW9Eg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 @@ -205,7 +205,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 @@ -240,13 +240,13 @@ packages: vitest: optional: true - '@angular/cli@20.3.4': - resolution: {integrity: sha512-aNPk9ljY2PTc+ZoA7M67rxNvhbUJvzkuYcAdJuHbAIDoWcr2HhyFM2aGrLH3DVemY39xN/haJHj3FYJ8rCdXNw==} + '@angular/cli@20.3.5': + resolution: {integrity: sha512-UA843Mh5uHIWnrzKUotGmhJmvefyEizFS7X8xJEUJsX5pa1EKUB/145rKHoLHxRRpHGxFcXtvciJCksFz1lSBA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/ssr@20.3.4': - resolution: {integrity: sha512-0jfFHUz5JkKI4DJ05lkob4AAOt1LPNsQ3A/u0k1Ctej15jR4fOdE+NcHBV+AZ3XV8eNPqlYbOuTa0lGOon9y/A==} + '@angular/ssr@20.3.5': + resolution: {integrity: sha512-Zec8N738/MpfyyTDo37dQ/EQAonOFCjSkKrVpI4b8itYPy0LVlT5zEBKft1kjwEWE2dTiQT/JoVCqswBbc0Dig==} peerDependencies: '@angular/common': ^20.0.0 '@angular/core': ^20.0.0 @@ -1335,8 +1335,8 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@ngtools/webpack@20.3.4': - resolution: {integrity: sha512-5G2Q9VguR73RaSbqVpsW1LumITsPxceLL0+L94IOHoV4eYlFciJTXLWgcRUoChh73bt0wLMgdwUVWKjaVtjOLQ==} + '@ngtools/webpack@20.3.5': + resolution: {integrity: sha512-LThQWzgEw6a1eTRWn2hUxwVe8WalL75yola4AaI8gJVqlRhfTcjqpleULihCm9cynn3HnVsaHFElaoLdxhugCA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -1605,8 +1605,8 @@ packages: cpu: [x64] os: [win32] - '@schematics/angular@20.3.4': - resolution: {integrity: sha512-aIgeRAfSJdxVfsES521vNb6Nuy+Uei7xE85hD+mQHX+62bN7vJhM/tmMFIYS7UF8d0rRnMPiGEr2Rfx6Om5iPg==} + '@schematics/angular@20.3.5': + resolution: {integrity: sha512-mrVWO64psqah8E8HgpF30NMizVZyX6aH3k6hqf2tDgU3+giKX7xvTG9UQCaXA4MLBsQbpcWAmwPLipwLnPm8wA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sigstore/bundle@3.1.0': @@ -4211,20 +4211,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2003.4(chokidar@4.0.3)': + '@angular-devkit/architect@0.2003.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2)': + '@angular-devkit/build-angular@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular/build': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular/build': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 '@babel/generator': 7.28.3 @@ -4236,7 +4236,7 @@ snapshots: '@babel/preset-env': 7.28.3(@babel/core@7.28.3) '@babel/runtime': 7.28.3 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) + '@ngtools/webpack': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.6) babel-loader: 10.0.0(@babel/core@7.28.3)(webpack@5.101.2(esbuild@0.25.9)) @@ -4279,7 +4279,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) esbuild: 0.25.9 transitivePeerDependencies: - '@angular/compiler' @@ -4304,16 +4304,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': + '@angular-devkit/build-webpack@0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.101.2(esbuild@0.25.9) webpack-dev-server: 5.2.2(webpack@5.101.2) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.3.4(chokidar@4.0.3)': + '@angular-devkit/core@20.3.5(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -4324,9 +4324,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.3.4(chokidar@4.0.3)': + '@angular-devkit/schematics@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 8.2.0 @@ -4334,10 +4334,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': + '@angular/build@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 @@ -4369,7 +4369,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) less: 4.4.0 lmdb: 3.4.2 postcss: 8.5.6 @@ -4386,15 +4386,15 @@ snapshots: - tsx - yaml - '@angular/cli@20.3.4(@types/node@20.19.17)(chokidar@4.0.3)': + '@angular/cli@20.3.5(@types/node@20.19.17)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@20.19.17) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@20.19.17))(@types/node@20.19.17)(listr2@9.0.1) '@modelcontextprotocol/sdk': 1.17.3 - '@schematics/angular': 20.3.4(chokidar@4.0.3) + '@schematics/angular': 20.3.5(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 ini: 5.0.0 @@ -4411,7 +4411,7 @@ snapshots: - chokidar - supports-color - '@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': + '@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': dependencies: '@angular/common': link:in-existing-linked-by-bazel '@angular/core': link:in-existing-linked-by-bazel @@ -5522,7 +5522,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@ngtools/webpack@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': + '@ngtools/webpack@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 5.9.2 @@ -5729,10 +5729,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.3': optional: true - '@schematics/angular@20.3.4(chokidar@4.0.3)': + '@schematics/angular@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar diff --git a/integration/trusted-types/package.json b/integration/trusted-types/package.json index c3d501eb0b1..bc3c3558402 100644 --- a/integration/trusted-types/package.json +++ b/integration/trusted-types/package.json @@ -19,15 +19,15 @@ "@angular/forms": "link:./in-existing-linked-by-bazel", "@angular/platform-browser": "link:./in-existing-linked-by-bazel", "@angular/router": "link:./in-existing-linked-by-bazel", - "@angular/ssr": "20.3.4", + "@angular/ssr": "20.3.5", "rxjs": "^7.0.0", "tslib": "^2.3.0", "zone.js": "0.15.1" }, "devDependencies": { - "@angular-devkit/build-angular": "20.3.4", - "@angular/build": "20.3.4", - "@angular/cli": "20.3.4", + "@angular-devkit/build-angular": "20.3.5", + "@angular/build": "20.3.5", + "@angular/cli": "20.3.5", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/jasmine": "^5.0.0", "@types/node": "^20.14.8", diff --git a/integration/trusted-types/pnpm-lock.yaml b/integration/trusted-types/pnpm-lock.yaml index ce9db837d89..af386bb0591 100644 --- a/integration/trusted-types/pnpm-lock.yaml +++ b/integration/trusted-types/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel '@angular/ssr': - specifier: 20.3.4 - version: 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + specifier: 20.3.5 + version: 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) rxjs: specifier: ^7.0.0 version: 7.8.2 @@ -43,14 +43,14 @@ importers: version: 0.15.1 devDependencies: '@angular-devkit/build-angular': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(protractor@7.0.0)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(protractor@7.0.0)(typescript@5.9.2) '@angular/build': - specifier: 20.3.4 - version: 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + specifier: 20.3.5 + version: 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/cli': - specifier: 20.3.4 - version: 20.3.4(@types/node@20.19.17)(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(@types/node@20.19.17)(chokidar@4.0.3) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -153,12 +153,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2003.4': - resolution: {integrity: sha512-OKT6QuoG+rZZmRQ9mSZoh1pCGB5jBrkb45CzI8VdaLFhrZ7Uqg1wri1tj5KpSQYLAd22uUFNIE0uzMmGwXHbYA==} + '@angular-devkit/architect@0.2003.5': + resolution: {integrity: sha512-KtA//ucTIdnKp1+vTYnqBallEbiZHLx3Gs7XgYm+p4VJfVjbMZHWY2vrbJoyCUp05goiv2XnDy0bKQ9VYHePWg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.3.4': - resolution: {integrity: sha512-Lc/Hi4A0xBDbPb0tg7JHofIkqTigwKFOTU4Y/y/sN/9BQ7z3M/cHylaFceCtTjwnqybOzWyR58bStLO1wIN8Gw==} + '@angular-devkit/build-angular@20.3.5': + resolution: {integrity: sha512-33bG6ic/GC9OrqPiR6ynTpnw9vKfebZtWQzFO9ovjkUoZt4lUFWUgo/F0zeoaJgj0N35Ihn3Dvtxz/x2rwr9lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -167,7 +167,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -207,15 +207,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2003.4': - resolution: {integrity: sha512-p5nBSTu9ijz+v3ku+eWc8m+nYjn8q36dkupoKUCgaG1UkPTeHvgI341xPqvY1uxyYzCaxuUms44XIkdAJbmzww==} + '@angular-devkit/build-webpack@0.2003.5': + resolution: {integrity: sha512-BdcaJ5c/a+SD8ZaUo1Qq0a03zeTvGX4ydIaM4li5JYuA8bPCibU9tnb/1FcOWgIZVL1RdV6oIIqbAW6ufq7e1g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.3.4': - resolution: {integrity: sha512-r83jn9yVdPh618oGgoKPggMsQGOkQqJbxEutd4CE9mnotPCE2uRTIyaFMh8sohNUeoQNRmj9rbr2pWGVlgERpg==} + '@angular-devkit/core@20.3.5': + resolution: {integrity: sha512-NpAP5j3q/n+SC1s0yAWKDAbc7Y8xUxlmJ5iDRJBGu6qDKM7lMnYA1tn2UEy/JnXluJ2XZqqiymrtucw7yux2xQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -223,12 +223,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.3.4': - resolution: {integrity: sha512-JYlcmVBKNT9+cQ6T2tmu+yVQ2bJk8tG0mXvPHWXrl/M4c6NObhSSThK50tJHy0Xo3gl8WgogOxUeJNnBq67cIQ==} + '@angular-devkit/schematics@20.3.5': + resolution: {integrity: sha512-BDizJp7QIoCyMZmuGKoryNUH3QgFPnkEIv0gRdpLhZum4+ZN/DYWaf/jSSGnSVGK88oMrgq7420VEjYPlgJ5MA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@20.3.4': - resolution: {integrity: sha512-2ZPyEQxg9FCM7gv5NZHZVCec6ubb7HM/fkzr7wcYQArN8E8EknlyfXn6G5AoqkEsQZGqtJOD8sfti0m4kYiwkQ==} + '@angular/build@20.3.5': + resolution: {integrity: sha512-Nwwwm8U7lolkdHt75PiPkW93689SBFUN9qEQeu02sPfq2Tqyn20PZGifXkV8A/6mlWbQUjfUnGpRTVk/WhW9Eg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 @@ -238,7 +238,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 @@ -273,13 +273,13 @@ packages: vitest: optional: true - '@angular/cli@20.3.4': - resolution: {integrity: sha512-aNPk9ljY2PTc+ZoA7M67rxNvhbUJvzkuYcAdJuHbAIDoWcr2HhyFM2aGrLH3DVemY39xN/haJHj3FYJ8rCdXNw==} + '@angular/cli@20.3.5': + resolution: {integrity: sha512-UA843Mh5uHIWnrzKUotGmhJmvefyEizFS7X8xJEUJsX5pa1EKUB/145rKHoLHxRRpHGxFcXtvciJCksFz1lSBA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/ssr@20.3.4': - resolution: {integrity: sha512-0jfFHUz5JkKI4DJ05lkob4AAOt1LPNsQ3A/u0k1Ctej15jR4fOdE+NcHBV+AZ3XV8eNPqlYbOuTa0lGOon9y/A==} + '@angular/ssr@20.3.5': + resolution: {integrity: sha512-Zec8N738/MpfyyTDo37dQ/EQAonOFCjSkKrVpI4b8itYPy0LVlT5zEBKft1kjwEWE2dTiQT/JoVCqswBbc0Dig==} peerDependencies: '@angular/common': ^20.0.0 '@angular/core': ^20.0.0 @@ -1379,8 +1379,8 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@ngtools/webpack@20.3.4': - resolution: {integrity: sha512-5G2Q9VguR73RaSbqVpsW1LumITsPxceLL0+L94IOHoV4eYlFciJTXLWgcRUoChh73bt0wLMgdwUVWKjaVtjOLQ==} + '@ngtools/webpack@20.3.5': + resolution: {integrity: sha512-LThQWzgEw6a1eTRWn2hUxwVe8WalL75yola4AaI8gJVqlRhfTcjqpleULihCm9cynn3HnVsaHFElaoLdxhugCA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 @@ -1649,8 +1649,8 @@ packages: cpu: [x64] os: [win32] - '@schematics/angular@20.3.4': - resolution: {integrity: sha512-aIgeRAfSJdxVfsES521vNb6Nuy+Uei7xE85hD+mQHX+62bN7vJhM/tmMFIYS7UF8d0rRnMPiGEr2Rfx6Om5iPg==} + '@schematics/angular@20.3.5': + resolution: {integrity: sha512-mrVWO64psqah8E8HgpF30NMizVZyX6aH3k6hqf2tDgU3+giKX7xvTG9UQCaXA4MLBsQbpcWAmwPLipwLnPm8wA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sigstore/bundle@3.1.0': @@ -4910,20 +4910,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2003.4(chokidar@4.0.3)': + '@angular-devkit/architect@0.2003.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(protractor@7.0.0)(typescript@5.9.2)': + '@angular-devkit/build-angular@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(protractor@7.0.0)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular/build': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9)) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular/build': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 '@babel/generator': 7.28.3 @@ -4935,7 +4935,7 @@ snapshots: '@babel/preset-env': 7.28.3(@babel/core@7.28.3) '@babel/runtime': 7.28.3 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) + '@ngtools/webpack': 20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.6) babel-loader: 10.0.0(@babel/core@7.28.3)(webpack@5.101.2(esbuild@0.25.9)) @@ -4978,7 +4978,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) esbuild: 0.25.9 karma: 6.4.4 protractor: 7.0.0 @@ -5005,16 +5005,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': + '@angular-devkit/build-webpack@0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.101.2))(webpack@5.101.2(esbuild@0.25.9))': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.101.2(esbuild@0.25.9) webpack-dev-server: 5.2.2(webpack@5.101.2) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.3.4(chokidar@4.0.3)': + '@angular-devkit/core@20.3.5(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -5025,9 +5025,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.3.4(chokidar@4.0.3)': + '@angular-devkit/schematics@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 8.2.0 @@ -5035,10 +5035,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': + '@angular/build@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.17)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 7.28.3 @@ -5070,7 +5070,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) karma: 6.4.4 less: 4.4.0 lmdb: 3.4.2 @@ -5088,15 +5088,15 @@ snapshots: - tsx - yaml - '@angular/cli@20.3.4(@types/node@20.19.17)(chokidar@4.0.3)': + '@angular/cli@20.3.5(@types/node@20.19.17)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@20.19.17) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@20.19.17))(@types/node@20.19.17)(listr2@9.0.1) '@modelcontextprotocol/sdk': 1.17.3 - '@schematics/angular': 20.3.4(chokidar@4.0.3) + '@schematics/angular': 20.3.5(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 ini: 5.0.0 @@ -5113,7 +5113,7 @@ snapshots: - chokidar - supports-color - '@angular/ssr@20.3.4(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': + '@angular/ssr@20.3.5(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': dependencies: '@angular/common': link:in-existing-linked-by-bazel '@angular/core': link:in-existing-linked-by-bazel @@ -6260,7 +6260,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@ngtools/webpack@20.3.4(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': + '@ngtools/webpack@20.3.5(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 5.9.2 @@ -6467,10 +6467,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.3': optional: true - '@schematics/angular@20.3.4(chokidar@4.0.3)': + '@schematics/angular@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar diff --git a/modules/package.json b/modules/package.json index 0d6c11a7243..7ee782a1f9c 100644 --- a/modules/package.json +++ b/modules/package.json @@ -2,7 +2,7 @@ "dependencies": { "@angular/animations": "workspace:*", "@angular/benchpress": "workspace:*", - "@angular/build": "20.3.4", + "@angular/build": "20.3.5", "@angular/common": "workspace:*", "@angular/compiler": "workspace:*", "@angular/compiler-cli": "workspace:*", diff --git a/package.json b/package.json index 218e8d665ad..aba81c23808 100644 --- a/package.json +++ b/package.json @@ -49,14 +49,14 @@ }, "// 1": "dependencies are used locally and by bazel", "dependencies": { - "@angular-devkit/build-angular": "20.3.4", - "@angular-devkit/core": "20.3.4", - "@angular-devkit/schematics": "20.3.4", + "@angular-devkit/build-angular": "20.3.5", + "@angular-devkit/core": "20.3.5", + "@angular-devkit/schematics": "20.3.5", "@angular/animations": "workspace:*", "@angular/benchpress": "workspace: *", - "@angular/build": "20.3.4", - "@angular/cdk": "20.2.7", - "@angular/cli": "20.3.4", + "@angular/build": "20.3.5", + "@angular/cdk": "20.2.8", + "@angular/cli": "20.3.5", "@angular/common": "workspace:*", "@angular/compiler": "workspace:*", "@angular/compiler-cli": "workspace:*", @@ -65,13 +65,13 @@ "@angular/forms": "workspace:*", "@angular/language-service": "workspace: *", "@angular/localize": "workspace: *", - "@angular/material": "20.2.7", + "@angular/material": "20.2.8", "@angular/platform-browser": "workspace:*", "@angular/platform-browser-dynamic": "workspace:*", "@angular/platform-server": "workspace:*", "@angular/router": "workspace:*", "@angular/service-worker": "workspace:*", - "@angular/ssr": "20.3.4", + "@angular/ssr": "20.3.5", "@angular/upgrade": "workspace: *", "@babel/cli": "7.28.3", "@babel/core": "7.28.3", @@ -81,7 +81,7 @@ "@rollup/plugin-babel": "^6.0.0", "@rollup/plugin-commonjs": "^28.0.0", "@rollup/plugin-node-resolve": "^16.0.0", - "@schematics/angular": "20.3.4", + "@schematics/angular": "20.3.5", "@types/angular": "^1.6.47", "@types/babel__core": "7.20.5", "@types/babel__generator": "7.27.0", @@ -167,8 +167,8 @@ "devDependencies": { "@actions/core": "^1.10.0", "@actions/github": "^6.0.0", - "@angular-devkit/architect-cli": "0.2003.4", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#de1f701ba5cbfa36b0f02eecc7fdedb74490f0cb", + "@angular-devkit/architect-cli": "0.2003.5", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e877c7e4fe14a67d425f5af705bf583fbbba9967", "@babel/plugin-proposal-async-generator-functions": "7.20.7", "@babel/plugin-transform-async-generator-functions": "^7.27.1", "@bazel/bazelisk": "^1.7.5", diff --git a/packages/core/test/bundling/package.json b/packages/core/test/bundling/package.json index 7e413b243b7..f42ccbc2dc2 100644 --- a/packages/core/test/bundling/package.json +++ b/packages/core/test/bundling/package.json @@ -1,7 +1,7 @@ { "dependencies": { "@angular/animations": "workspace:*", - "@angular/build": "20.3.4", + "@angular/build": "20.3.5", "@angular/common": "workspace:*", "@angular/compiler-cli": "workspace:*", "@angular/compiler": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fb3efb3a0d0..965619859a4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,14 +22,14 @@ importers: .: dependencies: '@angular-devkit/build-angular': - specifier: 20.3.4 - version: 20.3.4(@angular/ssr@20.3.4)(@types/node@18.19.127)(bufferutil@4.0.9)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9))(protractor@7.0.0)(tsx@4.20.5)(typescript@5.9.2)(vitest@3.2.4(@types/node@18.19.127)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(yaml@2.8.1) + specifier: 20.3.5 + version: 20.3.5(@angular/ssr@20.3.5)(@types/node@18.19.127)(bufferutil@4.0.9)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9))(protractor@7.0.0)(tsx@4.20.5)(typescript@5.9.2)(vitest@3.2.4(@types/node@18.19.127)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(yaml@2.8.1) '@angular-devkit/core': - specifier: 20.3.4 - version: 20.3.4(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(chokidar@4.0.3) '@angular-devkit/schematics': - specifier: 20.3.4 - version: 20.3.4(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(chokidar@4.0.3) '@angular/animations': specifier: workspace:* version: link:packages/animations @@ -37,14 +37,14 @@ importers: specifier: 'workspace: *' version: link:packages/benchpress '@angular/build': - specifier: 20.3.4 - version: 20.3.4(@angular/ssr@20.3.4)(@types/node@18.19.127)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.5)(typescript@5.9.2)(vitest@3.2.4(@types/node@18.19.127)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(yaml@2.8.1) + specifier: 20.3.5 + version: 20.3.5(@angular/ssr@20.3.5)(@types/node@18.19.127)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.5)(typescript@5.9.2)(vitest@3.2.4(@types/node@18.19.127)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(yaml@2.8.1) '@angular/cdk': - specifier: 20.2.7 - version: 20.2.7(rxjs@7.8.2) + specifier: 20.2.8 + version: 20.2.8(rxjs@7.8.2) '@angular/cli': - specifier: 20.3.4 - version: 20.3.4(@types/node@18.19.127)(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(@types/node@18.19.127)(chokidar@4.0.3) '@angular/common': specifier: workspace:* version: link:packages/common @@ -70,8 +70,8 @@ importers: specifier: 'workspace: *' version: link:packages/localize '@angular/material': - specifier: 20.2.7 - version: 20.2.7(@angular/cdk@20.2.7(rxjs@7.8.2))(rxjs@7.8.2) + specifier: 20.2.8 + version: 20.2.8(@angular/cdk@20.2.8(rxjs@7.8.2))(rxjs@7.8.2) '@angular/platform-browser': specifier: workspace:* version: link:packages/platform-browser @@ -88,8 +88,8 @@ importers: specifier: workspace:* version: link:packages/service-worker '@angular/ssr': - specifier: 20.3.4 - version: 20.3.4 + specifier: 20.3.5 + version: 20.3.5 '@angular/upgrade': specifier: 'workspace: *' version: link:packages/upgrade @@ -118,8 +118,8 @@ importers: specifier: ^16.0.0 version: 16.0.1(rollup@4.46.4) '@schematics/angular': - specifier: 20.3.4 - version: 20.3.4(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(chokidar@4.0.3) '@types/angular': specifier: ^1.6.47 version: 1.8.9 @@ -272,7 +272,7 @@ importers: version: 0.1.1 ngx-progressbar: specifier: ^14.0.0 - version: 14.0.0(@angular/cdk@20.2.7(rxjs@7.8.2))(rxjs@7.8.2) + version: 14.0.0(@angular/cdk@20.2.8(rxjs@7.8.2))(rxjs@7.8.2) open-in-idx: specifier: ^0.1.1 version: 0.1.1 @@ -368,11 +368,11 @@ importers: specifier: ^6.0.0 version: 6.0.1 '@angular-devkit/architect-cli': - specifier: 0.2003.4 - version: 0.2003.4(chokidar@4.0.3) + specifier: 0.2003.5 + version: 0.2003.5(chokidar@4.0.3) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#de1f701ba5cbfa36b0f02eecc7fdedb74490f0cb - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/de1f701ba5cbfa36b0f02eecc7fdedb74490f0cb(@modelcontextprotocol/sdk@1.18.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e877c7e4fe14a67d425f5af705bf583fbbba9967 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e877c7e4fe14a67d425f5af705bf583fbbba9967(@modelcontextprotocol/sdk@1.18.1) '@babel/plugin-proposal-async-generator-functions': specifier: 7.20.7 version: 7.20.7(@babel/core@7.28.3) @@ -527,20 +527,20 @@ importers: specifier: 5.35.0 version: 5.35.0 '@angular-devkit/build-angular': - specifier: 20.3.4 - version: 20.3.4(@angular/ssr@20.3.4)(@types/node@24.3.0)(bufferutil@4.0.9)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(protractor@7.0.0)(tsx@4.20.6)(typescript@5.9.2)(utf-8-validate@6.0.5)(vitest@3.2.4(@types/node@24.3.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1) + specifier: 20.3.5 + version: 20.3.5(@angular/ssr@20.3.5)(@types/node@24.3.0)(bufferutil@4.0.9)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(protractor@7.0.0)(tsx@4.20.6)(typescript@5.9.2)(utf-8-validate@6.0.5)(vitest@3.2.4(@types/node@24.3.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1) '@angular/animations': specifier: workspace:* version: link:../packages/animations '@angular/build': - specifier: 20.3.4 - version: 20.3.4(@angular/ssr@20.3.4)(@types/node@24.3.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.3.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1) + specifier: 20.3.5 + version: 20.3.5(@angular/ssr@20.3.5)(@types/node@24.3.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.3.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1) '@angular/cdk': - specifier: 20.2.7 - version: 20.2.7(rxjs@7.8.2) + specifier: 20.2.8 + version: 20.2.8(rxjs@7.8.2) '@angular/cli': - specifier: 20.3.4 - version: 20.3.4(@types/node@24.3.0)(chokidar@4.0.3) + specifier: 20.3.5 + version: 20.3.5(@types/node@24.3.0)(chokidar@4.0.3) '@angular/common': specifier: workspace:* version: link:../packages/common @@ -560,8 +560,8 @@ importers: specifier: workspace:* version: link:../packages/forms '@angular/material': - specifier: 20.2.7 - version: 20.2.7(@angular/cdk@20.2.7(rxjs@7.8.2))(rxjs@7.8.2) + specifier: 20.2.8 + version: 20.2.8(@angular/cdk@20.2.8(rxjs@7.8.2))(rxjs@7.8.2) '@angular/platform-browser': specifier: workspace:* version: link:../packages/platform-browser @@ -572,8 +572,8 @@ importers: specifier: workspace:* version: link:../packages/router '@angular/ssr': - specifier: 20.3.4 - version: 20.3.4 + specifier: 20.3.5 + version: 20.3.5 '@codemirror/autocomplete': specifier: 6.18.6 version: 6.18.6 @@ -708,7 +708,7 @@ importers: version: 11.10.0 ngx-progressbar: specifier: 14.0.0 - version: 14.0.0(@angular/cdk@20.2.7(rxjs@7.8.2))(rxjs@7.8.2) + version: 14.0.0(@angular/cdk@20.2.8(rxjs@7.8.2))(rxjs@7.8.2) open-in-idx: specifier: 0.1.1 version: 0.1.1 @@ -869,8 +869,8 @@ importers: specifier: workspace:* version: link:../packages/benchpress '@angular/build': - specifier: 20.3.4 - version: 20.3.4(@angular/ssr@20.3.4)(@types/node@24.3.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.3.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1) + specifier: 20.3.5 + version: 20.3.5(@angular/ssr@20.3.5)(@types/node@24.3.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.3.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1) '@angular/common': specifier: workspace:* version: link:../packages/common @@ -1040,8 +1040,8 @@ importers: specifier: workspace:* version: link:../../../animations '@angular/build': - specifier: 20.3.4 - version: 20.3.4(@angular/ssr@20.3.4)(@types/node@24.7.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.7.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1) + specifier: 20.3.5 + version: 20.3.5(@angular/ssr@20.3.5)(@types/node@24.7.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.7.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1) '@angular/common': specifier: workspace:* version: link:../../../common @@ -1393,20 +1393,20 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect-cli@0.2003.4': - resolution: {integrity: sha512-oAwaYEK+le+a81WLDdhplE+kmjkF4Ouvl6K0iovK5ZmOc9dUA7KzAOScrC1dudSSMU01Lu2ALpP5zIhv92lfEQ==} + '@angular-devkit/architect-cli@0.2003.5': + resolution: {integrity: sha512-jAktmTG35aEJthSiw8g5RGHXnx/x1H4nceNLa3xFMUzN1AsBPzo1BFUyVdeqI8UbjSoID03QQNj+u6uOxVdWFg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/architect@0.2003.4': - resolution: {integrity: sha512-OKT6QuoG+rZZmRQ9mSZoh1pCGB5jBrkb45CzI8VdaLFhrZ7Uqg1wri1tj5KpSQYLAd22uUFNIE0uzMmGwXHbYA==} + '@angular-devkit/architect@0.2003.5': + resolution: {integrity: sha512-KtA//ucTIdnKp1+vTYnqBallEbiZHLx3Gs7XgYm+p4VJfVjbMZHWY2vrbJoyCUp05goiv2XnDy0bKQ9VYHePWg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.3.4': - resolution: {integrity: sha512-Lc/Hi4A0xBDbPb0tg7JHofIkqTigwKFOTU4Y/y/sN/9BQ7z3M/cHylaFceCtTjwnqybOzWyR58bStLO1wIN8Gw==} + '@angular-devkit/build-angular@20.3.5': + resolution: {integrity: sha512-33bG6ic/GC9OrqPiR6ynTpnw9vKfebZtWQzFO9ovjkUoZt4lUFWUgo/F0zeoaJgj0N35Ihn3Dvtxz/x2rwr9lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -1441,15 +1441,15 @@ packages: engines: {node: '>= 8.9.0', npm: '>= 5.5.1'} hasBin: true - '@angular-devkit/build-webpack@0.2003.4': - resolution: {integrity: sha512-p5nBSTu9ijz+v3ku+eWc8m+nYjn8q36dkupoKUCgaG1UkPTeHvgI341xPqvY1uxyYzCaxuUms44XIkdAJbmzww==} + '@angular-devkit/build-webpack@0.2003.5': + resolution: {integrity: sha512-BdcaJ5c/a+SD8ZaUo1Qq0a03zeTvGX4ydIaM4li5JYuA8bPCibU9tnb/1FcOWgIZVL1RdV6oIIqbAW6ufq7e1g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.3.4': - resolution: {integrity: sha512-r83jn9yVdPh618oGgoKPggMsQGOkQqJbxEutd4CE9mnotPCE2uRTIyaFMh8sohNUeoQNRmj9rbr2pWGVlgERpg==} + '@angular-devkit/core@20.3.5': + resolution: {integrity: sha512-NpAP5j3q/n+SC1s0yAWKDAbc7Y8xUxlmJ5iDRJBGu6qDKM7lMnYA1tn2UEy/JnXluJ2XZqqiymrtucw7yux2xQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -1457,15 +1457,15 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.3.4': - resolution: {integrity: sha512-JYlcmVBKNT9+cQ6T2tmu+yVQ2bJk8tG0mXvPHWXrl/M4c6NObhSSThK50tJHy0Xo3gl8WgogOxUeJNnBq67cIQ==} + '@angular-devkit/schematics@20.3.5': + resolution: {integrity: sha512-BDizJp7QIoCyMZmuGKoryNUH3QgFPnkEIv0gRdpLhZum4+ZN/DYWaf/jSSGnSVGK88oMrgq7420VEjYPlgJ5MA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@20.3.4': - resolution: {integrity: sha512-2ZPyEQxg9FCM7gv5NZHZVCec6ubb7HM/fkzr7wcYQArN8E8EknlyfXn6G5AoqkEsQZGqtJOD8sfti0m4kYiwkQ==} + '@angular/build@20.3.5': + resolution: {integrity: sha512-Nwwwm8U7lolkdHt75PiPkW93689SBFUN9qEQeu02sPfq2Tqyn20PZGifXkV8A/6mlWbQUjfUnGpRTVk/WhW9Eg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: - '@angular/ssr': ^20.3.4 + '@angular/ssr': ^20.3.5 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 @@ -1490,13 +1490,13 @@ packages: vitest: optional: true - '@angular/cdk@20.2.7': - resolution: {integrity: sha512-QTqxPJSMXyjaswtpUrziwdoKRhqT2P9/Ascwzjg8T/SofV1850pc3YmonoOFrurYrmd4plZzWdr7raGcBWIh/Q==} + '@angular/cdk@20.2.8': + resolution: {integrity: sha512-r2GzcgwkRETKUmFhGfmT+T0RYRcYb/JrpADTnUG3sOkHY+05r7YGkmmXMjUIB0nVERqVuFBM1mKVcIFp9SJDmQ==} peerDependencies: rxjs: ^6.5.3 || ^7.4.0 - '@angular/cli@20.3.4': - resolution: {integrity: sha512-aNPk9ljY2PTc+ZoA7M67rxNvhbUJvzkuYcAdJuHbAIDoWcr2HhyFM2aGrLH3DVemY39xN/haJHj3FYJ8rCdXNw==} + '@angular/cli@20.3.5': + resolution: {integrity: sha512-UA843Mh5uHIWnrzKUotGmhJmvefyEizFS7X8xJEUJsX5pa1EKUB/145rKHoLHxRRpHGxFcXtvciJCksFz1lSBA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true @@ -1508,19 +1508,19 @@ packages: resolution: {tarball: https://codeload.github.com/angular/domino/tar.gz/93e720f143d0296dd2726ffbcf4fc12283363a7b} version: 2.1.6 - '@angular/material@20.2.7': - resolution: {integrity: sha512-VXsP5qkQQ3sCGkSHsgDku/OVlunGsqssOM057foOKJuajECsI3ZpGuLJ13nvLm9Z147UZOZfP463ixZIjd4XuQ==} + '@angular/material@20.2.8': + resolution: {integrity: sha512-JexykfKGTM+oepHZVVPRGCJOs1PWVzdvzonSJ3xuchkNeUZPbrGlWb+wZj84RgpjSGj4ktJ1artrVH/yvLPuhw==} peerDependencies: - '@angular/cdk': 20.2.7 + '@angular/cdk': 20.2.8 rxjs: ^6.5.3 || ^7.4.0 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/de1f701ba5cbfa36b0f02eecc7fdedb74490f0cb': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/de1f701ba5cbfa36b0f02eecc7fdedb74490f0cb} - version: 0.0.0-18fece68983a6e0ecaed2456ffc4035d493688f3 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e877c7e4fe14a67d425f5af705bf583fbbba9967': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e877c7e4fe14a67d425f5af705bf583fbbba9967} + version: 0.0.0-56543b10ddb9941c76b4413cc24ec3fa7a43cf5c hasBin: true - '@angular/ssr@20.3.4': - resolution: {integrity: sha512-0jfFHUz5JkKI4DJ05lkob4AAOt1LPNsQ3A/u0k1Ctej15jR4fOdE+NcHBV+AZ3XV8eNPqlYbOuTa0lGOon9y/A==} + '@angular/ssr@20.3.5': + resolution: {integrity: sha512-Zec8N738/MpfyyTDo37dQ/EQAonOFCjSkKrVpI4b8itYPy0LVlT5zEBKft1kjwEWE2dTiQT/JoVCqswBbc0Dig==} '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} @@ -3370,8 +3370,8 @@ packages: '@nginfra/angular-linking@1.0.10': resolution: {integrity: sha512-31zx+PCN8tBlC0FYUuCxS4uVPJLAlBhi4UVp6QgoQG44RsOHKTmcRORMVSJdPLRgRuCJkY45kj+PE3AxsgiUKA==} - '@ngtools/webpack@20.3.4': - resolution: {integrity: sha512-5G2Q9VguR73RaSbqVpsW1LumITsPxceLL0+L94IOHoV4eYlFciJTXLWgcRUoChh73bt0wLMgdwUVWKjaVtjOLQ==} + '@ngtools/webpack@20.3.5': + resolution: {integrity: sha512-LThQWzgEw6a1eTRWn2hUxwVe8WalL75yola4AaI8gJVqlRhfTcjqpleULihCm9cynn3HnVsaHFElaoLdxhugCA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: typescript: '>=5.8 <6.0' @@ -4083,8 +4083,8 @@ packages: '@rushstack/ts-command-line@5.0.3': resolution: {integrity: sha512-bgPhQEqLVv/2hwKLYv/XvsTWNZ9B/+X1zJ7WgQE9rO5oiLzrOZvkIW4pk13yOQBhHyjcND5qMOa6p83t+Z66iQ==} - '@schematics/angular@20.3.4': - resolution: {integrity: sha512-aIgeRAfSJdxVfsES521vNb6Nuy+Uei7xE85hD+mQHX+62bN7vJhM/tmMFIYS7UF8d0rRnMPiGEr2Rfx6Om5iPg==} + '@schematics/angular@20.3.5': + resolution: {integrity: sha512-mrVWO64psqah8E8HgpF30NMizVZyX6aH3k6hqf2tDgU3+giKX7xvTG9UQCaXA4MLBsQbpcWAmwPLipwLnPm8wA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@shikijs/core@3.11.0': @@ -10590,6 +10590,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -12498,30 +12503,30 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect-cli@0.2003.4(chokidar@4.0.3)': + '@angular-devkit/architect-cli@0.2003.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) ansi-colors: 4.1.3 progress: 2.0.3 yargs-parser: 22.0.0 transitivePeerDependencies: - chokidar - '@angular-devkit/architect@0.2003.4(chokidar@4.0.3)': + '@angular-devkit/architect@0.2003.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.3.4(@angular/ssr@20.3.4)(@types/node@18.19.127)(bufferutil@4.0.9)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9))(protractor@7.0.0)(tsx@4.20.5)(typescript@5.9.2)(vitest@3.2.4(@types/node@18.19.127)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(yaml@2.8.1)': + '@angular-devkit/build-angular@20.3.5(@angular/ssr@20.3.5)(@types/node@18.19.127)(bufferutil@4.0.9)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9))(protractor@7.0.0)(tsx@4.20.5)(typescript@5.9.2)(vitest@3.2.4(@types/node@18.19.127)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(yaml@2.8.1)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(bufferutil@4.0.9)(webpack@5.101.2(esbuild@0.25.9)))(webpack@5.101.2(esbuild@0.25.9)) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular/build': 20.3.4(@angular/ssr@20.3.4)(@types/node@18.19.127)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9))(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(tsx@4.20.5)(typescript@5.9.2)(vitest@3.2.4(@types/node@18.19.127)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(yaml@2.8.1) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(bufferutil@4.0.9)(webpack@5.101.2(esbuild@0.25.9)))(webpack@5.101.2(esbuild@0.25.9)) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular/build': 20.3.5(@angular/ssr@20.3.5)(@types/node@18.19.127)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9))(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(tsx@4.20.5)(typescript@5.9.2)(vitest@3.2.4(@types/node@18.19.127)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(yaml@2.8.1) '@angular/compiler-cli': link:packages/compiler-cli '@angular/core': link:packages/core '@angular/localize': link:packages/localize @@ -12538,7 +12543,7 @@ snapshots: '@babel/preset-env': 7.28.3(@babel/core@7.28.3) '@babel/runtime': 7.28.3 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.3.4(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) + '@ngtools/webpack': 20.3.5(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.6) babel-loader: 10.0.0(@babel/core@7.28.3)(webpack@5.101.2(esbuild@0.25.9)) @@ -12579,7 +12584,7 @@ snapshots: webpack-merge: 6.0.1 webpack-subresource-integrity: 5.1.0(webpack@5.101.2(esbuild@0.25.9)) optionalDependencies: - '@angular/ssr': 20.3.4 + '@angular/ssr': 20.3.5 esbuild: 0.25.9 karma: 6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) protractor: 7.0.0 @@ -12605,13 +12610,13 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-angular@20.3.4(@angular/ssr@20.3.4)(@types/node@24.3.0)(bufferutil@4.0.9)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(protractor@7.0.0)(tsx@4.20.6)(typescript@5.9.2)(utf-8-validate@6.0.5)(vitest@3.2.4(@types/node@24.3.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1)': + '@angular-devkit/build-angular@20.3.5(@angular/ssr@20.3.5)(@types/node@24.3.0)(bufferutil@4.0.9)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(protractor@7.0.0)(tsx@4.20.6)(typescript@5.9.2)(utf-8-validate@6.0.5)(vitest@3.2.4(@types/node@24.3.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(bufferutil@4.0.9)(webpack@5.101.2(esbuild@0.25.9)))(webpack@5.101.2(esbuild@0.25.9)) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular/build': 20.3.4(@angular/ssr@20.3.4)(@types/node@24.3.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.3.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(bufferutil@4.0.9)(webpack@5.101.2(esbuild@0.25.9)))(webpack@5.101.2(esbuild@0.25.9)) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular/build': 20.3.5(@angular/ssr@20.3.5)(@types/node@24.3.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.3.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1) '@angular/compiler-cli': link:packages/compiler-cli '@angular/core': link:packages/core '@angular/localize': link:packages/localize @@ -12628,7 +12633,7 @@ snapshots: '@babel/preset-env': 7.28.3(@babel/core@7.28.3) '@babel/runtime': 7.28.3 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.3.4(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) + '@ngtools/webpack': 20.3.5(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.6) babel-loader: 10.0.0(@babel/core@7.28.3)(webpack@5.101.2(esbuild@0.25.9)) @@ -12669,7 +12674,7 @@ snapshots: webpack-merge: 6.0.1 webpack-subresource-integrity: 5.1.0(webpack@5.101.2(esbuild@0.25.9)) optionalDependencies: - '@angular/ssr': 20.3.4 + '@angular/ssr': 20.3.5 esbuild: 0.25.9 karma: 6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) protractor: 7.0.0 @@ -12702,16 +12707,16 @@ snapshots: typescript: 3.2.4 webpack-sources: 1.3.0 - '@angular-devkit/build-webpack@0.2003.4(chokidar@4.0.3)(webpack-dev-server@5.2.2(bufferutil@4.0.9)(webpack@5.101.2(esbuild@0.25.9)))(webpack@5.101.2(esbuild@0.25.9))': + '@angular-devkit/build-webpack@0.2003.5(chokidar@4.0.3)(webpack-dev-server@5.2.2(bufferutil@4.0.9)(webpack@5.101.2(esbuild@0.25.9)))(webpack@5.101.2(esbuild@0.25.9))': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.101.2(esbuild@0.25.9) webpack-dev-server: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.101.2(esbuild@0.25.9)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.3.4(chokidar@4.0.3)': + '@angular-devkit/core@20.3.5(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1 @@ -12722,9 +12727,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.3.4(chokidar@4.0.3)': + '@angular-devkit/schematics@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 8.2.0 @@ -12732,10 +12737,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@20.3.4(@angular/ssr@20.3.4)(@types/node@18.19.127)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9))(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(tsx@4.20.5)(typescript@5.9.2)(vitest@3.2.4(@types/node@18.19.127)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(yaml@2.8.1)': + '@angular/build@20.3.5(@angular/ssr@20.3.5)(@types/node@18.19.127)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9))(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(tsx@4.20.5)(typescript@5.9.2)(vitest@3.2.4(@types/node@18.19.127)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(yaml@2.8.1)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:packages/compiler '@angular/compiler-cli': link:packages/compiler-cli '@angular/core': link:packages/core @@ -12770,7 +12775,7 @@ snapshots: vite: 7.1.5(@types/node@18.19.127)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.5)(yaml@2.8.1) watchpack: 2.4.4 optionalDependencies: - '@angular/ssr': 20.3.4 + '@angular/ssr': 20.3.5 karma: 6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) less: 4.4.0 lmdb: 3.4.2 @@ -12789,10 +12794,10 @@ snapshots: - tsx - yaml - '@angular/build@20.3.4(@angular/ssr@20.3.4)(@types/node@18.19.127)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.5)(typescript@5.9.2)(vitest@3.2.4(@types/node@18.19.127)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(yaml@2.8.1)': + '@angular/build@20.3.5(@angular/ssr@20.3.5)(@types/node@18.19.127)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.5)(typescript@5.9.2)(vitest@3.2.4(@types/node@18.19.127)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))(yaml@2.8.1)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:packages/compiler '@angular/compiler-cli': link:packages/compiler-cli '@angular/core': link:packages/core @@ -12827,7 +12832,7 @@ snapshots: vite: 7.1.5(@types/node@18.19.127)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) watchpack: 2.4.4 optionalDependencies: - '@angular/ssr': 20.3.4 + '@angular/ssr': 20.3.5 karma: 6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) less: 4.4.0 lmdb: 3.4.2 @@ -12846,10 +12851,10 @@ snapshots: - tsx - yaml - '@angular/build@20.3.4(@angular/ssr@20.3.4)(@types/node@24.3.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.3.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1)': + '@angular/build@20.3.5(@angular/ssr@20.3.5)(@types/node@24.3.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.43.1)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.3.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:packages/compiler '@angular/compiler-cli': link:packages/compiler-cli '@angular/core': link:packages/core @@ -12884,7 +12889,7 @@ snapshots: vite: 7.1.5(@types/node@24.3.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1) watchpack: 2.4.4 optionalDependencies: - '@angular/ssr': 20.3.4 + '@angular/ssr': 20.3.5 karma: 6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) less: 4.4.0 lmdb: 3.4.2 @@ -12903,10 +12908,10 @@ snapshots: - tsx - yaml - '@angular/build@20.3.4(@angular/ssr@20.3.4)(@types/node@24.3.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.3.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1)': + '@angular/build@20.3.5(@angular/ssr@20.3.5)(@types/node@24.3.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.3.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:packages/compiler '@angular/compiler-cli': link:packages/compiler-cli '@angular/core': link:packages/core @@ -12941,7 +12946,7 @@ snapshots: vite: 7.1.5(@types/node@24.3.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) watchpack: 2.4.4 optionalDependencies: - '@angular/ssr': 20.3.4 + '@angular/ssr': 20.3.5 karma: 6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) less: 4.4.0 lmdb: 3.4.2 @@ -12960,10 +12965,10 @@ snapshots: - tsx - yaml - '@angular/build@20.3.4(@angular/ssr@20.3.4)(@types/node@24.7.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.7.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1)': + '@angular/build@20.3.5(@angular/ssr@20.3.5)(@types/node@24.7.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.7.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) '@angular/compiler': link:packages/compiler '@angular/compiler-cli': link:packages/compiler-cli '@angular/core': link:packages/core @@ -12998,7 +13003,7 @@ snapshots: vite: 7.1.5(@types/node@24.7.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) watchpack: 2.4.4 optionalDependencies: - '@angular/ssr': 20.3.4 + '@angular/ssr': 20.3.5 karma: 6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) less: 4.4.0 lmdb: 3.4.2 @@ -13017,7 +13022,7 @@ snapshots: - tsx - yaml - '@angular/cdk@20.2.7(rxjs@7.8.2)': + '@angular/cdk@20.2.8(rxjs@7.8.2)': dependencies: '@angular/common': link:packages/common '@angular/core': link:packages/core @@ -13025,15 +13030,15 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/cli@20.3.4(@types/node@18.19.127)(chokidar@4.0.3)': + '@angular/cli@20.3.5(@types/node@18.19.127)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@18.19.127) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@18.19.127))(@types/node@18.19.127)(listr2@9.0.1) '@modelcontextprotocol/sdk': 1.17.3 - '@schematics/angular': 20.3.4(chokidar@4.0.3) + '@schematics/angular': 20.3.5(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 ini: 5.0.0 @@ -13050,15 +13055,15 @@ snapshots: - chokidar - supports-color - '@angular/cli@20.3.4(@types/node@24.3.0)(chokidar@4.0.3)': + '@angular/cli@20.3.5(@types/node@24.3.0)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@24.3.0) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@24.3.0))(@types/node@24.3.0)(listr2@9.0.1) '@modelcontextprotocol/sdk': 1.17.3 - '@schematics/angular': 20.3.4(chokidar@4.0.3) + '@schematics/angular': 20.3.5(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 ini: 5.0.0 @@ -13084,9 +13089,9 @@ snapshots: '@angular/domino@https://codeload.github.com/angular/domino/tar.gz/93e720f143d0296dd2726ffbcf4fc12283363a7b': {} - '@angular/material@20.2.7(@angular/cdk@20.2.7(rxjs@7.8.2))(rxjs@7.8.2)': + '@angular/material@20.2.8(@angular/cdk@20.2.8(rxjs@7.8.2))(rxjs@7.8.2)': dependencies: - '@angular/cdk': 20.2.7(rxjs@7.8.2) + '@angular/cdk': 20.2.8(rxjs@7.8.2) '@angular/common': link:packages/common '@angular/core': link:packages/core '@angular/forms': link:packages/forms @@ -13094,7 +13099,7 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/de1f701ba5cbfa36b0f02eecc7fdedb74490f0cb(@modelcontextprotocol/sdk@1.18.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e877c7e4fe14a67d425f5af705bf583fbbba9967(@modelcontextprotocol/sdk@1.18.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) @@ -13142,7 +13147,7 @@ snapshots: minimatch: 10.0.3 multimatch: 7.0.0 nock: 14.0.10 - semver: 7.7.2 + semver: 7.7.3 supports-color: 10.2.2 tsx: 4.20.6 typed-graphqlify: 3.1.6 @@ -13155,7 +13160,7 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/ssr@20.3.4': + '@angular/ssr@20.3.5': dependencies: '@angular/common': link:packages/common '@angular/core': link:packages/core @@ -14123,7 +14128,7 @@ snapshots: '@conventional-changelog/git-client@1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.0)': dependencies: '@types/semver': 7.7.1 - semver: 7.7.2 + semver: 7.7.3 optionalDependencies: conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.2.0 @@ -15751,7 +15756,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@ngtools/webpack@20.3.4(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': + '@ngtools/webpack@20.3.5(typescript@5.9.2)(webpack@5.101.2(esbuild@0.25.9))': dependencies: '@angular/compiler-cli': link:packages/compiler-cli typescript: 5.9.2 @@ -16132,7 +16137,7 @@ snapshots: dependencies: '@pnpm/crypto.hash': 1000.2.1 '@pnpm/types': 1000.8.0 - semver: 7.7.2 + semver: 7.7.3 '@pnpm/graceful-fs@1000.0.1': dependencies: @@ -16403,10 +16408,10 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@schematics/angular@20.3.4(chokidar@4.0.3)': + '@schematics/angular@20.3.5(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.4(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.5(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.5(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar @@ -22775,9 +22780,9 @@ snapshots: '@angular/core': link:packages/core tslib: 2.8.1 - ngx-progressbar@14.0.0(@angular/cdk@20.2.7(rxjs@7.8.2))(rxjs@7.8.2): + ngx-progressbar@14.0.0(@angular/cdk@20.2.8(rxjs@7.8.2))(rxjs@7.8.2): dependencies: - '@angular/cdk': 20.2.7(rxjs@7.8.2) + '@angular/cdk': 20.2.8(rxjs@7.8.2) '@angular/common': link:packages/common '@angular/core': link:packages/core rxjs: 7.8.2 @@ -24250,6 +24255,8 @@ snapshots: semver@7.7.2: {} + semver@7.7.3: {} + send@0.19.0: dependencies: debug: 2.6.9 From 19cd52f421e3ae6e4e7dbab760b3a6f594d04706 Mon Sep 17 00:00:00 2001 From: Shuaib Hasan Akib Date: Tue, 7 Oct 2025 20:46:22 +0600 Subject: [PATCH 08/57] docs(docs-infra): add rel="noopener" to external links with target="_blank" in ExternalLink directive (#64276) PR Close #64276 --- .../external-link/external-link.directive.spec.ts | 11 +++++++++-- .../external-link/external-link.directive.ts | 3 +++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/adev/shared-docs/directives/external-link/external-link.directive.spec.ts b/adev/shared-docs/directives/external-link/external-link.directive.spec.ts index 110ab2fe9f6..954ad92ace9 100644 --- a/adev/shared-docs/directives/external-link/external-link.directive.spec.ts +++ b/adev/shared-docs/directives/external-link/external-link.directive.spec.ts @@ -41,11 +41,13 @@ describe('ExternalLink', () => { By.css('a[href="https://stackoverflow.com/questions/tagged/angular"]'), ); expect(externalLink.attributes['target']).toEqual('_blank'); + expect(externalLink.attributes['rel']).toEqual('noopener'); }); it('should not internal link have target=_blank attribute', () => { const internalLink = fixture.debugElement.query(By.css('a[href="/roadmap"]')); expect(internalLink.attributes['target']).toBeFalsy(); + expect(internalLink.attributes['rel']).toBeFalsy(); }); it('should not set target=_blank attribute external link when anchor has got noBlankForExternalLink attribute', () => { @@ -53,23 +55,28 @@ describe('ExternalLink', () => { By.css('a[href="https://github.com/angular/angular/issues"]'), ); expect(externalLink.attributes['target']).toBeFalsy(); + expect(externalLink.attributes['rel']).toBeFalsy(); }); }); @Component({ template: ` Stack Overflow - Roadmap + Roadmap + > + GitHub Issues + `, imports: [ExternalLink, RouterLink], }) diff --git a/adev/shared-docs/directives/external-link/external-link.directive.ts b/adev/shared-docs/directives/external-link/external-link.directive.ts index 0812c466e33..349befe123f 100644 --- a/adev/shared-docs/directives/external-link/external-link.directive.ts +++ b/adev/shared-docs/directives/external-link/external-link.directive.ts @@ -18,6 +18,7 @@ import {isExternalLink} from '../../utils/index'; selector: 'a[href]:not([noBlankForExternalLink])', host: { '[attr.target]': 'target', + '[attr.rel]': 'rel', }, }) export class ExternalLink { @@ -25,6 +26,7 @@ export class ExternalLink { private readonly platformId = inject(PLATFORM_ID); target?: '_blank' | '_self' | '_parent' | '_top' | ''; + rel?: string; constructor() { this.setAnchorTarget(); @@ -37,6 +39,7 @@ export class ExternalLink { if (isExternalLink(this.anchor.nativeElement.href)) { this.target = '_blank'; + this.rel = 'noopener'; } } } From fa25dadae9cf278b008f0c58d4e1d0f655c67634 Mon Sep 17 00:00:00 2001 From: Matthieu Riegler Date: Sun, 5 Oct 2025 14:15:37 +0200 Subject: [PATCH 09/57] refactor(core): use the `ValueEqualityFn` from core (#64247) Instead of the non-public primitive one. PR Close #64247 --- packages/core/src/render3/reactivity/api.ts | 2 ++ packages/core/src/resource/resource.ts | 4 +--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/core/src/render3/reactivity/api.ts b/packages/core/src/render3/reactivity/api.ts index 6db56da7638..8213dce6456 100644 --- a/packages/core/src/render3/reactivity/api.ts +++ b/packages/core/src/render3/reactivity/api.ts @@ -33,5 +33,7 @@ export function isSignal(value: unknown): value is Signal { /** * A comparison function which can determine if two values are equal. + * + * @publicApi 17.0 */ export type ValueEqualityFn = (a: T, b: T) => boolean; diff --git a/packages/core/src/resource/resource.ts b/packages/core/src/resource/resource.ts index ae29a49f546..e15a7116f9c 100644 --- a/packages/core/src/resource/resource.ts +++ b/packages/core/src/resource/resource.ts @@ -9,7 +9,7 @@ import {untracked} from '../render3/reactivity/untracked'; import {computed} from '../render3/reactivity/computed'; import {signal, signalAsReadonlyFn, WritableSignal} from '../render3/reactivity/signal'; -import {Signal} from '../render3/reactivity/api'; +import {Signal, ValueEqualityFn} from '../render3/reactivity/api'; import {effect, EffectRef} from '../render3/reactivity/effect'; import { ResourceOptions, @@ -23,8 +23,6 @@ import { ResourceLoaderParams, } from './api'; -import {ValueEqualityFn} from '../../primitives/signals'; - import {Injector} from '../di/injector'; import {assertInInjectionContext} from '../di/contextual'; import {inject} from '../di/injector_compatibility'; From 6e4bcc7d22d4699a33d6648e628fb65a38d0ad8f Mon Sep 17 00:00:00 2001 From: Andrew Scott Date: Mon, 6 Oct 2025 11:28:49 -0700 Subject: [PATCH 10/57] fix(router): Scroll restoration should use instant scroll behavior for traversals (#64299) When the scroll position is being restored, this change upates the behavior to use 'instant' rather than the default 'auto', which will be whatever the browser behavior is for 'window.scrollTo'. The 'smooth' behavior does not match how browsers behavior when performing a traversal navigation for MPAs, which is 'instant'. related to #58258 PR Close #64299 --- packages/router/src/router_scroller.ts | 5 +++-- packages/router/test/router_scroller.spec.ts | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/router/src/router_scroller.ts b/packages/router/src/router_scroller.ts index 9e14bd0b357..739c0e39b54 100644 --- a/packages/router/src/router_scroller.ts +++ b/packages/router/src/router_scroller.ts @@ -85,12 +85,13 @@ export class RouterScroller implements OnDestroy { private consumeScrollEvents() { return this.transitions.events.subscribe((e) => { if (!(e instanceof Scroll)) return; + const instantScroll: ScrollOptions = {behavior: 'instant'}; // a popstate event. The pop state event will always ignore anchor scrolling. if (e.position) { if (this.options.scrollPositionRestoration === 'top') { - this.viewportScroller.scrollToPosition([0, 0]); + this.viewportScroller.scrollToPosition([0, 0], instantScroll); } else if (this.options.scrollPositionRestoration === 'enabled') { - this.viewportScroller.scrollToPosition(e.position); + this.viewportScroller.scrollToPosition(e.position, instantScroll); } // imperative navigation "forward" } else { diff --git a/packages/router/test/router_scroller.spec.ts b/packages/router/test/router_scroller.spec.ts index 0176037e3a2..90d0e7bd697 100644 --- a/packages/router/test/router_scroller.spec.ts +++ b/packages/router/test/router_scroller.spec.ts @@ -96,7 +96,9 @@ describe('RouterScroller', () => { events.next(new NavigationStart(3, '/a', 'popstate', {navigationId: 1})); events.next(new NavigationEnd(3, '/a', '/a')); await nextScrollEvent(events); - expect(viewportScroller.scrollToPosition).toHaveBeenCalledWith([10, 100]); + expect(viewportScroller.scrollToPosition).toHaveBeenCalledWith([10, 100], { + behavior: 'instant', + }); }); }); @@ -146,7 +148,7 @@ describe('RouterScroller', () => { events.next(new NavigationEnd(3, '/a#anchor', '/a#anchor')); await nextScrollEvent(events); expect(viewportScroller.scrollToAnchor).not.toHaveBeenCalled(); - expect(viewportScroller.scrollToPosition).toHaveBeenCalledWith([0, 0]); + expect(viewportScroller.scrollToPosition).toHaveBeenCalledWith([0, 0], {behavior: 'instant'}); }); }); From 2c79ca0b579d99346c267e6b61789699e8656dc5 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 6 Oct 2025 05:09:01 -0400 Subject: [PATCH 11/57] fix(migrations): remove error for no matching files in control flow migration (#64253) (#64314) Now that the control flow migration is running as a part of `ng update`, we need to be a bit forgiving about there not being any matching files since it can break the entire update process. These changes switch the error to a warning and it counts the files for the entire workspace, not the individual projects. PR Close #64253 PR Close #64314 --- .../control-flow-migration/index.ts | 60 ++++++++----------- .../test/control_flow_migration_spec.ts | 15 +---- 2 files changed, 29 insertions(+), 46 deletions(-) diff --git a/packages/core/schematics/migrations/control-flow-migration/index.ts b/packages/core/schematics/migrations/control-flow-migration/index.ts index 2f897a7bbbf..51d7f949326 100644 --- a/packages/core/schematics/migrations/control-flow-migration/index.ts +++ b/packages/core/schematics/migrations/control-flow-migration/index.ts @@ -8,6 +8,7 @@ import {Rule, SchematicContext, SchematicsException, Tree} from '@angular-devkit/schematics'; import {join, relative} from 'node:path'; +import ts from 'typescript'; import {canMigrateFile, createMigrationProgram} from '../../utils/typescript/compiler_host'; @@ -28,6 +29,12 @@ export function migrate(options: Options): Rule { const basePath = process.cwd(); let pathToMigrate: string | undefined; if (options.path) { + if (options.path.startsWith('..')) { + throw new SchematicsException( + 'Cannot run control flow migration outside of the current project.', + ); + } + pathToMigrate = normalizePath(join(basePath, options.path)); if (pathToMigrate.trim() !== '') { allPaths.push(pathToMigrate); @@ -38,60 +45,45 @@ export function migrate(options: Options): Rule { } if (!allPaths.length) { - throw new SchematicsException( - 'Could not find any tsconfig file. Cannot run the http providers migration.', + context.logger.warn( + 'Could not find any tsconfig file. Cannot run the control flow migration.', ); + return; } let errors: string[] = []; + let sourceFilesCount = 0; for (const tsconfigPath of allPaths) { - const migrateErrors = runControlFlowMigration( - tree, - tsconfigPath, - basePath, - pathToMigrate, - options, - ); + const program = createMigrationProgram(tree, tsconfigPath, basePath); + const sourceFiles = program + .getSourceFiles() + .filter( + (sourceFile) => + (pathToMigrate ? sourceFile.fileName.startsWith(pathToMigrate) : true) && + canMigrateFile(basePath, sourceFile, program), + ); + + const migrateErrors = runControlFlowMigration(tree, sourceFiles, basePath, options); errors = [...errors, ...migrateErrors]; + sourceFilesCount += sourceFiles.length; } if (errors.length > 0) { context.logger.warn(`WARNING: ${errors.length} errors occurred during your migration:\n`); - errors.forEach((err: string) => { - context.logger.warn(err); - }); + errors.forEach((err) => context.logger.warn(err)); + } else if (sourceFilesCount === 0) { + context.logger.warn('Control flow migration did not find any files to migrate'); } }; } function runControlFlowMigration( tree: Tree, - tsconfigPath: string, + sourceFiles: ts.SourceFile[], basePath: string, - pathToMigrate?: string, schematicOptions?: Options, ): string[] { - if (schematicOptions?.path?.startsWith('..')) { - throw new SchematicsException( - 'Cannot run control flow migration outside of the current project.', - ); - } - - const program = createMigrationProgram(tree, tsconfigPath, basePath); - const sourceFiles = program - .getSourceFiles() - .filter( - (sourceFile) => - (pathToMigrate ? sourceFile.fileName.startsWith(pathToMigrate) : true) && - canMigrateFile(basePath, sourceFile, program), - ); - - if (sourceFiles.length === 0) { - throw new SchematicsException( - `Could not find any files to migrate under the path ${pathToMigrate}. Cannot run the control flow migration.`, - ); - } const analysis = new Map(); const migrateErrors = new Map(); diff --git a/packages/core/schematics/test/control_flow_migration_spec.ts b/packages/core/schematics/test/control_flow_migration_spec.ts index 99feb55728a..4f2ef18fadc 100644 --- a/packages/core/schematics/test/control_flow_migration_spec.ts +++ b/packages/core/schematics/test/control_flow_migration_spec.ts @@ -6926,9 +6926,7 @@ describe('control flow migration (ng generate)', () => { }); describe('path', () => { - it('should throw an error if no files match the passed-in path', async () => { - let error: string | null = null; - + it('should warn if no files match the passed-in path', async () => { writeFile( 'dir.ts', ` @@ -6938,15 +6936,8 @@ describe('control flow migration (ng generate)', () => { `, ); - try { - await runMigration('./foo'); - } catch (e: any) { - error = e.message; - } - - expect(error).toMatch( - /Could not find any files to migrate under the path .*\/foo\. Cannot run the control flow migration/, - ); + await runMigration('./foo'); + expect(warnOutput).toContain('Control flow migration did not find any files to migrate'); }); it('should throw an error if a path outside of the project is passed in', async () => { From bb241ee28bb73915010ce0620e265daeb288cde1 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Wed, 17 Sep 2025 14:06:25 +0200 Subject: [PATCH 12/57] refactor(compiler-cli): track member metadata using output AST (#63957) (#64317) Reworks the logic that tracks the decorator metadata for members to do so using the output AST, rather than wrapping the TypeScript AST. This makes it easier to programmatically generate new members that weren't part of the TypeScript AST before. PR Close #63957 PR Close #64317 --- .../ngtsc/annotations/common/src/metadata.ts | 50 ++++++++++++------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/packages/compiler-cli/src/ngtsc/annotations/common/src/metadata.ts b/packages/compiler-cli/src/ngtsc/annotations/common/src/metadata.ts index e6d782d461c..6299337a745 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/common/src/metadata.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/common/src/metadata.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import {ErrorCode, FatalDiagnosticError, makeRelatedInformation} from '../../../diagnostics'; +import {ErrorCode, FatalDiagnosticError} from '../../../diagnostics'; import { ArrowFunctionExpr, Expression, @@ -19,6 +19,7 @@ import { import ts from 'typescript'; import { + ClassMember, ClassMemberAccessLevel, CtorParameter, DeclarationNode, @@ -88,15 +89,32 @@ export function extractClassMetadata( const classMembers = reflection.getMembersOfClass(clazz).filter( (member) => !member.isStatic && - member.decorators !== null && - member.decorators.length > 0 && // Private fields are not supported in the metadata emit member.accessLevel !== ClassMemberAccessLevel.EcmaScriptPrivate, ); - const duplicateDecoratedMembers = classMembers.filter( - (member, i, arr) => arr.findIndex((arrayMember) => arrayMember.name === member.name) < i, - ); - if (duplicateDecoratedMembers.length > 0) { + + const decoratedMembers: {key: string; value: Expression; quoted: boolean}[] = []; + const seenMemberNames = new Set(); + let duplicateDecoratedMembers: ClassMember[] | null = null; + + for (const member of classMembers) { + if (member.decorators !== null && member.decorators.length > 0) { + decoratedMembers.push({ + key: member.name, + quoted: false, + value: decoratedClassMemberToMetadata(member.decorators!, isCore), + }); + + if (seenMemberNames.has(member.name)) { + duplicateDecoratedMembers ??= []; + duplicateDecoratedMembers.push(member); + } else { + seenMemberNames.add(member.name); + } + } + } + + if (duplicateDecoratedMembers !== null) { // This should theoretically never happen, because the only way to have duplicate instance // member names is getter/setter pairs and decorators cannot appear in both a getter and the // corresponding setter. @@ -107,13 +125,9 @@ export function extractClassMetadata( duplicateDecoratedMembers.map((member) => member.name).join(', '), ); } - const decoratedMembers = classMembers.map((member) => - classMemberToMetadata(member.nameNode ?? member.name, member.decorators!, isCore), - ); + if (decoratedMembers.length > 0) { - metaPropDecorators = new WrappedNodeExpr( - ts.factory.createObjectLiteralExpression(decoratedMembers), - ); + metaPropDecorators = literalMap(decoratedMembers); } return { @@ -153,16 +167,14 @@ function ctorParameterToMetadata(param: CtorParameter, isCore: boolean): Express /** * Convert a reflected class member to metadata. */ -function classMemberToMetadata( - name: ts.PropertyName | string, +function decoratedClassMemberToMetadata( decorators: Decorator[], isCore: boolean, -): ts.PropertyAssignment { +): LiteralArrayExpr { const ngDecorators = decorators .filter((dec) => isAngularDecorator(dec, isCore)) - .map((decorator: Decorator) => decoratorToMetadata(decorator)); - const decoratorMeta = ts.factory.createArrayLiteralExpression(ngDecorators); - return ts.factory.createPropertyAssignment(name, decoratorMeta); + .map((decorator: Decorator) => new WrappedNodeExpr(decoratorToMetadata(decorator))); + return new LiteralArrayExpr(ngDecorators); } /** From 2342de8fac9a19944f9f2e2c0499ec270c9b3476 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Thu, 18 Sep 2025 11:27:19 +0200 Subject: [PATCH 13/57] refactor(compiler): expose member decorator identifiers (#63957) (#64317) Adds the member decorators to the map of exposed compiler symbols. PR Close #63957 PR Close #64317 --- packages/compiler/src/render3/r3_identifiers.ts | 11 +++++++++++ packages/core/test/render3/jit_environment_spec.ts | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/packages/compiler/src/render3/r3_identifiers.ts b/packages/compiler/src/render3/r3_identifiers.ts index 3c48d64de48..c2cf7044785 100644 --- a/packages/compiler/src/render3/r3_identifiers.ts +++ b/packages/compiler/src/render3/r3_identifiers.ts @@ -477,6 +477,17 @@ export class Identifiers { moduleName: CORE, }; + // Decorators + static inputDecorator: o.ExternalReference = {name: 'Input', moduleName: CORE}; + static outputDecorator: o.ExternalReference = {name: 'Output', moduleName: CORE}; + static viewChildDecorator: o.ExternalReference = {name: 'ViewChild', moduleName: CORE}; + static viewChildrenDecorator: o.ExternalReference = {name: 'ViewChildren', moduleName: CORE}; + static contentChildDecorator: o.ExternalReference = {name: 'ContentChild', moduleName: CORE}; + static contentChildrenDecorator: o.ExternalReference = { + name: 'ContentChildren', + moduleName: CORE, + }; + // type-checking static InputSignalBrandWriteType = {name: 'ɵINPUT_SIGNAL_BRAND_WRITE_TYPE', moduleName: CORE}; static UnwrapDirectiveSignalInputs = {name: 'ɵUnwrapDirectiveSignalInputs', moduleName: CORE}; diff --git a/packages/core/test/render3/jit_environment_spec.ts b/packages/core/test/render3/jit_environment_spec.ts index 87db419d252..1184eaa4920 100644 --- a/packages/core/test/render3/jit_environment_spec.ts +++ b/packages/core/test/render3/jit_environment_spec.ts @@ -29,6 +29,12 @@ const INTERFACE_EXCEPTIONS = new Set([ const AOT_ONLY = new Set([ 'ɵsetClassMetadata', 'ɵsetClassMetadataAsync', + 'Input', + 'Output', + 'ViewChild', + 'ViewChildren', + 'ContentChild', + 'ContentChildren', // used in type-checking. 'ɵINPUT_SIGNAL_BRAND_WRITE_TYPE', From 8dec92ff9f1055c6b4fc4e767d8b1b408ac28e67 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Thu, 18 Sep 2025 20:25:27 +0200 Subject: [PATCH 14/57] fix(compiler-cli): capture metadata for undecorated fields (#63957) (#64317) Currently if `TestBed.overrideComponent` is used on a class that uses initializer APIs (e.g. `input()`), the initializer metadata will be wiped out, because `overrideComponent` re-compiles the class with the information set by `setClassMetadata`. `setClassMetadata` only captures decorated members at the moment. These changes introduce some logic to capture the new initializer-based APIs in `setClassMetadata` as well. Fixes #57944. PR Close #63957 PR Close #64317 --- .../ngtsc/annotations/common/src/metadata.ts | 18 ++- .../annotations/common/test/metadata_spec.ts | 2 +- .../annotations/component/src/handler.ts | 9 ++ .../annotations/directive/src/handler.ts | 25 +++- .../ngtsc/annotations/directive/src/shared.ts | 140 ++++++++++++++++++ .../test_cases/model_inputs/GOLDEN_PARTIAL.js | 6 +- .../output_function/GOLDEN_PARTIAL.js | 6 +- .../host_bindings/GOLDEN_PARTIAL.js | 6 +- .../GOLDEN_PARTIAL.js | 4 +- .../signal_inputs/GOLDEN_PARTIAL.js | 10 +- .../signal_queries/GOLDEN_PARTIAL.js | 8 +- .../inline_templates/GOLDEN_PARTIAL.js | 8 +- .../test/ngtsc/authoring_inputs_spec.ts | 20 +++ .../test/ngtsc/authoring_models_spec.ts | 25 ++++ .../test/ngtsc/authoring_outputs_spec.ts | 21 +++ .../test/ngtsc/authoring_queries_spec.ts | 140 ++++++++++++++++++ 16 files changed, 419 insertions(+), 29 deletions(-) diff --git a/packages/compiler-cli/src/ngtsc/annotations/common/src/metadata.ts b/packages/compiler-cli/src/ngtsc/annotations/common/src/metadata.ts index 6299337a745..98903c398ef 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/common/src/metadata.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/common/src/metadata.ts @@ -30,6 +30,9 @@ import { import {valueReferenceToExpression, wrapFunctionExpressionsInParens} from './util'; +/** Function that extracts metadata from an undercorated class member. */ +export type UndecoratedMetadataExtractor = (member: ClassMember) => LiteralArrayExpr | null; + /** * Given a class declaration, generate a call to `setClassMetadata` with the Angular metadata * present on the class or its member fields. An ngDevMode guard is used to allow the call to be @@ -44,6 +47,7 @@ export function extractClassMetadata( isCore: boolean, annotateForClosureCompiler?: boolean, angularDecoratorTransform: (dec: Decorator) => Decorator = (dec) => dec, + undecoratedMetadataExtractor: UndecoratedMetadataExtractor = () => null, ): R3ClassMetadata | null { if (!reflection.isClass(clazz)) { return null; @@ -98,10 +102,12 @@ export function extractClassMetadata( let duplicateDecoratedMembers: ClassMember[] | null = null; for (const member of classMembers) { + const shouldQuoteName = member.nameNode !== null && ts.isStringLiteralLike(member.nameNode); + if (member.decorators !== null && member.decorators.length > 0) { decoratedMembers.push({ key: member.name, - quoted: false, + quoted: shouldQuoteName, value: decoratedClassMemberToMetadata(member.decorators!, isCore), }); @@ -111,6 +117,16 @@ export function extractClassMetadata( } else { seenMemberNames.add(member.name); } + } else { + const undecoratedMetadata = undecoratedMetadataExtractor(member); + + if (undecoratedMetadata !== null) { + decoratedMembers.push({ + key: member.name, + quoted: shouldQuoteName, + value: undecoratedMetadata, + }); + } } } diff --git a/packages/compiler-cli/src/ngtsc/annotations/common/test/metadata_spec.ts b/packages/compiler-cli/src/ngtsc/annotations/common/test/metadata_spec.ts index 5814cf434d8..e117844ca44 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/common/test/metadata_spec.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/common/test/metadata_spec.ts @@ -108,7 +108,7 @@ runInEachFileSystem(() => { } `); expect(res).toContain( - `{ 'has-dashes-in-name': [{ type: Input }], noDashesInName: [{ type: Input }] })`, + `{ "has-dashes-in-name": [{ type: Input }], noDashesInName: [{ type: Input }] })`, ); }); diff --git a/packages/compiler-cli/src/ngtsc/annotations/component/src/handler.ts b/packages/compiler-cli/src/ngtsc/annotations/component/src/handler.ts index b3d350493e7..7a7f4378d1e 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/component/src/handler.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/component/src/handler.ts @@ -155,12 +155,14 @@ import { ResourceLoader, toFactoryMetadata, tryUnwrapForwardRef, + UndecoratedMetadataExtractor, validateHostDirectives, wrapFunctionExpressionsInParens, } from '../../common'; import { extractDirectiveMetadata, extractHostBindingResources, + getDirectiveUndecoratedMetadataExtractor, parseDirectiveStyles, } from '../../directive'; import {createModuleWithProvidersResolver, NgModuleSymbol} from '../../ng_module'; @@ -291,6 +293,11 @@ export class ComponentDecoratorHandler preserveSignificantWhitespace: this.i18nPreserveSignificantWhitespace, }; + this.undecoratedMetadataExtractor = getDirectiveUndecoratedMetadataExtractor( + reflector, + importTracker, + ); + // Dependencies can't be deferred during HMR, because the HMR update module can't have // dynamic imports and its dependencies need to be passed in directly. If dependencies // are deferred, their imports will be deleted so we may lose the reference to them. @@ -299,6 +306,7 @@ export class ComponentDecoratorHandler private literalCache = new Map(); private elementSchemaRegistry = new DomElementSchemaRegistry(); + private readonly undecoratedMetadataExtractor: UndecoratedMetadataExtractor; /** * During the asynchronous preanalyze phase, it's necessary to parse the template to extract @@ -971,6 +979,7 @@ export class ComponentDecoratorHandler this.isCore, this.annotateForClosureCompiler, (dec) => transformDecoratorResources(dec, component, styles, template), + this.undecoratedMetadataExtractor, ) : null, classDebugInfo: extractClassDebugInfo( diff --git a/packages/compiler-cli/src/ngtsc/annotations/directive/src/handler.ts b/packages/compiler-cli/src/ngtsc/annotations/directive/src/handler.ts index c97a5c8f987..875308dadc0 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/directive/src/handler.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/directive/src/handler.ts @@ -74,10 +74,16 @@ import { ReferencesRegistry, resolveProvidersRequiringFactory, toFactoryMetadata, + UndecoratedMetadataExtractor, validateHostDirectives, } from '../../common'; -import {extractDirectiveMetadata, extractHostBindingResources, HostBindingNodes} from './shared'; +import { + extractDirectiveMetadata, + extractHostBindingResources, + getDirectiveUndecoratedMetadataExtractor, + HostBindingNodes, +} from './shared'; import {DirectiveSymbol} from './symbol'; import {JitDeclarationRegistry} from '../../common/src/jit_declaration_registry'; import { @@ -154,10 +160,16 @@ export class DirectiveDecoratorHandler private readonly usePoisonedData: boolean, private readonly typeCheckHostBindings: boolean, private readonly emitDeclarationOnly: boolean, - ) {} + ) { + this.undecoratedMetadataExtractor = getDirectiveUndecoratedMetadataExtractor( + reflector, + importTracker, + ); + } readonly precedence = HandlerPrecedence.PRIMARY; readonly name = 'DirectiveDecoratorHandler'; + private readonly undecoratedMetadataExtractor: UndecoratedMetadataExtractor; detect( node: ClassDeclaration, @@ -240,7 +252,14 @@ export class DirectiveDecoratorHandler hostDirectives: directiveResult.hostDirectives, rawHostDirectives: directiveResult.rawHostDirectives, classMetadata: this.includeClassMetadata - ? extractClassMetadata(node, this.reflector, this.isCore, this.annotateForClosureCompiler) + ? extractClassMetadata( + node, + this.reflector, + this.isCore, + this.annotateForClosureCompiler, + undefined, + this.undecoratedMetadataExtractor, + ) : null, baseClass: readBaseClass(node, this.reflector, this.evaluator), typeCheckMeta: extractDirectiveTypeCheckMeta(node, directiveResult.inputs, this.reflector), diff --git a/packages/compiler-cli/src/ngtsc/annotations/directive/src/shared.ts b/packages/compiler-cli/src/ngtsc/annotations/directive/src/shared.ts index 65830fd6bb4..f5ecd7265b3 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/directive/src/shared.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/directive/src/shared.ts @@ -14,6 +14,8 @@ import { ExternalReference, ForwardRefHandling, getSafePropertyAccessString, + LiteralArrayExpr, + literalMap, MaybeForwardRefExpression, ParsedHostBindings, ParseError, @@ -24,7 +26,10 @@ import { R3QueryMetadata, R3Reference, verifyHostBindings, + R3Identifiers, + ArrowFunctionExpr, WrappedNodeExpr, + literal, } from '@angular/compiler'; import ts from 'typescript'; @@ -76,6 +81,7 @@ import { ReferencesRegistry, toR3Reference, tryUnwrapForwardRef, + UndecoratedMetadataExtractor, unwrapConstructorDependencies, unwrapExpression, validateConstructorDependencies, @@ -855,6 +861,140 @@ export function parseFieldStringArrayValue( return value; } +/** + * Returns a function that can be used to extract data for the `setClassMetadata` + * calls from undecorated directive class members. + */ +export function getDirectiveUndecoratedMetadataExtractor( + reflector: ReflectionHost, + importTracker: ImportedSymbolsTracker, +): UndecoratedMetadataExtractor { + return (member: ClassMember): LiteralArrayExpr | null => { + const input = tryParseSignalInputMapping(member, reflector, importTracker); + if (input !== null) { + return getDecoratorMetaArray([ + [new ExternalExpr(R3Identifiers.inputDecorator), memberMetadataFromSignalInput(input)], + ]); + } + + const output = tryParseInitializerBasedOutput(member, reflector, importTracker); + if (output !== null) { + return getDecoratorMetaArray([ + [ + new ExternalExpr(R3Identifiers.outputDecorator), + memberMetadataFromInitializerOutput(output.metadata), + ], + ]); + } + + const model = tryParseSignalModelMapping(member, reflector, importTracker); + if (model !== null) { + return getDecoratorMetaArray([ + [ + new ExternalExpr(R3Identifiers.inputDecorator), + memberMetadataFromSignalInput(model.input), + ], + [ + new ExternalExpr(R3Identifiers.outputDecorator), + memberMetadataFromInitializerOutput(model.output), + ], + ]); + } + + const query = tryParseSignalQueryFromInitializer(member, reflector, importTracker); + if (query !== null) { + let identifier: ExternalReference; + if (query.name === 'viewChild') { + identifier = R3Identifiers.viewChildDecorator; + } else if (query.name === 'viewChildren') { + identifier = R3Identifiers.viewChildrenDecorator; + } else if (query.name === 'contentChild') { + identifier = R3Identifiers.contentChildDecorator; + } else if (query.name === 'contentChildren') { + identifier = R3Identifiers.contentChildrenDecorator; + } else { + return null; + } + + return getDecoratorMetaArray([ + [new ExternalExpr(identifier), memberMetadataFromSignalQuery(query.call)], + ]); + } + + return null; + }; +} + +function getDecoratorMetaArray( + decorators: [type: ExternalExpr, args: LiteralArrayExpr][], +): LiteralArrayExpr { + return new LiteralArrayExpr( + decorators.map(([type, args]) => + literalMap([ + {key: 'type', value: type, quoted: false}, + {key: 'args', value: args, quoted: false}, + ]), + ), + ); +} + +function memberMetadataFromSignalInput(input: InputMapping): LiteralArrayExpr { + // Note that for signal inputs the transform is captured in the signal + // initializer so we don't need to capture it here. + return new LiteralArrayExpr([ + literalMap([ + { + key: 'isSignal', + value: literal(true), + quoted: false, + }, + { + key: 'alias', + value: literal(input.bindingPropertyName), + quoted: false, + }, + { + key: 'required', + value: literal(input.required), + quoted: false, + }, + ]), + ]); +} + +function memberMetadataFromInitializerOutput(output: InputOrOutput): LiteralArrayExpr { + return new LiteralArrayExpr([literal(output.bindingPropertyName)]); +} + +function memberMetadataFromSignalQuery(call: ts.CallExpression): LiteralArrayExpr { + const firstArg = call.arguments[0]; + const firstArgMeta = + ts.isStringLiteralLike(firstArg) || ts.isCallExpression(firstArg) + ? new WrappedNodeExpr(firstArg) + : // If the first argument is a class reference, we need to wrap it in a `forwardRef` + // because the reference might occur after the current class. This wouldn't be flagged + // on the query initializer, because it executes after the class is initialized, whereas + // `setClassMetadata` runs immediately. + new ExternalExpr(R3Identifiers.forwardRef).callFn([ + new ArrowFunctionExpr([], new WrappedNodeExpr(firstArg)), + ]); + + const entries: Expression[] = [ + // We use wrapped nodes here, because the output AST doesn't support spread assignments. + firstArgMeta, + new WrappedNodeExpr( + ts.factory.createObjectLiteralExpression([ + ...(call.arguments.length > 1 + ? [ts.factory.createSpreadAssignment(call.arguments[1])] + : []), + ts.factory.createPropertyAssignment('isSignal', ts.factory.createTrue()), + ]), + ), + ]; + + return new LiteralArrayExpr(entries); +} + function isStringArrayOrDie(value: any, name: string, node: ts.Expression): value is string[] { if (!Array.isArray(value)) { return false; diff --git a/packages/compiler-cli/test/compliance/test_cases/model_inputs/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/model_inputs/GOLDEN_PARTIAL.js index 9dc3dd4539e..33d14ee9b3b 100644 --- a/packages/compiler-cli/test/compliance/test_cases/model_inputs/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/model_inputs/GOLDEN_PARTIAL.js @@ -14,7 +14,7 @@ TestDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "0.0. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestDir, decorators: [{ type: Directive, args: [{}] - }] }); + }], propDecorators: { counter: [{ type: i0.Input, args: [{ isSignal: true, alias: "counter", required: false }] }, { type: i0.Output, args: ["counterChange"] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }, { type: i0.Output, args: ["nameChange"] }] } }); /**************************************************************************************************** * PARTIAL FILE: model_directive_definition.d.ts @@ -45,7 +45,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDE args: [{ template: 'Works', }] - }] }); + }], propDecorators: { counter: [{ type: i0.Input, args: [{ isSignal: true, alias: "counter", required: false }] }, { type: i0.Output, args: ["counterChange"] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }, { type: i0.Output, args: ["nameChange"] }] } }); /**************************************************************************************************** * PARTIAL FILE: model_component_definition.d.ts @@ -80,7 +80,7 @@ TestDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "0.0. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestDir, decorators: [{ type: Directive, args: [{}] - }], propDecorators: { decoratorInput: [{ + }], propDecorators: { counter: [{ type: i0.Input, args: [{ isSignal: true, alias: "counter", required: false }] }, { type: i0.Output, args: ["counterChange"] }], modelWithAlias: [{ type: i0.Input, args: [{ isSignal: true, alias: "alias", required: false }] }, { type: i0.Output, args: ["aliasChange"] }], decoratorInput: [{ type: Input }], decoratorInputWithAlias: [{ type: Input, diff --git a/packages/compiler-cli/test/compliance/test_cases/output_function/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/output_function/GOLDEN_PARTIAL.js index bfb7ec07b0c..724a4967fce 100644 --- a/packages/compiler-cli/test/compliance/test_cases/output_function/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/output_function/GOLDEN_PARTIAL.js @@ -18,7 +18,7 @@ TestDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "0.0. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestDir, decorators: [{ type: Directive, args: [{}] - }] }); + }], propDecorators: { a: [{ type: i0.Output, args: ["a"] }], b: [{ type: i0.Output, args: ["b"] }], c: [{ type: i0.Output, args: ["cPublic"] }], d: [{ type: i0.Output, args: ["d"] }], e: [{ type: i0.Output, args: ["e"] }] } }); /**************************************************************************************************** * PARTIAL FILE: output_in_directive.d.ts @@ -56,7 +56,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDE args: [{ template: 'Works', }] - }] }); + }], propDecorators: { a: [{ type: i0.Output, args: ["a"] }], b: [{ type: i0.Output, args: ["b"] }], c: [{ type: i0.Output, args: ["cPublic"] }], d: [{ type: i0.Output, args: ["d"] }], e: [{ type: i0.Output, args: ["e"] }] } }); /**************************************************************************************************** * PARTIAL FILE: output_in_component.d.ts @@ -97,7 +97,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDE args: [{ standalone: true, }] - }], propDecorators: { clickDecorator1: [{ + }], propDecorators: { click1: [{ type: i0.Output, args: ["click1"] }], click2: [{ type: i0.Output, args: ["click2"] }], click3: [{ type: i0.Output, args: ["click3"] }], _bla: [{ type: i0.Output, args: ["decoratorPublicName"] }], _bla2: [{ type: i0.Output, args: ["decoratorPublicName2"] }], clickDecorator1: [{ type: Output }], clickDecorator2: [{ type: Output diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/host_bindings/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/host_bindings/GOLDEN_PARTIAL.js index 2831f0d23ba..b4805ea15ef 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/host_bindings/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/host_bindings/GOLDEN_PARTIAL.js @@ -833,13 +833,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDE selector: '[hostBindingDir]', standalone: false }] - }], propDecorators: { 'is-a': [{ + }], propDecorators: { "is-a": [{ type: HostBinding, args: ['class.a'] - }], 'is-"b"': [{ + }], "is-\"b\"": [{ type: HostBinding, args: ['class.b'] - }], '"is-c"': [{ + }], "\"is-c\"": [{ type: HostBinding, args: ['class.c'] }] } }); diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/GOLDEN_PARTIAL.js index 166e20b604a..4b1957b4661 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/GOLDEN_PARTIAL.js @@ -977,7 +977,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDE args: [{ selector: '[ngModel]', }] - }] }); + }], propDecorators: { ngModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngModel", required: true }] }, { type: i0.Output, args: ["ngModelChange"] }] } }); export class TestCmp { constructor() { this.names = [signal('Angular')]; @@ -1031,7 +1031,7 @@ NgModelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", versi i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NgModelDirective, decorators: [{ type: Directive, args: [{ selector: '[ngModel]' }] - }] }); + }], propDecorators: { ngModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngModel", required: false }] }, { type: i0.Output, args: ["ngModelChange"] }] } }); export class TestCmp { constructor() { this.value = 123; diff --git a/packages/compiler-cli/test/compliance/test_cases/signal_inputs/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/signal_inputs/GOLDEN_PARTIAL.js index c403b60b196..57031f20c3f 100644 --- a/packages/compiler-cli/test/compliance/test_cases/signal_inputs/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/signal_inputs/GOLDEN_PARTIAL.js @@ -14,7 +14,7 @@ TestDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "0.0. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestDir, decorators: [{ type: Directive, args: [{}] - }] }); + }], propDecorators: { counter: [{ type: i0.Input, args: [{ isSignal: true, alias: "counter", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }] } }); /**************************************************************************************************** * PARTIAL FILE: input_directive_definition.d.ts @@ -45,7 +45,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDE args: [{ template: 'Works', }] - }] }); + }], propDecorators: { counter: [{ type: i0.Input, args: [{ isSignal: true, alias: "counter", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }] } }); /**************************************************************************************************** * PARTIAL FILE: input_component_definition.d.ts @@ -81,7 +81,7 @@ TestDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "0.0. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestDir, decorators: [{ type: Directive, args: [{}] - }], propDecorators: { decoratorInput: [{ + }], propDecorators: { counter: [{ type: i0.Input, args: [{ isSignal: true, alias: "counter", required: false }] }], signalWithTransform: [{ type: i0.Input, args: [{ isSignal: true, alias: "signalWithTransform", required: false }] }], signalWithTransformAndAlias: [{ type: i0.Input, args: [{ isSignal: true, alias: "publicNameSignal", required: false }] }], decoratorInput: [{ type: Input }], decoratorInputWithAlias: [{ type: Input, @@ -127,7 +127,7 @@ TestDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "0.0. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestDir, decorators: [{ type: Directive, args: [{}] - }] }); + }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }] } }); /**************************************************************************************************** * PARTIAL FILE: transform_not_captured.d.ts @@ -163,7 +163,7 @@ TestDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "0.0. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestDir, decorators: [{ type: Directive, args: [{}] - }] }); + }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }], name2: [{ type: i0.Input, args: [{ isSignal: true, alias: "name2", required: true }] }], genericTransform: [{ type: i0.Input, args: [{ isSignal: true, alias: "genericTransform", required: true }] }], genericTransform2: [{ type: i0.Input, args: [{ isSignal: true, alias: "genericTransform2", required: true }] }] } }); /**************************************************************************************************** * PARTIAL FILE: complex_transform_functions.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/signal_queries/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/signal_queries/GOLDEN_PARTIAL.js index 33d4b3d20ff..3229468d1db 100644 --- a/packages/compiler-cli/test/compliance/test_cases/signal_queries/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/signal_queries/GOLDEN_PARTIAL.js @@ -24,7 +24,7 @@ TestDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "0.0. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestDir, decorators: [{ type: Directive, args: [{}] - }] }); + }], propDecorators: { query1: [{ type: i0.ViewChild, args: ['locatorA', { isSignal: true }] }], query2: [{ type: i0.ViewChildren, args: ['locatorB', { isSignal: true }] }], query3: [{ type: i0.ContentChild, args: ['locatorC', { isSignal: true }] }], query4: [{ type: i0.ContentChildren, args: ['locatorD', { isSignal: true }] }], query5: [{ type: i0.ViewChild, args: [forwardRef(() => SomeToken), { isSignal: true }] }], query6: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => SomeToken), { isSignal: true }] }], query7: [{ type: i0.ViewChild, args: ['locatorE', Object.assign({ read: SomeToken }, { isSignal: true })] }], query8: [{ type: i0.ContentChildren, args: ['locatorF, locatorG', Object.assign({ descendants: true }, { isSignal: true })] }], query9: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => nonAnalyzableRefersToString), Object.assign({ descendants: true }, { isSignal: true })] }] } }); /**************************************************************************************************** * PARTIAL FILE: query_in_directive.d.ts @@ -66,7 +66,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDE args: [{ template: 'Works', }] - }] }); + }], propDecorators: { query1: [{ type: i0.ViewChild, args: ['locatorA', { isSignal: true }] }], query2: [{ type: i0.ViewChildren, args: ['locatorB', { isSignal: true }] }], query3: [{ type: i0.ContentChild, args: ['locatorC', { isSignal: true }] }], query4: [{ type: i0.ContentChildren, args: ['locatorD', { isSignal: true }] }] } }); /**************************************************************************************************** * PARTIAL FILE: query_in_component.d.ts @@ -100,10 +100,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDE }], propDecorators: { decoratorViewChild: [{ type: ViewChild, args: ['locator1'] - }], decoratorContentChild: [{ + }], signalViewChild: [{ type: i0.ViewChild, args: ['locator1', { isSignal: true }] }], decoratorContentChild: [{ type: ContentChild, args: ['locator2'] - }] } }); + }], signalContentChild: [{ type: i0.ContentChild, args: ['locator2', { isSignal: true }] }] } }); /**************************************************************************************************** * PARTIAL FILE: mixed_query_variants.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/source_mapping/inline_templates/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/source_mapping/inline_templates/GOLDEN_PARTIAL.js index 37f60fb068c..4dc29dd6c10 100644 --- a/packages/compiler-cli/test/compliance/test_cases/source_mapping/inline_templates/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/source_mapping/inline_templates/GOLDEN_PARTIAL.js @@ -930,7 +930,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDE /**************************************************************************************************** * PARTIAL FILE: two_way_binding_simple.js.map ****************************************************************************************************/ -{"version":3,"file":"two_way_binding_simple.js","sourceRoot":"","sources":["../two_way_binding_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;;AAO1F,MAAM,OAAO,OAAO;IALpB;QAME,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,qEAHN,kCAAkC,gFAWnC,gBAAgB;sGARhB,OAAO;kBALnB,SAAS;mBAAC;oBACP,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,kCAAkC;oBAC5C,UAAU,EAAE,KAAK;iBACpB;;AASD,MAAM,OAAO,gBAAgB;IAJ7B;QAKW,YAAO,GAAW,EAAE,CAAC;QACpB,mBAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;KACrE;;wHAHY,gBAAgB;4GAAhB,gBAAgB;sGAAhB,gBAAgB;kBAJ5B,SAAS;mBAAC;oBACP,QAAQ,EAAE,WAAW;oBACrB,UAAU,EAAE,KAAK;iBACpB;8BAEU,OAAO;sBAAf,KAAK;gBACI,cAAc;sBAAvB,MAAM;;AAIT,MAAM,OAAO,SAAS;;iHAAT,SAAS;kHAAT,SAAS,iBAdT,OAAO,EAQP,gBAAgB;kHAMhB,SAAS;sGAAT,SAAS;kBADrB,QAAQ;mBAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC"} +{"version":3,"file":"two_way_binding_simple.js","sourceRoot":"","sources":["../two_way_binding_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;;AAO1F,MAAM,OAAO,OAAO;IALpB;QAME,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,qEAHN,kCAAkC,gFAWnC,gBAAgB;sGARhB,OAAO;kBALnB,SAAS;mBAAC;oBACP,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,kCAAkC;oBAC5C,UAAU,EAAE,KAAK;iBACpB;;AASD,MAAM,OAAO,gBAAgB;IAJ7B;QAKW,YAAO,GAAW,EAAE,CAAC;QACpB,mBAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;KACrE;;wHAHY,gBAAgB;4GAAhB,gBAAgB;sGAAhB,gBAAgB;kBAJ5B,SAAS;mBAAC;oBACP,QAAQ,EAAE,WAAW;oBACrB,UAAU,EAAE,KAAK;iBACpB;;sBAEE,KAAK;;sBACL,MAAM;;AAIT,MAAM,OAAO,SAAS;;iHAAT,SAAS;kHAAT,SAAS,iBAdT,OAAO,EAQP,gBAAgB;kHAMhB,SAAS;sGAAT,SAAS;kBADrB,QAAQ;mBAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC"} /**************************************************************************************************** * PARTIAL FILE: two_way_binding_simple.d.ts ****************************************************************************************************/ @@ -1005,7 +1005,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDE /**************************************************************************************************** * PARTIAL FILE: two_way_binding_simple.js.map ****************************************************************************************************/ -{"version":3,"file":"two_way_binding_simple.js","sourceRoot":"","sources":["../two_way_binding_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;;AAO1F,MAAM,OAAO,OAAO;IALpB;QAME,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,qEAHN,kCAAkC,gFAWnC,gBAAgB;sGARhB,OAAO;kBALnB,SAAS;mBAAC;oBACP,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,kCAAkC;oBAC5C,UAAU,EAAE,KAAK;iBACpB;;AASD,MAAM,OAAO,gBAAgB;IAJ7B;QAKW,YAAO,GAAW,EAAE,CAAC;QACpB,mBAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;KACrE;;wHAHY,gBAAgB;4GAAhB,gBAAgB;sGAAhB,gBAAgB;kBAJ5B,SAAS;mBAAC;oBACP,QAAQ,EAAE,WAAW;oBACrB,UAAU,EAAE,KAAK;iBACpB;8BAEU,OAAO;sBAAf,KAAK;gBACI,cAAc;sBAAvB,MAAM;;AAIT,MAAM,OAAO,SAAS;;iHAAT,SAAS;kHAAT,SAAS,iBAdT,OAAO,EAQP,gBAAgB;kHAMhB,SAAS;sGAAT,SAAS;kBADrB,QAAQ;mBAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC"} +{"version":3,"file":"two_way_binding_simple.js","sourceRoot":"","sources":["../two_way_binding_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;;AAO1F,MAAM,OAAO,OAAO;IALpB;QAME,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,qEAHN,kCAAkC,gFAWnC,gBAAgB;sGARhB,OAAO;kBALnB,SAAS;mBAAC;oBACP,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,kCAAkC;oBAC5C,UAAU,EAAE,KAAK;iBACpB;;AASD,MAAM,OAAO,gBAAgB;IAJ7B;QAKW,YAAO,GAAW,EAAE,CAAC;QACpB,mBAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;KACrE;;wHAHY,gBAAgB;4GAAhB,gBAAgB;sGAAhB,gBAAgB;kBAJ5B,SAAS;mBAAC;oBACP,QAAQ,EAAE,WAAW;oBACrB,UAAU,EAAE,KAAK;iBACpB;;sBAEE,KAAK;;sBACL,MAAM;;AAIT,MAAM,OAAO,SAAS;;iHAAT,SAAS;kHAAT,SAAS,iBAdT,OAAO,EAQP,gBAAgB;kHAMhB,SAAS;sGAAT,SAAS;kBADrB,QAAQ;mBAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC"} /**************************************************************************************************** * PARTIAL FILE: two_way_binding_simple.d.ts ****************************************************************************************************/ @@ -1080,7 +1080,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDE /**************************************************************************************************** * PARTIAL FILE: two_way_binding_longhand.js.map ****************************************************************************************************/ -{"version":3,"file":"two_way_binding_longhand.js","sourceRoot":"","sources":["../two_way_binding_longhand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;;AAO1F,MAAM,OAAO,OAAO;IALpB;QAME,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,qEAHN,qCAAqC,gFAWtC,gBAAgB;sGARhB,OAAO;kBALnB,SAAS;mBAAC;oBACP,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,qCAAqC;oBAC/C,UAAU,EAAE,KAAK;iBACpB;;AASD,MAAM,OAAO,gBAAgB;IAJ7B;QAKW,YAAO,GAAW,EAAE,CAAC;QACpB,mBAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;KACrE;;wHAHY,gBAAgB;4GAAhB,gBAAgB;sGAAhB,gBAAgB;kBAJ5B,SAAS;mBAAC;oBACP,QAAQ,EAAE,WAAW;oBACrB,UAAU,EAAE,KAAK;iBACpB;8BAEU,OAAO;sBAAf,KAAK;gBACI,cAAc;sBAAvB,MAAM;;AAIT,MAAM,OAAO,SAAS;;iHAAT,SAAS;kHAAT,SAAS,iBAdT,OAAO,EAQP,gBAAgB;kHAMhB,SAAS;sGAAT,SAAS;kBADrB,QAAQ;mBAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC"} +{"version":3,"file":"two_way_binding_longhand.js","sourceRoot":"","sources":["../two_way_binding_longhand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;;AAO1F,MAAM,OAAO,OAAO;IALpB;QAME,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,qEAHN,qCAAqC,gFAWtC,gBAAgB;sGARhB,OAAO;kBALnB,SAAS;mBAAC;oBACP,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,qCAAqC;oBAC/C,UAAU,EAAE,KAAK;iBACpB;;AASD,MAAM,OAAO,gBAAgB;IAJ7B;QAKW,YAAO,GAAW,EAAE,CAAC;QACpB,mBAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;KACrE;;wHAHY,gBAAgB;4GAAhB,gBAAgB;sGAAhB,gBAAgB;kBAJ5B,SAAS;mBAAC;oBACP,QAAQ,EAAE,WAAW;oBACrB,UAAU,EAAE,KAAK;iBACpB;;sBAEE,KAAK;;sBACL,MAAM;;AAIT,MAAM,OAAO,SAAS;;iHAAT,SAAS;kHAAT,SAAS,iBAdT,OAAO,EAQP,gBAAgB;kHAMhB,SAAS;sGAAT,SAAS;kBADrB,QAAQ;mBAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC"} /**************************************************************************************************** * PARTIAL FILE: two_way_binding_longhand.d.ts ****************************************************************************************************/ @@ -1155,7 +1155,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDE /**************************************************************************************************** * PARTIAL FILE: two_way_binding_longhand.js.map ****************************************************************************************************/ -{"version":3,"file":"two_way_binding_longhand.js","sourceRoot":"","sources":["../two_way_binding_longhand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;;AAO1F,MAAM,OAAO,OAAO;IALpB;QAME,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,qEAHN,qCAAqC,gFAWtC,gBAAgB;sGARhB,OAAO;kBALnB,SAAS;mBAAC;oBACP,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,qCAAqC;oBAC/C,UAAU,EAAE,KAAK;iBACpB;;AASD,MAAM,OAAO,gBAAgB;IAJ7B;QAKW,YAAO,GAAW,EAAE,CAAC;QACpB,mBAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;KACrE;;wHAHY,gBAAgB;4GAAhB,gBAAgB;sGAAhB,gBAAgB;kBAJ5B,SAAS;mBAAC;oBACP,QAAQ,EAAE,WAAW;oBACrB,UAAU,EAAE,KAAK;iBACpB;8BAEU,OAAO;sBAAf,KAAK;gBACI,cAAc;sBAAvB,MAAM;;AAIT,MAAM,OAAO,SAAS;;iHAAT,SAAS;kHAAT,SAAS,iBAdT,OAAO,EAQP,gBAAgB;kHAMhB,SAAS;sGAAT,SAAS;kBADrB,QAAQ;mBAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC"} +{"version":3,"file":"two_way_binding_longhand.js","sourceRoot":"","sources":["../two_way_binding_longhand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;;AAO1F,MAAM,OAAO,OAAO;IALpB;QAME,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,qEAHN,qCAAqC,gFAWtC,gBAAgB;sGARhB,OAAO;kBALnB,SAAS;mBAAC;oBACP,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,qCAAqC;oBAC/C,UAAU,EAAE,KAAK;iBACpB;;AASD,MAAM,OAAO,gBAAgB;IAJ7B;QAKW,YAAO,GAAW,EAAE,CAAC;QACpB,mBAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;KACrE;;wHAHY,gBAAgB;4GAAhB,gBAAgB;sGAAhB,gBAAgB;kBAJ5B,SAAS;mBAAC;oBACP,QAAQ,EAAE,WAAW;oBACrB,UAAU,EAAE,KAAK;iBACpB;;sBAEE,KAAK;;sBACL,MAAM;;AAIT,MAAM,OAAO,SAAS;;iHAAT,SAAS;kHAAT,SAAS,iBAdT,OAAO,EAQP,gBAAgB;kHAMhB,SAAS;sGAAT,SAAS;kBADrB,QAAQ;mBAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC"} /**************************************************************************************************** * PARTIAL FILE: two_way_binding_longhand.d.ts ****************************************************************************************************/ diff --git a/packages/compiler-cli/test/ngtsc/authoring_inputs_spec.ts b/packages/compiler-cli/test/ngtsc/authoring_inputs_spec.ts index 34831b88d8b..379a3130a75 100644 --- a/packages/compiler-cli/test/ngtsc/authoring_inputs_spec.ts +++ b/packages/compiler-cli/test/ngtsc/authoring_inputs_spec.ts @@ -467,5 +467,25 @@ runInEachFileSystem(() => { const js = env.getContents('test.js'); expect(js).toContain('inputs: { data: [1, "data"] }'); }); + + it('should capture signal inputs in the setClassMetadata call', () => { + env.write( + 'test.ts', + ` + import {Directive, input} from '@angular/core'; + + @Directive() + export class TestDir { + data = input('test'); + } + `, + ); + env.driveMain(); + const js = env.getContents('test.js'); + expect(js).toContain('import * as i0 from "@angular/core";'); + expect(js).toContain(`i0.ɵsetClassMetadata(TestDir, [{ + type: Directive + }], null, { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }] });`); + }); }); }); diff --git a/packages/compiler-cli/test/ngtsc/authoring_models_spec.ts b/packages/compiler-cli/test/ngtsc/authoring_models_spec.ts index 13fe7023145..f36d1d91bbc 100644 --- a/packages/compiler-cli/test/ngtsc/authoring_models_spec.ts +++ b/packages/compiler-cli/test/ngtsc/authoring_models_spec.ts @@ -776,5 +776,30 @@ runInEachFileSystem(() => { expect(diagnostics.length).toBe(0); }); }); + + it('should capture model input/output pair in the setClassMetadata call', () => { + env.write( + 'test.ts', + ` + import {Directive, model} from '@angular/core'; + + @Directive() + export class TestDir { + value = model(1); + } + `, + ); + env.driveMain(); + + const js = env.getContents('test.js'); + expect(js).toContain('import * as i0 from "@angular/core";'); + expect(js).toContain( + `i0.ɵsetClassMetadata(TestDir, [{ + type: Directive + }], null, { value: [` + + `{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, ` + + `{ type: i0.Output, args: ["valueChange"] }] });`, + ); + }); }); }); diff --git a/packages/compiler-cli/test/ngtsc/authoring_outputs_spec.ts b/packages/compiler-cli/test/ngtsc/authoring_outputs_spec.ts index b3eb034ea66..48a3dad4dad 100644 --- a/packages/compiler-cli/test/ngtsc/authoring_outputs_spec.ts +++ b/packages/compiler-cli/test/ngtsc/authoring_outputs_spec.ts @@ -324,5 +324,26 @@ runInEachFileSystem(() => { expect(diagnostics.length).toBe(0); }); }); + + it('should capture initializer-based outputs in the setClassMetadata call', () => { + env.write( + 'test.ts', + ` + import {Component, output} from '@angular/core'; + + @Component({selector: 'test', template: ''}) + export class TestDir { + click = output(); + } + `, + ); + env.driveMain(); + const js = env.getContents('test.js'); + expect(js).toContain('import * as i0 from "@angular/core";'); + expect(js).toContain(`i0.ɵsetClassMetadata(TestDir, [{ + type: Component, + args: [{ selector: 'test', template: '' }] + }], null, { click: [{ type: i0.Output, args: ["click"] }] });`); + }); }); }); diff --git a/packages/compiler-cli/test/ngtsc/authoring_queries_spec.ts b/packages/compiler-cli/test/ngtsc/authoring_queries_spec.ts index 6a9ca68e80a..1835642d773 100644 --- a/packages/compiler-cli/test/ngtsc/authoring_queries_spec.ts +++ b/packages/compiler-cli/test/ngtsc/authoring_queries_spec.ts @@ -389,6 +389,146 @@ runInEachFileSystem(() => { const diagnostics = env.driveDiagnostics(); expect(diagnostics.length).toBe(0); }); + + it('should capture a viewChild query in the setClasMetadata call', () => { + env.write( + 'test.ts', + ` + import {Component, viewChild} from '@angular/core'; + + @Component({selector: 'test', template: ''}) + export class TestDir { + el = viewChild('myLocator'); + } + `, + ); + env.driveMain(); + + const js = env.getContents('test.js'); + expect(js).toContain('import * as i0 from "@angular/core";'); + expect(js).toContain(`i0.ɵsetClassMetadata(TestDir, [{ + type: Component, + args: [{ selector: 'test', template: '' }] + }], null, { el: [{ type: i0.ViewChild, args: ['myLocator', { isSignal: true }] }] });`); + }); + + it('should capture a viewChildren query in the setClasMetadata call', () => { + env.write( + 'test.ts', + ` + import {Component, viewChildren} from '@angular/core'; + + @Component({selector: 'test', template: ''}) + export class TestDir { + el = viewChildren('myLocator'); + } + `, + ); + env.driveMain(); + + const js = env.getContents('test.js'); + expect(js).toContain('import * as i0 from "@angular/core";'); + expect(js).toContain(`i0.ɵsetClassMetadata(TestDir, [{ + type: Component, + args: [{ selector: 'test', template: '' }] + }], null, { el: [{ type: i0.ViewChildren, args: ['myLocator', { isSignal: true }] }] });`); + }); + + it('should capture a contentChild query in the setClasMetadata call', () => { + env.write( + 'test.ts', + ` + import {Component, contentChild} from '@angular/core'; + + @Component({selector: 'test', template: ''}) + export class TestDir { + el = contentChild('myLocator'); + } + `, + ); + env.driveMain(); + + const js = env.getContents('test.js'); + expect(js).toContain('import * as i0 from "@angular/core";'); + expect(js).toContain(`i0.ɵsetClassMetadata(TestDir, [{ + type: Component, + args: [{ selector: 'test', template: '' }] + }], null, { el: [{ type: i0.ContentChild, args: ['myLocator', { isSignal: true }] }] });`); + }); + + it('should capture a contentChildren query in the setClasMetadata call', () => { + env.write( + 'test.ts', + ` + import {Component, contentChildren} from '@angular/core'; + + @Component({selector: 'test', template: ''}) + export class TestDir { + el = contentChildren('myLocator'); + } + `, + ); + env.driveMain(); + + const js = env.getContents('test.js'); + expect(js).toContain('import * as i0 from "@angular/core";'); + expect(js).toContain(`i0.ɵsetClassMetadata(TestDir, [{ + type: Component, + args: [{ selector: 'test', template: '' }] + }], null, { el: [{ type: i0.ContentChildren, args: ['myLocator', { isSignal: true }] }] });`); + }); + + it('should capture a query with options in a setClassMetadata call', () => { + env.write( + 'test.ts', + ` + import {Component, viewChild, ElementRef} from '@angular/core'; + + @Component({selector: 'test', template: ''}) + export class TestDir { + el = viewChild('myLocator', {read: ElementRef}); + } + `, + ); + env.driveMain(); + + const js = env.getContents('test.js'); + expect(js).toContain('import * as i0 from "@angular/core";'); + expect(js).toContain( + `i0.ɵsetClassMetadata(TestDir, [{ + type: Component, + args: [{ selector: 'test', template: '' }] + }], null, { el: [{ type: i0.ViewChild, ` + + `args: ['myLocator', Object.assign({ read: ElementRef }, { isSignal: true })] }] });`, + ); + }); + + it('should wrap reference in query as a forwardRef in the setClassMetadata call', () => { + env.write( + 'test.ts', + ` + import {Component, Directive, viewChild} from '@angular/core'; + + @Component({selector: 'test', template: ''}) + export class TestDir { + el = viewChild(Dep); + } + + @Directive({selector: '[dep]'}) + export class Dep {} + `, + ); + env.driveMain(); + + const js = env.getContents('test.js'); + expect(js).toContain('import * as i0 from "@angular/core";'); + expect(js).toContain( + `i0.ɵsetClassMetadata(TestDir, [{ + type: Component, + args: [{ selector: 'test', template: '' }] + }], null, { el: [{ type: i0.ViewChild, args: [i0.forwardRef(() => Dep), { isSignal: true }] }] });`, + ); + }); }); }); }); From 302faa447f371da9511367a73928591425dbf25d Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Mon, 6 Oct 2025 13:48:37 -0500 Subject: [PATCH 15/57] docs: Add programmatic component input/output/directive binding (#64240) Expands the guide to explain how inputs, outputs, and directives can be provided when creating components programmatically PR Close #64240 --- .../components/programmatic-rendering.md | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/adev/src/content/guide/components/programmatic-rendering.md b/adev/src/content/guide/components/programmatic-rendering.md index 6b3948e31b3..51887ae3591 100644 --- a/adev/src/content/guide/components/programmatic-rendering.md +++ b/adev/src/content/guide/components/programmatic-rendering.md @@ -139,3 +139,117 @@ export class AdminSettings { ``` The example above loads and displays the `AdvancedSettings` upon receiving a button click. + +## Binding inputs, outputs and setting host directives at creation + +When dynamically creating components, manually setting inputs and subscribing to outputs can be error-prone. You often need to write extra code just to wire up bindings after the component is instantiated. + +To simplify this, both `createComponent` and `ViewContainerRef.createComponent` support passing a `bindings` array with helpers like `inputBinding()`, `outputBinding()`, and `twoWayBinding()` to configure inputs and outputs up front. You can also specify a `directives` array to apply any host directives. This enables creating components programmatically with template-like bindings in a single, declarative call. + +### Host view using `ViewContainerRef.createComponent` + +`ViewContainerRef.createComponent` creates a component and automatically inserts its host view and host element into the container’s view hierarchy at the container’s location. Use this when the dynamic component should become part of the container’s logical and visual structure (for example, adding list items or inline UI). + +By contrast, the standalone `createComponent` API does not attach the new component to any existing view or DOM location — it returns a `ComponentRef` and gives you explicit control over where to place the component’s host element. + +```angular-ts +import { Component, input, model, output } from "@angular/core"; + +@Component({ + selector: 'app-warning', + template: ` + @if(isExpanded()) { +
+

Warning: Action needed!

+ +
+ } + ` +}) +export class AppWarningComponent { + readonly canClose = input.required(); + readonly isExpanded = model(); + readonly close = output(); +} +``` + +```ts +import { Component, ViewContainerRef, signal, inputBinding, outputBinding, twoWayBinding, inject } from '@angular/core'; +import { FocusTrap } from "@angular/cdk/a11y"; +import { ThemeDirective } from '../theme.directive'; + +@Component({ + template: `` +}) +export class HostComponent { + private vcr = inject(ViewContainerRef); + readonly canClose = signal(true); + readonly isExpanded = signal(true); + + showWarning() { + const compRef = this.vcr.createComponent(AppWarningComponent, { + bindings: [ + inputBinding('canClose', this.canClose), + twoWayBinding('isExpanded', this.isExpanded), + outputBinding('close', (confirmed) => { + console.log('Closed with result:', confirmed); + }) + ], + directives: [ + FocusTrap, + { type: ThemeDirective, bindings: [inputBinding('theme', () => 'warning')] } + ] + }); + } +} +``` + +In the example above, the dynamic **AppWarningComponent** is created with its `canClose` input bound to a reactive signal, a two-way binding on its `isExpanded` state, and an output listener for `close`. The `FocusTrap` and `ThemeDirective` are attached to the host element via `directives`. + +### Popup attached to `document.body` with `createComponent` + `hostElement` + +Use this when rendering outside the current view hierarchy (e.g., overlays). The provided `hostElement` becomes the component’s host in the DOM, so Angular doesn’t create a new element matching the selector. Lets you configure **bindings** directly. + +```ts +import { + ApplicationRef, + createComponent, + EnvironmentInjector, + inject, + Injectable, + inputBinding, + outputBinding, +} from '@angular/core'; +import { PopupComponent } from './popup.component'; + +@Injectable({ providedIn: 'root' }) +export class PopupService { + private readonly injector = inject(EnvironmentInjector); + private readonly appRef = inject(ApplicationRef); + + show(message: string) { + // Create a host element for the popup + const host = document.createElement('popup-host'); + + // Create the component and bind in one call + const ref = createComponent(PopupComponent, { + environmentInjector: this.injector, + hostElement: host, + bindings: [ + inputBinding('message', () => message), + outputBinding('closed', () => { + document.body.removeChild(host); + this.appRef.detachView(ref.hostView); + ref.destroy(); + }), + ], + }); + + // Registers the component’s view so it participates in change detection cycle. + this.appRef.attachView(ref.hostView); + // Inserts the provided host element into the DOM (outside the normal Angular view hierarchy). + // This is what makes the popup visible on screen, typically used for overlays or modals. + document.body.appendChild(host); + } +} +``` From 1ca0d05af9984f11a3b31335b5ed9b2f1ec5c40e Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Thu, 9 Oct 2025 20:00:45 -0500 Subject: [PATCH 16/57] docs: Adds documentation for image decoding attribute (#64261) Expands the image optimization guide to explain browser image decoding strategies PR Close #64261 --- adev/src/content/guide/image-optimization.md | 211 ++++++++++-------- .../ng_optimized_image/ng_optimized_image.ts | 1 + 2 files changed, 118 insertions(+), 94 deletions(-) diff --git a/adev/src/content/guide/image-optimization.md b/adev/src/content/guide/image-optimization.md index 44abc3ae5fa..74696e59b63 100644 --- a/adev/src/content/guide/image-optimization.md +++ b/adev/src/content/guide/image-optimization.md @@ -4,18 +4,18 @@ The `NgOptimizedImage` directive makes it easy to adopt performance best practic The directive ensures that the loading of the [Largest Contentful Paint (LCP)](http://web.dev/lcp) image is prioritized by: -* Automatically setting the `fetchpriority` attribute on the `` tag -* Lazy loading other images by default -* Automatically generating a preconnect link tag in the document head -* Automatically generating a `srcset` attribute -* Generating a [preload hint](https://developer.mozilla.org/docs/Web/HTML/Link_types/preload) if app is using SSR +- Automatically setting the `fetchpriority` attribute on the `` tag +- Lazy loading other images by default +- Automatically generating a preconnect link tag in the document head +- Automatically generating a `srcset` attribute +- Generating a [preload hint](https://developer.mozilla.org/docs/Web/HTML/Link_types/preload) if app is using SSR In addition to optimizing the loading of the LCP image, `NgOptimizedImage` enforces a number of image best practices, such as: -* Using [image CDN URLs to apply image optimizations](https://web.dev/image-cdns/#how-image-cdns-use-urls-to-indicate-optimization-options) -* Preventing layout shift by requiring `width` and `height` -* Warning if `width` or `height` have been set incorrectly -* Warning if the image will be visually distorted when rendered +- Using [image CDN URLs to apply image optimizations](https://web.dev/image-cdns/#how-image-cdns-use-urls-to-indicate-optimization-options) +- Preventing layout shift by requiring `width` and `height` +- Warning if `width` or `height` have been set incorrectly +- Warning if the image will be visually distorted when rendered If you're using a background image in CSS, [start here](#how-to-migrate-your-background-image). @@ -27,20 +27,20 @@ If you're using a background image in CSS, [start here](#how-to-migrate-your-bac Import `NgOptimizedImage` directive from `@angular/common`: - +```ts import { NgOptimizedImage } from '@angular/common' - +``` and include it into the `imports` array of a standalone component or an NgModule: - - +```ts imports: [ NgOptimizedImage, // ... ], +``` @@ -52,39 +52,39 @@ A brief guide for setting up a loader can be found in the [Configuring an Image To activate the `NgOptimizedImage` directive, replace your image's `src` attribute with `ngSrc`. - +```html - +``` If you're using a [built-in third-party loader](#built-in-loaders), make sure to omit the base URL path from `src`, as that will be prepended automatically by the loader. Always mark the [LCP image](https://web.dev/lcp/#what-elements-are-considered) on your page as `priority` to prioritize its loading. - +```html - +``` Marking an image as `priority` applies the following optimizations: -* Sets `fetchpriority=high` (read more about priority hints [here](https://web.dev/priority-hints)) -* Sets `loading=eager` (read more about native lazy loading [here](https://web.dev/browser-level-image-lazy-loading)) -* Automatically generates a [preload link element](https://developer.mozilla.org/docs/Web/HTML/Link_types/preload) if [rendering on the server](guide/ssr). +- Sets `fetchpriority=high` (read more about priority hints [here](https://web.dev/priority-hints)) +- Sets `loading=eager` (read more about native lazy loading [here](https://web.dev/browser-level-image-lazy-loading)) +- Automatically generates a [preload link element](https://developer.mozilla.org/docs/Web/HTML/Link_types/preload) if [rendering on the server](guide/ssr). Angular displays a warning during development if the LCP element is an image that does not have the `priority` attribute. A page’s LCP element can vary based on a number of factors - such as the dimensions of a user's screen, so a page may have multiple images that should be marked `priority`. See [CSS for Web Vitals](https://web.dev/css-web-vitals/#images-and-largest-contentful-paint-lcp) for more details. In order to prevent [image-related layout shifts](https://web.dev/css-web-vitals/#images-and-layout-shifts), NgOptimizedImage requires that you specify a height and width for your image, as follows: - +```html - +``` For **responsive images** (images which you've styled to grow and shrink relative to the viewport), the `width` and `height` attributes should be the intrinsic size of the image file. For responsive images it's also important to [set a value for `sizes`.](#responsive-images) @@ -100,11 +100,11 @@ In cases where you want to have an image fill a containing element, you can use When you add the `fill` attribute to your image, you do not need and should not include a `width` and `height`, as in this example: - +```html - +``` You can use the [object-fit](https://developer.mozilla.org/docs/Web/CSS/object-fit) CSS property to change how the image will fill its container. If you style your image with `object-fit: "contain"`, the image will maintain its aspect ratio and be "letterboxed" to fit the element. If you set `object-fit: "cover"`, the element will retain its aspect ratio, fully fill the element, and some content may be "cropped" off. @@ -118,32 +118,31 @@ IMPORTANT: For the "fill" image to render properly, its parent element **must** Here's a simple step-by-step process for migrating from `background-image` to `NgOptimizedImage`. For these steps, we'll refer to the element that has an image background as the "containing element": -1) Remove the `background-image` style from the containing element. -2) Ensure that the containing element has `position: "relative"`, `position: "fixed"`, or `position: "absolute"`. -3) Create a new image element as a child of the containing element, using `ngSrc` to enable the `NgOptimizedImage` directive. -4) Give that element the `fill` attribute. Do not include a `height` and `width`. -5) If you believe this image might be your [LCP element](https://web.dev/lcp/), add the `priority` attribute to the image element. +1. Remove the `background-image` style from the containing element. +2. Ensure that the containing element has `position: "relative"`, `position: "fixed"`, or `position: "absolute"`. +3. Create a new image element as a child of the containing element, using `ngSrc` to enable the `NgOptimizedImage` directive. +4. Give that element the `fill` attribute. Do not include a `height` and `width`. +5. If you believe this image might be your [LCP element](https://web.dev/lcp/), add the `priority` attribute to the image element. You can adjust how the background image fills the container as described in the [Using fill mode](#using-fill-mode) section. - ## Using placeholders ### Automatic placeholders NgOptimizedImage can display an automatic low-resolution placeholder for your image if you're using a CDN or image host that provides automatic image resizing. Take advantage of this feature by adding the `placeholder` attribute to your image: - +```html - +``` Adding this attribute automatically requests a second, smaller version of the image using your specified image loader. This small image will be applied as a `background-image` style with a CSS blur while your image loads. If no image loader is provided, no placeholder image can be generated and an error will be thrown. The default size for generated placeholders is 30px wide. You can change this size by specifying a pixel value in the `IMAGE_CONFIG` provider, as seen below: - +```ts providers: [ { provide: IMAGE_CONFIG, @@ -152,7 +151,7 @@ providers: [ } }, ], - +``` If you want sharp edges around your blurred placeholder, you can wrap your image in a containing `
` with the `overflow: hidden` style. As long as the `
` is the same size as the image (such as by using the `width: fit-content` style), the "fuzzy edges" of the placeholder will be hidden. @@ -160,7 +159,7 @@ If you want sharp edges around your blurred placeholder, you can wrap your image You can also specify a placeholder using a base64 [data URL](https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) without an image loader. The data url format is `data:image/[imagetype];[data]`, where `[imagetype]` is the image format, just as `png`, and `[data]` is a base64 encoding of the image. That encoding can be done using the command line or in JavaScript. For specific commands, see [the MDN documentation](https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URLs#encoding_data_into_base64_format). An example of a data URL placeholder with truncated data is shown below: - +```html - +``` -However, large data URLs increase the size of your Angular bundles and slow down page load. If you cannot use an image loader, the Angular team recommends keeping base64 placeholder images smaller than 4KB and using them exclusively on critical images. In addition to decreasing placeholder dimensions, consider changing image formats or parameters used when saving images. At very low resolutions, these parameters can have a large effect on file size. +However, large data URLs increase the size of your Angular bundles and slow down page load. If you cannot use an image loader, the Angular team recommends keeping base64 placeholder images smaller than 4KB and using them exclusively on critical images. In addition to decreasing placeholder dimensions, consider changing image formats or parameters used when saving images. At very low resolutions, these parameters can have a large effect on file size. ### Non-blurred placeholders By default, NgOptimizedImage applies a CSS blur effect to image placeholders. To render a placeholder without blur, provide a `placeholderConfig` argument with an object that includes the `blur` property, set to false. For example: - - +```html - - +``` ## Adjusting image styling @@ -207,36 +204,35 @@ A [`preconnect` resource hint](https://web.dev/preconnect-and-dns-prefetch) for Preconnect links are automatically generated for domains provided as an argument to a [loader](#optional-set-up-a-loader). If an image origin cannot be automatically identified, and no preconnect link is detected for the LCP image, `NgOptimizedImage` will warn during development. In that case, you should manually add a resource hint to `index.html`. Within the `` of the document, add a `link` tag with `rel="preconnect"`, as shown below: - +```html - - +``` To disable preconnect warnings, inject the `PRECONNECT_CHECK_BLOCKLIST` token: - +```ts providers: [ - {provide: PRECONNECT_CHECK_BLOCKLIST, useValue: 'https://your-domain.com'} +{provide: PRECONNECT_CHECK_BLOCKLIST, useValue: 'https://your-domain.com'} ], - +``` See more information on automatic preconnect generation [here](#why-is-a-preconnect-element-not-being-generated-for-my-image-domain). - ### Request images at the correct size with automatic `srcset` Defining a [`srcset` attribute](https://developer.mozilla.org/docs/Web/API/HTMLImageElement/srcset) ensures that the browser requests an image at the right size for your user's viewport, so it doesn't waste time downloading an image that's too large. `NgOptimizedImage` generates an appropriate `srcset` for the image, based on the presence and value of the [`sizes` attribute](https://developer.mozilla.org/docs/Web/API/HTMLImageElement/sizes) on the image tag. #### Fixed-size images -If your image should be "fixed" in size (i.e. the same size across devices, except for [pixel density](https://web.dev/codelab-density-descriptors/)), there is no need to set a `sizes` attribute. A `srcset` can be generated automatically from the image's width and height attributes with no further input required. +If your image should be "fixed" in size (i.e. the same size across devices, except for [pixel density](https://web.dev/codelab-density-descriptors/)), there is no need to set a `sizes` attribute. A `srcset` can be generated automatically from the image's width and height attributes with no further input required. Example srcset generated: -```angular-html + +```html ``` @@ -256,7 +252,7 @@ By default, the responsive breakpoints are: If you would like to customize these breakpoints, you can do so using the `IMAGE_CONFIG` provider: - +```ts providers: [ { provide: IMAGE_CONFIG, @@ -265,53 +261,80 @@ providers: [ } }, ], - +``` If you would like to manually define a `srcset` attribute, you can provide your own using the `ngSrcset` attribute: - +```html - +``` If the `ngSrcset` attribute is present, `NgOptimizedImage` generates and sets the `srcset` based on the sizes included. Do not include image file names in `ngSrcset` - the directive infers this information from `ngSrc`. The directive supports both width descriptors (e.g. `100w`) and density descriptors (e.g. `1x`). - +```html - +``` ### Disabling automatic srcset generation To disable srcset generation for a single image, you can add the `disableOptimizedSrcset` attribute on the image: - +```html - +``` ### Disabling image lazy loading By default, `NgOptimizedImage` sets `loading=lazy` for all images that are not marked `priority`. You can disable this behavior for non-priority images by setting the `loading` attribute. This attribute accepts values: `eager`, `auto`, and `lazy`. [See the documentation for the standard image `loading` attribute for details](https://developer.mozilla.org/docs/Web/API/HTMLImageElement/loading#value). - +```html - +``` + +### Controlling image decoding + +By default, `NgOptimizedImage` sets `decoding="auto"` for all images. This allows the browser to decide the optimal time to decode an image after it has been fetched. When an image is marked as `priority`, Angular automatically sets `decoding="sync"` to ensure the image is decoded and painted as early as possible helping improve **Largest Contentful Paint (LCP)** performance. + +You can still override this behavior by explicitly setting the `decoding` attribute. +[See the documentation for the standard image `decoding` attribute for details](https://developer.mozilla.org/docs/Web/HTML/Element/img#decoding). + +```html + + + + + + + + + + + +``` + +**Allowed values** + +- `auto` (default): lets the browser choose the optimal strategy. +- `async`: decodes the image asynchronously, avoiding main‑thread blocking where possible. +- `sync`: decodes the image immediately; can block rendering but ensures pixels are ready as soon as the image is available. ### Advanced 'sizes' values You may want to have images displayed at varying widths on differently-sized screens. A common example of this pattern is a grid- or column-based layout that renders a single column on mobile devices, and two columns on larger devices. You can capture this behavior in the `sizes` attribute, using a "media query" syntax, such as the following: - +```html - +``` The `sizes` attribute in the above example says "I expect this image to be 100 percent of the screen width on devices under 768px wide. Otherwise, I expect it to be 50 percent of the screen width. @@ -323,21 +346,21 @@ A "loader" is a function that generates an [image transformation URL](https://we `NgOptimizedImage` provides both a generic loader that applies no transformations, as well as loaders for various third-party image services. It also supports writing your own custom loader. -| Loader type| Behavior | -|:--- |:--- | -| Generic loader | The URL returned by the generic loader will always match the value of `src`. In other words, this loader applies no transformations. Sites that use Angular to serve images are the primary intended use case for this loader.| -| Loaders for third-party image services | The URL returned by the loaders for third-party image services will follow API conventions used by that particular image service. | -| Custom loaders | A custom loader's behavior is defined by its developer. You should use a custom loader if your image service isn't supported by the loaders that come preconfigured with `NgOptimizedImage`.| +| Loader type | Behavior | +| :------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Generic loader | The URL returned by the generic loader will always match the value of `src`. In other words, this loader applies no transformations. Sites that use Angular to serve images are the primary intended use case for this loader. | +| Loaders for third-party image services | The URL returned by the loaders for third-party image services will follow API conventions used by that particular image service. | +| Custom loaders | A custom loader's behavior is defined by its developer. You should use a custom loader if your image service isn't supported by the loaders that come preconfigured with `NgOptimizedImage`. | Based on the image services commonly used with Angular applications, `NgOptimizedImage` provides loaders preconfigured to work with the following image services: -| Image Service | Angular API | Documentation | -|:--- |:--- |:--- | -| Cloudflare Image Resizing | `provideCloudflareLoader` | [Documentation](https://developers.cloudflare.com/images/image-resizing/) | -| Cloudinary | `provideCloudinaryLoader` | [Documentation](https://cloudinary.com/documentation/resizing_and_cropping) | -| ImageKit | `provideImageKitLoader` | [Documentation](https://docs.imagekit.io/) | -| Imgix | `provideImgixLoader` | [Documentation](https://docs.imgix.com/) | -| Netlify | `provideNetlifyLoader` | [Documentation](https://docs.netlify.com/image-cdn/overview/) | +| Image Service | Angular API | Documentation | +| :------------------------ | :------------------------ | :-------------------------------------------------------------------------- | +| Cloudflare Image Resizing | `provideCloudflareLoader` | [Documentation](https://developers.cloudflare.com/images/image-resizing/) | +| Cloudinary | `provideCloudinaryLoader` | [Documentation](https://cloudinary.com/documentation/resizing_and_cropping) | +| ImageKit | `provideImageKitLoader` | [Documentation](https://docs.imagekit.io/) | +| Imgix | `provideImgixLoader` | [Documentation](https://docs.imgix.com/) | +| Netlify | `provideNetlifyLoader` | [Documentation](https://docs.netlify.com/image-cdn/overview/) | To use the **generic loader** no additional code changes are necessary. This is the default behavior. @@ -345,17 +368,17 @@ To use the **generic loader** no additional code changes are necessary. This is To use an existing loader for a **third-party image service**, add the provider factory for your chosen service to the `providers` array. In the example below, the Imgix loader is used: - +```ts providers: [ provideImgixLoader('https://my.base.url/'), ], - +``` The base URL for your image assets should be passed to the provider factory as an argument. For most sites, this base URL should match one of the following patterns: -* -* -* +- +- +- You can learn more about the base URL structure in the docs of a corresponding CDN provider. @@ -363,7 +386,7 @@ You can learn more about the base URL structure in the docs of a corresponding C To use a **custom loader**, provide your loader function as a value for the `IMAGE_LOADER` DI token. In the example below, the custom loader function returns a URL starting with `https://example.com` that includes `src` and `width` as URL parameters. - +```ts providers: [ { provide: IMAGE_LOADER, @@ -372,7 +395,7 @@ providers: [ }, }, ], - +``` A loader function for the `NgOptimizedImage` directive takes an object with the `ImageLoaderConfig` type (from `@angular/common`) as its argument and returns the absolute URL of the image asset. The `ImageLoaderConfig` object contains the `src` property, and optional `width` and `loaderParams` properties. @@ -388,7 +411,7 @@ A common use for `loaderParams` is controlling advanced image CDN features. The following shows an example of a custom loader function. This example function concatenates `src` and `width`, and uses `loaderParams` to control a custom CDN feature for rounded corners: - +```ts const myCustomLoader = (config: ImageLoaderConfig) => { let url = `https://example.com/images/${config.src}?`; let queryParams = []; @@ -400,15 +423,15 @@ const myCustomLoader = (config: ImageLoaderConfig) => { } return url + queryParams.join('&'); }; - +``` Note that in the above example, we've invented the 'roundedCorners' property name to control a feature of our custom loader. We could then use this feature when creating an image, as follows: - +```html - +``` ## Frequently Asked Questions @@ -423,17 +446,17 @@ For a step-by-step process for migration from `background-image` to `NgOptimized The `ngSrc` attribute was chosen as the trigger for NgOptimizedImage due to technical considerations around how images are loaded by the browser. NgOptimizedImage makes programmatic changes to the `loading` attribute -- if the browser sees the `src` attribute before those changes are made, it will begin eagerly downloading the image file, and the loading changes will be ignored. ### Why is a preconnect element not being generated for my image domain? + Preconnect generation is performed based on static analysis of your application. That means that the image domain must be directly included in the loader parameter, as in the following example: - +```ts providers: [ provideImgixLoader('https://my.base.url/'), ], - +``` If you use a variable to pass the domain string to the loader, or you're not using a loader, the static analysis will not be able to identify the domain, and no preconnect link will be generated. In this case you should manually add a preconnect link to the document head, as [described above](#add-resource-hints). - ### Can I use two different image domains in the same page? The [image loaders](#configuring-an-image-loader-for-ngoptimizedimage) provider pattern is designed to be as simple as possible for the common use case of having only a single image CDN used within a component. However, it's still very possible to manage multiple image CDNs using a single provider. @@ -458,7 +481,7 @@ If you're waiting on this feature, please upvote the Github issue [here](https:/ 3. Once the profiling result is available, select "LCP" in the timings section. -4. A summary entry should appear in the panel at the bottom. You can find the LCP element in the row for "related node". Clicking on it will reveal the element in the Elements panel. +4. A summary entry should appear in the panel at the bottom. You can find the LCP element in the row for "related node". Clicking on it will reveal the element in the Elements panel. LCP in the Chrome DevTools diff --git a/packages/common/src/directives/ng_optimized_image/ng_optimized_image.ts b/packages/common/src/directives/ng_optimized_image/ng_optimized_image.ts index 00a415c2b47..1f994703fda 100644 --- a/packages/common/src/directives/ng_optimized_image/ng_optimized_image.ts +++ b/packages/common/src/directives/ng_optimized_image/ng_optimized_image.ts @@ -262,6 +262,7 @@ export interface ImagePlaceholderConfig { * ``` * * @publicApi + * @see [Image Optimization Guide](guide/image-optimization) */ @Directive({ selector: 'img[ngSrc]', From 5a4f8261b5c4b24d070eceffa373481363530391 Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Thu, 9 Oct 2025 18:50:17 -0500 Subject: [PATCH 17/57] docs: Add unified control state change events (#64279) PR Close #64279 --- .../src/content/guide/forms/reactive-forms.md | 102 ++++++++++++++++++ packages/forms/src/model/abstract_model.ts | 13 +++ 2 files changed, 115 insertions(+) diff --git a/adev/src/content/guide/forms/reactive-forms.md b/adev/src/content/guide/forms/reactive-forms.md index d1fd267e928..6bc7c784cef 100644 --- a/adev/src/content/guide/forms/reactive-forms.md +++ b/adev/src/content/guide/forms/reactive-forms.md @@ -388,6 +388,108 @@ Initially, the form contains one `Alias` field. To add another field, click the +## Unified control state change events + +All form controls expose a single unified stream of **control state change events** through the `events` observable on `AbstractControl` (`FormControl`, `FormGroup`, `FormArray`, and `FormRecord`). +This unified stream lets you react to **value**, **status**, **pristine**, **touched** and **reset** state changes and also for **form-level actions** such as **submit** , allowing you to handle all updates with a one subscription instead of wiring multiple observables. + +### Event types + +Each item emitted by `events` is an instance of a specific event class: + +- **`ValueChangeEvent`** — when the control’s **value** changes. +- **`StatusChangeEvent`** — when the control’s **validation status** updates to one of the `FormControlStatus` values (`VALID`, `INVALID`, `PENDING`, or `DISABLED`). +- **`PristineChangeEvent`** — when the control’s **pristine/dirty** state changes. +- **`TouchedChangeEvent`** — when the control’s **touched/untouched** state changes. +- **`FormResetEvent`** — when a control or form is reset, either via the `reset()` API or a native action. +- **`FormSubmittedEvent`** — when the form is submitted. + +All event classes extend `ControlEvent` and include a `source` reference to the `AbstractControl` that originated the change, which is useful in large forms. + +```ts +import { Component } from '@angular/core'; +import { + FormControl, + ValueChangeEvent, + StatusChangeEvent, + PristineChangeEvent, + TouchedChangeEvent, + FormResetEvent, + FormSubmittedEvent, + ReactiveFormsModule, + FormGroup, +} from '@angular/forms'; + +@Component({/* ... */ }) +export class UnifiedEventsBasicComponent { + form = new FormGroup({ + username: new FormControl(''), + }); + + constructor() { + this.form.events.subscribe((e) => { + if (e instanceof ValueChangeEvent) { + console.log('Value changed to: ', e.value); + } + + if (e instanceof StatusChangeEvent) { + console.log('Status changed to: ', e.status); + } + + if (e instanceof PristineChangeEvent) { + console.log('Pristine status changed to: ', e.pristine); + } + + if (e instanceof TouchedChangeEvent) { + console.log('Touched status changed to: ', e.touched); + } + + if (e instanceof FormResetEvent) { + console.log('Form was reset'); + } + + if (e instanceof FormSubmittedEvent) { + console.log('Form was submitted'); + } + }); + } +} +``` + +### Filtering specific events + +Prefer RxJS operators when you only need a subset of event types. + +```ts +import { filter } from 'rxjs/operators'; +import { StatusChangeEvent } from '@angular/forms'; + +control.events + .pipe(filter((e) => e instanceof StatusChangeEvent)) + .subscribe((e) => console.log('Status:', e.status)); +``` + +### Unifying from multiple subscriptions + +**Before** + +```ts +import { combineLatest } from 'rxjs/operators'; + +combineLatest([control.valueChanges, control.statusChanges]) + .subscribe(([value, status]) => { /* ... */ }); +``` + +**After** + +```ts +control.events.subscribe((e) => { + // Handle ValueChangeEvent, StatusChangeEvent, etc. +}); +``` + +NOTE: On value change, the emit happens right after a value of this control is updated. The value of a parent control (for example if this FormControl is a part of a FormGroup) is updated later, so accessing a value of a parent control (using the `value` property) from the callback of this event might result in getting a value that has not been updated yet. Subscribe to the `events` of the parent control instead. + ## Reactive forms API summary The following table lists the base classes and services used to create and manage reactive form controls. diff --git a/packages/forms/src/model/abstract_model.ts b/packages/forms/src/model/abstract_model.ts index 53e926da80f..ef4d6196966 100644 --- a/packages/forms/src/model/abstract_model.ts +++ b/packages/forms/src/model/abstract_model.ts @@ -101,6 +101,8 @@ export abstract class ControlEvent { /** * Event fired when the value of a control changes. * + * @see {@link AbstractControl.events} + * * @publicApi */ export class ValueChangeEvent extends ControlEvent { @@ -115,6 +117,8 @@ export class ValueChangeEvent extends ControlEvent { /** * Event fired when the control's pristine state changes (pristine <=> dirty). * + * @see {@link AbstractControl.events} + * * @publicApi */ export class PristineChangeEvent extends ControlEvent { constructor( @@ -128,6 +132,8 @@ export class PristineChangeEvent extends ControlEvent { /** * Event fired when the control's touched status changes (touched <=> untouched). * + * @see {@link AbstractControl.events} + * * @publicApi */ export class TouchedChangeEvent extends ControlEvent { @@ -142,6 +148,8 @@ export class TouchedChangeEvent extends ControlEvent { /** * Event fired when the control's status changes. * + * @see {@link AbstractControl.events} + * * @publicApi */ export class StatusChangeEvent extends ControlEvent { @@ -156,6 +164,8 @@ export class StatusChangeEvent extends ControlEvent { /** * Event fired when a form is submitted * + * @see {@link AbstractControl.events} + * * @publicApi */ export class FormSubmittedEvent extends ControlEvent { @@ -166,6 +176,8 @@ export class FormSubmittedEvent extends ControlEvent { /** * Event fired when a form is reset. * + * @see {@link AbstractControl.events} + * * @publicApi */ export class FormResetEvent extends ControlEvent { @@ -750,6 +762,7 @@ export abstract class AbstractControl< * `events` of the parent control instead. * For other event types, the events are emitted after the parent control has been updated. * + * @see [Unified control state change events](guide/forms/reactive-forms#unified-control-state-change-events) */ public readonly events = this._events.asObservable(); From 656715c3653c50c11da99362390bb3c9a1470e76 Mon Sep 17 00:00:00 2001 From: Shuaib Hasan Akib Date: Fri, 10 Oct 2025 10:13:46 +0600 Subject: [PATCH 18/57] docs: fix rxResource example to return object from params function (#64327) Previously, the example returned a plain value instead of an object, causing destructuring in the `stream` function to fail. Updated to `params: () => ({ userId: this.userId() })` for correctness. fixes: #64313 Update adev/src/content/ecosystem/rxjs-interop/signals-interop.md Co-authored-by: Matthieu Riegler PR Close #64327 --- adev/src/content/ecosystem/rxjs-interop/signals-interop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adev/src/content/ecosystem/rxjs-interop/signals-interop.md b/adev/src/content/ecosystem/rxjs-interop/signals-interop.md index e1bf6da5cb5..78b3758256e 100644 --- a/adev/src/content/ecosystem/rxjs-interop/signals-interop.md +++ b/adev/src/content/ecosystem/rxjs-interop/signals-interop.md @@ -146,7 +146,7 @@ export class UserProfile { protected userId = input(); private userResource = rxResource({ - params: () => this.userId(), + params: () => ({ userId: this.userId() }), // The `stream` property expects a factory function that returns // a data stream as an RxJS Observable. From c4812fef14e3193d88708202d2dffc9647b5dfbf Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 10 Oct 2025 05:12:10 +0000 Subject: [PATCH 19/57] build: update dependency bazel to v7.6.2 (#64331) See associated pull request for more information. PR Close #64331 --- .bazelversion | 2 +- MODULE.bazel.lock | 38 ++++++-------------------------------- 2 files changed, 7 insertions(+), 33 deletions(-) diff --git a/.bazelversion b/.bazelversion index e8be68404bc..e81e85b8104 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -7.6.1 +7.6.2 diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 9041fb76dee..e6efedba57b 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -10,8 +10,8 @@ "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/source.json": "9be551b8d4e3ef76875c0d744b5d6a504a27e3ae67bc6b28f46415fd2d2957da", - "https://bcr.bazel.build/modules/apple_support/1.5.0/MODULE.bazel": "50341a62efbc483e8a2a6aec30994a58749bd7b885e18dd96aa8c33031e558ef", - "https://bcr.bazel.build/modules/apple_support/1.5.0/source.json": "eb98a7627c0bc486b57f598ad8da50f6625d974c8f723e9ea71bd39f709c9862", + "https://bcr.bazel.build/modules/apple_support/1.23.1/MODULE.bazel": "53763fed456a968cf919b3240427cf3a9d5481ec5466abc9d5dc51bc70087442", + "https://bcr.bazel.build/modules/apple_support/1.23.1/source.json": "d888b44312eb0ad2c21a91d026753f330caa48a25c9b2102fae75eb2b0dcfdd2", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.0.0/MODULE.bazel": "e118477db5c49419a88d78ebc7a2c2cea9d49600fe0f490c1903324a2c16ecd9", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.11.0/MODULE.bazel": "cb1ba9f9999ed0bc08600c221f532c1ddd8d217686b32ba7d45b0713b5131452", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.14.0/MODULE.bazel": "2b31ffcc9bdc8295b2167e07a757dbbc9ac8906e7028e5170a3708cecaac119f", @@ -45,6 +45,7 @@ "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", + "https://bcr.bazel.build/modules/bazel_features/1.27.0/MODULE.bazel": "621eeee06c4458a9121d1f104efb80f39d34deff4984e778359c60eaf1a8cb65", "https://bcr.bazel.build/modules/bazel_features/1.34.0/MODULE.bazel": "e8475ad7c8965542e0c7aac8af68eb48c4af904be3d614b6aa6274c092c2ea1e", "https://bcr.bazel.build/modules/bazel_features/1.34.0/source.json": "dfa5c4b01110313153b484a735764d247fee5624bbab63d25289e43b151a657a", "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", @@ -108,6 +109,7 @@ "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", + "https://bcr.bazel.build/modules/rules_cc/0.0.11/MODULE.bazel": "9f249c5624a4788067b96b8b896be10c7e8b4375dc46f6d8e1e51100113e0992", "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", @@ -202,34 +204,6 @@ }, "selectedYankedVersions": {}, "moduleExtensions": { - "@@apple_support~//crosstool:setup.bzl%apple_cc_configure_extension": { - "general": { - "bzlTransitiveDigest": "PjIds3feoYE8SGbbIq2SFTZy3zmxeO2tQevJZNDo7iY=", - "usagesDigest": "+hz7IHWN6A1oVJJWNDB6yZRG+RYhF76wAYItpAeIUIg=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "local_config_apple_cc_toolchains": { - "bzlFile": "@@apple_support~//crosstool:setup.bzl", - "ruleClassName": "_apple_cc_autoconf_toolchains", - "attributes": {} - }, - "local_config_apple_cc": { - "bzlFile": "@@apple_support~//crosstool:setup.bzl", - "ruleClassName": "_apple_cc_autoconf", - "attributes": {} - } - }, - "recordedRepoMappingEntries": [ - [ - "apple_support~", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, "@@aspect_rules_esbuild~//esbuild:extensions.bzl%esbuild": { "general": { "bzlTransitiveDigest": "kzZXVf0lIRQArtJstiytwibC6m5npERsjNfhP9yJJW4=", @@ -412,7 +386,7 @@ }, "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "KMsyoH5ShknUHVmkSHztDMIN0fXSzKZBut4ETq2s/Sw=", + "bzlTransitiveDigest": "2EzhmJcOK6eUPERbnFW8UdrwodSbUF5O4co1bHslj00=", "usagesDigest": "V9NEIvpQ7jCUoRijc01Vfpgy0m4nBZhW8UadmstKA04=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -1274,7 +1248,7 @@ }, "@@rules_python~//python/extensions:pip.bzl%pip": { "general": { - "bzlTransitiveDigest": "8USX8QvzWk9pjl0ion2dAqEqjB3yzkmi3d13o89Cchs=", + "bzlTransitiveDigest": "sQcIxpGBMBOMzUZK9ARAkAR7oUiEiGgKZhHLEf9Prfk=", "usagesDigest": "MKs5B778/fEkKhBaxuBt3oCCW+wPRuh2AxtITF8AMSU=", "recordedFileInputs": { "@@rules_python~//tools/publish/requirements_linux.txt": "8175b4c8df50ae2f22d1706961884beeb54e7da27bd2447018314a175981997d", From da38cd9679b513a2920253e613d8db0cef41cbcd Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Thu, 9 Oct 2025 18:14:48 -0500 Subject: [PATCH 20/57] docs: add example for assertInInjectionContext (#64325) PR Close #64325 --- .../guide/di/dependency-injection-context.md | 37 ++++++++++++++++--- packages/core/src/di/contextual.ts | 2 + 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/adev/src/content/guide/di/dependency-injection-context.md b/adev/src/content/guide/di/dependency-injection-context.md index b242b87d2c8..c011766e5bb 100644 --- a/adev/src/content/guide/di/dependency-injection-context.md +++ b/adev/src/content/guide/di/dependency-injection-context.md @@ -5,11 +5,11 @@ This means that injectors can only work when code is executed in such a context. The injection context is available in these situations: -* During construction (via the `constructor`) of a class being instantiated by the DI system, such as an `@Injectable` or `@Component`. -* In the initializer for fields of such classes. -* In the factory function specified for `useFactory` of a `Provider` or an `@Injectable`. -* In the `factory` function specified for an `InjectionToken`. -* Within a stack frame that runs in an injection context. +- During construction (via the `constructor`) of a class being instantiated by the DI system, such as an `@Injectable` or `@Component`. +- In the initializer for fields of such classes. +- In the factory function specified for `useFactory` of a `Provider` or an `@Injectable`. +- In the `factory` function specified for an `InjectionToken`. +- Within a stack frame that runs in an injection context. Knowing when you are in an injection context will allow you to use the [`inject`](api/core/inject) function to inject instances. @@ -66,7 +66,32 @@ Note that `inject` will return an instance only if the injector can resolve the ## Asserts the context -Angular provides the `assertInInjectionContext` helper function to assert that the current context is an injection context. +Angular provides the `assertInInjectionContext` helper function to assert that the current context is an injection context and throws a clear error if not. Pass a reference to the calling function so the error message points to the correct API entry point. This produces a clearer, more actionable message than the default generic injection error. + +```ts +import { ElementRef, assertInInjectionContext, inject } from '@angular/core'; + +export function injectNativeElement(): T { + assertInInjectionContext(injectNativeElement); + return inject(ElementRef).nativeElement; +} +``` + +You can then call this helper **from an injection context** (constructor, field initializer, provider factory, or code executed via `runInInjectionContext`): + +```ts +import { Component, inject } from '@angular/core'; +import { injectNativeElement } from './dom-helpers'; + +@Component({ /* … */ }) +export class PreviewCard { + readonly hostEl = injectNativeElement(); // Field initializer runs in an injection context. + + onAction() { + const anotherRef = injectNativeElement(); // Fails: runs outside an injection context. + } +} +``` ## Using DI outside of a context diff --git a/packages/core/src/di/contextual.ts b/packages/core/src/di/contextual.ts index 8b903222660..540d86ef69c 100644 --- a/packages/core/src/di/contextual.ts +++ b/packages/core/src/di/contextual.ts @@ -68,6 +68,8 @@ export function isInInjectionContext(): boolean { * * @param debugFn a reference to the function making the assertion (used for the error message). * + * @see [Asserts the context](guide/di/dependency-injection-context#asserts-the-context) + * * @publicApi */ export function assertInInjectionContext(debugFn: Function): void { From 448ba755794a633776a8146e0ff237a41a1f83d3 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 10 Oct 2025 14:09:29 +0000 Subject: [PATCH 21/57] build: update bazel dependencies (#64332) See associated pull request for more information. PR Close #64332 --- MODULE.bazel | 4 ++-- MODULE.bazel.lock | 26 +++++++++++++++++--------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 9acbfcb09c8..78436066394 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -7,8 +7,8 @@ module( bazel_dep(name = "rules_pkg", version = "1.1.0") bazel_dep(name = "rules_nodejs", version = "6.5.2") bazel_dep(name = "aspect_rules_ts", version = "3.7.0") -bazel_dep(name = "aspect_rules_js", version = "2.6.0") -bazel_dep(name = "aspect_rules_esbuild", version = "0.22.1") +bazel_dep(name = "aspect_rules_js", version = "2.6.2") +bazel_dep(name = "aspect_rules_esbuild", version = "0.23.0") bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") bazel_dep(name = "aspect_rules_rollup", version = "2.0.1") bazel_dep(name = "bazel_skylib", version = "1.8.2") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index e6efedba57b..9cbbfdbd08b 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -22,13 +22,15 @@ "https://bcr.bazel.build/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "812d2dd42f65dca362152101fbec418029cc8fd34cbad1a2fde905383d705838", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.9.3/MODULE.bazel": "66baf724dbae7aff4787bf2245cc188d50cb08e07789769730151c0943587c14", "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.22.1/MODULE.bazel": "499ce65b6126f344f9a630040b9db91b36b20c6d1436026120067d922c2d69bd", - "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.22.1/source.json": "84138a41a9e71655cb97d39fcb80f6e2ba7e754d5601fb14f5a7d14080dff409", + "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.23.0/MODULE.bazel": "9b437a9ec25a619304940434fa03b8d41248213eb7009da2c898f3d6a4075ef3", + "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.23.0/source.json": "7b4cac4e61bae4262e7f67f6bec0b200fcb9060044f12e84a3bc37e0be245de7", "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.0/MODULE.bazel": "071d1952527721bf8b180e1299def24edaece9d7466e31a311981640da82c6be", "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.0/source.json": "45fa9603cdfe100575a12d8b65fa425fe8713dd8c9f0cdf802168b670bc0e299", "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5", "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.0/MODULE.bazel": "5a6f8dbc5b170769453f1819d469fe54b0e4b86a0e82e13fde8e5a45438a1890", - "https://bcr.bazel.build/modules/aspect_rules_js/2.6.0/source.json": "e1e20b259d4f1b0a5d8b99d57b418c96f306e1c77f96e9ea1c9f1068a628b211", + "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", + "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/source.json": "59933fb8ddabd9740a3c12ff5552f06f2b8d68c3633883c681c757bf227c3763", "https://bcr.bazel.build/modules/aspect_rules_rollup/2.0.1/MODULE.bazel": "296e3a053658c2af989ba9bd62a205e6d1fa84bdd6dd5249196546e6b84770ec", "https://bcr.bazel.build/modules/aspect_rules_rollup/2.0.1/source.json": "2fe8ac1ccb4de74bf884761e070010280b272d94e3997205b361b91c75409726", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", @@ -206,8 +208,8 @@ "moduleExtensions": { "@@aspect_rules_esbuild~//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "kzZXVf0lIRQArtJstiytwibC6m5npERsjNfhP9yJJW4=", - "usagesDigest": "u8wMZJd6Ovxb3YTmhoM3sMbh11Qwrv5EHaggdNi5Wb8=", + "bzlTransitiveDigest": "W+cy7GU3S29h8PPWylmMlPB5Z16vuZzJX4k0jlXGFoc=", + "usagesDigest": "H070ZIHhSlR+Han009l+GdDSuT9AJssdyVHQ7xjstSo=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -336,6 +338,11 @@ "aspect_rules_js", "aspect_rules_js~" ], + [ + "aspect_rules_esbuild~", + "aspect_tools_telemetry_report", + "aspect_tools_telemetry~~telemetry~aspect_tools_telemetry_report" + ], [ "aspect_rules_esbuild~", "bazel_skylib", @@ -386,8 +393,8 @@ }, "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "2EzhmJcOK6eUPERbnFW8UdrwodSbUF5O4co1bHslj00=", - "usagesDigest": "V9NEIvpQ7jCUoRijc01Vfpgy0m4nBZhW8UadmstKA04=", + "bzlTransitiveDigest": "kFo9dd9KDRPKtK0RkVyoouzNI0l+bqG8cEaw+4+ZnVw=", + "usagesDigest": "m4SV89mxIkyR0bOgofNXUCEoJ4ZxGFzjT+gMxAHiyy0=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -599,7 +606,7 @@ "@@aspect_tools_telemetry~//:extension.bzl%telemetry": { "general": { "bzlTransitiveDigest": "gA7tPEdJXhskzPIEUxjX9IdDrM6+WjfbgXJ8Ez47umk=", - "usagesDigest": "GEL1puRyMuoDKpELV0EDVcA/hQ0OdxZ9UR/t2Vtj7a0=", + "usagesDigest": "dcrRW5I3xGNrhUUABIGxrJLCnXbmJYy1rq9dls9ZU+M=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -610,7 +617,8 @@ "attributes": { "deps": { "aspect_rules_ts": "3.7.0", - "aspect_rules_js": "2.6.0", + "aspect_rules_js": "2.6.2", + "aspect_rules_esbuild": "0.23.0", "aspect_tools_telemetry": "0.2.8" } } @@ -1104,7 +1112,7 @@ "@@rules_nodejs~//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "FmfMiNXAxRoLWw3NloQbssosE1egrSvzirbQnso7j7E=", - "usagesDigest": "qZI2qtKx1RA9pNdiXijZLgoCMOz6kBMns0I2zUYsSzY=", + "usagesDigest": "gj5TARtK0gTGB1qjjp2jJe1Msc70mpF80SrnuX6OmHI=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, From da5073358ee667646a0d9741af447e669c79206b Mon Sep 17 00:00:00 2001 From: Matthieu Riegler Date: Fri, 10 Oct 2025 15:18:43 +0200 Subject: [PATCH 22/57] docs: add a callout that adding/removing to formArray doesn't not mark dirty (#64337) fixes #36788 PR Close #64337 --- packages/forms/src/model/form_array.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/forms/src/model/form_array.ts b/packages/forms/src/model/form_array.ts index 1e5a07bc76d..22649bbb98d 100644 --- a/packages/forms/src/model/form_array.ts +++ b/packages/forms/src/model/form_array.ts @@ -174,6 +174,8 @@ export class FormArray = any> extends Abst * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and * `valueChanges` observables emit events with the latest status and value when the control is * inserted. When false, no events are emitted. + * + * NOTE: Pushing to the FormArray will not mark it dirty. If you want to mark if dirty, call `markAsDirty()`. */ push(control: TControl | Array, options: {emitEvent?: boolean} = {}): void { if (Array.isArray(control)) { @@ -201,6 +203,8 @@ export class FormArray = any> extends Abst * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and * `valueChanges` observables emit events with the latest status and value when the control is * inserted. When false, no events are emitted. + * + * NOTE: Inserting to the FormArray will not mark it dirty. If you want to mark if dirty, call `markAsDirty()`. */ insert(index: number, control: TControl, options: {emitEvent?: boolean} = {}): void { this.controls.splice(index, 0, control); @@ -220,6 +224,8 @@ export class FormArray = any> extends Abst * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and * `valueChanges` observables emit events with the latest status and value when the control is * removed. When false, no events are emitted. + * + * NOTE: Removing the FormArray will not mark it dirty. If you want to mark if dirty, call `markAsDirty()`. */ removeAt(index: number, options: {emitEvent?: boolean} = {}): void { // Adjust the index, then clamp it at no less than 0 to prevent undesired underflows. From 9437ff3504c6dd06491cf1292c455edf0cba8a3d Mon Sep 17 00:00:00 2001 From: Matthieu Riegler Date: Fri, 10 Oct 2025 17:52:48 +0200 Subject: [PATCH 23/57] docs(docs-infra): Fix animation bug on iPhones (#64342) PR Close #64342 --- adev/shared-docs/styles/_typography.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/adev/shared-docs/styles/_typography.scss b/adev/shared-docs/styles/_typography.scss index 1c4e2ce0e7b..241b9050eb1 100644 --- a/adev/shared-docs/styles/_typography.scss +++ b/adev/shared-docs/styles/_typography.scss @@ -49,7 +49,6 @@ h6 { font-family: var(--inter-tight-font); font-weight: 500; - text-wrap: balance; } p { From edbd533de0f7647229e9a451730dbc69b21fb678 Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Fri, 10 Oct 2025 13:15:20 -0500 Subject: [PATCH 24/57] docs: refactor popup example to use inject function (#64349) PR Close #64349 --- .../elements/src/app/popup.service.ts | 14 +++++--- adev/src/content/guide/elements.md | 36 +++++++++---------- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/adev/src/content/examples/elements/src/app/popup.service.ts b/adev/src/content/examples/elements/src/app/popup.service.ts index dbc58846bea..ca2a4029a8a 100644 --- a/adev/src/content/examples/elements/src/app/popup.service.ts +++ b/adev/src/content/examples/elements/src/app/popup.service.ts @@ -1,13 +1,17 @@ -import {ApplicationRef, createComponent, EnvironmentInjector, Injectable} from '@angular/core'; +import { + ApplicationRef, + createComponent, + EnvironmentInjector, + inject, + Injectable, +} from '@angular/core'; import {NgElement, WithProperties} from '@angular/elements'; import {PopupComponent} from './popup.component'; @Injectable() export class PopupService { - constructor( - private injector: EnvironmentInjector, - private applicationRef: ApplicationRef, - ) {} + private readonly injector = inject(EnvironmentInjector); + private readonly applicationRef = inject(ApplicationRef); // Previous dynamic-loading method required you to set up infrastructure // before adding the popup to the DOM. diff --git a/adev/src/content/guide/elements.md b/adev/src/content/guide/elements.md index 9d2a298ff80..9cd53266574 100644 --- a/adev/src/content/guide/elements.md +++ b/adev/src/content/guide/elements.md @@ -18,22 +18,22 @@ Once a custom element is added to the DOM for any page, it looks and behaves lik To add the `@angular/elements` package to your workspace, run the following command: - +```shell npm install @angular/elements --save - +``` ### How it works The `createCustomElement()` function converts a component into a class that can be registered with the browser as a custom element. After you register your configured class with the browser's custom-element registry, use the new element just like a built-in HTML element in content that you add directly into the DOM: - +```html - +``` When your custom element is placed on a page, the browser creates an instance of the registered class and adds it to the DOM. The content is provided by the component's template, which uses Angular template syntax, and is rendered using the component and DOM data. @@ -58,14 +58,14 @@ One regular Angular component and a second one using the custom element. A custom element _hosts_ an Angular component, providing a bridge between the data and logic defined in the component and standard DOM APIs. Component properties and logic maps directly into HTML attributes and the browser's event system. -* The creation API parses the component looking for input properties, and defines corresponding attributes for the custom element. +- The creation API parses the component looking for input properties, and defines corresponding attributes for the custom element. It transforms the property names to make them compatible with custom elements, which do not recognize case distinctions. The resulting attribute names use dash-separated lowercase. For example, for a component with `inputProp = input({alias: 'myInputProp'})`, the corresponding custom element defines an attribute `my-input-prop`. -* Component outputs are dispatched as HTML [Custom Events](https://developer.mozilla.org/docs/Web/API/CustomEvent), with the name of the custom event matching the output name. - For example, for a component `with valueChanged = output()`, the corresponding custom element dispatches events with the name "valueChanged", and the emitted data is stored on the event's `detail` property. - If you provide an alias, that value is used; for example, `clicks = output({alias: 'myClick'});` results in dispatch events with the name "myClick". +- Component outputs are dispatched as HTML [Custom Events](https://developer.mozilla.org/docs/Web/API/CustomEvent), with the name of the custom event matching the output name. + For example, for a component `with valueChanged = output()`, the corresponding custom element dispatches events with the name "valueChanged", and the emitted data is stored on the event's `detail` property. + If you provide an alias, that value is used; for example, `clicks = output({alias: 'myClick'});` results in dispatch events with the name "myClick". For more information, see Web Component documentation for [Creating custom events](https://developer.mozilla.org/docs/Web/Guide/Events/Creating_and_triggering_events#Creating_custom_events). @@ -109,33 +109,33 @@ For example, our `popup-element` has a `message` property of type `string`. There are a few options if you want to get correct types for your custom elements. Assume you create a `my-dialog` custom element based on the following component: - +```ts @Component(…) class MyDialog { content = input(string); } - +``` The most straightforward way to get accurate typings is to cast the return value of the relevant DOM methods to the correct type. For that, use the `NgElement` and `WithProperties` types \(both exported from `@angular/elements`\): - +```ts const aDialog = document.createElement('my-dialog') as NgElement & WithProperties<{content: string}>; aDialog.content = 'Hello, world!'; -aDialog.content = 123; // <-- ERROR: TypeScript knows this should be a string. -aDialog.body = 'News'; // <-- ERROR: TypeScript knows there is no `body` property on `aDialog`. +aDialog.content = 123; // <-- ERROR: TypeScript knows this should be a string. +aDialog.body = 'News'; // <-- ERROR: TypeScript knows there is no `body` property on `aDialog`. - +``` This is a good way to quickly get TypeScript features, such as type checking and autocomplete support, for your custom element. But it can get cumbersome if you need it in several places, because you have to cast the return type on every occurrence. An alternative way, that only requires defining each custom element's type once, is augmenting the `HTMLElementTagNameMap`, which TypeScript uses to infer the type of a returned element based on its tag name \(for DOM methods such as `document.createElement()`, `document.querySelector()`, etc.\): - +```ts declare global { interface HTMLElementTagNameMap { @@ -145,18 +145,18 @@ declare global { } } - +``` Now, TypeScript can infer the correct type the same way it does for built-in elements: - +```ts document.createElement('div') //--> HTMLDivElement (built-in element) document.querySelector('foo') //--> Element (unknown element) document.createElement('my-dialog') //--> NgElement & WithProperties<{content: string}> (custom element) document.querySelector('my-other-element') //--> NgElement & WithProperties<{foo: 'bar'}> (custom element) - +``` ## Limitations From 1502b1bc827c9b9f1c0d75d7b5dd7ddbb30a8931 Mon Sep 17 00:00:00 2001 From: Shuaib Hasan Akib Date: Wed, 1 Oct 2025 14:31:04 +0600 Subject: [PATCH 25/57] refactor(common): sync examples with Angular style guide (#64167) Updated examples to align with the latest Angular style: - Removed `standalone: false` since it is unnecessary. - Dropped module-based implementation in favor of standalone. PR Close #64167 --- .../animation/ts/dsl/animation_example.ts | 11 +--- .../examples/core/animation/ts/dsl/module.ts | 2 +- .../ts/contentChild/content_child_example.ts | 6 +-- .../core/di/ts/contentChild/module.ts | 11 +--- .../content_children_example.ts | 4 +- .../contentChildren/content_children_howto.ts | 2 - .../core/di/ts/contentChildren/module.ts | 11 +--- .../examples/core/di/ts/viewChild/module.ts | 12 +---- .../di/ts/viewChild/view_child_example.ts | 3 +- .../core/di/ts/viewChild/view_child_howto.ts | 6 +-- .../core/di/ts/viewChildren/module.ts | 12 +---- .../ts/viewChildren/view_children_example.ts | 3 +- .../di/ts/viewChildren/view_children_howto.ts | 2 - packages/examples/core/main.ts | 17 +++++-- packages/examples/core/test_app_component.ts | 33 ++++++++++++ packages/examples/core/test_module.ts | 50 ------------------- .../core/testability/ts/whenStable/module.ts | 2 +- .../ts/whenStable/testability_example.ts | 7 +-- .../examples/core/ts/bootstrap/bootstrap.ts | 10 ++-- .../core/ts/metadata/encapsulation.ts | 3 +- .../examples/core/ts/metadata/metadata.ts | 5 -- .../core/ts/pipes/pipeTransFormEx_module.ts | 11 ++-- .../examples/core/ts/pipes/simple_truncate.ts | 1 - packages/examples/core/ts/pipes/truncate.ts | 1 - .../core/ts/prod_mode/my_component.ts | 1 - .../core/ts/prod_mode/prod_mode_example.ts | 17 ++++--- 26 files changed, 83 insertions(+), 160 deletions(-) create mode 100644 packages/examples/core/test_app_component.ts delete mode 100644 packages/examples/core/test_module.ts diff --git a/packages/examples/core/animation/ts/dsl/animation_example.ts b/packages/examples/core/animation/ts/dsl/animation_example.ts index 7613b481217..8504526f28c 100644 --- a/packages/examples/core/animation/ts/dsl/animation_example.ts +++ b/packages/examples/core/animation/ts/dsl/animation_example.ts @@ -7,8 +7,7 @@ */ import {animate, state, style, transition, trigger} from '@angular/animations'; -import {Component, NgModule} from '@angular/core'; -import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; +import {Component} from '@angular/core'; @Component({ selector: 'example-app', @@ -39,7 +38,6 @@ import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
Look at this box
`, - standalone: false, }) export class MyExpandoCmp { stateExpression!: string; @@ -53,10 +51,3 @@ export class MyExpandoCmp { this.stateExpression = 'collapsed'; } } - -@NgModule({ - imports: [BrowserAnimationsModule], - declarations: [MyExpandoCmp], - bootstrap: [MyExpandoCmp], -}) -export class AppModule {} diff --git a/packages/examples/core/animation/ts/dsl/module.ts b/packages/examples/core/animation/ts/dsl/module.ts index 39a299db24d..5bcc8fe1a58 100644 --- a/packages/examples/core/animation/ts/dsl/module.ts +++ b/packages/examples/core/animation/ts/dsl/module.ts @@ -6,4 +6,4 @@ * found in the LICENSE file at https://angular.dev/license */ -export {AppModule, MyExpandoCmp as AppComponent} from './animation_example'; +export {MyExpandoCmp as AppComponent} from './animation_example'; diff --git a/packages/examples/core/di/ts/contentChild/content_child_example.ts b/packages/examples/core/di/ts/contentChild/content_child_example.ts index 640e3d9056f..b6cee364adf 100644 --- a/packages/examples/core/di/ts/contentChild/content_child_example.ts +++ b/packages/examples/core/di/ts/contentChild/content_child_example.ts @@ -11,7 +11,6 @@ import {Component, contentChild, Directive, input, signal} from '@angular/core'; @Directive({ selector: 'pane', - standalone: false, }) export class Pane { id = input.required(); @@ -20,7 +19,6 @@ export class Pane { @Component({ selector: 'tab', template: `
pane: {{ pane()?.id() }}
`, - standalone: false, }) export class Tab { pane = contentChild(Pane); @@ -28,18 +26,18 @@ export class Tab { @Component({ selector: 'example-app', + imports: [Tab, Pane], template: ` @if(shouldShow()) { - } @else { + } @else { } `, - standalone: false, }) export class ContentChildComp { shouldShow = signal(true); diff --git a/packages/examples/core/di/ts/contentChild/module.ts b/packages/examples/core/di/ts/contentChild/module.ts index 6c1ee19db72..95392377bd6 100644 --- a/packages/examples/core/di/ts/contentChild/module.ts +++ b/packages/examples/core/di/ts/contentChild/module.ts @@ -6,15 +6,6 @@ * found in the LICENSE file at https://angular.dev/license */ -import {NgModule} from '@angular/core'; -import {BrowserModule} from '@angular/platform-browser'; -import {ContentChildComp, Pane, Tab} from './content_child_example'; - -@NgModule({ - imports: [BrowserModule], - declarations: [ContentChildComp, Pane, Tab], - bootstrap: [ContentChildComp], -}) -export class AppModule {} +import {ContentChildComp} from './content_child_example'; export {ContentChildComp as AppComponent}; diff --git a/packages/examples/core/di/ts/contentChildren/content_children_example.ts b/packages/examples/core/di/ts/contentChildren/content_children_example.ts index 545353731e9..cc4573cc57f 100644 --- a/packages/examples/core/di/ts/contentChildren/content_children_example.ts +++ b/packages/examples/core/di/ts/contentChildren/content_children_example.ts @@ -11,7 +11,6 @@ import {Component, ContentChildren, Directive, input, QueryList, signal} from '@ @Directive({ selector: 'pane', - standalone: false, }) export class Pane { id = input.required(); @@ -23,7 +22,6 @@ export class Pane {
Top level panes: {{ serializedPanes }}
Arbitrary nested panes: {{ serializedNestedPanes }}
`, - standalone: false, }) export class Tab { @ContentChildren(Pane) topLevelPanes!: QueryList; @@ -39,6 +37,7 @@ export class Tab { @Component({ selector: 'example-app', + imports: [Tab, Pane], template: ` @@ -55,7 +54,6 @@ export class Tab { `, - standalone: false, }) export class ContentChildrenComp { shouldShow = signal(false); diff --git a/packages/examples/core/di/ts/contentChildren/content_children_howto.ts b/packages/examples/core/di/ts/contentChildren/content_children_howto.ts index 7d52fcb6047..f412b4b8b57 100644 --- a/packages/examples/core/di/ts/contentChildren/content_children_howto.ts +++ b/packages/examples/core/di/ts/contentChildren/content_children_howto.ts @@ -11,13 +11,11 @@ import {AfterContentInit, ContentChildren, Directive, QueryList} from '@angular/ @Directive({ selector: 'child-directive', - standalone: false, }) class ChildDirective {} @Directive({ selector: 'someDir', - standalone: false, }) class SomeDir implements AfterContentInit { @ContentChildren(ChildDirective) contentChildren!: QueryList; diff --git a/packages/examples/core/di/ts/contentChildren/module.ts b/packages/examples/core/di/ts/contentChildren/module.ts index acc805640fb..35227113fd9 100644 --- a/packages/examples/core/di/ts/contentChildren/module.ts +++ b/packages/examples/core/di/ts/contentChildren/module.ts @@ -6,15 +6,6 @@ * found in the LICENSE file at https://angular.dev/license */ -import {NgModule} from '@angular/core'; -import {BrowserModule} from '@angular/platform-browser'; -import {ContentChildrenComp, Pane, Tab} from './content_children_example'; - -@NgModule({ - imports: [BrowserModule], - declarations: [ContentChildrenComp, Pane, Tab], - bootstrap: [ContentChildrenComp], -}) -export class AppModule {} +import {ContentChildrenComp} from './content_children_example'; export {ContentChildrenComp as AppComponent}; diff --git a/packages/examples/core/di/ts/viewChild/module.ts b/packages/examples/core/di/ts/viewChild/module.ts index c778282ee17..0640b025455 100644 --- a/packages/examples/core/di/ts/viewChild/module.ts +++ b/packages/examples/core/di/ts/viewChild/module.ts @@ -6,16 +6,6 @@ * found in the LICENSE file at https://angular.dev/license */ -import {NgModule} from '@angular/core'; -import {BrowserModule} from '@angular/platform-browser'; - -import {Pane, ViewChildComp} from './view_child_example'; - -@NgModule({ - imports: [BrowserModule], - declarations: [ViewChildComp, Pane], - bootstrap: [ViewChildComp], -}) -export class AppModule {} +import {ViewChildComp} from './view_child_example'; export {ViewChildComp as AppComponent}; diff --git a/packages/examples/core/di/ts/viewChild/view_child_example.ts b/packages/examples/core/di/ts/viewChild/view_child_example.ts index 7d297f404a9..03a7f2fb0fe 100644 --- a/packages/examples/core/di/ts/viewChild/view_child_example.ts +++ b/packages/examples/core/di/ts/viewChild/view_child_example.ts @@ -11,7 +11,6 @@ import {Component, Directive, input, signal, ViewChild} from '@angular/core'; @Directive({ selector: 'pane', - standalone: false, }) export class Pane { id = input.required(); @@ -19,6 +18,7 @@ export class Pane { @Component({ selector: 'example-app', + imports: [Pane], template: ` @if(shouldShow()) { @@ -30,7 +30,6 @@ export class Pane {
Selected: {{ selectedPane() }}
`, - standalone: false, }) export class ViewChildComp { @ViewChild(Pane) diff --git a/packages/examples/core/di/ts/viewChild/view_child_howto.ts b/packages/examples/core/di/ts/viewChild/view_child_howto.ts index 959fee8d9de..8e6719efb63 100644 --- a/packages/examples/core/di/ts/viewChild/view_child_howto.ts +++ b/packages/examples/core/di/ts/viewChild/view_child_howto.ts @@ -11,16 +11,14 @@ import {AfterViewInit, Component, Directive, ViewChild} from '@angular/core'; @Directive({ selector: 'child-directive', - standalone: false, }) -class ChildDirective {} +export class ChildDirective {} @Component({ selector: 'someCmp', templateUrl: 'someCmp.html', - standalone: false, }) -class SomeCmp implements AfterViewInit { +export class SomeCmp implements AfterViewInit { @ViewChild(ChildDirective) child!: ChildDirective; ngAfterViewInit() { diff --git a/packages/examples/core/di/ts/viewChildren/module.ts b/packages/examples/core/di/ts/viewChildren/module.ts index 2956ed99afc..cfdfc8bf4db 100644 --- a/packages/examples/core/di/ts/viewChildren/module.ts +++ b/packages/examples/core/di/ts/viewChildren/module.ts @@ -6,16 +6,6 @@ * found in the LICENSE file at https://angular.dev/license */ -import {NgModule} from '@angular/core'; -import {BrowserModule} from '@angular/platform-browser'; - -import {Pane, ViewChildrenComp} from './view_children_example'; - -@NgModule({ - imports: [BrowserModule], - declarations: [ViewChildrenComp, Pane], - bootstrap: [ViewChildrenComp], -}) -export class AppModule {} +import {ViewChildrenComp} from './view_children_example'; export {ViewChildrenComp as AppComponent}; diff --git a/packages/examples/core/di/ts/viewChildren/view_children_example.ts b/packages/examples/core/di/ts/viewChildren/view_children_example.ts index 9ddf202181c..daae6d79914 100644 --- a/packages/examples/core/di/ts/viewChildren/view_children_example.ts +++ b/packages/examples/core/di/ts/viewChildren/view_children_example.ts @@ -19,7 +19,6 @@ import { @Directive({ selector: 'pane', - standalone: false, }) export class Pane { id = input.required(); @@ -27,6 +26,7 @@ export class Pane { @Component({ selector: 'example-app', + imports: [Pane], template: ` @@ -38,7 +38,6 @@ export class Pane {
panes: {{ serializedPanes }}
`, - standalone: false, }) export class ViewChildrenComp implements AfterViewInit { @ViewChildren(Pane) panes!: QueryList; diff --git a/packages/examples/core/di/ts/viewChildren/view_children_howto.ts b/packages/examples/core/di/ts/viewChildren/view_children_howto.ts index 0f3b0a6e94b..a03e8400356 100644 --- a/packages/examples/core/di/ts/viewChildren/view_children_howto.ts +++ b/packages/examples/core/di/ts/viewChildren/view_children_howto.ts @@ -11,14 +11,12 @@ import {AfterViewInit, Component, Directive, QueryList, ViewChildren} from '@ang @Directive({ selector: 'child-directive', - standalone: false, }) class ChildDirective {} @Component({ selector: 'someCmp', templateUrl: 'someCmp.html', - standalone: false, }) class SomeCmp implements AfterViewInit { @ViewChildren(ChildDirective) viewChildren!: QueryList; diff --git a/packages/examples/core/main.ts b/packages/examples/core/main.ts index 87bd3173b54..fb2f5e64958 100644 --- a/packages/examples/core/main.ts +++ b/packages/examples/core/main.ts @@ -11,8 +11,19 @@ import 'zone.js/plugins/task-tracking'; // okd -import {platformBrowser} from '@angular/platform-browser'; +import {bootstrapApplication, provideProtractorTestingSupport} from '@angular/platform-browser'; +import {routes, TestsAppComponent} from './test_app_component'; +import {ApplicationConfig, provideZoneChangeDetection} from '@angular/core'; +import {provideRouter} from '@angular/router'; +import {provideAnimations} from '@angular/platform-browser/animations'; -import {TestsAppModule} from './test_module'; +const appConfig: ApplicationConfig = { + providers: [ + provideRouter(routes), + provideAnimations(), + provideZoneChangeDetection(), + provideProtractorTestingSupport(), + ], +}; -platformBrowser().bootstrapModule(TestsAppModule); +bootstrapApplication(TestsAppComponent, appConfig).catch((err) => console.error(err)); diff --git a/packages/examples/core/test_app_component.ts b/packages/examples/core/test_app_component.ts new file mode 100644 index 00000000000..f425400ac3d --- /dev/null +++ b/packages/examples/core/test_app_component.ts @@ -0,0 +1,33 @@ +/** + * @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 {Component} from '@angular/core'; +import {RouterOutlet, Routes} from '@angular/router'; + +import * as animationDslExample from './animation/ts/dsl/module'; +import * as diContentChildExample from './di/ts/contentChild/module'; +import * as diContentChildrenExample from './di/ts/contentChildren/module'; +import * as diViewChildExample from './di/ts/viewChild/module'; +import * as diViewChildrenExample from './di/ts/viewChildren/module'; +import * as testabilityWhenStableExample from './testability/ts/whenStable/module'; + +@Component({ + selector: 'example-app', + imports: [RouterOutlet], + template: '', +}) +export class TestsAppComponent {} + +export const routes: Routes = [ + {path: 'animation/dsl', component: animationDslExample.AppComponent}, + {path: 'di/contentChild', component: diContentChildExample.AppComponent}, + {path: 'di/contentChildren', component: diContentChildrenExample.AppComponent}, + {path: 'di/viewChild', component: diViewChildExample.AppComponent}, + {path: 'di/viewChildren', component: diViewChildrenExample.AppComponent}, + {path: 'testability/whenStable', component: testabilityWhenStableExample.AppComponent}, +]; diff --git a/packages/examples/core/test_module.ts b/packages/examples/core/test_module.ts deleted file mode 100644 index 2077de901f8..00000000000 --- a/packages/examples/core/test_module.ts +++ /dev/null @@ -1,50 +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 {Component, NgModule, provideZoneChangeDetection} from '@angular/core'; -import {RouterModule} from '@angular/router'; - -import * as animationDslExample from './animation/ts/dsl/module'; -import * as diContentChildExample from './di/ts/contentChild/module'; -import * as diContentChildrenExample from './di/ts/contentChildren/module'; -import * as diViewChildExample from './di/ts/viewChild/module'; -import * as diViewChildrenExample from './di/ts/viewChildren/module'; -import * as testabilityWhenStableExample from './testability/ts/whenStable/module'; - -@Component({ - selector: 'example-app', - template: '', - standalone: false, -}) -export class TestsAppComponent {} - -@NgModule({ - imports: [ - animationDslExample.AppModule, - diContentChildExample.AppModule, - diContentChildrenExample.AppModule, - diViewChildExample.AppModule, - diViewChildrenExample.AppModule, - testabilityWhenStableExample.AppModule, - - // Router configuration so that the individual e2e tests can load their - // app components. - RouterModule.forRoot([ - {path: 'animation/dsl', component: animationDslExample.AppComponent}, - {path: 'di/contentChild', component: diContentChildExample.AppComponent}, - {path: 'di/contentChildren', component: diContentChildrenExample.AppComponent}, - {path: 'di/viewChild', component: diViewChildExample.AppComponent}, - {path: 'di/viewChildren', component: diViewChildrenExample.AppComponent}, - {path: 'testability/whenStable', component: testabilityWhenStableExample.AppComponent}, - ]), - ], - declarations: [TestsAppComponent], - bootstrap: [TestsAppComponent], - providers: [provideZoneChangeDetection()], -}) -export class TestsAppModule {} diff --git a/packages/examples/core/testability/ts/whenStable/module.ts b/packages/examples/core/testability/ts/whenStable/module.ts index 35894ea5ccf..6e14ea825f1 100644 --- a/packages/examples/core/testability/ts/whenStable/module.ts +++ b/packages/examples/core/testability/ts/whenStable/module.ts @@ -5,4 +5,4 @@ * 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 */ -export {AppModule, StableTestCmp as AppComponent} from './testability_example'; +export {StableTestCmp as AppComponent} from './testability_example'; diff --git a/packages/examples/core/testability/ts/whenStable/testability_example.ts b/packages/examples/core/testability/ts/whenStable/testability_example.ts index 188de28984f..0d1fbbe7817 100644 --- a/packages/examples/core/testability/ts/whenStable/testability_example.ts +++ b/packages/examples/core/testability/ts/whenStable/testability_example.ts @@ -6,8 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import {Component, NgModule} from '@angular/core'; -import {BrowserModule} from '@angular/platform-browser'; +import {Component} from '@angular/core'; @Component({ selector: 'example-app', @@ -15,7 +14,6 @@ import {BrowserModule} from '@angular/platform-browser';
Status: {{ status }}
`, - standalone: false, }) export class StableTestCmp { status = 'none'; @@ -26,6 +24,3 @@ export class StableTestCmp { }, 5000); } } - -@NgModule({imports: [BrowserModule], declarations: [StableTestCmp], bootstrap: [StableTestCmp]}) -export class AppModule {} diff --git a/packages/examples/core/ts/bootstrap/bootstrap.ts b/packages/examples/core/ts/bootstrap/bootstrap.ts index 7a0c91184ab..fc3b6dde5c4 100644 --- a/packages/examples/core/ts/bootstrap/bootstrap.ts +++ b/packages/examples/core/ts/bootstrap/bootstrap.ts @@ -6,21 +6,17 @@ * found in the LICENSE file at https://angular.dev/license */ -import {Component, NgModule} from '@angular/core'; -import {BrowserModule, platformBrowser} from '@angular/platform-browser'; +import {Component} from '@angular/core'; +import {bootstrapApplication} from '@angular/platform-browser'; @Component({ selector: 'app-root', template: 'Hello {{ name }}!', - standalone: false, }) class MyApp { name: string = 'World'; } -@NgModule({imports: [BrowserModule], bootstrap: [MyApp]}) -class AppModule {} - export function main() { - platformBrowser().bootstrapModule(AppModule); + bootstrapApplication(MyApp); } diff --git a/packages/examples/core/ts/metadata/encapsulation.ts b/packages/examples/core/ts/metadata/encapsulation.ts index 910d3924709..d1b5040bf54 100644 --- a/packages/examples/core/ts/metadata/encapsulation.ts +++ b/packages/examples/core/ts/metadata/encapsulation.ts @@ -30,7 +30,6 @@ import {Component, ViewEncapsulation} from '@angular/core'; `, ], encapsulation: ViewEncapsulation.ShadowDom, - standalone: false, }) -class MyApp {} +export class MyApp {} // #enddocregion diff --git a/packages/examples/core/ts/metadata/metadata.ts b/packages/examples/core/ts/metadata/metadata.ts index 102cf9d71da..c966b0bd195 100644 --- a/packages/examples/core/ts/metadata/metadata.ts +++ b/packages/examples/core/ts/metadata/metadata.ts @@ -13,7 +13,6 @@ class CustomDirective {} @Component({ selector: 'greet', template: 'Hello {{name}}!', - standalone: false, }) class Greet { name: string = 'World'; @@ -23,7 +22,6 @@ class Greet { @Component({ selector: 'page', template: 'Title: {{title}}', - standalone: false, }) class Page { title: string; @@ -36,7 +34,6 @@ class Page { // #docregion attributeMetadata @Directive({ selector: 'input', - standalone: false, }) class InputAttrDirective { constructor(@Attribute('type') type: string) { @@ -47,7 +44,6 @@ class InputAttrDirective { @Directive({ selector: 'input', - standalone: false, }) class InputDirective { constructor() { @@ -57,7 +53,6 @@ class InputDirective { @Pipe({ name: 'lowercase', - standalone: false, }) class Lowercase { transform(v: string, args: any[]) { diff --git a/packages/examples/core/ts/pipes/pipeTransFormEx_module.ts b/packages/examples/core/ts/pipes/pipeTransFormEx_module.ts index 6bef0d0a9a1..a156457ce2c 100644 --- a/packages/examples/core/ts/pipes/pipeTransFormEx_module.ts +++ b/packages/examples/core/ts/pipes/pipeTransFormEx_module.ts @@ -6,9 +6,12 @@ * found in the LICENSE file at https://angular.dev/license */ -import {NgModule} from '@angular/core'; -import {TruncatePipe as SimpleTruncatePipe} from './simple_truncate'; +import {ApplicationConfig, provideZoneChangeDetection} from '@angular/core'; import {TruncatePipe} from './truncate'; +import {bootstrapApplication} from '@angular/platform-browser'; -@NgModule({declarations: [SimpleTruncatePipe, TruncatePipe]}) -export class TruncateModule {} +const appConfig: ApplicationConfig = { + providers: [provideZoneChangeDetection()], +}; + +bootstrapApplication(TruncatePipe, appConfig).catch((err) => console.error(err)); diff --git a/packages/examples/core/ts/pipes/simple_truncate.ts b/packages/examples/core/ts/pipes/simple_truncate.ts index 52665e9d83f..1abc936487a 100644 --- a/packages/examples/core/ts/pipes/simple_truncate.ts +++ b/packages/examples/core/ts/pipes/simple_truncate.ts @@ -10,7 +10,6 @@ import {Pipe, PipeTransform} from '@angular/core'; @Pipe({ name: 'truncate', - standalone: false, }) export class TruncatePipe implements PipeTransform { transform(value: string) { diff --git a/packages/examples/core/ts/pipes/truncate.ts b/packages/examples/core/ts/pipes/truncate.ts index 10bd278d188..0c3e894d097 100644 --- a/packages/examples/core/ts/pipes/truncate.ts +++ b/packages/examples/core/ts/pipes/truncate.ts @@ -10,7 +10,6 @@ import {Pipe, PipeTransform} from '@angular/core'; @Pipe({ name: 'truncate', - standalone: false, }) export class TruncatePipe implements PipeTransform { transform(value: string, length: number, symbol: string) { diff --git a/packages/examples/core/ts/prod_mode/my_component.ts b/packages/examples/core/ts/prod_mode/my_component.ts index 948e8d25e2b..ab2efecca46 100644 --- a/packages/examples/core/ts/prod_mode/my_component.ts +++ b/packages/examples/core/ts/prod_mode/my_component.ts @@ -11,6 +11,5 @@ import {Component} from '@angular/core'; @Component({ selector: 'my-component', template: '

My Component

', - standalone: false, }) export class MyComponent {} diff --git a/packages/examples/core/ts/prod_mode/prod_mode_example.ts b/packages/examples/core/ts/prod_mode/prod_mode_example.ts index ca8d3aa5d28..64f64afdf2c 100644 --- a/packages/examples/core/ts/prod_mode/prod_mode_example.ts +++ b/packages/examples/core/ts/prod_mode/prod_mode_example.ts @@ -6,14 +6,17 @@ * found in the LICENSE file at https://angular.dev/license */ -import {enableProdMode, NgModule} from '@angular/core'; -import {BrowserModule, platformBrowser} from '@angular/platform-browser'; - +import {enableProdMode} from '@angular/core'; +import {bootstrapApplication} from '@angular/platform-browser'; import {MyComponent} from './my_component'; enableProdMode(); -@NgModule({imports: [BrowserModule], declarations: [MyComponent], bootstrap: [MyComponent]}) -export class AppModule {} - -platformBrowser().bootstrapModule(AppModule); +bootstrapApplication(MyComponent, { + providers: [ + // Add your global providers here + // provideRouter(routes), + // provideHttpClient(), + // etc. + ], +}); From 7cc6af9ae709eb096a0b433c115a05a105935c9c Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Fri, 10 Oct 2025 20:17:32 -0500 Subject: [PATCH 26/57] docs: Add example Unhandled errors in Angular documentation (#64356) PR Close #64356 --- .../content/best-practices/error-handling.md | 24 +++++++++++++++++-- packages/core/src/error_handler.ts | 3 +++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/adev/src/content/best-practices/error-handling.md b/adev/src/content/best-practices/error-handling.md index 36dbb051776..e2086b8390c 100644 --- a/adev/src/content/best-practices/error-handling.md +++ b/adev/src/content/best-practices/error-handling.md @@ -16,13 +16,33 @@ Angular does _not_ catch errors inside of APIs that are called directly by your Angular catches _asynchronous_ errors from user promises or observables only when: -* There is an explicit contract for Angular to wait for and use the result of the asynchronous operation, and -* When errors are not presented in the return value or state. +- There is an explicit contract for Angular to wait for and use the result of the asynchronous operation, and +- When errors are not presented in the return value or state. For example, `AsyncPipe` and `PendingTasks.run` forward errors to the `ErrorHandler`, whereas `resource` presents the error in the `status` and `error` properties. Errors that Angular reports to the `ErrorHandler` are _unexpected_ errors. These errors may be unrecoverable or an indication that the state of the application is corrupted. Applications should provide error handling using `try` blocks or appropriate error handling operators (like `catchError` in RxJS) where the error occurs whenever possible rather than relying on the `ErrorHandler`, which is most frequently and appropriately used only as a mechanism to report potentially fatal errors to the error tracking and logging infrastructure. +```ts +export class GlobalErrorHandler implements ErrorHandler { + private readonly analyticsService = inject(AnalyticsService); + private readonly router = inject(Router); + + handleError(error: any) { + const url = this.router.url; + const errorMessage = error?.message ?? 'unknown'; + + this.analyticsService.trackEvent({ + eventName: 'exception', + description: `Screen: ${url} | ${errorMessage}`, + }); + + console.error(GlobalErrorHandler.name, { error }); + } +} + +``` + ### `TestBed` rethrows errors by default In many cases, `ErrorHandler` may only log errors and otherwise allow the application to continue running. In tests, however, you almost always want to surface these errors. Angular's `TestBed` rethrows unexpected errors to ensure that errors caught by the framework cannot be unintentionally missed or ignored. In rare circumstances, a test may specifically attempt to ensure errors do not cause the application to be unresponsive or crash. In these situations, you can [configure `TestBed` to _not_ rethrow application errors](api/core/testing/TestModuleMetadata#rethrowApplicationErrors) with `TestBed.configureTestingModule({rethrowApplicationErrors: false})`. diff --git a/packages/core/src/error_handler.ts b/packages/core/src/error_handler.ts index de60d74cf30..8e547a3d83f 100644 --- a/packages/core/src/error_handler.ts +++ b/packages/core/src/error_handler.ts @@ -45,6 +45,9 @@ import {DestroyRef} from './linker/destroy_ref'; * ``` * * @publicApi + * + * @see [Unhandled errors in Angular](best-practices/error-handling) + * */ export class ErrorHandler { /** From c55f9b2c3b4b9f2dff0e6a0ddc8be4b5ece5dbf1 Mon Sep 17 00:00:00 2001 From: Oswin Sutton Date: Sat, 11 Oct 2025 11:02:39 +0800 Subject: [PATCH 27/57] docs: add missing code formatting around @defer in templates/defer guide (#64357) PR Close #64357 --- adev/src/content/guide/templates/defer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adev/src/content/guide/templates/defer.md b/adev/src/content/guide/templates/defer.md index badcf7670ad..82382369aa7 100644 --- a/adev/src/content/guide/templates/defer.md +++ b/adev/src/content/guide/templates/defer.md @@ -35,7 +35,7 @@ Angular's compiler produces a [dynamic import](https://developer.mozilla.org/en- This is the primary block that defines the section of content that is lazily loaded. It is not rendered initially– deferred content loads and renders once the specified [trigger](/guide/templates/defer#triggers) occurs or the `when` condition is met. -By default, a @defer block is triggered when the browser state becomes [idle](/guide/templates/defer#idle). +By default, a `@defer` block is triggered when the browser state becomes [idle](/guide/templates/defer#idle). ```angular-html @defer { From 9f49b2ad246b73fa26be8244c2ca8a04b47c062a Mon Sep 17 00:00:00 2001 From: aparziale Date: Sat, 11 Oct 2025 22:50:14 +0200 Subject: [PATCH 28/57] docs: fix typo in route-guards guide (#64366) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix typo in route-guards guide: “useres” → “users” Fixes #64363 PR Close #64366 --- adev/src/content/guide/routing/route-guards.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adev/src/content/guide/routing/route-guards.md b/adev/src/content/guide/routing/route-guards.md index b25e9eb480e..774e5f91296 100644 --- a/adev/src/content/guide/routing/route-guards.md +++ b/adev/src/content/guide/routing/route-guards.md @@ -187,7 +187,7 @@ const routes: Routes = [ children: [ // /users/list - PROTECTED { path: 'list', component: UserListComponent }, - // /useres/detail/:id - PROTECTED + // /users/detail/:id - PROTECTED { path: 'detail/:id', component: UserDetailComponent } ] }, From 56270c36e5ea5f3c7bdbf508ac736f8899e5fcfd Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Sun, 12 Oct 2025 13:29:45 -0500 Subject: [PATCH 29/57] docs: Documents utility functions for narrowing form control types (#64373) PR Close #64373 --- .../src/content/guide/forms/reactive-forms.md | 27 +++++++++++++++++++ packages/forms/src/model/form_array.ts | 2 ++ packages/forms/src/model/form_control.ts | 2 ++ packages/forms/src/model/form_group.ts | 4 +++ 4 files changed, 35 insertions(+) diff --git a/adev/src/content/guide/forms/reactive-forms.md b/adev/src/content/guide/forms/reactive-forms.md index 6bc7c784cef..8c091c0174c 100644 --- a/adev/src/content/guide/forms/reactive-forms.md +++ b/adev/src/content/guide/forms/reactive-forms.md @@ -490,6 +490,33 @@ control.events.subscribe((e) => { NOTE: On value change, the emit happens right after a value of this control is updated. The value of a parent control (for example if this FormControl is a part of a FormGroup) is updated later, so accessing a value of a parent control (using the `value` property) from the callback of this event might result in getting a value that has not been updated yet. Subscribe to the `events` of the parent control instead. +## Utility functions for narrowing form control types + +Angular provides four utility functions that help determine the concrete type of an `AbstractControl`. These functions act as **type guards** and narrow the control type when they return `true`, which lets you safely access subtype-specific properties inside the same block. + +| Utility function | Details | +| :--------------- | :-------------------------------------------------- | +| `isFormControl` | Returns `true` when the control is a `FormControl`. | +| `isFormGroup` | Returns `true` when the control is a `FormGroup` | +| `isFormRecord` | Returns `true` when the control is a `FormRecord` | +| `isFormArray` | Returns `true` when the control is a `FormArray` | + +These helpers are particularly useful in **custom validators**, where the function signature receives an `AbstractControl`, but the logic is intended for a specific control kind. + +```ts +import { AbstractControl, isFormArray } from '@angular/forms'; + +export function positiveValues(control: AbstractControl) { + if (!isFormArray(control)) { + return null; // Not a FormArray: validator is not applicable. + } + + // Safe to access FormArray-specific API after narrowing. + const hasNegative = control.controls.some(c => c.value < 0); + return hasNegative ? { positiveValues: true } : null; +} +``` + ## Reactive forms API summary The following table lists the base classes and services used to create and manage reactive form controls. diff --git a/packages/forms/src/model/form_array.ts b/packages/forms/src/model/form_array.ts index 22649bbb98d..a9a5ea33bdb 100644 --- a/packages/forms/src/model/form_array.ts +++ b/packages/forms/src/model/form_array.ts @@ -582,6 +582,8 @@ export const UntypedFormArray: UntypedFormArrayCtor = FormArray; * @description * Asserts that the given control is an instance of `FormArray` * + * @see [Utility functions for narrowing form control types](guide/forms/reactive-forms#utility-functions-for-narrowing-form-control-types) + * * @publicApi */ export const isFormArray = (control: unknown): control is FormArray => control instanceof FormArray; diff --git a/packages/forms/src/model/form_control.ts b/packages/forms/src/model/form_control.ts index 0aa96543a58..1caeec10121 100644 --- a/packages/forms/src/model/form_control.ts +++ b/packages/forms/src/model/form_control.ts @@ -621,6 +621,8 @@ export const UntypedFormControl: UntypedFormControlCtor = FormControl; * @description * Asserts that the given control is an instance of `FormControl` * + * @see [Utility functions for narrowing form control types](guide/forms/reactive-forms#utility-functions-for-narrowing-form-control-types) + * * @publicApi */ export const isFormControl = (control: unknown): control is FormControl => diff --git a/packages/forms/src/model/form_group.ts b/packages/forms/src/model/form_group.ts index 1822ef0fbce..49457405a92 100644 --- a/packages/forms/src/model/form_group.ts +++ b/packages/forms/src/model/form_group.ts @@ -709,6 +709,8 @@ export const UntypedFormGroup: UntypedFormGroupCtor = FormGroup; * @description * Asserts that the given control is an instance of `FormGroup` * + * @see [Utility functions for narrowing form control types](guide/forms/reactive-forms#utility-functions-for-narrowing-form-control-types) + * * @publicApi */ export const isFormGroup = (control: unknown): control is FormGroup => control instanceof FormGroup; @@ -827,6 +829,8 @@ export interface FormRecord { * @description * Asserts that the given control is an instance of `FormRecord` * + * @see [Utility functions for narrowing form control types](guide/forms/reactive-forms#utility-functions-for-narrowing-form-control-types) + * * @publicApi */ export const isFormRecord = (control: unknown): control is FormRecord => From 897d25cf9c2ba9734746cfbbc0ed55b3e7388674 Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Sun, 12 Oct 2025 16:26:25 -0500 Subject: [PATCH 30/57] docs: update router behavior to correct syntax highlighting (#64375) PR Close #64375 --- adev/src/content/guide/routing/customizing-route-behavior.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adev/src/content/guide/routing/customizing-route-behavior.md b/adev/src/content/guide/routing/customizing-route-behavior.md index 6ae475fc59d..94ac76f94d2 100644 --- a/adev/src/content/guide/routing/customizing-route-behavior.md +++ b/adev/src/content/guide/routing/customizing-route-behavior.md @@ -339,7 +339,7 @@ export const routes: Routes = [ The component receives the extracted parameters through route inputs: -```ts +```angular-ts import { Component, input, inject } from '@angular/core'; import { resource } from '@angular/core'; From bbc0f81affd9ed0bb63d1b722dbdf0aae9bf2f37 Mon Sep 17 00:00:00 2001 From: Matthieu Riegler Date: Mon, 13 Oct 2025 11:43:15 +0200 Subject: [PATCH 31/57] docs(docs-infra): Add user to the open files (#64380) fixes #64345 PR Close #64380 --- .../tutorials/learn-angular/steps/13-define-a-route/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adev/src/content/tutorials/learn-angular/steps/13-define-a-route/config.json b/adev/src/content/tutorials/learn-angular/steps/13-define-a-route/config.json index fe8e6e65460..61627a3ec72 100644 --- a/adev/src/content/tutorials/learn-angular/steps/13-define-a-route/config.json +++ b/adev/src/content/tutorials/learn-angular/steps/13-define-a-route/config.json @@ -1,5 +1,5 @@ { - "openFiles": ["src/app/app.routes.ts", "src/app/home/home.ts"], + "openFiles": ["src/app/app.routes.ts", "src/app/home/home.ts", "src/app/user/user.ts"], "title": "Define a route", "type": "editor" } From 09b37d30c68f55a410e66522390b7f27a06bfd8c Mon Sep 17 00:00:00 2001 From: Shuaib Hasan Akib Date: Mon, 13 Oct 2025 17:05:17 +0600 Subject: [PATCH 32/57] docs: update MDN reference links to main documentation pages (#64383) Replaces old deep-linked MDN tutorial URLs with top-level documentation links for JavaScript, HTML, and CSS to provide more general and reliable references. PR Close #64383 --- adev/src/content/tools/cli/setup-local.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/adev/src/content/tools/cli/setup-local.md b/adev/src/content/tools/cli/setup-local.md index 87a87af9f5d..5bf15e8f1e4 100644 --- a/adev/src/content/tools/cli/setup-local.md +++ b/adev/src/content/tools/cli/setup-local.md @@ -16,9 +16,9 @@ You don't need to set up your local environment until you're ready. To use Angular CLI, you should be familiar with the following: - - - + + + You should also be familiar with usage of command line interface (CLI) tools and have a general understanding of command shells. From 554573e5248a72f73df1468e992da08ce5f6112d Mon Sep 17 00:00:00 2001 From: aparziale Date: Mon, 13 Oct 2025 12:24:09 +0200 Subject: [PATCH 33/57] fix(migrations): migrating input with more than 1 usage in a method (#64367) When the migration command was run for inputs, if the input had more than one reference in a method the migration would generate incorrect code Fixes #63018 PR Close #64367 --- .../helpers/standard_reference.ts | 59 ++++++++++++++++++- .../multiple_references_in_method.ts | 12 ++++ .../signal-migration/test/golden.txt | 15 +++++ .../test/golden_best_effort.txt | 15 +++++ 4 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 packages/core/schematics/migrations/signal-migration/test/golden-test/multiple_references_in_method.ts diff --git a/packages/core/schematics/migrations/signal-migration/src/passes/reference_migration/helpers/standard_reference.ts b/packages/core/schematics/migrations/signal-migration/src/passes/reference_migration/helpers/standard_reference.ts index cc073e50d3d..180b295ca7e 100644 --- a/packages/core/schematics/migrations/signal-migration/src/passes/reference_migration/helpers/standard_reference.ts +++ b/packages/core/schematics/migrations/signal-migration/src/passes/reference_migration/helpers/standard_reference.ts @@ -11,7 +11,7 @@ import {analyzeControlFlow, ControlFlowAnalysisNode} from '../../../flow_analysi import {ProgramInfo, projectFile, Replacement, TextUpdate} from '../../../../../../utils/tsurge'; import {traverseAccess} from '../../../utils/traverse_access'; import {UniqueNamesGenerator} from '../../../utils/unique_names'; -import {createNewBlockToInsertVariable} from '../helpers/create_block_arrow_function'; +import {createNewBlockToInsertVariable} from './create_block_arrow_function'; import assert from 'assert'; export interface NarrowableTsReferences { @@ -123,6 +123,23 @@ export function migrateStandardTsReference( replacements.push( ...createNewBlockToInsertVariable(parent, filePath, temporaryVariableStr), ); + } else if (shouldInsertAtMethodStart(reference, recommendedNode, referenceNodeInBlock)) { + const blockNode = recommendedNode as ts.Block; + const firstStatement = blockNode.statements[0]; + const leadingSpace = firstStatement + ? ts.getLineAndCharacterOfPosition(sf, firstStatement.getStart()) + : ts.getLineAndCharacterOfPosition(sf, referenceNodeInBlock.getStart()); + + replacements.push( + new Replacement( + filePath, + new TextUpdate({ + position: firstStatement.getStart(), + end: firstStatement.getStart(), + toInsert: `${temporaryVariableStr}\n${' '.repeat(leadingSpace.character)}`, + }), + ), + ); } else { const leadingSpace = ts.getLineAndCharacterOfPosition(sf, referenceNodeInBlock.getStart()); @@ -151,3 +168,43 @@ export function migrateStandardTsReference( } } } + +/** + * Determines if a temporary variable should be inserted at the start of a method. + * + * This function performs several checks to ensure it's safe to insert a temporary variable: + * 1. Verifies the recommended node is a method declaration block + * 2. Ensures all references are contained within the method body + * 3. Confirms the reference node is the first statement in the method + * 4. Validates the reference node is an expression statement with an assignment operation + */ +function shouldInsertAtMethodStart( + references: NarrowableTsReferences, + recommendedNode: ts.Node, + referenceNodeInBlock: ts.Node, +): boolean { + if (!ts.isBlock(recommendedNode) || !ts.isMethodDeclaration(recommendedNode.parent)) { + return false; + } + + const methodBody = recommendedNode; + const allReferencesInMethod = references.accesses.every((access) => { + let current: ts.Node | undefined = access; + while (current && current !== methodBody) { + current = current.parent; + } + return current === methodBody; + }); + + if (!allReferencesInMethod) { + return false; + } + + return ( + methodBody.statements.length > 0 && + ts.isExpressionStatement(referenceNodeInBlock) && + methodBody.statements[0] === referenceNodeInBlock && + ts.isBinaryExpression(referenceNodeInBlock.expression) && + referenceNodeInBlock.expression.operatorToken.kind === ts.SyntaxKind.EqualsToken + ); +} diff --git a/packages/core/schematics/migrations/signal-migration/test/golden-test/multiple_references_in_method.ts b/packages/core/schematics/migrations/signal-migration/test/golden-test/multiple_references_in_method.ts new file mode 100644 index 00000000000..d7ced2e8fcc --- /dev/null +++ b/packages/core/schematics/migrations/signal-migration/test/golden-test/multiple_references_in_method.ts @@ -0,0 +1,12 @@ +// tslint:disable + +import {Input} from '@angular/core'; + +export class TestMigrationComponent { + @Input() public model: any; + + public onSaveClick(): void { + this.model.requisitionId = 145; + this.model.comment = 'value'; + } +} diff --git a/packages/core/schematics/migrations/signal-migration/test/golden.txt b/packages/core/schematics/migrations/signal-migration/test/golden.txt index 4f228814b86..d2eeac5272f 100644 --- a/packages/core/schematics/migrations/signal-migration/test/golden.txt +++ b/packages/core/schematics/migrations/signal-migration/test/golden.txt @@ -848,6 +848,21 @@ class ModifierScenarios { @CustomDecorator() protected readonly usingCustomDecorator = input(true); } +@@@@@@ multiple_references_in_method.ts @@@@@@ + +// tslint:disable + +import {input} from '@angular/core'; + +export class TestMigrationComponent { + public readonly model = input(); + + public onSaveClick(): void { + const model = this.model(); + model.requisitionId = 145; + model.comment = 'value'; + } +} @@@@@@ mutate.ts @@@@@@ // tslint:disable diff --git a/packages/core/schematics/migrations/signal-migration/test/golden_best_effort.txt b/packages/core/schematics/migrations/signal-migration/test/golden_best_effort.txt index 828b5df2d86..233e65c939e 100644 --- a/packages/core/schematics/migrations/signal-migration/test/golden_best_effort.txt +++ b/packages/core/schematics/migrations/signal-migration/test/golden_best_effort.txt @@ -815,6 +815,21 @@ class ModifierScenarios { @CustomDecorator() protected readonly usingCustomDecorator = input(true); } +@@@@@@ multiple_references_in_method.ts @@@@@@ + +// tslint:disable + +import {input} from '@angular/core'; + +export class TestMigrationComponent { + public readonly model = input(); + + public onSaveClick(): void { + const model = this.model(); + model.requisitionId = 145; + model.comment = 'value'; + } +} @@@@@@ mutate.ts @@@@@@ // tslint:disable From a5a6d3f85260533ec0937f0460129eb9ffdb2c91 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sun, 12 Oct 2025 07:05:52 +0000 Subject: [PATCH 34/57] build: update github/codeql-action action to v3.30.8 (#64371) See associated pull request for more information. PR Close #64371 --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 355d80362aa..0ad1f871dff 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -47,6 +47,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@a8d1ac45b9a34d11fe398d5503176af0d06b303e # v3.30.7 + uses: github/codeql-action/upload-sarif@755f44910c12a3d7ca0d8c6e42c048b3362f7cec # v3.30.8 with: sarif_file: results.sarif From 9cbe5b650a950f1a819435c14fd638b817887274 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sat, 11 Oct 2025 05:11:11 +0000 Subject: [PATCH 35/57] build: update pnpm to v10.18.2 (#64359) See associated pull request for more information. PR Close #64359 --- integration/cli-hello-world-ivy-i18n/package.json | 2 +- integration/cli-hello-world-lazy/package.json | 2 +- integration/cli-hello-world/package.json | 2 +- integration/cli-signal-inputs/package.json | 2 +- integration/defer/package.json | 2 +- integration/legacy-animations-async/package.json | 2 +- integration/legacy-animations/package.json | 2 +- integration/ng-add-localize/package.json | 2 +- integration/ng_elements/package.json | 2 +- integration/ng_update/package.json | 2 +- integration/no_ts_linker/package.json | 2 +- integration/nodenext_resolution/package.json | 2 +- integration/platform-server-hydration/package.json | 2 +- integration/platform-server-zoneless/package.json | 2 +- integration/platform-server/package.json | 2 +- integration/service-worker-schema/package.json | 2 +- integration/side-effects/package.json | 2 +- integration/standalone-bootstrap/package.json | 2 +- integration/terser/package.json | 2 +- integration/trusted-types/package.json | 2 +- integration/typings_test_rxjs7/package.json | 2 +- integration/typings_test_ts58/package.json | 2 +- integration/typings_test_ts59/package.json | 2 +- package.json | 4 ++-- 24 files changed, 25 insertions(+), 25 deletions(-) diff --git a/integration/cli-hello-world-ivy-i18n/package.json b/integration/cli-hello-world-ivy-i18n/package.json index d2fea628b64..b26f4b9eb4f 100644 --- a/integration/cli-hello-world-ivy-i18n/package.json +++ b/integration/cli-hello-world-ivy-i18n/package.json @@ -42,5 +42,5 @@ "ts-node": "^10.9.1", "typescript": "5.9.2" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/cli-hello-world-lazy/package.json b/integration/cli-hello-world-lazy/package.json index f2b48cfdddb..e403871da2d 100644 --- a/integration/cli-hello-world-lazy/package.json +++ b/integration/cli-hello-world-lazy/package.json @@ -27,5 +27,5 @@ "ts-node": "^10.9.1", "typescript": "5.9.2" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/cli-hello-world/package.json b/integration/cli-hello-world/package.json index a81b3c3b8b6..bb81c07acdb 100644 --- a/integration/cli-hello-world/package.json +++ b/integration/cli-hello-world/package.json @@ -32,5 +32,5 @@ "ts-node": "^10.9.1", "typescript": "5.9.2" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/cli-signal-inputs/package.json b/integration/cli-signal-inputs/package.json index b760a0a5399..2b49abe27f7 100644 --- a/integration/cli-signal-inputs/package.json +++ b/integration/cli-signal-inputs/package.json @@ -10,7 +10,7 @@ "lint": "ng lint", "e2e": "ng e2e --port 0" }, - "packageManager": "pnpm@10.18.1", + "packageManager": "pnpm@10.18.2", "private": true, "dependencies": { "@angular/animations": "link:./in-existing-linked-by-bazel", diff --git a/integration/defer/package.json b/integration/defer/package.json index 3d0b1c9df2f..11664b64db3 100644 --- a/integration/defer/package.json +++ b/integration/defer/package.json @@ -30,5 +30,5 @@ "ts-node": "10.9.1", "typescript": "5.9.2" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/legacy-animations-async/package.json b/integration/legacy-animations-async/package.json index 70eace46296..646c855384c 100644 --- a/integration/legacy-animations-async/package.json +++ b/integration/legacy-animations-async/package.json @@ -30,5 +30,5 @@ "ts-node": "^10.9.1", "typescript": "5.9.2" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/legacy-animations/package.json b/integration/legacy-animations/package.json index 324f30d03aa..e81ced04206 100644 --- a/integration/legacy-animations/package.json +++ b/integration/legacy-animations/package.json @@ -40,5 +40,5 @@ "ts-node": "^10.9.1", "typescript": "5.9.2" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/ng-add-localize/package.json b/integration/ng-add-localize/package.json index fb0660cf773..353d308857d 100644 --- a/integration/ng-add-localize/package.json +++ b/integration/ng-add-localize/package.json @@ -27,5 +27,5 @@ "@types/node": "^20.14.8", "typescript": "5.9.2" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/ng_elements/package.json b/integration/ng_elements/package.json index 124d1a1a026..07a188438e7 100644 --- a/integration/ng_elements/package.json +++ b/integration/ng_elements/package.json @@ -33,5 +33,5 @@ "protractor": "protractor e2e/protractor.config.js" }, "private": true, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/ng_update/package.json b/integration/ng_update/package.json index acdb1353c08..7a351c3a6d8 100644 --- a/integration/ng_update/package.json +++ b/integration/ng_update/package.json @@ -21,5 +21,5 @@ "typescript": "5.9.2", "zone.js": "0.15.1" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/no_ts_linker/package.json b/integration/no_ts_linker/package.json index 3eaf630996a..9054a94da34 100644 --- a/integration/no_ts_linker/package.json +++ b/integration/no_ts_linker/package.json @@ -13,5 +13,5 @@ "scripts": { "test": "node ./test.mjs" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/nodenext_resolution/package.json b/integration/nodenext_resolution/package.json index b98ff166c5d..f0c2fe1bb28 100644 --- a/integration/nodenext_resolution/package.json +++ b/integration/nodenext_resolution/package.json @@ -27,5 +27,5 @@ "scripts": { "test": "tsc" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/platform-server-hydration/package.json b/integration/platform-server-hydration/package.json index 7ce18d5e3ad..14748333bf5 100644 --- a/integration/platform-server-hydration/package.json +++ b/integration/platform-server-hydration/package.json @@ -39,5 +39,5 @@ "ts-node": "^10.9.1", "typescript": "5.9.2" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/platform-server-zoneless/package.json b/integration/platform-server-zoneless/package.json index cb8eec051d7..6bb0e24c734 100644 --- a/integration/platform-server-zoneless/package.json +++ b/integration/platform-server-zoneless/package.json @@ -43,5 +43,5 @@ "ts-node": "^10.9.1", "typescript": "5.9.2" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/platform-server/package.json b/integration/platform-server/package.json index 594fb95b1ac..cdf176f42ad 100644 --- a/integration/platform-server/package.json +++ b/integration/platform-server/package.json @@ -47,5 +47,5 @@ "ts-node": "^10.9.1", "typescript": "5.9.2" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/service-worker-schema/package.json b/integration/service-worker-schema/package.json index 9e00bd2c52e..4bd72b4daf9 100644 --- a/integration/service-worker-schema/package.json +++ b/integration/service-worker-schema/package.json @@ -13,5 +13,5 @@ "rxjs": "^7.0.0", "zone.js": "0.15.1" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/side-effects/package.json b/integration/side-effects/package.json index 3adb87528bd..a89698164fa 100644 --- a/integration/side-effects/package.json +++ b/integration/side-effects/package.json @@ -16,5 +16,5 @@ "@angular/router": "link:./in-existing-linked-by-bazel", "check-side-effects": "0.0.23" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/standalone-bootstrap/package.json b/integration/standalone-bootstrap/package.json index 20567d5209b..b12f661db55 100644 --- a/integration/standalone-bootstrap/package.json +++ b/integration/standalone-bootstrap/package.json @@ -31,5 +31,5 @@ "ts-node": "^10.9.1", "typescript": "5.9.2" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/terser/package.json b/integration/terser/package.json index 8f460ccc8ee..31071fa5146 100644 --- a/integration/terser/package.json +++ b/integration/terser/package.json @@ -14,5 +14,5 @@ "typescript": "5.9.2", "zone.js": "0.15.1" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/trusted-types/package.json b/integration/trusted-types/package.json index bc3c3558402..d34d8d64542 100644 --- a/integration/trusted-types/package.json +++ b/integration/trusted-types/package.json @@ -42,5 +42,5 @@ "ts-node": "^10.9.1", "typescript": "5.9.2" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/typings_test_rxjs7/package.json b/integration/typings_test_rxjs7/package.json index b8f7ce399df..2fbb60a778e 100644 --- a/integration/typings_test_rxjs7/package.json +++ b/integration/typings_test_rxjs7/package.json @@ -26,5 +26,5 @@ "scripts": { "test": "tsc" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/typings_test_ts58/package.json b/integration/typings_test_ts58/package.json index 708335a0b2c..49667cfa2e2 100644 --- a/integration/typings_test_ts58/package.json +++ b/integration/typings_test_ts58/package.json @@ -26,5 +26,5 @@ "scripts": { "test": "tsc" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/integration/typings_test_ts59/package.json b/integration/typings_test_ts59/package.json index fb0946eed42..b9c0c45ee79 100644 --- a/integration/typings_test_ts59/package.json +++ b/integration/typings_test_ts59/package.json @@ -26,5 +26,5 @@ "scripts": { "test": "tsc" }, - "packageManager": "pnpm@10.18.1" + "packageManager": "pnpm@10.18.2" } diff --git a/package.json b/package.json index aba81c23808..bc18c3b3cd3 100644 --- a/package.json +++ b/package.json @@ -6,11 +6,11 @@ "homepage": "https://github.com/angular/angular", "bugs": "https://github.com/angular/angular/issues", "license": "MIT", - "packageManager": "pnpm@10.18.1", + "packageManager": "pnpm@10.18.2", "engines": { "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.18.1" + "pnpm": "10.18.2" }, "repository": { "type": "git", From b4b19b60af9053674a75f4da89be208d3f9c3b88 Mon Sep 17 00:00:00 2001 From: Matthieu Riegler Date: Thu, 9 Oct 2025 22:42:33 +0200 Subject: [PATCH 36/57] refactor(compiler): Improve pipe in track expression error (#64321) Throw a parse error for a better context awareness. fixes #64316 PR Close #64321 --- .../test/ngtsc/template_typecheck_spec.ts | 4 +-- .../compiler/src/render3/r3_control_flow.ts | 28 ++++++++++++++++++- .../render3/r3_template_transform_spec.ts | 6 ++++ 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/packages/compiler-cli/test/ngtsc/template_typecheck_spec.ts b/packages/compiler-cli/test/ngtsc/template_typecheck_spec.ts index 7c067b35b83..ab09babcefd 100644 --- a/packages/compiler-cli/test/ngtsc/template_typecheck_spec.ts +++ b/packages/compiler-cli/test/ngtsc/template_typecheck_spec.ts @@ -6408,9 +6408,7 @@ suppress const diags = env.driveDiagnostics(); expect(diags.length).toBe(1); - expect(diags[0].messageText).toContain( - 'Error: Illegal State: Pipes are not allowed in this context', - ); + expect(diags[0].messageText).toContain('Cannot use pipes in track expressions'); }); it('should allow nullable values in loop expression', () => { diff --git a/packages/compiler/src/render3/r3_control_flow.ts b/packages/compiler/src/render3/r3_control_flow.ts index f58628fedd1..6cecaa91c47 100644 --- a/packages/compiler/src/render3/r3_control_flow.ts +++ b/packages/compiler/src/render3/r3_control_flow.ts @@ -6,7 +6,13 @@ * found in the LICENSE file at https://angular.dev/license */ -import {ASTWithSource, EmptyExpr} from '../expression_parser/ast'; +import { + ASTWithSource, + EmptyExpr, + BindingPipe, + RecursiveAstVisitor, + AST, +} from '../expression_parser/ast'; import * as html from '../ml_parser/ast'; import {ParseError, ParseSourceSpan} from '../parse_util'; import {BindingParser} from '../template_parser/binding_parser'; @@ -195,6 +201,7 @@ export function createForLoop( ast.sourceSpan.start, endSpan?.end ?? ast.sourceSpan.end, ); + validateTrackByExpression(params.trackBy.expression, params.trackBy.keywordSpan, errors); node = new t.ForLoopBlock( params.itemName, params.expression, @@ -396,6 +403,18 @@ function parseForLoopParameters( return result; } +function validateTrackByExpression( + expression: ASTWithSource, + parseSourceSpan: ParseSourceSpan, + errors: ParseError[], +): void { + const visitor = new PipeVisitor(); + expression.ast.visit(visitor); + if (visitor.hasPipe) { + errors.push(new ParseError(parseSourceSpan, 'Cannot use pipes in track expressions')); + } +} + /** Parses the `let` parameter of a `for` loop block. */ function parseLetParameter( sourceSpan: ParseSourceSpan, @@ -697,3 +716,10 @@ function stripOptionalParentheses(param: html.BlockParameter, errors: ParseError return expression.slice(start, end); } + +class PipeVisitor extends RecursiveAstVisitor { + hasPipe = false; + override visitPipe(): any { + this.hasPipe = true; + } +} diff --git a/packages/compiler/test/render3/r3_template_transform_spec.ts b/packages/compiler/test/render3/r3_template_transform_spec.ts index 8e96ebbc8f6..7ca0668218a 100644 --- a/packages/compiler/test/render3/r3_template_transform_spec.ts +++ b/packages/compiler/test/render3/r3_template_transform_spec.ts @@ -2202,6 +2202,12 @@ describe('R3 template transform', () => { ); }); + it('should report a pipe in a track expression', () => { + expect(() => parse(`@for (item of items; track item.id | json) {}`)).toThrowError( + /Cannot use pipes in track expressions/, + ); + }); + it('should report an empty `let` parameter', () => { expect(() => parse(`@for (item of items.foo.bar; track item.id; let ) {}`)).toThrowError( /Invalid @for loop "let" parameter. Parameter should match the pattern " = "/, From 51066cc0779cf1647f63281a534e737b980e47e6 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 13 Oct 2025 15:33:39 +0000 Subject: [PATCH 37/57] ci: remove `cache-node-modules` from `checkout-and-setup-node` (#64387) This option no longer exists and the new default is to cache the PNPM store. PR Close #64387 --- .github/workflows/ci.yml | 2 -- .github/workflows/manual.yml | 2 -- 2 files changed, 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 55907891b69..70d9488d0d9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -125,8 +125,6 @@ jobs: steps: - name: Initialize environment uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - with: - cache-node-modules: true - name: Setup Bazel uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml index afa0136412d..c646a56a6a4 100644 --- a/.github/workflows/manual.yml +++ b/.github/workflows/manual.yml @@ -14,8 +14,6 @@ jobs: steps: - name: Initialize environment uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - with: - cache-node-modules: true - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel From e54f41e43a676b216a39396a44b6a626c58b6387 Mon Sep 17 00:00:00 2001 From: Oliver Lang Date: Mon, 13 Oct 2025 18:31:50 +0200 Subject: [PATCH 38/57] docs: improve clarity of self-closing tag migration example (#64388) Replaces inline comments with structured Before and After sections to enhance readability and consistency. This helps developers better understand the transformation from non-self-closing to self-closing tags during migration. PR Close #64388 --- .../src/content/reference/migrations/self-closing-tags.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/adev/src/content/reference/migrations/self-closing-tags.md b/adev/src/content/reference/migrations/self-closing-tags.md index d8a10300738..dd834f9818c 100644 --- a/adev/src/content/reference/migrations/self-closing-tags.md +++ b/adev/src/content/reference/migrations/self-closing-tags.md @@ -17,10 +17,14 @@ ng generate @angular/core:self-closing-tag - - + + +#### After + + + From f23df716a83b1b4ad155b3030073882bde0dfb46 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Mon, 13 Oct 2025 17:06:21 +0000 Subject: [PATCH 39/57] build: update symbol extractor tests to stabalize the order of the symbols listed (#64389) Update to ensure that the symbols in the list of extracted symbols is consistent even when multiple bundle files are extracted from. PR Close #64389 --- .../core/test/bundling/defer/bundle.golden_symbols.json | 1 + tools/symbol-extractor/cli.mts | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/core/test/bundling/defer/bundle.golden_symbols.json b/packages/core/test/bundling/defer/bundle.golden_symbols.json index 25c0ed17076..a5d774d9ac4 100644 --- a/packages/core/test/bundling/defer/bundle.golden_symbols.json +++ b/packages/core/test/bundling/defer/bundle.golden_symbols.json @@ -111,6 +111,7 @@ "DeferBlockBehavior", "DeferBlockInternalState", "DeferBlockState", + "DeferComponent", "DeferDependenciesLoadingState", "DestroyRef", "EFFECTS", diff --git a/tools/symbol-extractor/cli.mts b/tools/symbol-extractor/cli.mts index 64b8c2c3c6d..cca80f10288 100644 --- a/tools/symbol-extractor/cli.mts +++ b/tools/symbol-extractor/cli.mts @@ -86,8 +86,10 @@ function main(argv: [string, string, string] | [string, string]): boolean { if (doUpdate) { const newGolden: GoldenFile = { chunks: { - main: eagerlyLoadedSymbols, - lazy: lazySymbols, + // Ensure stability of symbol lists, we need to make sure we resort the lists for because + // the ordering of glob results for the bundle files isn't guaranteed. + main: eagerlyLoadedSymbols.sort(), + lazy: lazySymbols.sort(), }, }; From 0c58b5f5e3a4217a3be0293b235e62d01d24696f Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 13 Oct 2025 18:11:04 +0000 Subject: [PATCH 40/57] build: update cross-repo angular dependencies (#64391) See associated pull request for more information. PR Close #64391 --- .github/actions/saucelabs-legacy/action.yml | 4 +- .github/workflows/adev-preview-build.yml | 8 +- .github/workflows/adev-preview-deploy.yml | 2 +- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/benchmark-compare.yml | 2 +- .github/workflows/ci.yml | 44 +- .github/workflows/dev-infra.yml | 4 +- .github/workflows/google-internal-tests.yml | 2 +- .github/workflows/manual.yml | 8 +- .github/workflows/merge-ready-status.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 34 +- MODULE.bazel | 2 +- MODULE.bazel.lock | 2 - package.json | 2 +- pnpm-lock.yaml | 438 +++++++++--------- 16 files changed, 280 insertions(+), 282 deletions(-) diff --git a/.github/actions/saucelabs-legacy/action.yml b/.github/actions/saucelabs-legacy/action.yml index 41307b92d39..0a964a9797e 100644 --- a/.github/actions/saucelabs-legacy/action.yml +++ b/.github/actions/saucelabs-legacy/action.yml @@ -5,9 +5,9 @@ runs: using: 'composite' steps: - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Saucelabs Variables - uses: angular/dev-infra/github-actions/saucelabs@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/saucelabs@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Starting Saucelabs tunnel service shell: bash run: ./tools/saucelabs/sauce-service.sh run & diff --git a/.github/workflows/adev-preview-build.yml b/.github/workflows/adev-preview-build.yml index 206396abe56..63263bb62e9 100644 --- a/.github/workflows/adev-preview-build.yml +++ b/.github/workflows/adev-preview-build.yml @@ -21,16 +21,16 @@ jobs: (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'adev: preview')) steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build adev run: pnpm bazel build //adev:build.production - - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@380d026b78f9326d72673a05aad0b2b13441dca9 with: workflow-artifact-name: 'adev-preview' pull-number: '${{github.event.pull_request.number}}' diff --git a/.github/workflows/adev-preview-deploy.yml b/.github/workflows/adev-preview-deploy.yml index ec1f58f7408..2a65ea773da 100644 --- a/.github/workflows/adev-preview-deploy.yml +++ b/.github/workflows/adev-preview-deploy.yml @@ -40,7 +40,7 @@ jobs: npx -y firebase-tools@latest target:clear --config adev/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting angular-docs npx -y firebase-tools@latest target:apply --config adev/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting angular-docs ${{env.PREVIEW_SITE}} - - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@380d026b78f9326d72673a05aad0b2b13441dca9 with: github-token: '${{secrets.GITHUB_TOKEN}}' workflow-artifact-name: 'adev-preview' diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index bdfbf99221f..512d1aef8fe 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -16,6 +16,6 @@ jobs: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + - uses: angular/dev-infra/github-actions/branch-manager@380d026b78f9326d72673a05aad0b2b13441dca9 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/benchmark-compare.yml b/.github/workflows/benchmark-compare.yml index 4b7623e83dc..eafdfd0f509 100644 --- a/.github/workflows/benchmark-compare.yml +++ b/.github/workflows/benchmark-compare.yml @@ -38,7 +38,7 @@ jobs: - run: pnpm install --frozen-lockfile - - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + - uses: angular/dev-infra/github-actions/bazel/configure-remote@380d026b78f9326d72673a05aad0b2b13441dca9 with: bazelrc: ./.bazelrc.user diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 70d9488d0d9..79887075baa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Install node modules run: pnpm install --frozen-lockfile - name: Check code lint @@ -39,13 +39,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 with: disable-package-manager-cache: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@380d026b78f9326d72673a05aad0b2b13441dca9 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Cache downloaded Cypress binary @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@380d026b78f9326d72673a05aad0b2b13441dca9 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -88,11 +88,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@380d026b78f9326d72673a05aad0b2b13441dca9 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -105,11 +105,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@380d026b78f9326d72673a05aad0b2b13441dca9 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -124,11 +124,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Install node modules run: pnpm install --frozen-lockfile - run: echo "https://${{secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN}}:@github.com" > ${HOME}/.git_credentials @@ -140,11 +140,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@380d026b78f9326d72673a05aad0b2b13441dca9 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -194,11 +194,11 @@ jobs: runs-on: ubuntu-latest-8core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build adev diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index a4e64b00aaf..889d7417ccb 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + - uses: angular/dev-infra/github-actions/pull-request-labeling@380d026b78f9326d72673a05aad0b2b13441dca9 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + - uses: angular/dev-infra/github-actions/post-approval-changes@380d026b78f9326d72673a05aad0b2b13441dca9 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/google-internal-tests.yml b/.github/workflows/google-internal-tests.yml index 90a7c048cdb..c3bc4a2519a 100644 --- a/.github/workflows/google-internal-tests.yml +++ b/.github/workflows/google-internal-tests.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/google-internal-tests@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + - uses: angular/dev-infra/github-actions/google-internal-tests@380d026b78f9326d72673a05aad0b2b13441dca9 with: run-tests-guide-url: http://go/angular-g3sync-start github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml index c646a56a6a4..bf24a79242b 100644 --- a/.github/workflows/manual.yml +++ b/.github/workflows/manual.yml @@ -13,15 +13,15 @@ jobs: JOBS: 2 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Saucelabs Variables - uses: angular/dev-infra/github-actions/saucelabs@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/saucelabs@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Set up Sauce Tunnel Daemon run: pnpm bazel run //tools/saucelabs-daemon/background-service -- $JOBS & env: diff --git a/.github/workflows/merge-ready-status.yml b/.github/workflows/merge-ready-status.yml index ee0a4bb2918..902931c850d 100644 --- a/.github/workflows/merge-ready-status.yml +++ b/.github/workflows/merge-ready-status.yml @@ -9,6 +9,6 @@ jobs: status: runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/unified-status-check@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + - uses: angular/dev-infra/github-actions/unified-status-check@380d026b78f9326d72673a05aad0b2b13441dca9 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 970b0d72db1..35e48fce4ad 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -21,7 +21,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Install node modules run: pnpm install --frozen-lockfile - id: workflows @@ -36,9 +36,9 @@ jobs: workflow: ${{ fromJSON(needs.list.outputs.workflows) }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Install node modules run: pnpm install --frozen-lockfile # We utilize the google-github-actions/auth action to allow us to get an active credential using workflow diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index e73e4e05143..c6b06a4df94 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Install node modules run: pnpm install --frozen-lockfile - name: Check code lint @@ -37,7 +37,7 @@ jobs: - name: Check code format run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/linting/licenses@380d026b78f9326d72673a05aad0b2b13441dca9 with: allow-dependencies-licenses: 'pkg:npm/google-protobuf@' @@ -45,13 +45,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 with: disable-package-manager-cache: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Cache downloaded Cypress binary uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -76,11 +76,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run CI tests for framework @@ -100,11 +100,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run integration CI tests for framework @@ -115,11 +115,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run tests @@ -132,11 +132,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@380d026b78f9326d72673a05aad0b2b13441dca9 - name: Install node modules run: pnpm install --frozen-lockfile - run: | diff --git a/MODULE.bazel b/MODULE.bazel index 78436066394..0e6ecf8549a 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "56543b10ddb9941c76b4413cc24ec3fa7a43cf5c", + commit = "380d026b78f9326d72673a05aad0b2b13441dca9", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 9cbbfdbd08b..d12ac3efaee 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -21,14 +21,12 @@ "https://bcr.bazel.build/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "491f8681205e31bb57892d67442ce448cda4f472a8e6b3dc062865e29a64f89c", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "812d2dd42f65dca362152101fbec418029cc8fd34cbad1a2fde905383d705838", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.9.3/MODULE.bazel": "66baf724dbae7aff4787bf2245cc188d50cb08e07789769730151c0943587c14", - "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.22.1/MODULE.bazel": "499ce65b6126f344f9a630040b9db91b36b20c6d1436026120067d922c2d69bd", "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.23.0/MODULE.bazel": "9b437a9ec25a619304940434fa03b8d41248213eb7009da2c898f3d6a4075ef3", "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.23.0/source.json": "7b4cac4e61bae4262e7f67f6bec0b200fcb9060044f12e84a3bc37e0be245de7", "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.0/MODULE.bazel": "071d1952527721bf8b180e1299def24edaece9d7466e31a311981640da82c6be", "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.0/source.json": "45fa9603cdfe100575a12d8b65fa425fe8713dd8c9f0cdf802168b670bc0e299", "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5", "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", - "https://bcr.bazel.build/modules/aspect_rules_js/2.6.0/MODULE.bazel": "5a6f8dbc5b170769453f1819d469fe54b0e4b86a0e82e13fde8e5a45438a1890", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/source.json": "59933fb8ddabd9740a3c12ff5552f06f2b8d68c3633883c681c757bf227c3763", "https://bcr.bazel.build/modules/aspect_rules_rollup/2.0.1/MODULE.bazel": "296e3a053658c2af989ba9bd62a205e6d1fa84bdd6dd5249196546e6b84770ec", diff --git a/package.json b/package.json index bc18c3b3cd3..8752f15e81a 100644 --- a/package.json +++ b/package.json @@ -168,7 +168,7 @@ "@actions/core": "^1.10.0", "@actions/github": "^6.0.0", "@angular-devkit/architect-cli": "0.2003.5", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e877c7e4fe14a67d425f5af705bf583fbbba9967", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#c38af36ddffcc85dd8180e595b9ef052f1a5c66d", "@babel/plugin-proposal-async-generator-functions": "7.20.7", "@babel/plugin-transform-async-generator-functions": "^7.27.1", "@bazel/bazelisk": "^1.7.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 965619859a4..b64c9b989b1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -371,8 +371,8 @@ importers: specifier: 0.2003.5 version: 0.2003.5(chokidar@4.0.3) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e877c7e4fe14a67d425f5af705bf583fbbba9967 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e877c7e4fe14a67d425f5af705bf583fbbba9967(@modelcontextprotocol/sdk@1.18.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#c38af36ddffcc85dd8180e595b9ef052f1a5c66d + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c38af36ddffcc85dd8180e595b9ef052f1a5c66d(@modelcontextprotocol/sdk@1.18.1) '@babel/plugin-proposal-async-generator-functions': specifier: 7.20.7 version: 7.20.7(@babel/core@7.28.3) @@ -1041,7 +1041,7 @@ importers: version: link:../../../animations '@angular/build': specifier: 20.3.5 - version: 20.3.5(@angular/ssr@20.3.5)(@types/node@24.7.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.7.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1) + version: 20.3.5(@angular/ssr@20.3.5)(@types/node@24.7.2)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.7.2)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1) '@angular/common': specifier: workspace:* version: link:../../../common @@ -1514,9 +1514,9 @@ packages: '@angular/cdk': 20.2.8 rxjs: ^6.5.3 || ^7.4.0 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e877c7e4fe14a67d425f5af705bf583fbbba9967': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e877c7e4fe14a67d425f5af705bf583fbbba9967} - version: 0.0.0-56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c38af36ddffcc85dd8180e595b9ef052f1a5c66d': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c38af36ddffcc85dd8180e595b9ef052f1a5c66d} + version: 0.0.0-380d026b78f9326d72673a05aad0b2b13441dca9 hasBin: true '@angular/ssr@20.3.5': @@ -2485,23 +2485,23 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - '@firebase/ai@2.3.0': - resolution: {integrity: sha512-rVZgf4FszXPSFVIeWLE8ruLU2JDmPXw4XgghcC0x/lK9veGJIyu+DvyumjreVhW/RwD3E5cNPWxQunzylhf/6w==} + '@firebase/ai@2.4.0': + resolution: {integrity: sha512-YilG6AJ/nYpCKtxZyvEzBRAQv5bU+2tBOKX4Ps0rNNSdxN39aT37kGhjATbk1kq1z5Lq7mkWglw/ajAF3lOWUg==} engines: {node: '>=20.0.0'} peerDependencies: '@firebase/app': 0.x '@firebase/app-types': 0.x - '@firebase/analytics-compat@0.2.24': - resolution: {integrity: sha512-jE+kJnPG86XSqGQGhXXYt1tpTbCTED8OQJ/PQ90SEw14CuxRxx/H+lFbWA1rlFtFSsTCptAJtgyRBwr/f00vsw==} + '@firebase/analytics-compat@0.2.25': + resolution: {integrity: sha512-fdzoaG0BEKbqksRDhmf4JoyZf16Wosrl0Y7tbZtJyVDOOwziE0vrFjmZuTdviL0yhak+Nco6rMsUUbkbD+qb6Q==} peerDependencies: '@firebase/app-compat': 0.x '@firebase/analytics-types@0.8.3': resolution: {integrity: sha512-VrIp/d8iq2g501qO46uGz3hjbDb8xzYMrbu8Tp0ovzIzrvJZ2fvmj649gTjge/b7cCCcjT0H37g1gVtlNhnkbg==} - '@firebase/analytics@0.10.18': - resolution: {integrity: sha512-iN7IgLvM06iFk8BeFoWqvVpRFW3Z70f+Qe2PfCJ7vPIgLPjHXDE774DhCT5Y2/ZU/ZbXPDPD60x/XPWEoZLNdg==} + '@firebase/analytics@0.10.19': + resolution: {integrity: sha512-3wU676fh60gaiVYQEEXsbGS4HbF2XsiBphyvvqDbtC1U4/dO4coshbYktcCHq+HFaGIK07iHOh4pME0hEq1fcg==} peerDependencies: '@firebase/app': 0.x @@ -2523,15 +2523,15 @@ packages: peerDependencies: '@firebase/app': 0.x - '@firebase/app-compat@0.5.3': - resolution: {integrity: sha512-rRK9YOvgsAU/+edjgubL1q1FyCMjBZZs+fAWtD36tklawkh6WZV07sNLVSceuni+a21oby6xoad+3R8dfztOrA==} + '@firebase/app-compat@0.5.4': + resolution: {integrity: sha512-T7ifGmb+awJEcp542Ek4HtNfBxcBrnuk1ggUdqyFEdsXHdq7+wVlhvE6YukTL7NS8hIkEfL7TMAPx/uCNqt30g==} engines: {node: '>=20.0.0'} '@firebase/app-types@0.9.3': resolution: {integrity: sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw==} - '@firebase/app@0.14.3': - resolution: {integrity: sha512-by1leTfZkwGycPKRWpc+p5/IhpnOj8zaScVi4RRm9fMoFYS3IE87Wzx1Yf/ruVYowXOEuLqYY3VmJw5tU3+0Bg==} + '@firebase/app@0.14.4': + resolution: {integrity: sha512-pUxEGmR+uu21OG/icAovjlu1fcYJzyVhhT0rsCrn+zi+nHtrS43Bp9KPn9KGa4NMspCUE++nkyiqziuIvJdwzw==} engines: {node: '>=20.0.0'} '@firebase/auth-compat@0.6.0': @@ -2743,8 +2743,8 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} - '@google/genai@1.22.0': - resolution: {integrity: sha512-siETS3zTm3EGpTT4+BFc1z20xXBYfueD3gCYfxkOjuAKRk8lt8TJevDHi3zepn1oSI6NhG/LZvy0i+Q3qheObg==} + '@google/genai@1.24.0': + resolution: {integrity: sha512-e3jZF9Dx3dDaDCzygdMuYByHI2xJZ0PaD3r2fRgHZe2IOwBnmJ/Tu5Lt/nefTCxqr1ZnbcbQK9T13d8U/9UMWg==} engines: {node: '>=20.0.0'} peerDependencies: '@modelcontextprotocol/sdk': ^1.11.4 @@ -4487,8 +4487,8 @@ packages: '@types/node@24.3.0': resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==} - '@types/node@24.7.0': - resolution: {integrity: sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==} + '@types/node@24.7.2': + resolution: {integrity: sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -7085,8 +7085,8 @@ packages: engines: {node: '>=20.0.0 || >=22.0.0'} hasBin: true - firebase@12.3.0: - resolution: {integrity: sha512-/JVja0IDO8zPETGv4TvvBwo7RwcQFz+RQ3JBETNtUSeqsDdI9G7fhRTkCy1sPKnLzW0xpm/kL8GOj6ncndTT3g==} + firebase@12.4.0: + resolution: {integrity: sha512-/chNgDQ6ppPPGOQO4jctxOa/5JeQxuhaxA7Y90K0I+n/wPfoO8mRveedhVUdo7ExLcWUivnnow/ouSLYSI5Icw==} flagged-respawn@2.0.0: resolution: {integrity: sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==} @@ -12965,7 +12965,7 @@ snapshots: - tsx - yaml - '@angular/build@20.3.5(@angular/ssr@20.3.5)(@types/node@24.7.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.7.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1)': + '@angular/build@20.3.5(@angular/ssr@20.3.5)(@types/node@24.7.2)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(postcss@8.5.6)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.9.2)(vitest@3.2.4(@types/node@24.7.2)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2003.5(chokidar@4.0.3) @@ -12979,8 +12979,8 @@ snapshots: '@babel/core': 7.28.3 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.14(@types/node@24.7.0) - '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.1.5(@types/node@24.7.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@inquirer/confirm': 5.1.14(@types/node@24.7.2) + '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.1.5(@types/node@24.7.2)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) beasties: 0.3.5 browserslist: 4.26.2 esbuild: 0.25.9 @@ -13000,7 +13000,7 @@ snapshots: tinyglobby: 0.2.14 tslib: 2.8.1 typescript: 5.9.2 - vite: 7.1.5(@types/node@24.7.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.5(@types/node@24.7.2)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) watchpack: 2.4.4 optionalDependencies: '@angular/ssr': 20.3.5 @@ -13008,7 +13008,7 @@ snapshots: less: 4.4.0 lmdb: 3.4.2 postcss: 8.5.6 - vitest: 3.2.4(@types/node@24.7.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.7.2)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - chokidar @@ -13099,13 +13099,13 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e877c7e4fe14a67d425f5af705bf583fbbba9967(@modelcontextprotocol/sdk@1.18.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c38af36ddffcc85dd8180e595b9ef052f1a5c66d(@modelcontextprotocol/sdk@1.18.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.22.0(@modelcontextprotocol/sdk@1.18.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) - '@inquirer/prompts': 7.8.6(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@google/genai': 1.24.0(@modelcontextprotocol/sdk@1.18.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@inquirer/prompts': 7.8.6(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) '@octokit/auth-app': 8.1.1 '@octokit/core': 7.0.5 '@octokit/graphql': 9.0.2 @@ -13123,7 +13123,7 @@ snapshots: '@types/folder-hash': 4.0.4 '@types/git-raw-commits': 5.0.0 '@types/jasmine': 5.1.9 - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@types/semver': 7.7.1 '@types/which': 3.0.4 '@types/yargs': 17.0.33 @@ -13137,7 +13137,7 @@ snapshots: ejs: 3.1.10 encoding: 0.1.13 fast-glob: 3.3.3 - firebase: 12.3.0 + firebase: 12.4.0 folder-hash: 4.1.1(supports-color@10.2.2) git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.0) jasmine: 5.12.0 @@ -14137,7 +14137,7 @@ snapshots: dependencies: '@simple-libs/child-process-utils': 1.0.1 '@simple-libs/stream-utils': 1.1.0 - semver: 7.7.2 + semver: 7.7.3 optionalDependencies: conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.2.0 @@ -14313,9 +14313,9 @@ snapshots: '@fastify/busboy@2.1.1': {} - '@firebase/ai@2.3.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.3)': + '@firebase/ai@2.4.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/app-check-interop-types': 0.3.3 '@firebase/app-types': 0.9.3 '@firebase/component': 0.7.0 @@ -14323,11 +14323,11 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/analytics-compat@0.2.24(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': + '@firebase/analytics-compat@0.2.25(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': dependencies: - '@firebase/analytics': 0.10.18(@firebase/app@0.14.3) + '@firebase/analytics': 0.10.19(@firebase/app@0.14.4) '@firebase/analytics-types': 0.8.3 - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -14336,20 +14336,20 @@ snapshots: '@firebase/analytics-types@0.8.3': {} - '@firebase/analytics@0.10.18(@firebase/app@0.14.3)': + '@firebase/analytics@0.10.19(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.3) + '@firebase/installations': 0.6.19(@firebase/app@0.14.4) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/app-check-compat@0.4.0(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': + '@firebase/app-check-compat@0.4.0(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-check': 0.11.0(@firebase/app@0.14.3) + '@firebase/app-check': 0.11.0(@firebase/app@0.14.4) '@firebase/app-check-types': 0.5.3 - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -14361,17 +14361,17 @@ snapshots: '@firebase/app-check-types@0.5.3': {} - '@firebase/app-check@0.11.0(@firebase/app@0.14.3)': + '@firebase/app-check@0.11.0(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/app-compat@0.5.3': + '@firebase/app-compat@0.5.4': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -14379,7 +14379,7 @@ snapshots: '@firebase/app-types@0.9.3': {} - '@firebase/app@0.14.3': + '@firebase/app@0.14.4': dependencies: '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 @@ -14387,10 +14387,10 @@ snapshots: idb: 7.1.1 tslib: 2.8.1 - '@firebase/auth-compat@0.6.0(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3)': + '@firebase/auth-compat@0.6.0(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-compat': 0.5.3 - '@firebase/auth': 1.11.0(@firebase/app@0.14.3) + '@firebase/app-compat': 0.5.4 + '@firebase/auth': 1.11.0(@firebase/app@0.14.4) '@firebase/auth-types': 0.13.0(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 @@ -14407,9 +14407,9 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/auth@1.11.0(@firebase/app@0.14.3)': + '@firebase/auth@1.11.0(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -14420,9 +14420,9 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/data-connect@0.3.11(@firebase/app@0.14.3)': + '@firebase/data-connect@0.3.11(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/auth-interop-types': 0.2.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 @@ -14453,11 +14453,11 @@ snapshots: faye-websocket: 0.11.4 tslib: 2.8.1 - '@firebase/firestore-compat@0.4.2(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3)': + '@firebase/firestore-compat@0.4.2(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 - '@firebase/firestore': 4.9.2(@firebase/app@0.14.3) + '@firebase/firestore': 4.9.2(@firebase/app@0.14.4) '@firebase/firestore-types': 3.0.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -14470,9 +14470,9 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/firestore@4.9.2(@firebase/app@0.14.3)': + '@firebase/firestore@4.9.2(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -14481,11 +14481,11 @@ snapshots: '@grpc/proto-loader': 0.7.15 tslib: 2.8.1 - '@firebase/functions-compat@0.4.1(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': + '@firebase/functions-compat@0.4.1(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 - '@firebase/functions': 0.13.1(@firebase/app@0.14.3) + '@firebase/functions': 0.13.1(@firebase/app@0.14.4) '@firebase/functions-types': 0.6.3 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -14494,9 +14494,9 @@ snapshots: '@firebase/functions-types@0.6.3': {} - '@firebase/functions@0.13.1(@firebase/app@0.14.3)': + '@firebase/functions@0.13.1(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/app-check-interop-types': 0.3.3 '@firebase/auth-interop-types': 0.2.4 '@firebase/component': 0.7.0 @@ -14504,11 +14504,11 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/installations-compat@0.2.19(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3)': + '@firebase/installations-compat@0.2.19(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.3) + '@firebase/installations': 0.6.19(@firebase/app@0.14.4) '@firebase/installations-types': 0.5.3(@firebase/app-types@0.9.3) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -14520,9 +14520,9 @@ snapshots: dependencies: '@firebase/app-types': 0.9.3 - '@firebase/installations@0.6.19(@firebase/app@0.14.3)': + '@firebase/installations@0.6.19(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 idb: 7.1.1 @@ -14532,11 +14532,11 @@ snapshots: dependencies: tslib: 2.8.1 - '@firebase/messaging-compat@0.2.23(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': + '@firebase/messaging-compat@0.2.23(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 - '@firebase/messaging': 0.12.23(@firebase/app@0.14.3) + '@firebase/messaging': 0.12.23(@firebase/app@0.14.4) '@firebase/util': 1.13.0 tslib: 2.8.1 transitivePeerDependencies: @@ -14544,22 +14544,22 @@ snapshots: '@firebase/messaging-interop-types@0.2.3': {} - '@firebase/messaging@0.12.23(@firebase/app@0.14.3)': + '@firebase/messaging@0.12.23(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.3) + '@firebase/installations': 0.6.19(@firebase/app@0.14.4) '@firebase/messaging-interop-types': 0.2.3 '@firebase/util': 1.13.0 idb: 7.1.1 tslib: 2.8.1 - '@firebase/performance-compat@0.2.22(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': + '@firebase/performance-compat@0.2.22(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 - '@firebase/performance': 0.7.9(@firebase/app@0.14.3) + '@firebase/performance': 0.7.9(@firebase/app@0.14.4) '@firebase/performance-types': 0.2.3 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -14568,22 +14568,22 @@ snapshots: '@firebase/performance-types@0.2.3': {} - '@firebase/performance@0.7.9(@firebase/app@0.14.3)': + '@firebase/performance@0.7.9(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.3) + '@firebase/installations': 0.6.19(@firebase/app@0.14.4) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 web-vitals: 4.2.4 - '@firebase/remote-config-compat@0.2.20(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': + '@firebase/remote-config-compat@0.2.20(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 - '@firebase/remote-config': 0.7.0(@firebase/app@0.14.3) + '@firebase/remote-config': 0.7.0(@firebase/app@0.14.4) '@firebase/remote-config-types': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -14592,20 +14592,20 @@ snapshots: '@firebase/remote-config-types@0.5.0': {} - '@firebase/remote-config@0.7.0(@firebase/app@0.14.3)': + '@firebase/remote-config@0.7.0(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.3) + '@firebase/installations': 0.6.19(@firebase/app@0.14.4) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/storage-compat@0.4.0(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3)': + '@firebase/storage-compat@0.4.0(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 - '@firebase/storage': 0.14.0(@firebase/app@0.14.3) + '@firebase/storage': 0.14.0(@firebase/app@0.14.4) '@firebase/storage-types': 0.8.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -14618,9 +14618,9 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/storage@0.14.0(@firebase/app@0.14.3)': + '@firebase/storage@0.14.0(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -14728,7 +14728,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.22.0(@modelcontextprotocol/sdk@1.18.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.24.0(@modelcontextprotocol/sdk@1.18.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 9.15.1(encoding@0.1.13)(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -14828,15 +14828,15 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 - '@inquirer/checkbox@4.2.4(@types/node@24.7.0)': + '@inquirer/checkbox@4.2.4(@types/node@24.7.2)': dependencies: '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/type': 3.0.8(@types/node@24.7.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@inquirer/confirm@5.1.14(@types/node@18.19.127)': dependencies: @@ -14852,12 +14852,12 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 - '@inquirer/confirm@5.1.14(@types/node@24.7.0)': + '@inquirer/confirm@5.1.14(@types/node@24.7.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@inquirer/confirm@5.1.18(@types/node@18.19.127)': dependencies: @@ -14873,12 +14873,12 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 - '@inquirer/confirm@5.1.18(@types/node@24.7.0)': + '@inquirer/confirm@5.1.18(@types/node@24.7.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@inquirer/core@10.2.2(@types/node@18.19.127)': dependencies: @@ -14906,18 +14906,18 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 - '@inquirer/core@10.2.2(@types/node@24.7.0)': + '@inquirer/core@10.2.2(@types/node@24.7.2)': dependencies: '@inquirer/ansi': 1.0.0 '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/type': 3.0.8(@types/node@24.7.2) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@inquirer/editor@4.2.20(@types/node@18.19.127)': dependencies: @@ -14935,13 +14935,13 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 - '@inquirer/editor@4.2.20(@types/node@24.7.0)': + '@inquirer/editor@4.2.20(@types/node@24.7.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.0) - '@inquirer/external-editor': 1.0.2(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) + '@inquirer/external-editor': 1.0.2(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@inquirer/expand@4.0.20(@types/node@18.19.127)': dependencies: @@ -14959,13 +14959,13 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 - '@inquirer/expand@4.0.20(@types/node@24.7.0)': + '@inquirer/expand@4.0.20(@types/node@24.7.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@inquirer/external-editor@1.0.2(@types/node@18.19.127)': dependencies: @@ -14981,12 +14981,12 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 - '@inquirer/external-editor@1.0.2(@types/node@24.7.0)': + '@inquirer/external-editor@1.0.2(@types/node@24.7.2)': dependencies: chardet: 2.1.0 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@inquirer/figures@1.0.13': {} @@ -15004,12 +15004,12 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 - '@inquirer/input@4.2.4(@types/node@24.7.0)': + '@inquirer/input@4.2.4(@types/node@24.7.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@inquirer/number@3.0.20(@types/node@18.19.127)': dependencies: @@ -15025,12 +15025,12 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 - '@inquirer/number@3.0.20(@types/node@24.7.0)': + '@inquirer/number@3.0.20(@types/node@24.7.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@inquirer/password@4.0.20(@types/node@18.19.127)': dependencies: @@ -15048,13 +15048,13 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 - '@inquirer/password@4.0.20(@types/node@24.7.0)': + '@inquirer/password@4.0.20(@types/node@24.7.2)': dependencies: '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@inquirer/prompts@7.8.2(@types/node@18.19.127)': dependencies: @@ -15101,20 +15101,20 @@ snapshots: optionalDependencies: '@types/node': 18.19.127 - '@inquirer/prompts@7.8.6(@types/node@24.7.0)': - dependencies: - '@inquirer/checkbox': 4.2.4(@types/node@24.7.0) - '@inquirer/confirm': 5.1.18(@types/node@24.7.0) - '@inquirer/editor': 4.2.20(@types/node@24.7.0) - '@inquirer/expand': 4.0.20(@types/node@24.7.0) - '@inquirer/input': 4.2.4(@types/node@24.7.0) - '@inquirer/number': 3.0.20(@types/node@24.7.0) - '@inquirer/password': 4.0.20(@types/node@24.7.0) - '@inquirer/rawlist': 4.1.8(@types/node@24.7.0) - '@inquirer/search': 3.1.3(@types/node@24.7.0) - '@inquirer/select': 4.3.4(@types/node@24.7.0) + '@inquirer/prompts@7.8.6(@types/node@24.7.2)': + dependencies: + '@inquirer/checkbox': 4.2.4(@types/node@24.7.2) + '@inquirer/confirm': 5.1.18(@types/node@24.7.2) + '@inquirer/editor': 4.2.20(@types/node@24.7.2) + '@inquirer/expand': 4.0.20(@types/node@24.7.2) + '@inquirer/input': 4.2.4(@types/node@24.7.2) + '@inquirer/number': 3.0.20(@types/node@24.7.2) + '@inquirer/password': 4.0.20(@types/node@24.7.2) + '@inquirer/rawlist': 4.1.8(@types/node@24.7.2) + '@inquirer/search': 3.1.3(@types/node@24.7.2) + '@inquirer/select': 4.3.4(@types/node@24.7.2) optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@inquirer/rawlist@4.1.8(@types/node@18.19.127)': dependencies: @@ -15132,13 +15132,13 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 - '@inquirer/rawlist@4.1.8(@types/node@24.7.0)': + '@inquirer/rawlist@4.1.8(@types/node@24.7.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@inquirer/search@3.1.3(@types/node@18.19.127)': dependencies: @@ -15158,14 +15158,14 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 - '@inquirer/search@3.1.3(@types/node@24.7.0)': + '@inquirer/search@3.1.3(@types/node@24.7.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/type': 3.0.8(@types/node@24.7.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@inquirer/select@4.3.4(@types/node@18.19.127)': dependencies: @@ -15187,15 +15187,15 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 - '@inquirer/select@4.3.4(@types/node@24.7.0)': + '@inquirer/select@4.3.4(@types/node@24.7.2)': dependencies: '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/type': 3.0.8(@types/node@24.7.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@inquirer/type@3.0.8(@types/node@18.19.127)': optionalDependencies: @@ -15205,9 +15205,9 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 - '@inquirer/type@3.0.8(@types/node@24.7.0)': + '@inquirer/type@3.0.8(@types/node@24.7.2)': optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@isaacs/balanced-match@4.0.1': {} @@ -15789,7 +15789,7 @@ snapshots: '@npmcli/fs@4.0.0': dependencies: - semver: 7.7.2 + semver: 7.7.3 '@npmcli/git@6.0.3': dependencies: @@ -15799,7 +15799,7 @@ snapshots: npm-pick-manifest: 10.0.0 proc-log: 5.0.0 promise-retry: 2.0.1 - semver: 7.7.2 + semver: 7.7.3 which: 5.0.0 '@npmcli/installed-package-contents@3.0.0': @@ -15816,7 +15816,7 @@ snapshots: hosted-git-info: 8.1.0 json-parse-even-better-errors: 4.0.0 proc-log: 5.0.0 - semver: 7.7.2 + semver: 7.7.3 validate-npm-package-license: 3.0.4 '@npmcli/promise-spawn@8.0.3': @@ -16184,7 +16184,7 @@ snapshots: extract-zip: 2.0.1 progress: 2.0.3 proxy-agent: 6.5.0 - semver: 7.7.2 + semver: 7.7.3 tar-fs: 3.1.1 yargs: 17.7.2 transitivePeerDependencies: @@ -16891,7 +16891,7 @@ snapshots: dependencies: undici-types: 7.10.0 - '@types/node@24.7.0': + '@types/node@24.7.2': dependencies: undici-types: 7.14.0 @@ -17108,9 +17108,9 @@ snapshots: dependencies: vite: 7.1.5(@types/node@24.3.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.5(@types/node@24.7.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.5(@types/node@24.7.2)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.1.5(@types/node@24.7.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.5(@types/node@24.7.2)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/expect@3.2.4': dependencies: @@ -17137,13 +17137,13 @@ snapshots: optionalDependencies: vite: 7.1.6(@types/node@24.3.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/mocker@3.2.4(vite@7.1.6(@types/node@24.7.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.1.6(@types/node@24.7.2)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 7.1.6(@types/node@24.7.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.6(@types/node@24.7.2)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optional: true '@vitest/pretty-format@3.2.4': @@ -18591,7 +18591,7 @@ snapshots: conventional-commits-filter: 5.0.0 handlebars: 4.7.8 meow: 13.2.0 - semver: 7.7.2 + semver: 7.7.3 conventional-changelog@6.0.0(conventional-commits-filter@5.0.0): dependencies: @@ -19641,7 +19641,7 @@ snapshots: promise-breaker: 6.0.0 qs: 6.14.0 raw-body: 2.5.2 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -20038,35 +20038,35 @@ snapshots: - supports-color - utf-8-validate - firebase@12.3.0: + firebase@12.4.0: dependencies: - '@firebase/ai': 2.3.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.3) - '@firebase/analytics': 0.10.18(@firebase/app@0.14.3) - '@firebase/analytics-compat': 0.2.24(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) - '@firebase/app': 0.14.3 - '@firebase/app-check': 0.11.0(@firebase/app@0.14.3) - '@firebase/app-check-compat': 0.4.0(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) - '@firebase/app-compat': 0.5.3 + '@firebase/ai': 2.4.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.4) + '@firebase/analytics': 0.10.19(@firebase/app@0.14.4) + '@firebase/analytics-compat': 0.2.25(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) + '@firebase/app': 0.14.4 + '@firebase/app-check': 0.11.0(@firebase/app@0.14.4) + '@firebase/app-check-compat': 0.4.0(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) + '@firebase/app-compat': 0.5.4 '@firebase/app-types': 0.9.3 - '@firebase/auth': 1.11.0(@firebase/app@0.14.3) - '@firebase/auth-compat': 0.6.0(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3) - '@firebase/data-connect': 0.3.11(@firebase/app@0.14.3) + '@firebase/auth': 1.11.0(@firebase/app@0.14.4) + '@firebase/auth-compat': 0.6.0(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4) + '@firebase/data-connect': 0.3.11(@firebase/app@0.14.4) '@firebase/database': 1.1.0 '@firebase/database-compat': 2.1.0 - '@firebase/firestore': 4.9.2(@firebase/app@0.14.3) - '@firebase/firestore-compat': 0.4.2(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3) - '@firebase/functions': 0.13.1(@firebase/app@0.14.3) - '@firebase/functions-compat': 0.4.1(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) - '@firebase/installations': 0.6.19(@firebase/app@0.14.3) - '@firebase/installations-compat': 0.2.19(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3) - '@firebase/messaging': 0.12.23(@firebase/app@0.14.3) - '@firebase/messaging-compat': 0.2.23(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) - '@firebase/performance': 0.7.9(@firebase/app@0.14.3) - '@firebase/performance-compat': 0.2.22(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) - '@firebase/remote-config': 0.7.0(@firebase/app@0.14.3) - '@firebase/remote-config-compat': 0.2.20(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) - '@firebase/storage': 0.14.0(@firebase/app@0.14.3) - '@firebase/storage-compat': 0.4.0(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3) + '@firebase/firestore': 4.9.2(@firebase/app@0.14.4) + '@firebase/firestore-compat': 0.4.2(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4) + '@firebase/functions': 0.13.1(@firebase/app@0.14.4) + '@firebase/functions-compat': 0.4.1(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) + '@firebase/installations': 0.6.19(@firebase/app@0.14.4) + '@firebase/installations-compat': 0.2.19(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4) + '@firebase/messaging': 0.12.23(@firebase/app@0.14.4) + '@firebase/messaging-compat': 0.2.23(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) + '@firebase/performance': 0.7.9(@firebase/app@0.14.4) + '@firebase/performance-compat': 0.2.22(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) + '@firebase/remote-config': 0.7.0(@firebase/app@0.14.4) + '@firebase/remote-config-compat': 0.2.20(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) + '@firebase/storage': 0.14.0(@firebase/app@0.14.4) + '@firebase/storage-compat': 0.4.0(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4) '@firebase/util': 1.13.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -20417,7 +20417,7 @@ snapshots: es6-error: 4.1.1 matcher: 3.0.0 roarr: 2.15.4 - semver: 7.7.2 + semver: 7.7.3 serialize-error: 7.0.1 global-dirs@3.0.1: @@ -21670,7 +21670,7 @@ snapshots: jest-message-util: 30.1.0 jest-util: 30.0.5 pretty-format: 30.0.5 - semver: 7.7.2 + semver: 7.7.3 synckit: 0.11.11 transitivePeerDependencies: - supports-color @@ -21848,7 +21848,7 @@ snapshots: lodash.isstring: 4.0.1 lodash.once: 4.1.1 ms: 2.1.3 - semver: 7.7.2 + semver: 7.7.3 jsprim@1.4.2: dependencies: @@ -22328,7 +22328,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 make-error@1.3.6: {} @@ -22843,7 +22843,7 @@ snapshots: make-fetch-happen: 14.0.3 nopt: 8.1.0 proc-log: 5.0.0 - semver: 7.7.2 + semver: 7.7.3 tar: 7.4.3 tinyglobby: 0.2.14 which: 5.0.0 @@ -22861,13 +22861,13 @@ snapshots: normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.7.2 + semver: 7.7.3 validate-npm-package-license: 3.0.4 normalize-package-data@7.0.1: dependencies: hosted-git-info: 8.1.0 - semver: 7.7.2 + semver: 7.7.3 validate-npm-package-license: 3.0.4 normalize-path@2.1.1: @@ -22890,7 +22890,7 @@ snapshots: npm-install-checks@7.1.2: dependencies: - semver: 7.7.2 + semver: 7.7.3 npm-normalize-package-bin@4.0.0: {} @@ -22898,7 +22898,7 @@ snapshots: dependencies: hosted-git-info: 8.1.0 proc-log: 5.0.0 - semver: 7.7.2 + semver: 7.7.3 validate-npm-package-name: 6.0.2 npm-package-arg@13.0.0: @@ -22917,7 +22917,7 @@ snapshots: npm-install-checks: 7.1.2 npm-normalize-package-bin: 4.0.0 npm-package-arg: 12.0.2 - semver: 7.7.2 + semver: 7.7.3 npm-registry-fetch@18.0.2: dependencies: @@ -25631,7 +25631,7 @@ snapshots: pupa: 2.1.1 registry-auth-token: 5.1.0 registry-url: 5.1.0 - semver: 7.7.2 + semver: 7.7.3 semver-diff: 3.1.1 xdg-basedir: 4.0.0 transitivePeerDependencies: @@ -25803,13 +25803,13 @@ snapshots: - tsx - yaml - vite-node@3.2.4(@types/node@24.7.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite-node@3.2.4(@types/node@24.7.2)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.6(@types/node@24.7.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.6(@types/node@24.7.2)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -25897,7 +25897,7 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vite@7.1.5(@types/node@24.7.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.1.5(@types/node@24.7.2)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.9 fdir: 6.5.0(picomatch@4.0.3) @@ -25906,7 +25906,7 @@ snapshots: rollup: 4.46.4 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 fsevents: 2.3.3 jiti: 1.21.7 less: 4.4.0 @@ -25952,7 +25952,7 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vite@7.1.6(@types/node@24.7.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.1.6(@types/node@24.7.2)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.9 fdir: 6.5.0(picomatch@4.0.3) @@ -25961,7 +25961,7 @@ snapshots: rollup: 4.46.4 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 fsevents: 2.3.3 jiti: 1.21.7 less: 4.4.0 @@ -26056,11 +26056,11 @@ snapshots: - tsx - yaml - vitest@3.2.4(@types/node@24.7.0)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@3.2.4(@types/node@24.7.2)(jiti@1.21.7)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.6(@types/node@24.7.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.1.6(@types/node@24.7.2)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -26078,11 +26078,11 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.6(@types/node@24.7.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.7.0)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.6(@types/node@24.7.2)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.7.2)(jiti@1.21.7)(less@4.4.0)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti From fdd0856dd1f86e556a56b3f36401738e294b443d Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Mon, 13 Oct 2025 17:09:00 -0500 Subject: [PATCH 41/57] docs: Removes standalone flag from drag-drop examples (#64395) PR Close #64395 --- .../examples/drag-drop/src/axis-lock/app/app.component.ts | 1 - .../drag-drop/src/connected-sorting-group/app/app.component.ts | 1 - .../drag-drop/src/connected-sorting/app/app.component.ts | 1 - .../examples/drag-drop/src/custom-handle/app/app.component.ts | 1 - .../drag-drop/src/custom-placeholder/app/app.component.ts | 1 - .../examples/drag-drop/src/custom-preview/app/app.component.ts | 1 - .../examples/drag-drop/src/delay-drag/app/app.component.ts | 1 - .../examples/drag-drop/src/disable-drag/app/app.component.ts | 1 - .../examples/drag-drop/src/disable-sorting/app/app.component.ts | 1 - .../examples/drag-drop/src/enter-predicate/app/app.component.ts | 1 - .../drag-drop/src/free-drag-position/app/app.component.ts | 1 - .../drag-drop/src/horizontal-sorting/app/app.component.ts | 1 - .../examples/drag-drop/src/mixed-sorting/app/app.component.ts | 1 - .../content/examples/drag-drop/src/overview/app/app.component.ts | 1 - .../examples/drag-drop/src/root-element/app/app.component.ts | 1 - .../examples/drag-drop/src/sort-predicate/app/app.component.ts | 1 - .../content/examples/drag-drop/src/sorting/app/app.component.ts | 1 - adev/src/content/guide/drag-drop.md | 1 - 18 files changed, 18 deletions(-) diff --git a/adev/src/content/examples/drag-drop/src/axis-lock/app/app.component.ts b/adev/src/content/examples/drag-drop/src/axis-lock/app/app.component.ts index 579ecbf34f0..0ebe9ff5ce3 100755 --- a/adev/src/content/examples/drag-drop/src/axis-lock/app/app.component.ts +++ b/adev/src/content/examples/drag-drop/src/axis-lock/app/app.component.ts @@ -8,7 +8,6 @@ import {Component} from '@angular/core'; selector: 'cdk-drag-drop-axis-lock-example', templateUrl: 'app.component.html', styleUrl: 'app.component.css', - standalone: true, imports: [CdkDrag], }) export class CdkDragDropAxisLockExample {} diff --git a/adev/src/content/examples/drag-drop/src/connected-sorting-group/app/app.component.ts b/adev/src/content/examples/drag-drop/src/connected-sorting-group/app/app.component.ts index 08cc08275cc..4da8ffddf37 100755 --- a/adev/src/content/examples/drag-drop/src/connected-sorting-group/app/app.component.ts +++ b/adev/src/content/examples/drag-drop/src/connected-sorting-group/app/app.component.ts @@ -15,7 +15,6 @@ import {Component} from '@angular/core'; selector: 'cdk-drag-drop-connected-sorting-group-example', templateUrl: 'app.component.html', styleUrl: 'app.component.css', - standalone: true, imports: [CdkDropListGroup, CdkDropList, CdkDrag], }) export class CdkDragDropConnectedSortingGroupExample { diff --git a/adev/src/content/examples/drag-drop/src/connected-sorting/app/app.component.ts b/adev/src/content/examples/drag-drop/src/connected-sorting/app/app.component.ts index 68de4c7bfe4..4fbb6d51828 100755 --- a/adev/src/content/examples/drag-drop/src/connected-sorting/app/app.component.ts +++ b/adev/src/content/examples/drag-drop/src/connected-sorting/app/app.component.ts @@ -14,7 +14,6 @@ import {Component} from '@angular/core'; selector: 'cdk-drag-drop-connected-sorting-example', templateUrl: 'app.component.html', styleUrl: 'app.component.css', - standalone: true, imports: [CdkDropList, CdkDrag], }) export class CdkDragDropConnectedSortingExample { diff --git a/adev/src/content/examples/drag-drop/src/custom-handle/app/app.component.ts b/adev/src/content/examples/drag-drop/src/custom-handle/app/app.component.ts index 2643d24f0a8..54f433aa3ab 100755 --- a/adev/src/content/examples/drag-drop/src/custom-handle/app/app.component.ts +++ b/adev/src/content/examples/drag-drop/src/custom-handle/app/app.component.ts @@ -8,7 +8,6 @@ import {Component} from '@angular/core'; selector: 'cdk-drag-drop-handle-example', templateUrl: 'app.component.html', styleUrl: 'app.component.css', - standalone: true, imports: [CdkDrag, CdkDragHandle], }) export class CdkDragDropHandleExample {} diff --git a/adev/src/content/examples/drag-drop/src/custom-placeholder/app/app.component.ts b/adev/src/content/examples/drag-drop/src/custom-placeholder/app/app.component.ts index 7be12021a6f..799069e23f5 100755 --- a/adev/src/content/examples/drag-drop/src/custom-placeholder/app/app.component.ts +++ b/adev/src/content/examples/drag-drop/src/custom-placeholder/app/app.component.ts @@ -14,7 +14,6 @@ import {Component} from '@angular/core'; selector: 'cdk-drag-drop-custom-placeholder-example', templateUrl: 'app.component.html', styleUrl: 'app.component.css', - standalone: true, imports: [CdkDropList, CdkDrag, CdkDragPlaceholder], }) export class CdkDragDropCustomPlaceholderExample { diff --git a/adev/src/content/examples/drag-drop/src/custom-preview/app/app.component.ts b/adev/src/content/examples/drag-drop/src/custom-preview/app/app.component.ts index 015e65f20ae..adc079e5f16 100755 --- a/adev/src/content/examples/drag-drop/src/custom-preview/app/app.component.ts +++ b/adev/src/content/examples/drag-drop/src/custom-preview/app/app.component.ts @@ -14,7 +14,6 @@ import {Component} from '@angular/core'; selector: 'cdk-drag-drop-custom-preview-example', templateUrl: 'app.component.html', styleUrl: 'app.component.css', - standalone: true, imports: [CdkDropList, CdkDrag, CdkDragPreview], }) export class CdkDragDropCustomPreviewExample { diff --git a/adev/src/content/examples/drag-drop/src/delay-drag/app/app.component.ts b/adev/src/content/examples/drag-drop/src/delay-drag/app/app.component.ts index 77396bc9c03..e634d53bfe2 100755 --- a/adev/src/content/examples/drag-drop/src/delay-drag/app/app.component.ts +++ b/adev/src/content/examples/drag-drop/src/delay-drag/app/app.component.ts @@ -8,7 +8,6 @@ import {Component} from '@angular/core'; selector: 'cdk-drag-drop-delay-example', templateUrl: 'app.component.html', styleUrl: 'app.component.css', - standalone: true, imports: [CdkDrag], }) export class CdkDragDropDelayExample {} diff --git a/adev/src/content/examples/drag-drop/src/disable-drag/app/app.component.ts b/adev/src/content/examples/drag-drop/src/disable-drag/app/app.component.ts index 6ea1a6e2a41..4d25d457466 100755 --- a/adev/src/content/examples/drag-drop/src/disable-drag/app/app.component.ts +++ b/adev/src/content/examples/drag-drop/src/disable-drag/app/app.component.ts @@ -8,7 +8,6 @@ import {Component} from '@angular/core'; selector: 'cdk-drag-drop-disabled-example', templateUrl: 'app.component.html', styleUrl: 'app.component.css', - standalone: true, imports: [CdkDropList, CdkDrag], }) export class CdkDragDropDisabledExample { diff --git a/adev/src/content/examples/drag-drop/src/disable-sorting/app/app.component.ts b/adev/src/content/examples/drag-drop/src/disable-sorting/app/app.component.ts index b4e88d1bfee..5c91b047a40 100755 --- a/adev/src/content/examples/drag-drop/src/disable-sorting/app/app.component.ts +++ b/adev/src/content/examples/drag-drop/src/disable-sorting/app/app.component.ts @@ -15,7 +15,6 @@ import {Component} from '@angular/core'; selector: 'cdk-drag-drop-disabled-sorting-example', templateUrl: 'app.component.html', styleUrl: 'app.component.css', - standalone: true, imports: [CdkDropListGroup, CdkDropList, CdkDrag], }) export class CdkDragDropDisabledSortingExample { diff --git a/adev/src/content/examples/drag-drop/src/enter-predicate/app/app.component.ts b/adev/src/content/examples/drag-drop/src/enter-predicate/app/app.component.ts index f00b36863c7..bf66690a44b 100755 --- a/adev/src/content/examples/drag-drop/src/enter-predicate/app/app.component.ts +++ b/adev/src/content/examples/drag-drop/src/enter-predicate/app/app.component.ts @@ -14,7 +14,6 @@ import {Component} from '@angular/core'; selector: 'cdk-drag-drop-enter-predicate-example', templateUrl: 'app.component.html', styleUrl: 'app.component.css', - standalone: true, imports: [CdkDropList, CdkDrag], }) export class CdkDragDropEnterPredicateExample { diff --git a/adev/src/content/examples/drag-drop/src/free-drag-position/app/app.component.ts b/adev/src/content/examples/drag-drop/src/free-drag-position/app/app.component.ts index e022b667bd7..ddc93e7e045 100755 --- a/adev/src/content/examples/drag-drop/src/free-drag-position/app/app.component.ts +++ b/adev/src/content/examples/drag-drop/src/free-drag-position/app/app.component.ts @@ -8,7 +8,6 @@ import {Component} from '@angular/core'; selector: 'cdk-drag-drop-free-drag-position-example', templateUrl: 'app.component.html', styleUrl: 'app.component.css', - standalone: true, imports: [CdkDrag], }) export class CdkDragDropFreeDragPositionExample { diff --git a/adev/src/content/examples/drag-drop/src/horizontal-sorting/app/app.component.ts b/adev/src/content/examples/drag-drop/src/horizontal-sorting/app/app.component.ts index 1a0e81ca738..2192aa4a8ac 100755 --- a/adev/src/content/examples/drag-drop/src/horizontal-sorting/app/app.component.ts +++ b/adev/src/content/examples/drag-drop/src/horizontal-sorting/app/app.component.ts @@ -8,7 +8,6 @@ import {Component} from '@angular/core'; selector: 'cdk-drag-drop-horizontal-sorting-example', templateUrl: 'app.component.html', styleUrl: 'app.component.css', - standalone: true, imports: [CdkDropList, CdkDrag], }) export class CdkDragDropHorizontalSortingExample { diff --git a/adev/src/content/examples/drag-drop/src/mixed-sorting/app/app.component.ts b/adev/src/content/examples/drag-drop/src/mixed-sorting/app/app.component.ts index 8d177182791..65f7d0ad443 100755 --- a/adev/src/content/examples/drag-drop/src/mixed-sorting/app/app.component.ts +++ b/adev/src/content/examples/drag-drop/src/mixed-sorting/app/app.component.ts @@ -8,7 +8,6 @@ import {Component} from '@angular/core'; selector: 'cdk-drag-drop-mixed-sorting-example', templateUrl: 'app.component.html', styleUrl: 'app.component.css', - standalone: true, imports: [CdkDropList, CdkDrag], }) export class CdkDragDropMixedSortingExample { diff --git a/adev/src/content/examples/drag-drop/src/overview/app/app.component.ts b/adev/src/content/examples/drag-drop/src/overview/app/app.component.ts index ebee20d9ae4..398e0c61bf0 100755 --- a/adev/src/content/examples/drag-drop/src/overview/app/app.component.ts +++ b/adev/src/content/examples/drag-drop/src/overview/app/app.component.ts @@ -8,7 +8,6 @@ import {Component} from '@angular/core'; selector: 'cdk-drag-drop-overview-example', templateUrl: 'app.component.html', styleUrl: 'app.component.css', - standalone: true, imports: [CdkDrag], }) export class CdkDragDropOverviewExample {} diff --git a/adev/src/content/examples/drag-drop/src/root-element/app/app.component.ts b/adev/src/content/examples/drag-drop/src/root-element/app/app.component.ts index 58c3003b11d..f14961c06f5 100755 --- a/adev/src/content/examples/drag-drop/src/root-element/app/app.component.ts +++ b/adev/src/content/examples/drag-drop/src/root-element/app/app.component.ts @@ -18,7 +18,6 @@ import { selector: 'cdk-drag-drop-root-element-example', templateUrl: 'app.component.html', styleUrl: 'app.component.css', - standalone: true, imports: [CdkDrag], }) export class CdkDragDropRootElementExample implements AfterViewInit, OnDestroy { diff --git a/adev/src/content/examples/drag-drop/src/sort-predicate/app/app.component.ts b/adev/src/content/examples/drag-drop/src/sort-predicate/app/app.component.ts index 3077866d4e7..909c1102c9a 100755 --- a/adev/src/content/examples/drag-drop/src/sort-predicate/app/app.component.ts +++ b/adev/src/content/examples/drag-drop/src/sort-predicate/app/app.component.ts @@ -8,7 +8,6 @@ import {Component} from '@angular/core'; selector: 'cdk-drag-drop-sort-predicate-example', templateUrl: 'app.component.html', styleUrl: 'app.component.css', - standalone: true, imports: [CdkDropList, CdkDrag], }) export class CdkDragDropSortPredicateExample { diff --git a/adev/src/content/examples/drag-drop/src/sorting/app/app.component.ts b/adev/src/content/examples/drag-drop/src/sorting/app/app.component.ts index 040abc89095..b1b77d85ffd 100755 --- a/adev/src/content/examples/drag-drop/src/sorting/app/app.component.ts +++ b/adev/src/content/examples/drag-drop/src/sorting/app/app.component.ts @@ -8,7 +8,6 @@ import {Component} from '@angular/core'; selector: 'cdk-drag-drop-sorting-example', templateUrl: 'app.component.html', styleUrl: 'app.component.css', - standalone: true, imports: [CdkDropList, CdkDrag], }) export class CdkDragDropSortingExample { diff --git a/adev/src/content/guide/drag-drop.md b/adev/src/content/guide/drag-drop.md index 50f89e33652..64d4fc4afec 100644 --- a/adev/src/content/guide/drag-drop.md +++ b/adev/src/content/guide/drag-drop.md @@ -34,7 +34,6 @@ import {CdkDrag} from '@angular/cdk/drag-drop'; @Component({ selector: 'my-custom-component', templateUrl: 'my-custom-component.html', - standalone: true, imports: [CdkDrag], }) export class DragDropExample {} From a2773b5ed18711606c5a73ad887eafc8374d9dcb Mon Sep 17 00:00:00 2001 From: Andrew Kushnir Date: Mon, 13 Oct 2025 16:35:29 -0700 Subject: [PATCH 42/57] ci: update symbol golden file for `@defer` test case (#64396) This commit updates the golden file, which got affected by this change: https://github.com/angular/angular/commit/eb80c3075f546c43f0ed2636bc6323d4b9d0a898 PR Close #64396 --- packages/core/test/bundling/defer/bundle.golden_symbols.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/core/test/bundling/defer/bundle.golden_symbols.json b/packages/core/test/bundling/defer/bundle.golden_symbols.json index a5d774d9ac4..5318b1bde13 100644 --- a/packages/core/test/bundling/defer/bundle.golden_symbols.json +++ b/packages/core/test/bundling/defer/bundle.golden_symbols.json @@ -58,7 +58,6 @@ "shimStylesContent" ], "lazy": [ - "DeferComponent", "AFTER_RENDER_SEQUENCES_TO_ADD", "ANIMATIONS", "ANIMATION_QUEUE", From 1cb1fffce32f6606ee4bd715df26f80bb4775a1c Mon Sep 17 00:00:00 2001 From: Matthieu Riegler Date: Wed, 8 Oct 2025 15:04:08 +0200 Subject: [PATCH 43/57] docs: Add mentions of the `autoCsp` option (#64290) And also in the incompatibility of `CSP_NONCE` with `inlineCritical`. fixes #61037 PR Close #64290 --- adev/src/content/guide/security.md | 73 ++-- .../reference/configs/workspace-config.md | 390 +++++++++--------- 2 files changed, 216 insertions(+), 247 deletions(-) diff --git a/adev/src/content/guide/security.md b/adev/src/content/guide/security.md index 6ad5dffac34..212aa4fac73 100644 --- a/adev/src/content/guide/security.md +++ b/adev/src/content/guide/security.md @@ -51,7 +51,7 @@ For this reason, it is strongly encouraged to take advantage of these features. ### Sanitization and security contexts -*Sanitization* is the inspection of an untrusted value, turning it into a value that's safe to insert into the DOM. +_Sanitization_ is the inspection of an untrusted value, turning it into a value that's safe to insert into the DOM. In many cases, sanitization doesn't change a value at all. Sanitization depends on a context. For example, a value that's harmless in CSS is potentially dangerous in a URL. @@ -107,11 +107,11 @@ If in doubt, find a professional security reviewer. To mark a value as trusted, inject `DomSanitizer` and call one of the following methods: -* `bypassSecurityTrustHtml` -* `bypassSecurityTrustScript` -* `bypassSecurityTrustStyle` -* `bypassSecurityTrustUrl` -* `bypassSecurityTrustResourceUrl` +- `bypassSecurityTrustHtml` +- `bypassSecurityTrustScript` +- `bypassSecurityTrustStyle` +- `bypassSecurityTrustUrl` +- `bypassSecurityTrustResourceUrl` Remember, whether a value is safe depends on context, so choose the right context for your intended use of the value. Imagine that the following template needs to bind a URL to a `javascript:alert(...)` call: @@ -142,21 +142,19 @@ Read more about content security policy at the [Web Fundamentals guide](https:// The minimal policy required for a brand-new Angular application is: - - +```txt default-src 'self'; style-src 'self' 'nonce-randomNonceGoesHere'; script-src 'self' 'nonce-randomNonceGoesHere'; +``` - - -When serving your Angular application, the server should include a randomly-generated nonce in the HTTP header for each request. +When serving your Angular application, the server should include a randomly-generated nonce in the HTTP header for each request. You must provide this nonce to Angular so that the framework can render `