diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml
index 524f57542ae4..c624b9aa858e 100644
--- a/.github/workflows/assistant-to-the-branch-manager.yml
+++ b/.github/workflows/assistant-to-the-branch-manager.yml
@@ -17,6 +17,6 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- - uses: angular/dev-infra/github-actions/branch-manager@b9bca459f29f61177a829e69089730415c95ccde
+ - uses: angular/dev-infra/github-actions/branch-manager@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
with:
angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 09d5872da960..165b143eb20d 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -21,9 +21,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/setup@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Generate JSON schema types
@@ -44,11 +44,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/setup@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Install node modules
@@ -61,11 +61,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/setup@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Install node modules
@@ -84,13 +84,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/setup@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Run CLI E2E tests
@@ -100,11 +100,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/setup@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Install node modules
@@ -137,7 +137,7 @@ jobs:
runs-on: windows-2025
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Download built Windows E2E tests
@@ -164,13 +164,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/setup@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Run CLI E2E tests
@@ -188,13 +188,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/setup@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Run CLI E2E tests
@@ -208,13 +208,13 @@ jobs:
SAUCE_TUNNEL_IDENTIFIER: angular-cli-${{ github.workflow }}-${{ github.run_number }}
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/setup@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Run E2E Browser tests
@@ -244,11 +244,11 @@ jobs:
CIRCLE_BRANCH: ${{ github.ref_name }}
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/setup@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- run: pnpm admin snapshots --verbose
env:
SNAPSHOT_BUILDS_GITHUB_TOKEN: ${{ secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN }}
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 73124eebf3c9..9c9cda1ad80d 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -23,12 +23,12 @@ jobs:
with:
persist-credentials: false
- name: Initialize CodeQL
- uses: github/codeql-action/init@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0
+ uses: github/codeql-action/init@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1
with:
languages: javascript-typescript
build-mode: none
config-file: .github/codeql/config.yml
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0
+ uses: github/codeql-action/analyze@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1
with:
category: '/language:javascript-typescript'
diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml
index adc7fd53a19d..9451bdbf330f 100644
--- a/.github/workflows/dev-infra.yml
+++ b/.github/workflows/dev-infra.yml
@@ -15,21 +15,21 @@ jobs:
if: github.event_name == 'pull_request_target'
runs-on: ubuntu-latest
steps:
- - uses: angular/dev-infra/github-actions/labeling/pull-request@b9bca459f29f61177a829e69089730415c95ccde
+ - uses: angular/dev-infra/github-actions/labeling/pull-request@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
with:
angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }}
post_approval_changes:
if: github.event_name == 'pull_request_target'
runs-on: ubuntu-latest
steps:
- - uses: angular/dev-infra/github-actions/post-approval-changes@b9bca459f29f61177a829e69089730415c95ccde
+ - uses: angular/dev-infra/github-actions/post-approval-changes@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
with:
angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }}
issue_labels:
if: github.event_name == 'issues'
runs-on: ubuntu-latest
steps:
- - uses: angular/dev-infra/github-actions/labeling/issue@b9bca459f29f61177a829e69089730415c95ccde
+ - uses: angular/dev-infra/github-actions/labeling/issue@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
with:
angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }}
google-generative-ai-key: ${{ secrets.GOOGLE_GENERATIVE_AI_KEY }}
diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml
index f0a1f0d085fb..779a81c01f6a 100644
--- a/.github/workflows/feature-requests.yml
+++ b/.github/workflows/feature-requests.yml
@@ -16,6 +16,6 @@ jobs:
if: github.repository == 'angular/angular-cli'
runs-on: ubuntu-latest
steps:
- - uses: angular/dev-infra/github-actions/feature-request@b9bca459f29f61177a829e69089730415c95ccde
+ - uses: angular/dev-infra/github-actions/feature-request@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
with:
angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }}
diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml
index 4360ffc6b653..7591c75d92b3 100644
--- a/.github/workflows/perf.yml
+++ b/.github/workflows/perf.yml
@@ -23,7 +23,7 @@ jobs:
workflows: ${{ steps.workflows.outputs.workflows }}
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Install node modules
run: pnpm install --frozen-lockfile
- id: workflows
@@ -38,9 +38,9 @@ jobs:
workflow: ${{ fromJSON(needs.list.outputs.workflows) }}
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/setup@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- 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 aae5280e405c..08af52b06b5c 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -34,9 +34,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/setup@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup ESLint Caching
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
@@ -66,17 +66,17 @@ jobs:
# it has been merged.
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@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/linting/licenses@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
build:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/setup@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Build release targets
@@ -93,11 +93,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/setup@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Run module and package tests
@@ -114,13 +114,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/setup@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Run CLI E2E tests
run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests:e2e.${{ matrix.subset }}_node${{ matrix.node }}
@@ -128,11 +128,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/setup@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Build E2E tests for Windows on Linux
@@ -156,7 +156,7 @@ jobs:
runs-on: windows-2025
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Download built Windows E2E tests
@@ -183,13 +183,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/setup@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Run CLI E2E tests
run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests:e2e.${{ matrix.subset }}_node${{ matrix.node }}
@@ -205,12 +205,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/setup@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@b9bca459f29f61177a829e69089730415c95ccde
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@2f6d3ae5b1db37b5165f200fb53f30b9330983e4
- name: Run CLI E2E tests
run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }}
diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml
index 1e426c91326a..f31e15c10d1f 100644
--- a/.github/workflows/scorecard.yml
+++ b/.github/workflows/scorecard.yml
@@ -46,6 +46,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: 'Upload to code-scanning'
- uses: github/codeql-action/upload-sarif@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0
+ uses: github/codeql-action/upload-sarif@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1
with:
sarif_file: results.sarif
diff --git a/.nvmrc b/.nvmrc
index 32a2d7bd80d1..db49bb14d78e 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-22.22.1
+22.22.2
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b63a857d1c1d..ebd79d6908e1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,22 @@
+
+
+# 21.2.5 (2026-03-27)
+
+### @angular/cli
+
+| Commit | Type | Description |
+| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------- |
+| [cadf9b201](https://github.com/angular/angular-cli/commit/cadf9b201bd1055a6e3cc016eb01e0196b028080) | feat | support custom port in MCP devserver start tool |
+
+### @angular/ssr
+
+| Commit | Type | Description |
+| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------- |
+| [bbc255419](https://github.com/angular/angular-cli/commit/bbc255419b346e5152391b47f310922f86e9e383) | fix | allow underscores in host validation |
+| [b1fe66a7f](https://github.com/angular/angular-cli/commit/b1fe66a7f8650ce021b4070394bc31848fc64ca5) | fix | patch Headers.forEach in cloneRequestAndPatchHeaders |
+
+
+
# 21.2.4 (2026-03-26)
diff --git a/MODULE.bazel b/MODULE.bazel
index feb33f079f48..df7172969df6 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -26,7 +26,7 @@ git_override(
bazel_dep(name = "devinfra")
git_override(
module_name = "devinfra",
- commit = "b9bca459f29f61177a829e69089730415c95ccde",
+ commit = "2f6d3ae5b1db37b5165f200fb53f30b9330983e4",
remote = "https://github.com/angular/dev-infra.git",
)
@@ -47,15 +47,15 @@ git_override(
node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node")
node.toolchain(
node_repositories = {
- "22.22.1-darwin_arm64": ("node-v22.22.1-darwin-arm64.tar.gz", "node-v22.22.1-darwin-arm64", "679ad4966339e4ef4900f57996714864e4211b898825bb840c3086c419fbcef2"),
- "22.22.1-darwin_amd64": ("node-v22.22.1-darwin-x64.tar.gz", "node-v22.22.1-darwin-x64", "07b13722d558790fca20bb1ecf61bde24b7a4863111f7be77fc57251a407359a"),
- "22.22.1-linux_arm64": ("node-v22.22.1-linux-arm64.tar.xz", "node-v22.22.1-linux-arm64", "0f3550d58d45e5d3cf7103d9e3f69937f09fe82fb5dd474c66a5d816fa58c9ee"),
- "22.22.1-linux_ppc64le": ("node-v22.22.1-linux-ppc64le.tar.xz", "node-v22.22.1-linux-ppc64le", "a65a44cf0224505f052b90357b763dbc1ea9148f4f5f2284f0596cf2000f819b"),
- "22.22.1-linux_s390x": ("node-v22.22.1-linux-s390x.tar.xz", "node-v22.22.1-linux-s390x", "e08b3a73d0bd840e008f589e4be4a2ef3d4a0c59015f4f20a04ed7fc968042a2"),
- "22.22.1-linux_amd64": ("node-v22.22.1-linux-x64.tar.xz", "node-v22.22.1-linux-x64", "9a6bc82f9b491279147219f6a18add1e18424dce90d41d2a5fcd69d4924ba3aa"),
- "22.22.1-windows_amd64": ("node-v22.22.1-win-x64.zip", "node-v22.22.1-win-x64", "877cb93829e14fffbbc7903e7d8037336c9a79f3ea43c5d0b8c2379b79da56de"),
+ "22.22.2-darwin_arm64": ("node-v22.22.2-darwin-arm64.tar.gz", "node-v22.22.2-darwin-arm64", "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"),
+ "22.22.2-darwin_amd64": ("node-v22.22.2-darwin-x64.tar.gz", "node-v22.22.2-darwin-x64", "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"),
+ "22.22.2-linux_arm64": ("node-v22.22.2-linux-arm64.tar.xz", "node-v22.22.2-linux-arm64", "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"),
+ "22.22.2-linux_ppc64le": ("node-v22.22.2-linux-ppc64le.tar.xz", "node-v22.22.2-linux-ppc64le", "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"),
+ "22.22.2-linux_s390x": ("node-v22.22.2-linux-s390x.tar.xz", "node-v22.22.2-linux-s390x", "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"),
+ "22.22.2-linux_amd64": ("node-v22.22.2-linux-x64.tar.xz", "node-v22.22.2-linux-x64", "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"),
+ "22.22.2-windows_amd64": ("node-v22.22.2-win-x64.zip", "node-v22.22.2-win-x64", "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"),
},
- node_version = "22.22.1",
+ node_version = "22.22.2",
)
use_repo(
node,
diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock
index 3387db084613..8ec1c1864978 100644
--- a/MODULE.bazel.lock
+++ b/MODULE.bazel.lock
@@ -951,7 +951,7 @@
"@@rules_nodejs+//nodejs:extensions.bzl%node": {
"general": {
"bzlTransitiveDigest": "4pUxCNc22K4I+6+4Nxu52Hur12tFRfa1JMsN5mdDv60=",
- "usagesDigest": "mKeSeITVhcf5/GXZ1Tncv/peVFJhILWMhxjkmS64C2I=",
+ "usagesDigest": "R1sMskGzRtmUETB24LOngTAqB+rhrl1xKKhxouWbYX0=",
"recordedFileInputs": {},
"recordedDirentsInputs": {},
"envVariables": {},
@@ -961,46 +961,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.1-darwin_arm64": [
- "node-v22.22.1-darwin-arm64.tar.gz",
- "node-v22.22.1-darwin-arm64",
- "679ad4966339e4ef4900f57996714864e4211b898825bb840c3086c419fbcef2"
+ "22.22.2-darwin_arm64": [
+ "node-v22.22.2-darwin-arm64.tar.gz",
+ "node-v22.22.2-darwin-arm64",
+ "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"
],
- "22.22.1-darwin_amd64": [
- "node-v22.22.1-darwin-x64.tar.gz",
- "node-v22.22.1-darwin-x64",
- "07b13722d558790fca20bb1ecf61bde24b7a4863111f7be77fc57251a407359a"
+ "22.22.2-darwin_amd64": [
+ "node-v22.22.2-darwin-x64.tar.gz",
+ "node-v22.22.2-darwin-x64",
+ "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"
],
- "22.22.1-linux_arm64": [
- "node-v22.22.1-linux-arm64.tar.xz",
- "node-v22.22.1-linux-arm64",
- "0f3550d58d45e5d3cf7103d9e3f69937f09fe82fb5dd474c66a5d816fa58c9ee"
+ "22.22.2-linux_arm64": [
+ "node-v22.22.2-linux-arm64.tar.xz",
+ "node-v22.22.2-linux-arm64",
+ "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"
],
- "22.22.1-linux_ppc64le": [
- "node-v22.22.1-linux-ppc64le.tar.xz",
- "node-v22.22.1-linux-ppc64le",
- "a65a44cf0224505f052b90357b763dbc1ea9148f4f5f2284f0596cf2000f819b"
+ "22.22.2-linux_ppc64le": [
+ "node-v22.22.2-linux-ppc64le.tar.xz",
+ "node-v22.22.2-linux-ppc64le",
+ "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"
],
- "22.22.1-linux_s390x": [
- "node-v22.22.1-linux-s390x.tar.xz",
- "node-v22.22.1-linux-s390x",
- "e08b3a73d0bd840e008f589e4be4a2ef3d4a0c59015f4f20a04ed7fc968042a2"
+ "22.22.2-linux_s390x": [
+ "node-v22.22.2-linux-s390x.tar.xz",
+ "node-v22.22.2-linux-s390x",
+ "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"
],
- "22.22.1-linux_amd64": [
- "node-v22.22.1-linux-x64.tar.xz",
- "node-v22.22.1-linux-x64",
- "9a6bc82f9b491279147219f6a18add1e18424dce90d41d2a5fcd69d4924ba3aa"
+ "22.22.2-linux_amd64": [
+ "node-v22.22.2-linux-x64.tar.xz",
+ "node-v22.22.2-linux-x64",
+ "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"
],
- "22.22.1-windows_amd64": [
- "node-v22.22.1-win-x64.zip",
- "node-v22.22.1-win-x64",
- "877cb93829e14fffbbc7903e7d8037336c9a79f3ea43c5d0b8c2379b79da56de"
+ "22.22.2-windows_amd64": [
+ "node-v22.22.2-win-x64.zip",
+ "node-v22.22.2-win-x64",
+ "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.1",
+ "node_version": "22.22.2",
"include_headers": false,
"platform": "linux_amd64"
}
@@ -1010,46 +1010,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.1-darwin_arm64": [
- "node-v22.22.1-darwin-arm64.tar.gz",
- "node-v22.22.1-darwin-arm64",
- "679ad4966339e4ef4900f57996714864e4211b898825bb840c3086c419fbcef2"
+ "22.22.2-darwin_arm64": [
+ "node-v22.22.2-darwin-arm64.tar.gz",
+ "node-v22.22.2-darwin-arm64",
+ "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"
],
- "22.22.1-darwin_amd64": [
- "node-v22.22.1-darwin-x64.tar.gz",
- "node-v22.22.1-darwin-x64",
- "07b13722d558790fca20bb1ecf61bde24b7a4863111f7be77fc57251a407359a"
+ "22.22.2-darwin_amd64": [
+ "node-v22.22.2-darwin-x64.tar.gz",
+ "node-v22.22.2-darwin-x64",
+ "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"
],
- "22.22.1-linux_arm64": [
- "node-v22.22.1-linux-arm64.tar.xz",
- "node-v22.22.1-linux-arm64",
- "0f3550d58d45e5d3cf7103d9e3f69937f09fe82fb5dd474c66a5d816fa58c9ee"
+ "22.22.2-linux_arm64": [
+ "node-v22.22.2-linux-arm64.tar.xz",
+ "node-v22.22.2-linux-arm64",
+ "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"
],
- "22.22.1-linux_ppc64le": [
- "node-v22.22.1-linux-ppc64le.tar.xz",
- "node-v22.22.1-linux-ppc64le",
- "a65a44cf0224505f052b90357b763dbc1ea9148f4f5f2284f0596cf2000f819b"
+ "22.22.2-linux_ppc64le": [
+ "node-v22.22.2-linux-ppc64le.tar.xz",
+ "node-v22.22.2-linux-ppc64le",
+ "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"
],
- "22.22.1-linux_s390x": [
- "node-v22.22.1-linux-s390x.tar.xz",
- "node-v22.22.1-linux-s390x",
- "e08b3a73d0bd840e008f589e4be4a2ef3d4a0c59015f4f20a04ed7fc968042a2"
+ "22.22.2-linux_s390x": [
+ "node-v22.22.2-linux-s390x.tar.xz",
+ "node-v22.22.2-linux-s390x",
+ "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"
],
- "22.22.1-linux_amd64": [
- "node-v22.22.1-linux-x64.tar.xz",
- "node-v22.22.1-linux-x64",
- "9a6bc82f9b491279147219f6a18add1e18424dce90d41d2a5fcd69d4924ba3aa"
+ "22.22.2-linux_amd64": [
+ "node-v22.22.2-linux-x64.tar.xz",
+ "node-v22.22.2-linux-x64",
+ "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"
],
- "22.22.1-windows_amd64": [
- "node-v22.22.1-win-x64.zip",
- "node-v22.22.1-win-x64",
- "877cb93829e14fffbbc7903e7d8037336c9a79f3ea43c5d0b8c2379b79da56de"
+ "22.22.2-windows_amd64": [
+ "node-v22.22.2-win-x64.zip",
+ "node-v22.22.2-win-x64",
+ "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.1",
+ "node_version": "22.22.2",
"include_headers": false,
"platform": "linux_arm64"
}
@@ -1059,46 +1059,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.1-darwin_arm64": [
- "node-v22.22.1-darwin-arm64.tar.gz",
- "node-v22.22.1-darwin-arm64",
- "679ad4966339e4ef4900f57996714864e4211b898825bb840c3086c419fbcef2"
+ "22.22.2-darwin_arm64": [
+ "node-v22.22.2-darwin-arm64.tar.gz",
+ "node-v22.22.2-darwin-arm64",
+ "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"
],
- "22.22.1-darwin_amd64": [
- "node-v22.22.1-darwin-x64.tar.gz",
- "node-v22.22.1-darwin-x64",
- "07b13722d558790fca20bb1ecf61bde24b7a4863111f7be77fc57251a407359a"
+ "22.22.2-darwin_amd64": [
+ "node-v22.22.2-darwin-x64.tar.gz",
+ "node-v22.22.2-darwin-x64",
+ "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"
],
- "22.22.1-linux_arm64": [
- "node-v22.22.1-linux-arm64.tar.xz",
- "node-v22.22.1-linux-arm64",
- "0f3550d58d45e5d3cf7103d9e3f69937f09fe82fb5dd474c66a5d816fa58c9ee"
+ "22.22.2-linux_arm64": [
+ "node-v22.22.2-linux-arm64.tar.xz",
+ "node-v22.22.2-linux-arm64",
+ "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"
],
- "22.22.1-linux_ppc64le": [
- "node-v22.22.1-linux-ppc64le.tar.xz",
- "node-v22.22.1-linux-ppc64le",
- "a65a44cf0224505f052b90357b763dbc1ea9148f4f5f2284f0596cf2000f819b"
+ "22.22.2-linux_ppc64le": [
+ "node-v22.22.2-linux-ppc64le.tar.xz",
+ "node-v22.22.2-linux-ppc64le",
+ "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"
],
- "22.22.1-linux_s390x": [
- "node-v22.22.1-linux-s390x.tar.xz",
- "node-v22.22.1-linux-s390x",
- "e08b3a73d0bd840e008f589e4be4a2ef3d4a0c59015f4f20a04ed7fc968042a2"
+ "22.22.2-linux_s390x": [
+ "node-v22.22.2-linux-s390x.tar.xz",
+ "node-v22.22.2-linux-s390x",
+ "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"
],
- "22.22.1-linux_amd64": [
- "node-v22.22.1-linux-x64.tar.xz",
- "node-v22.22.1-linux-x64",
- "9a6bc82f9b491279147219f6a18add1e18424dce90d41d2a5fcd69d4924ba3aa"
+ "22.22.2-linux_amd64": [
+ "node-v22.22.2-linux-x64.tar.xz",
+ "node-v22.22.2-linux-x64",
+ "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"
],
- "22.22.1-windows_amd64": [
- "node-v22.22.1-win-x64.zip",
- "node-v22.22.1-win-x64",
- "877cb93829e14fffbbc7903e7d8037336c9a79f3ea43c5d0b8c2379b79da56de"
+ "22.22.2-windows_amd64": [
+ "node-v22.22.2-win-x64.zip",
+ "node-v22.22.2-win-x64",
+ "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.1",
+ "node_version": "22.22.2",
"include_headers": false,
"platform": "linux_s390x"
}
@@ -1108,46 +1108,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.1-darwin_arm64": [
- "node-v22.22.1-darwin-arm64.tar.gz",
- "node-v22.22.1-darwin-arm64",
- "679ad4966339e4ef4900f57996714864e4211b898825bb840c3086c419fbcef2"
+ "22.22.2-darwin_arm64": [
+ "node-v22.22.2-darwin-arm64.tar.gz",
+ "node-v22.22.2-darwin-arm64",
+ "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"
],
- "22.22.1-darwin_amd64": [
- "node-v22.22.1-darwin-x64.tar.gz",
- "node-v22.22.1-darwin-x64",
- "07b13722d558790fca20bb1ecf61bde24b7a4863111f7be77fc57251a407359a"
+ "22.22.2-darwin_amd64": [
+ "node-v22.22.2-darwin-x64.tar.gz",
+ "node-v22.22.2-darwin-x64",
+ "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"
],
- "22.22.1-linux_arm64": [
- "node-v22.22.1-linux-arm64.tar.xz",
- "node-v22.22.1-linux-arm64",
- "0f3550d58d45e5d3cf7103d9e3f69937f09fe82fb5dd474c66a5d816fa58c9ee"
+ "22.22.2-linux_arm64": [
+ "node-v22.22.2-linux-arm64.tar.xz",
+ "node-v22.22.2-linux-arm64",
+ "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"
],
- "22.22.1-linux_ppc64le": [
- "node-v22.22.1-linux-ppc64le.tar.xz",
- "node-v22.22.1-linux-ppc64le",
- "a65a44cf0224505f052b90357b763dbc1ea9148f4f5f2284f0596cf2000f819b"
+ "22.22.2-linux_ppc64le": [
+ "node-v22.22.2-linux-ppc64le.tar.xz",
+ "node-v22.22.2-linux-ppc64le",
+ "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"
],
- "22.22.1-linux_s390x": [
- "node-v22.22.1-linux-s390x.tar.xz",
- "node-v22.22.1-linux-s390x",
- "e08b3a73d0bd840e008f589e4be4a2ef3d4a0c59015f4f20a04ed7fc968042a2"
+ "22.22.2-linux_s390x": [
+ "node-v22.22.2-linux-s390x.tar.xz",
+ "node-v22.22.2-linux-s390x",
+ "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"
],
- "22.22.1-linux_amd64": [
- "node-v22.22.1-linux-x64.tar.xz",
- "node-v22.22.1-linux-x64",
- "9a6bc82f9b491279147219f6a18add1e18424dce90d41d2a5fcd69d4924ba3aa"
+ "22.22.2-linux_amd64": [
+ "node-v22.22.2-linux-x64.tar.xz",
+ "node-v22.22.2-linux-x64",
+ "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"
],
- "22.22.1-windows_amd64": [
- "node-v22.22.1-win-x64.zip",
- "node-v22.22.1-win-x64",
- "877cb93829e14fffbbc7903e7d8037336c9a79f3ea43c5d0b8c2379b79da56de"
+ "22.22.2-windows_amd64": [
+ "node-v22.22.2-win-x64.zip",
+ "node-v22.22.2-win-x64",
+ "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.1",
+ "node_version": "22.22.2",
"include_headers": false,
"platform": "linux_ppc64le"
}
@@ -1157,46 +1157,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.1-darwin_arm64": [
- "node-v22.22.1-darwin-arm64.tar.gz",
- "node-v22.22.1-darwin-arm64",
- "679ad4966339e4ef4900f57996714864e4211b898825bb840c3086c419fbcef2"
+ "22.22.2-darwin_arm64": [
+ "node-v22.22.2-darwin-arm64.tar.gz",
+ "node-v22.22.2-darwin-arm64",
+ "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"
],
- "22.22.1-darwin_amd64": [
- "node-v22.22.1-darwin-x64.tar.gz",
- "node-v22.22.1-darwin-x64",
- "07b13722d558790fca20bb1ecf61bde24b7a4863111f7be77fc57251a407359a"
+ "22.22.2-darwin_amd64": [
+ "node-v22.22.2-darwin-x64.tar.gz",
+ "node-v22.22.2-darwin-x64",
+ "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"
],
- "22.22.1-linux_arm64": [
- "node-v22.22.1-linux-arm64.tar.xz",
- "node-v22.22.1-linux-arm64",
- "0f3550d58d45e5d3cf7103d9e3f69937f09fe82fb5dd474c66a5d816fa58c9ee"
+ "22.22.2-linux_arm64": [
+ "node-v22.22.2-linux-arm64.tar.xz",
+ "node-v22.22.2-linux-arm64",
+ "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"
],
- "22.22.1-linux_ppc64le": [
- "node-v22.22.1-linux-ppc64le.tar.xz",
- "node-v22.22.1-linux-ppc64le",
- "a65a44cf0224505f052b90357b763dbc1ea9148f4f5f2284f0596cf2000f819b"
+ "22.22.2-linux_ppc64le": [
+ "node-v22.22.2-linux-ppc64le.tar.xz",
+ "node-v22.22.2-linux-ppc64le",
+ "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"
],
- "22.22.1-linux_s390x": [
- "node-v22.22.1-linux-s390x.tar.xz",
- "node-v22.22.1-linux-s390x",
- "e08b3a73d0bd840e008f589e4be4a2ef3d4a0c59015f4f20a04ed7fc968042a2"
+ "22.22.2-linux_s390x": [
+ "node-v22.22.2-linux-s390x.tar.xz",
+ "node-v22.22.2-linux-s390x",
+ "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"
],
- "22.22.1-linux_amd64": [
- "node-v22.22.1-linux-x64.tar.xz",
- "node-v22.22.1-linux-x64",
- "9a6bc82f9b491279147219f6a18add1e18424dce90d41d2a5fcd69d4924ba3aa"
+ "22.22.2-linux_amd64": [
+ "node-v22.22.2-linux-x64.tar.xz",
+ "node-v22.22.2-linux-x64",
+ "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"
],
- "22.22.1-windows_amd64": [
- "node-v22.22.1-win-x64.zip",
- "node-v22.22.1-win-x64",
- "877cb93829e14fffbbc7903e7d8037336c9a79f3ea43c5d0b8c2379b79da56de"
+ "22.22.2-windows_amd64": [
+ "node-v22.22.2-win-x64.zip",
+ "node-v22.22.2-win-x64",
+ "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.1",
+ "node_version": "22.22.2",
"include_headers": false,
"platform": "darwin_amd64"
}
@@ -1206,46 +1206,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.1-darwin_arm64": [
- "node-v22.22.1-darwin-arm64.tar.gz",
- "node-v22.22.1-darwin-arm64",
- "679ad4966339e4ef4900f57996714864e4211b898825bb840c3086c419fbcef2"
+ "22.22.2-darwin_arm64": [
+ "node-v22.22.2-darwin-arm64.tar.gz",
+ "node-v22.22.2-darwin-arm64",
+ "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"
],
- "22.22.1-darwin_amd64": [
- "node-v22.22.1-darwin-x64.tar.gz",
- "node-v22.22.1-darwin-x64",
- "07b13722d558790fca20bb1ecf61bde24b7a4863111f7be77fc57251a407359a"
+ "22.22.2-darwin_amd64": [
+ "node-v22.22.2-darwin-x64.tar.gz",
+ "node-v22.22.2-darwin-x64",
+ "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"
],
- "22.22.1-linux_arm64": [
- "node-v22.22.1-linux-arm64.tar.xz",
- "node-v22.22.1-linux-arm64",
- "0f3550d58d45e5d3cf7103d9e3f69937f09fe82fb5dd474c66a5d816fa58c9ee"
+ "22.22.2-linux_arm64": [
+ "node-v22.22.2-linux-arm64.tar.xz",
+ "node-v22.22.2-linux-arm64",
+ "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"
],
- "22.22.1-linux_ppc64le": [
- "node-v22.22.1-linux-ppc64le.tar.xz",
- "node-v22.22.1-linux-ppc64le",
- "a65a44cf0224505f052b90357b763dbc1ea9148f4f5f2284f0596cf2000f819b"
+ "22.22.2-linux_ppc64le": [
+ "node-v22.22.2-linux-ppc64le.tar.xz",
+ "node-v22.22.2-linux-ppc64le",
+ "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"
],
- "22.22.1-linux_s390x": [
- "node-v22.22.1-linux-s390x.tar.xz",
- "node-v22.22.1-linux-s390x",
- "e08b3a73d0bd840e008f589e4be4a2ef3d4a0c59015f4f20a04ed7fc968042a2"
+ "22.22.2-linux_s390x": [
+ "node-v22.22.2-linux-s390x.tar.xz",
+ "node-v22.22.2-linux-s390x",
+ "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"
],
- "22.22.1-linux_amd64": [
- "node-v22.22.1-linux-x64.tar.xz",
- "node-v22.22.1-linux-x64",
- "9a6bc82f9b491279147219f6a18add1e18424dce90d41d2a5fcd69d4924ba3aa"
+ "22.22.2-linux_amd64": [
+ "node-v22.22.2-linux-x64.tar.xz",
+ "node-v22.22.2-linux-x64",
+ "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"
],
- "22.22.1-windows_amd64": [
- "node-v22.22.1-win-x64.zip",
- "node-v22.22.1-win-x64",
- "877cb93829e14fffbbc7903e7d8037336c9a79f3ea43c5d0b8c2379b79da56de"
+ "22.22.2-windows_amd64": [
+ "node-v22.22.2-win-x64.zip",
+ "node-v22.22.2-win-x64",
+ "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.1",
+ "node_version": "22.22.2",
"include_headers": false,
"platform": "darwin_arm64"
}
@@ -1255,46 +1255,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.1-darwin_arm64": [
- "node-v22.22.1-darwin-arm64.tar.gz",
- "node-v22.22.1-darwin-arm64",
- "679ad4966339e4ef4900f57996714864e4211b898825bb840c3086c419fbcef2"
+ "22.22.2-darwin_arm64": [
+ "node-v22.22.2-darwin-arm64.tar.gz",
+ "node-v22.22.2-darwin-arm64",
+ "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"
],
- "22.22.1-darwin_amd64": [
- "node-v22.22.1-darwin-x64.tar.gz",
- "node-v22.22.1-darwin-x64",
- "07b13722d558790fca20bb1ecf61bde24b7a4863111f7be77fc57251a407359a"
+ "22.22.2-darwin_amd64": [
+ "node-v22.22.2-darwin-x64.tar.gz",
+ "node-v22.22.2-darwin-x64",
+ "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"
],
- "22.22.1-linux_arm64": [
- "node-v22.22.1-linux-arm64.tar.xz",
- "node-v22.22.1-linux-arm64",
- "0f3550d58d45e5d3cf7103d9e3f69937f09fe82fb5dd474c66a5d816fa58c9ee"
+ "22.22.2-linux_arm64": [
+ "node-v22.22.2-linux-arm64.tar.xz",
+ "node-v22.22.2-linux-arm64",
+ "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"
],
- "22.22.1-linux_ppc64le": [
- "node-v22.22.1-linux-ppc64le.tar.xz",
- "node-v22.22.1-linux-ppc64le",
- "a65a44cf0224505f052b90357b763dbc1ea9148f4f5f2284f0596cf2000f819b"
+ "22.22.2-linux_ppc64le": [
+ "node-v22.22.2-linux-ppc64le.tar.xz",
+ "node-v22.22.2-linux-ppc64le",
+ "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"
],
- "22.22.1-linux_s390x": [
- "node-v22.22.1-linux-s390x.tar.xz",
- "node-v22.22.1-linux-s390x",
- "e08b3a73d0bd840e008f589e4be4a2ef3d4a0c59015f4f20a04ed7fc968042a2"
+ "22.22.2-linux_s390x": [
+ "node-v22.22.2-linux-s390x.tar.xz",
+ "node-v22.22.2-linux-s390x",
+ "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"
],
- "22.22.1-linux_amd64": [
- "node-v22.22.1-linux-x64.tar.xz",
- "node-v22.22.1-linux-x64",
- "9a6bc82f9b491279147219f6a18add1e18424dce90d41d2a5fcd69d4924ba3aa"
+ "22.22.2-linux_amd64": [
+ "node-v22.22.2-linux-x64.tar.xz",
+ "node-v22.22.2-linux-x64",
+ "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"
],
- "22.22.1-windows_amd64": [
- "node-v22.22.1-win-x64.zip",
- "node-v22.22.1-win-x64",
- "877cb93829e14fffbbc7903e7d8037336c9a79f3ea43c5d0b8c2379b79da56de"
+ "22.22.2-windows_amd64": [
+ "node-v22.22.2-win-x64.zip",
+ "node-v22.22.2-win-x64",
+ "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.1",
+ "node_version": "22.22.2",
"include_headers": false,
"platform": "windows_amd64"
}
@@ -1304,46 +1304,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.1-darwin_arm64": [
- "node-v22.22.1-darwin-arm64.tar.gz",
- "node-v22.22.1-darwin-arm64",
- "679ad4966339e4ef4900f57996714864e4211b898825bb840c3086c419fbcef2"
+ "22.22.2-darwin_arm64": [
+ "node-v22.22.2-darwin-arm64.tar.gz",
+ "node-v22.22.2-darwin-arm64",
+ "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"
],
- "22.22.1-darwin_amd64": [
- "node-v22.22.1-darwin-x64.tar.gz",
- "node-v22.22.1-darwin-x64",
- "07b13722d558790fca20bb1ecf61bde24b7a4863111f7be77fc57251a407359a"
+ "22.22.2-darwin_amd64": [
+ "node-v22.22.2-darwin-x64.tar.gz",
+ "node-v22.22.2-darwin-x64",
+ "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"
],
- "22.22.1-linux_arm64": [
- "node-v22.22.1-linux-arm64.tar.xz",
- "node-v22.22.1-linux-arm64",
- "0f3550d58d45e5d3cf7103d9e3f69937f09fe82fb5dd474c66a5d816fa58c9ee"
+ "22.22.2-linux_arm64": [
+ "node-v22.22.2-linux-arm64.tar.xz",
+ "node-v22.22.2-linux-arm64",
+ "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"
],
- "22.22.1-linux_ppc64le": [
- "node-v22.22.1-linux-ppc64le.tar.xz",
- "node-v22.22.1-linux-ppc64le",
- "a65a44cf0224505f052b90357b763dbc1ea9148f4f5f2284f0596cf2000f819b"
+ "22.22.2-linux_ppc64le": [
+ "node-v22.22.2-linux-ppc64le.tar.xz",
+ "node-v22.22.2-linux-ppc64le",
+ "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"
],
- "22.22.1-linux_s390x": [
- "node-v22.22.1-linux-s390x.tar.xz",
- "node-v22.22.1-linux-s390x",
- "e08b3a73d0bd840e008f589e4be4a2ef3d4a0c59015f4f20a04ed7fc968042a2"
+ "22.22.2-linux_s390x": [
+ "node-v22.22.2-linux-s390x.tar.xz",
+ "node-v22.22.2-linux-s390x",
+ "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"
],
- "22.22.1-linux_amd64": [
- "node-v22.22.1-linux-x64.tar.xz",
- "node-v22.22.1-linux-x64",
- "9a6bc82f9b491279147219f6a18add1e18424dce90d41d2a5fcd69d4924ba3aa"
+ "22.22.2-linux_amd64": [
+ "node-v22.22.2-linux-x64.tar.xz",
+ "node-v22.22.2-linux-x64",
+ "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"
],
- "22.22.1-windows_amd64": [
- "node-v22.22.1-win-x64.zip",
- "node-v22.22.1-win-x64",
- "877cb93829e14fffbbc7903e7d8037336c9a79f3ea43c5d0b8c2379b79da56de"
+ "22.22.2-windows_amd64": [
+ "node-v22.22.2-win-x64.zip",
+ "node-v22.22.2-win-x64",
+ "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.1",
+ "node_version": "22.22.2",
"include_headers": false,
"platform": "windows_arm64"
}
diff --git a/package.json b/package.json
index 2106c63e6118..1b7787da3f8a 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@angular/devkit-repo",
- "version": "21.2.4",
+ "version": "21.2.5",
"private": true,
"description": "Software Development Kit for Angular",
"keywords": [
@@ -42,20 +42,20 @@
},
"homepage": "https://github.com/angular/angular-cli",
"devDependencies": {
- "@angular/animations": "21.2.5",
+ "@angular/animations": "21.2.6",
"@angular/cdk": "21.2.4",
- "@angular/common": "21.2.5",
- "@angular/compiler": "21.2.5",
- "@angular/compiler-cli": "21.2.5",
- "@angular/core": "21.2.5",
- "@angular/forms": "21.2.5",
- "@angular/localize": "21.2.5",
+ "@angular/common": "21.2.6",
+ "@angular/compiler": "21.2.6",
+ "@angular/compiler-cli": "21.2.6",
+ "@angular/core": "21.2.6",
+ "@angular/forms": "21.2.6",
+ "@angular/localize": "21.2.6",
"@angular/material": "21.2.4",
"@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#88dbc0543ffbc4df720ac87c0d413fab45ea1491",
- "@angular/platform-browser": "21.2.5",
- "@angular/platform-server": "21.2.5",
- "@angular/router": "21.2.5",
- "@angular/service-worker": "21.2.5",
+ "@angular/platform-browser": "21.2.6",
+ "@angular/platform-server": "21.2.6",
+ "@angular/router": "21.2.6",
+ "@angular/service-worker": "21.2.6",
"@babel/core": "7.29.0",
"@bazel/bazelisk": "1.28.1",
"@bazel/buildifier": "8.2.1",
diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json
index cb03c7973a5d..bca9e583729f 100644
--- a/packages/angular/build/package.json
+++ b/packages/angular/build/package.json
@@ -35,7 +35,7 @@
"magic-string": "0.30.21",
"mrmime": "2.0.1",
"parse5-html-rewriting-stream": "8.0.0",
- "picomatch": "4.0.3",
+ "picomatch": "4.0.4",
"piscina": "5.1.4",
"rolldown": "1.0.0-rc.4",
"sass": "1.97.3",
diff --git a/packages/angular/cli/src/commands/mcp/host.ts b/packages/angular/cli/src/commands/mcp/host.ts
index 1ff0bb9724b3..94ac449fe356 100644
--- a/packages/angular/cli/src/commands/mcp/host.ts
+++ b/packages/angular/cli/src/commands/mcp/host.ts
@@ -118,6 +118,11 @@ export interface Host {
* Finds an available TCP port on the system.
*/
getAvailablePort(): Promise;
+
+ /**
+ * Checks whether a TCP port is available on the system.
+ */
+ isPortAvailable(port: number): Promise;
}
/**
@@ -236,4 +241,16 @@ export const LocalWorkspaceHost: Host = {
});
});
},
+
+ isPortAvailable(port: number): Promise {
+ return new Promise((resolve) => {
+ const server = createServer();
+ server.once('error', () => resolve(false));
+ server.listen(port, () => {
+ server.close(() => {
+ resolve(true);
+ });
+ });
+ });
+ },
};
diff --git a/packages/angular/cli/src/commands/mcp/testing/mock-host.ts b/packages/angular/cli/src/commands/mcp/testing/mock-host.ts
index 29f41c24e101..ce2e5177ffab 100644
--- a/packages/angular/cli/src/commands/mcp/testing/mock-host.ts
+++ b/packages/angular/cli/src/commands/mcp/testing/mock-host.ts
@@ -21,4 +21,5 @@ export class MockHost implements Host {
resolveModule = jasmine.createSpy('resolveRequest').and.returnValue('/dev/null');
spawn = jasmine.createSpy('spawn');
getAvailablePort = jasmine.createSpy('getAvailablePort');
+ isPortAvailable = jasmine.createSpy('isPortAvailable').and.resolveTo(true);
}
diff --git a/packages/angular/cli/src/commands/mcp/testing/test-utils.ts b/packages/angular/cli/src/commands/mcp/testing/test-utils.ts
index 7afcd695dd7d..1bdf2ef416a5 100644
--- a/packages/angular/cli/src/commands/mcp/testing/test-utils.ts
+++ b/packages/angular/cli/src/commands/mcp/testing/test-utils.ts
@@ -27,6 +27,9 @@ export function createMockHost(): MockHost {
getAvailablePort: jasmine
.createSpy('getAvailablePort')
.and.resolveTo(0),
+ isPortAvailable: jasmine
+ .createSpy('isPortAvailable')
+ .and.resolveTo(true),
} as unknown as MockHost;
}
diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts
index 272bf6800300..f5f413cfad30 100644
--- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts
+++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts
@@ -15,6 +15,13 @@ import { type McpToolContext, type McpToolDeclaration, declareTool } from '../to
const devserverStartToolInputSchema = z.object({
...workspaceAndProjectOptions,
+ port: z
+ .number()
+ .optional()
+ .describe(
+ 'The port number to run the server on. If not provided, a random available port will be chosen. ' +
+ 'It is recommended to reuse port numbers across calls within the same workspace to maintain consistency.',
+ ),
});
export type DevserverStartToolInput = z.infer;
@@ -53,7 +60,17 @@ export async function startDevserver(input: DevserverStartToolInput, context: Mc
});
}
- const port = await context.host.getAvailablePort();
+ let port: number;
+ if (input.port) {
+ if (!(await context.host.isPortAvailable(input.port))) {
+ throw new Error(
+ `Port ${input.port} is unavailable. Try calling this tool again without the 'port' parameter to auto-assign a free port.`,
+ );
+ }
+ port = input.port;
+ } else {
+ port = await context.host.getAvailablePort();
+ }
devserver = new LocalDevserver({
host: context.host,
@@ -87,14 +104,18 @@ the first build completes.
background.
* **Get Initial Build Logs:** Once a dev server has started, use the "devserver.wait_for_build" tool to ensure it's alive. If there are any
build errors, "devserver.wait_for_build" would provide them back and you can give them to the user or rely on them to propose a fix.
-* **Get Updated Build Logs:** Important: as long as a devserver is alive (i.e. "devserver.stop" wasn't called), after every time you make a
- change to the workspace, re-run "devserver.wait_for_build" to see whether the change was successfully built and wait for the devserver to
- be updated.
+* **Get Updated Build Logs:** Important: as long as a devserver is alive (i.e. "devserver.stop" wasn't called), after every time you
+ make a change to the workspace, re-run "devserver.wait_for_build" to see whether the change was successfully built and wait for the
+ devserver to be updated.
* This tool manages development servers by itself. It maintains at most a single dev server instance for each project in the monorepo.
* This is an asynchronous operation. Subsequent commands can be ran while the server is active.
* Use 'devserver.stop' to gracefully shut down the server and access the full log output.
+* **Keeping the Server Alive**: It is often better to keep the server alive between tool calls if you expect the user to request more
+ changes or run more tests, as it saves time on restarts and maintains the file watcher state. You must still call
+ 'devserver.wait_for_build' after every change to see whether the change was successfully built and be sure that that app was updated.
+* **Consistent Ports**: If making multiple calls, it is recommended to reuse the port you got from the first call for subsequent ones.
`,
isReadOnly: true,
diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts
index 93c6b367cb70..52a66902e2ef 100644
--- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts
+++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts
@@ -64,6 +64,31 @@ describe('Serve Tools', () => {
expect(mockProcess.kill).toHaveBeenCalled();
});
+ it('should use the provided port number', async () => {
+ const startResult = await startDevserver({ port: 54321 }, mockContext);
+ expect(startResult.structuredContent.message).toBe(
+ `Development server for project 'my-app' started and watching for workspace changes.`,
+ );
+ expect(mockHost.spawn).toHaveBeenCalledWith('ng', ['serve', 'my-app', '--port=54321'], {
+ stdio: 'pipe',
+ cwd: '/test',
+ });
+ expect(mockHost.getAvailablePort).not.toHaveBeenCalled();
+ });
+
+ it('should throw an error if the provided port is taken', async () => {
+ mockHost.isPortAvailable.and.resolveTo(false);
+
+ try {
+ await startDevserver({ port: 55555 }, mockContext);
+ fail('Should have thrown an error');
+ } catch (e) {
+ expect((e as Error).message).toContain(
+ "Port 55555 is unavailable. Try calling this tool again without the 'port' parameter to auto-assign a free port.",
+ );
+ }
+ });
+
it('should wait for a build to complete', async () => {
await startDevserver({}, mockContext);
diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json
index 507ffc8ac5fd..9d9cf4650c44 100644
--- a/packages/angular/ssr/package.json
+++ b/packages/angular/ssr/package.json
@@ -29,12 +29,12 @@
},
"devDependencies": {
"@angular-devkit/schematics": "workspace:*",
- "@angular/common": "21.2.5",
- "@angular/compiler": "21.2.5",
- "@angular/core": "21.2.5",
- "@angular/platform-browser": "21.2.5",
- "@angular/platform-server": "21.2.5",
- "@angular/router": "21.2.5",
+ "@angular/common": "21.2.6",
+ "@angular/compiler": "21.2.6",
+ "@angular/core": "21.2.6",
+ "@angular/platform-browser": "21.2.6",
+ "@angular/platform-server": "21.2.6",
+ "@angular/router": "21.2.6",
"@schematics/angular": "workspace:*",
"beasties": "0.4.1"
},
diff --git a/packages/angular/ssr/src/utils/validation.ts b/packages/angular/ssr/src/utils/validation.ts
index e359b94aac6f..e8af64ed9943 100644
--- a/packages/angular/ssr/src/utils/validation.ts
+++ b/packages/angular/ssr/src/utils/validation.ts
@@ -24,7 +24,7 @@ const VALID_PROTO_REGEX = /^https?$/i;
/**
* Regular expression to validate that the host is a valid hostname.
*/
-const VALID_HOST_REGEX = /^[a-z0-9.:-]+$/i;
+const VALID_HOST_REGEX = /^[a-z0-9_.-]+(:[0-9]+)?$/i;
/**
* Regular expression to validate that the prefix is valid.
@@ -151,6 +151,19 @@ export function cloneRequestAndPatchHeaders(
};
};
+ const originalForEach = headers.forEach;
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
+ (headers.forEach as typeof originalForEach) = function (callback, thisArg) {
+ originalForEach.call(
+ headers,
+ (value, key, parent) => {
+ validateHeader(key, value, allowedHosts, onError);
+ callback.call(thisArg, value, key, parent);
+ },
+ thisArg,
+ );
+ };
+
// Ensure for...of loops use the new patched entries
(headers[Symbol.iterator] as typeof originalEntries) = headers.entries;
diff --git a/packages/angular/ssr/test/utils/validation_spec.ts b/packages/angular/ssr/test/utils/validation_spec.ts
index 8fed87e83713..5c4b6e8cd121 100644
--- a/packages/angular/ssr/test/utils/validation_spec.ts
+++ b/packages/angular/ssr/test/utils/validation_spec.ts
@@ -341,5 +341,24 @@ describe('Validation Utils', () => {
}),
);
});
+
+ it('should validate headers when iterating with forEach()', async () => {
+ const req = new Request('http://example.com', {
+ headers: { 'host': 'evil.com' },
+ });
+ const { request: secured, onError } = cloneRequestAndPatchHeaders(req, allowedHosts);
+
+ expect(() => {
+ secured.headers.forEach(() => {
+ // access the header to trigger the validation
+ });
+ }).toThrowError('Header "host" with value "evil.com" is not allowed.');
+
+ await expectAsync(onError).toBeResolvedTo(
+ jasmine.objectContaining({
+ message: jasmine.stringMatching('Header "host" with value "evil.com" is not allowed.'),
+ }),
+ );
+ });
});
});
diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json
index d7422e87fbe1..ed47eb31a2bf 100644
--- a/packages/angular_devkit/build_angular/package.json
+++ b/packages/angular_devkit/build_angular/package.json
@@ -40,7 +40,7 @@
"mini-css-extract-plugin": "2.10.0",
"open": "11.0.0",
"ora": "9.3.0",
- "picomatch": "4.0.3",
+ "picomatch": "4.0.4",
"piscina": "5.1.4",
"postcss": "8.5.6",
"postcss-loader": "8.2.0",
diff --git a/packages/angular_devkit/core/package.json b/packages/angular_devkit/core/package.json
index df7555968b65..fe4a5a13032a 100644
--- a/packages/angular_devkit/core/package.json
+++ b/packages/angular_devkit/core/package.json
@@ -28,7 +28,7 @@
"ajv": "8.18.0",
"ajv-formats": "3.0.1",
"jsonc-parser": "3.3.1",
- "picomatch": "4.0.3",
+ "picomatch": "4.0.4",
"rxjs": "7.8.2",
"source-map": "0.7.6"
},
diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json
index ca95f003f690..53c41569bd15 100644
--- a/packages/ngtools/webpack/package.json
+++ b/packages/ngtools/webpack/package.json
@@ -27,8 +27,8 @@
},
"devDependencies": {
"@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER",
- "@angular/compiler": "21.2.5",
- "@angular/compiler-cli": "21.2.5",
+ "@angular/compiler": "21.2.6",
+ "@angular/compiler-cli": "21.2.6",
"typescript": "5.9.3",
"webpack": "5.105.2"
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3d90ff6bbe5a..9a13dd4a5849 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -20,47 +20,47 @@ importers:
built: true
devDependencies:
'@angular/animations':
- specifier: 21.2.5
- version: 21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))
+ specifier: 21.2.6
+ version: 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))
'@angular/cdk':
specifier: 21.2.4
- version: 21.2.4(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
+ version: 21.2.4(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
'@angular/common':
- specifier: 21.2.5
- version: 21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
+ specifier: 21.2.6
+ version: 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
'@angular/compiler':
- specifier: 21.2.5
- version: 21.2.5
+ specifier: 21.2.6
+ version: 21.2.6
'@angular/compiler-cli':
- specifier: 21.2.5
- version: 21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3)
+ specifier: 21.2.6
+ version: 21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3)
'@angular/core':
- specifier: 21.2.5
- version: 21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)
+ specifier: 21.2.6
+ version: 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)
'@angular/forms':
- specifier: 21.2.5
- version: 21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
+ specifier: 21.2.6
+ version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
'@angular/localize':
- specifier: 21.2.5
- version: 21.2.5(@angular/compiler-cli@21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3))(@angular/compiler@21.2.5)
+ specifier: 21.2.6
+ version: 21.2.6(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(@angular/compiler@21.2.6)
'@angular/material':
specifier: 21.2.4
- version: 21.2.4(32b401b7c9ea7b1fdc7252144806b87f)
+ version: 21.2.4(2045f7bd5f6e95e11cc97fff9a766245)
'@angular/ng-dev':
specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#88dbc0543ffbc4df720ac87c0d413fab45ea1491
version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/88dbc0543ffbc4df720ac87c0d413fab45ea1491(@modelcontextprotocol/sdk@1.26.0(zod@4.3.6))
'@angular/platform-browser':
- specifier: 21.2.5
- version: 21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))
+ specifier: 21.2.6
+ version: 21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))
'@angular/platform-server':
- specifier: 21.2.5
- version: 21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.5)(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
+ specifier: 21.2.6
+ version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
'@angular/router':
- specifier: 21.2.5
- version: 21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
+ specifier: 21.2.6
+ version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
'@angular/service-worker':
- specifier: 21.2.5
- version: 21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
+ specifier: 21.2.6
+ version: 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
'@babel/core':
specifier: 7.29.0
version: 7.29.0
@@ -327,7 +327,7 @@ importers:
version: 28.1.0
ng-packagr:
specifier: 22.0.0-next.1
- version: 22.0.0-next.1(@angular/compiler-cli@21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3)
+ version: 22.0.0-next.1(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3)
rxjs:
specifier: 7.8.2
version: 7.8.2
@@ -389,8 +389,8 @@ importers:
specifier: 8.0.0
version: 8.0.0
picomatch:
- specifier: 4.0.3
- version: 4.0.3
+ specifier: 4.0.4
+ version: 4.0.4
piscina:
specifier: 5.1.4
version: 5.1.4
@@ -433,7 +433,7 @@ importers:
version: 4.4.2
ng-packagr:
specifier: 21.2.1
- version: 21.2.1(@angular/compiler-cli@21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3)
+ version: 21.2.1(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3)
postcss:
specifier: 8.5.6
version: 8.5.6
@@ -527,23 +527,23 @@ importers:
specifier: workspace:*
version: link:../../angular_devkit/schematics
'@angular/common':
- specifier: 21.2.5
- version: 21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
+ specifier: 21.2.6
+ version: 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
'@angular/compiler':
- specifier: 21.2.5
- version: 21.2.5
+ specifier: 21.2.6
+ version: 21.2.6
'@angular/core':
- specifier: 21.2.5
- version: 21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)
+ specifier: 21.2.6
+ version: 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)
'@angular/platform-browser':
- specifier: 21.2.5
- version: 21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))
+ specifier: 21.2.6
+ version: 21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))
'@angular/platform-server':
- specifier: 21.2.5
- version: 21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.5)(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
+ specifier: 21.2.6
+ version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
'@angular/router':
- specifier: 21.2.5
- version: 21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
+ specifier: 21.2.6
+ version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
'@schematics/angular':
specifier: workspace:*
version: link:../../schematics/angular
@@ -671,8 +671,8 @@ importers:
specifier: 9.3.0
version: 9.3.0
picomatch:
- specifier: 4.0.3
- version: 4.0.3
+ specifier: 4.0.4
+ version: 4.0.4
piscina:
specifier: 5.1.4
version: 5.1.4
@@ -742,7 +742,7 @@ importers:
version: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)
ng-packagr:
specifier: 21.2.1
- version: 21.2.1(@angular/compiler-cli@21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3)
+ version: 21.2.1(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3)
undici:
specifier: 7.24.4
version: 7.24.4
@@ -785,8 +785,8 @@ importers:
specifier: 3.3.1
version: 3.3.1
picomatch:
- specifier: 4.0.3
- version: 4.0.3
+ specifier: 4.0.4
+ version: 4.0.4
rxjs:
specifier: 7.8.2
version: 7.8.2
@@ -834,11 +834,11 @@ importers:
specifier: workspace:0.0.0-PLACEHOLDER
version: link:../../angular_devkit/core
'@angular/compiler':
- specifier: 21.2.5
- version: 21.2.5
+ specifier: 21.2.6
+ version: 21.2.6
'@angular/compiler-cli':
- specifier: 21.2.5
- version: 21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3)
+ specifier: 21.2.6
+ version: 21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3)
typescript:
specifier: 5.9.3
version: 5.9.3
@@ -950,11 +950,11 @@ packages:
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
- '@angular/animations@21.2.5':
- resolution: {integrity: sha512-8jH48A1gNph5YGlTXXoXJ/5T6uEZB14ITad3uQwBMM1mUUvM0T4QIMk555jIe1fIHHUyTfRR2y7v8SfTe2++fA==}
+ '@angular/animations@21.2.6':
+ resolution: {integrity: sha512-SPzTOlkyVagPdb7OMe9hw3dnpMGq2p/nADatzNfRUMXwit8AU8VaiPIrFRsCD52sAL1zDDj60gKsk/dprzIyFA==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
peerDependencies:
- '@angular/core': 21.2.5
+ '@angular/core': 21.2.6
'@angular/cdk@21.2.4':
resolution: {integrity: sha512-Zv+q9Z/wVWTt0ckuO3gnU7PbpCLTr1tKPEsofLGGzDufA5/85aBLn2UiLcjlY6wQ+V3EMqANhGo/8XJgvBEYFA==}
@@ -964,33 +964,33 @@ packages:
'@angular/platform-browser': ^21.0.0 || ^22.0.0
rxjs: ^6.5.3 || ^7.4.0
- '@angular/common@21.2.5':
- resolution: {integrity: sha512-MTjCbsHBkF9W12CW9yYiTJdVfZv/qCqBCZ2iqhMpDA5G+ZJiTKP0IDTJVrx2N5iHfiJ1lnK719t/9GXROtEAvg==}
+ '@angular/common@21.2.6':
+ resolution: {integrity: sha512-2FcpZ1h6AZ4JwCIlnpHCYrbRTGQTOj/RFXkuX/qw7K6cFmJGfWFMmr++xWtHZEvUddfbR9hqDo+v1mkqEKE/Kw==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
peerDependencies:
- '@angular/core': 21.2.5
+ '@angular/core': 21.2.6
rxjs: ^6.5.3 || ^7.4.0
- '@angular/compiler-cli@21.2.5':
- resolution: {integrity: sha512-Ox3vz6KAM7i47ujR/3M3NCOeCRn6vrC9yV1SHZRhSrYg6CWWcOMveavEEwtNjYtn3hOzrktO4CnuVwtDbU8pLg==}
+ '@angular/compiler-cli@21.2.6':
+ resolution: {integrity: sha512-CiPmat4+D+hWXMTAY++09WeII/5D0r6iTjdLdaTq8tlo0uJcrOlazib4CpA94kJ2CRdzfhmC1H+ttwBI1xIlTg==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
hasBin: true
peerDependencies:
- '@angular/compiler': 21.2.5
+ '@angular/compiler': 21.2.6
typescript: '>=5.9 <6.1'
peerDependenciesMeta:
typescript:
optional: true
- '@angular/compiler@21.2.5':
- resolution: {integrity: sha512-QloEsknGqLvmr+ED7QShDt7SoMY9mipV+gVnwn4hBI5sbl+TOBfYWXIaJMnxseFwSqjXTSCVGckfylIlynNcFg==}
+ '@angular/compiler@21.2.6':
+ resolution: {integrity: sha512-shGkb/aAIPbG8oSYkVJ0msGlRdDVcJBVaUVx2KenMltifQjfLn5N8DFMAzOR6haaA3XeugFExxKqmvySjrVq+A==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
- '@angular/core@21.2.5':
- resolution: {integrity: sha512-JgHU134Adb1wrpyGC9ozcv3hiRAgaFTvJFn1u9OU/AVXyxu4meMmVh2hp5QhAvPnv8XQdKWWIkAY+dbpPE6zKA==}
+ '@angular/core@21.2.6':
+ resolution: {integrity: sha512-svgK5DhFlQlS+sMybXftn08rHHRiDGY/uIKT5LZUaKgyffnkPb8uClpMIW0NzANtU8qs8pwgDZFoJw85Ia3oqQ==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
peerDependencies:
- '@angular/compiler': 21.2.5
+ '@angular/compiler': 21.2.6
rxjs: ^6.5.3 || ^7.4.0
zone.js: ~0.15.0 || ~0.16.0
peerDependenciesMeta:
@@ -999,22 +999,22 @@ packages:
zone.js:
optional: true
- '@angular/forms@21.2.5':
- resolution: {integrity: sha512-pqRuK+a1ZAFZbs8/dZoorFJah2IWaf/SH8axHUpaDJ7fyNrwNEcpczyObdxZ00lOgORpKAhWo/q0hlVS+In8cw==}
+ '@angular/forms@21.2.6':
+ resolution: {integrity: sha512-i8BoWxBAm0g2xOMcQ8wTdj07gqMPIFYIyefCOo0ezcGj5XhYjd+C2UrYnKsup0aMZqqEAO1l2aZbmfHx9xLheQ==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
peerDependencies:
- '@angular/common': 21.2.5
- '@angular/core': 21.2.5
- '@angular/platform-browser': 21.2.5
+ '@angular/common': 21.2.6
+ '@angular/core': 21.2.6
+ '@angular/platform-browser': 21.2.6
rxjs: ^6.5.3 || ^7.4.0
- '@angular/localize@21.2.5':
- resolution: {integrity: sha512-L/Aa+wMONTM3tvHczwHLYwKwgFhjXwU+TDYJFswu1/nFJ2epb0yNrJzgi9dHXDAMdihJy8920dZr9BI6J/OZ5A==}
+ '@angular/localize@21.2.6':
+ resolution: {integrity: sha512-+nScGHruNCUiGz9nbNyFLO0Wg5dGZt+PBH/9wvzCxe1A+VhyiRSNCTD9hjcjsjtK3WPTRPd+Vo1s2URn+fgD4A==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
hasBin: true
peerDependencies:
- '@angular/compiler': 21.2.5
- '@angular/compiler-cli': 21.2.5
+ '@angular/compiler': 21.2.6
+ '@angular/compiler-cli': 21.2.6
'@angular/material@21.2.4':
resolution: {integrity: sha512-YzkPjgZezdsDeAhSm3zix2h+ohApwaRUMG8ea/75XR1eSkT1n3N7qZaHC8HDkhPYApk8a951RDxsTiiAidnGqg==}
@@ -1031,42 +1031,42 @@ packages:
version: 0.0.0-b9bca459f29f61177a829e69089730415c95ccde
hasBin: true
- '@angular/platform-browser@21.2.5':
- resolution: {integrity: sha512-VuuYguxjgyI4XWuoXrKynmuA3FB991pXbkNhxHeCW0yX+7DGOnGLPF1oierd4/X+IvskmN8foBZLfjyg9u4Ffg==}
+ '@angular/platform-browser@21.2.6':
+ resolution: {integrity: sha512-LW1vPXVHvy71LBahn+fSzPlWQl25kJIdcXq+ptG7HsMVgbPQ3/vvkKXAHYaRdppLGCFL+v+3dQGHYLNLiYL9qg==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
peerDependencies:
- '@angular/animations': 21.2.5
- '@angular/common': 21.2.5
- '@angular/core': 21.2.5
+ '@angular/animations': 21.2.6
+ '@angular/common': 21.2.6
+ '@angular/core': 21.2.6
peerDependenciesMeta:
'@angular/animations':
optional: true
- '@angular/platform-server@21.2.5':
- resolution: {integrity: sha512-fZBxgffh/fD986Ub4EfjZvIVRqwNnF4DFWjcFwPgU8INBjcMEUh5dR/D/nnlBx0EsZSMCd6FbigT8lIrx3lsHQ==}
+ '@angular/platform-server@21.2.6':
+ resolution: {integrity: sha512-IatXqKzRRT8H1UolijS3Lv3SgthH5w3qHe5ZpQADYi9NIaIvtVMnDH3kIxWGhepjMtvUz235J3E6FrPer6mNZA==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
peerDependencies:
- '@angular/common': 21.2.5
- '@angular/compiler': 21.2.5
- '@angular/core': 21.2.5
- '@angular/platform-browser': 21.2.5
+ '@angular/common': 21.2.6
+ '@angular/compiler': 21.2.6
+ '@angular/core': 21.2.6
+ '@angular/platform-browser': 21.2.6
rxjs: ^6.5.3 || ^7.4.0
- '@angular/router@21.2.5':
- resolution: {integrity: sha512-yQGhTVGvh8OMW3auj13+g+OCSQj7gyBQON/2X4LuCvIUG71NPV6Fqzfk9DKTKaXpqo0FThy8/LPJ0Lsy3CRejg==}
+ '@angular/router@21.2.6':
+ resolution: {integrity: sha512-0ajhkKYeOqHQEEH88+Q0HrheR3helwTvdTqD/0gTaapCe+HOoC+SYwmzzsYP2zwAxBNQEg4JHOGKQ30X9/gwgw==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
peerDependencies:
- '@angular/common': 21.2.5
- '@angular/core': 21.2.5
- '@angular/platform-browser': 21.2.5
+ '@angular/common': 21.2.6
+ '@angular/core': 21.2.6
+ '@angular/platform-browser': 21.2.6
rxjs: ^6.5.3 || ^7.4.0
- '@angular/service-worker@21.2.5':
- resolution: {integrity: sha512-PbkbDuVmpN135bu/XtskkQ1gPVsiGBI+CX9rVUykqomT3y/okW/qaqsYnmzFZedBpZTGKDOaeFGN5GhJj2O22g==}
+ '@angular/service-worker@21.2.6':
+ resolution: {integrity: sha512-RSFspGPBCDU1fEPTTRXarF6vszYEh+d8DXA/o6Bdo4U3+bFCEjekfe2PjHHA2hTaagxR7Ow44gcYWxR7RnNjrA==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
hasBin: true
peerDependencies:
- '@angular/core': 21.2.5
+ '@angular/core': 21.2.6
rxjs: ^6.5.3 || ^7.4.0
'@asamuzakjp/css-color@5.0.1':
@@ -7544,6 +7544,10 @@ packages:
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
engines: {node: '>=12'}
+ picomatch@4.0.4:
+ resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
+ engines: {node: '>=12'}
+
pify@2.3.0:
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
engines: {node: '>=0.10.0'}
@@ -9469,29 +9473,29 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.31
- '@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))':
+ '@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))':
dependencies:
- '@angular/core': 21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)
+ '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)
tslib: 2.8.1
- '@angular/cdk@21.2.4(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)':
+ '@angular/cdk@21.2.4(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)':
dependencies:
- '@angular/common': 21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
- '@angular/core': 21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)
- '@angular/platform-browser': 21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))
+ '@angular/common': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
+ '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)
+ '@angular/platform-browser': 21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))
parse5: 8.0.0
rxjs: 7.8.2
tslib: 2.8.1
- '@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)':
+ '@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)':
dependencies:
- '@angular/core': 21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)
+ '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)
rxjs: 7.8.2
tslib: 2.8.1
- '@angular/compiler-cli@21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3)':
+ '@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3)':
dependencies:
- '@angular/compiler': 21.2.5
+ '@angular/compiler': 21.2.6
'@babel/core': 7.29.0
'@jridgewell/sourcemap-codec': 1.5.5
chokidar: 5.0.0
@@ -9505,31 +9509,31 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@angular/compiler@21.2.5':
+ '@angular/compiler@21.2.6':
dependencies:
tslib: 2.8.1
- '@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)':
+ '@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)':
dependencies:
rxjs: 7.8.2
tslib: 2.8.1
optionalDependencies:
- '@angular/compiler': 21.2.5
+ '@angular/compiler': 21.2.6
zone.js: 0.16.1
- '@angular/forms@21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)':
+ '@angular/forms@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)':
dependencies:
- '@angular/common': 21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
- '@angular/core': 21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)
- '@angular/platform-browser': 21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))
+ '@angular/common': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
+ '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)
+ '@angular/platform-browser': 21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))
'@standard-schema/spec': 1.1.0
rxjs: 7.8.2
tslib: 2.8.1
- '@angular/localize@21.2.5(@angular/compiler-cli@21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3))(@angular/compiler@21.2.5)':
+ '@angular/localize@21.2.6(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(@angular/compiler@21.2.6)':
dependencies:
- '@angular/compiler': 21.2.5
- '@angular/compiler-cli': 21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3)
+ '@angular/compiler': 21.2.6
+ '@angular/compiler-cli': 21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3)
'@babel/core': 7.29.0
'@types/babel__core': 7.20.5
tinyglobby: 0.2.15
@@ -9537,13 +9541,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@angular/material@21.2.4(32b401b7c9ea7b1fdc7252144806b87f)':
+ '@angular/material@21.2.4(2045f7bd5f6e95e11cc97fff9a766245)':
dependencies:
- '@angular/cdk': 21.2.4(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
- '@angular/common': 21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
- '@angular/core': 21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)
- '@angular/forms': 21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
- '@angular/platform-browser': 21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))
+ '@angular/cdk': 21.2.4(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
+ '@angular/common': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
+ '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)
+ '@angular/forms': 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
+ '@angular/platform-browser': 21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))
rxjs: 7.8.2
tslib: 2.8.1
@@ -9607,35 +9611,35 @@ snapshots:
- '@modelcontextprotocol/sdk'
- '@react-native-async-storage/async-storage'
- '@angular/platform-browser@21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))':
+ '@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))':
dependencies:
- '@angular/common': 21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
- '@angular/core': 21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)
+ '@angular/common': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
+ '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)
tslib: 2.8.1
optionalDependencies:
- '@angular/animations': 21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))
+ '@angular/animations': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))
- '@angular/platform-server@21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.5)(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)':
+ '@angular/platform-server@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)':
dependencies:
- '@angular/common': 21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
- '@angular/compiler': 21.2.5
- '@angular/core': 21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)
- '@angular/platform-browser': 21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))
+ '@angular/common': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
+ '@angular/compiler': 21.2.6
+ '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)
+ '@angular/platform-browser': 21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))
rxjs: 7.8.2
tslib: 2.8.1
xhr2: 0.2.1
- '@angular/router@21.2.5(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)':
+ '@angular/router@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)':
dependencies:
- '@angular/common': 21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
- '@angular/core': 21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)
- '@angular/platform-browser': 21.2.5(@angular/animations@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))
+ '@angular/common': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
+ '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)
+ '@angular/platform-browser': 21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))
rxjs: 7.8.2
tslib: 2.8.1
- '@angular/service-worker@21.2.5(@angular/core@21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)':
+ '@angular/service-worker@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)':
dependencies:
- '@angular/core': 21.2.5(@angular/compiler@21.2.5)(rxjs@7.8.2)(zone.js@0.16.1)
+ '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)
rxjs: 7.8.2
tslib: 2.8.1
@@ -11818,7 +11822,7 @@ snapshots:
detect-libc: 2.1.2
is-glob: 4.0.3
node-addon-api: 7.1.1
- picomatch: 4.0.3
+ picomatch: 4.0.4
optionalDependencies:
'@parcel/watcher-android-arm64': 2.5.6
'@parcel/watcher-darwin-arm64': 2.5.6
@@ -12040,10 +12044,10 @@ snapshots:
'@rollup/pluginutils': 5.3.0(rollup@4.57.1)
commondir: 1.0.1
estree-walker: 2.0.2
- fdir: 6.5.0(picomatch@4.0.3)
+ fdir: 6.5.0(picomatch@4.0.4)
is-reference: 1.2.1
magic-string: 0.30.21
- picomatch: 4.0.3
+ picomatch: 4.0.4
optionalDependencies:
rollup: 4.57.1
@@ -12077,7 +12081,7 @@ snapshots:
dependencies:
'@types/estree': 1.0.8
estree-walker: 2.0.2
- picomatch: 4.0.3
+ picomatch: 4.0.4
optionalDependencies:
rollup: 4.57.1
@@ -12085,7 +12089,7 @@ snapshots:
dependencies:
'@types/estree': 1.0.8
estree-walker: 2.0.2
- picomatch: 4.0.3
+ picomatch: 4.0.4
optionalDependencies:
rollup: 4.57.1
@@ -12224,7 +12228,7 @@ snapshots:
eslint-visitor-keys: 4.2.1
espree: 10.4.0
estraverse: 5.3.0
- picomatch: 4.0.3
+ picomatch: 4.0.4
'@szmarczak/http-timer@4.0.6':
dependencies:
@@ -14920,9 +14924,9 @@ snapshots:
dependencies:
pend: 1.2.0
- fdir@6.5.0(picomatch@4.0.3):
+ fdir@6.5.0(picomatch@4.0.4):
optionalDependencies:
- picomatch: 4.0.3
+ picomatch: 4.0.4
fetch-blob@3.2.0:
dependencies:
@@ -16625,10 +16629,10 @@ snapshots:
netmask@2.0.2: {}
- ng-packagr@21.2.1(@angular/compiler-cli@21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3):
+ ng-packagr@21.2.1(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3):
dependencies:
'@ampproject/remapping': 2.3.0
- '@angular/compiler-cli': 21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3)
+ '@angular/compiler-cli': 21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3)
'@rollup/plugin-json': 6.1.0(rollup@4.57.1)
'@rollup/wasm-node': 4.59.0
ajv: 8.18.0
@@ -16654,10 +16658,10 @@ snapshots:
optionalDependencies:
rollup: 4.57.1
- ng-packagr@22.0.0-next.1(@angular/compiler-cli@21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3):
+ ng-packagr@22.0.0-next.1(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3):
dependencies:
'@ampproject/remapping': 2.3.0
- '@angular/compiler-cli': 21.2.5(@angular/compiler@21.2.5)(typescript@5.9.3)
+ '@angular/compiler-cli': 21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3)
'@rollup/plugin-json': 6.1.0(rollup@4.57.1)
'@rollup/wasm-node': 4.59.0
ajv: 8.18.0
@@ -17098,6 +17102,8 @@ snapshots:
picomatch@4.0.3: {}
+ picomatch@4.0.4: {}
+
pify@2.3.0: {}
pify@3.0.0: {}
@@ -18423,8 +18429,8 @@ snapshots:
tinyglobby@0.2.15:
dependencies:
- fdir: 6.5.0(picomatch@4.0.3)
- picomatch: 4.0.3
+ fdir: 6.5.0(picomatch@4.0.4)
+ picomatch: 4.0.4
tinyrainbow@3.1.0: {}
@@ -18788,8 +18794,8 @@ snapshots:
vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3):
dependencies:
esbuild: 0.27.3
- fdir: 6.5.0(picomatch@4.0.3)
- picomatch: 4.0.3
+ fdir: 6.5.0(picomatch@4.0.4)
+ picomatch: 4.0.4
postcss: 8.5.6
rollup: 4.57.1
tinyglobby: 0.2.15