diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 61a21883337f..f44fdf7be978 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -16,6 +16,6 @@ jobs: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + - uses: angular/dev-infra/github-actions/branch-manager@3186a078ec23edea6e2f6192ed013ec57bd95f87 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bb25c7dfd9ae..ed5f4a0d1738 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@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/setup@3186a078ec23edea6e2f6192ed013ec57bd95f87 - 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@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/setup@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3186a078ec23edea6e2f6192ed013ec57bd95f87 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -58,14 +58,14 @@ jobs: test: needs: build - runs-on: ubuntu-latest-4core + runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/setup@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3186a078ec23edea6e2f6192ed013ec57bd95f87 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -85,13 +85,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/setup@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3186a078ec23edea6e2f6192ed013ec57bd95f87 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/setup@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3186a078ec23edea6e2f6192ed013ec57bd95f87 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/setup@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3186a078ec23edea6e2f6192ed013ec57bd95f87 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/setup@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3186a078ec23edea6e2f6192ed013ec57bd95f87 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/setup@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3186a078ec23edea6e2f6192ed013ec57bd95f87 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/setup@3186a078ec23edea6e2f6192ed013ec57bd95f87 - 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 2e3c9df19845..b4921b0868e3 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@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0 + uses: github/codeql-action/init@d3678e237b9c32a6c9bffb3315c335f976f3549f # v3.30.2 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0 + uses: github/codeql-action/analyze@d3678e237b9c32a6c9bffb3315c335f976f3549f # v3.30.2 with: category: '/language:javascript-typescript' diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index b38ffe5d9d78..0a5c67972e8f 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + - uses: angular/dev-infra/github-actions/pull-request-labeling@3186a078ec23edea6e2f6192ed013ec57bd95f87 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + - uses: angular/dev-infra/github-actions/post-approval-changes@3186a078ec23edea6e2f6192ed013ec57bd95f87 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 8e5a414b6bf9..23435ae8cb4a 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@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + - uses: angular/dev-infra/github-actions/feature-request@3186a078ec23edea6e2f6192ed013ec57bd95f87 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index e013969880db..dfe002aa3e07 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@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - 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@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/setup@3186a078ec23edea6e2f6192ed013ec57bd95f87 - 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 a4740c086906..308eaa6bd73d 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@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/setup@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup ESLint Caching uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/linting/licenses@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/setup@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -90,14 +90,14 @@ jobs: test: needs: build - runs-on: ubuntu-latest-16core + runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/setup@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -115,13 +115,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/setup@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3186a078ec23edea6e2f6192ed013ec57bd95f87 - 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/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/setup@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/setup@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3186a078ec23edea6e2f6192ed013ec57bd95f87 - 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/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/setup@3186a078ec23edea6e2f6192ed013ec57bd95f87 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3186a078ec23edea6e2f6192ed013ec57bd95f87 - 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/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index d480bf741faf..d74147208b95 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@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0 + uses: github/codeql-action/upload-sarif@d3678e237b9c32a6c9bffb3315c335f976f3549f # v3.30.2 with: sarif_file: results.sarif diff --git a/CHANGELOG.md b/CHANGELOG.md index f82a223c83ae..24b4e0078ee1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,58 @@ + + +# 20.3.0 (2025-09-10) + +## Breaking Changes + +### @angular/ssr + +- The server-side bootstrapping process has been changed to eliminate the reliance on a global platform injector. + + Before: + + ```ts + const bootstrap = () => bootstrapApplication(AppComponent, config); + ``` + + After: + + ```ts + const bootstrap = (context: BootstrapContext) => + bootstrapApplication(AppComponent, config, context); + ``` + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------- | +| [ef20a278d](https://github.com/angular/angular-cli/commit/ef20a278d1455b9cdffc5102b13d0b2206ef1ecb) | fix | align labels in ai-config schema | + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------- | +| [f6ad41c13](https://github.com/angular/angular-cli/commit/f6ad41c134c7ae938ccda908967e7cc863b3db16) | fix | improve bun lockfile detection and optimize lockfile checks | + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------ | +| [1a7890873](https://github.com/angular/angular-cli/commit/1a789087344aa94d061839122e6a63efbfc9c905) | fix | avoid extra tick in SSR builds | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------ | +| [5d46d6ec1](https://github.com/angular/angular-cli/commit/5d46d6ec114052715a8bd17761a4f258961ad26b) | fix | preserve names in esbuild for improved debugging in dev mode | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------- | +| [7eacb4187](https://github.com/angular/angular-cli/commit/7eacb41878f5fdac8d40aedfcca6794b77eda5ff) | feat | introduce BootstrapContext for isolated server-side rendering | + + + # 20.2.2 (2025-09-03) diff --git a/MODULE.bazel b/MODULE.bazel index 4aa64fc5c28a..3329671db07c 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -39,7 +39,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "06d3af5cfd1e122087c0acafdd7909edce4ad1d7", + commit = "3186a078ec23edea6e2f6192ed013ec57bd95f87", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/constants.bzl b/constants.bzl index 40841eeaab75..4101d657ec44 100644 --- a/constants.bzl +++ b/constants.bzl @@ -3,8 +3,8 @@ RELEASE_ENGINES_NODE = "^20.19.0 || ^22.12.0 || >=24.0.0" RELEASE_ENGINES_NPM = "^6.11.0 || ^7.5.6 || >=8.0.0" RELEASE_ENGINES_YARN = ">= 1.13.0" -NG_PACKAGR_VERSION = "^20.2.0" -ANGULAR_FW_VERSION = "^20.2.0" +NG_PACKAGR_VERSION = "^20.3.0" +ANGULAR_FW_VERSION = "^20.3.0" ANGULAR_FW_PEER_DEP = "^20.0.0" NG_PACKAGR_PEER_DEP = "^20.0.0" diff --git a/goldens/public-api/angular/ssr/node/index.api.md b/goldens/public-api/angular/ssr/node/index.api.md index 0f30fa7e99c5..eccb6396938e 100644 --- a/goldens/public-api/angular/ssr/node/index.api.md +++ b/goldens/public-api/angular/ssr/node/index.api.md @@ -5,6 +5,7 @@ ```ts import { ApplicationRef } from '@angular/core'; +import { BootstrapContext } from '@angular/platform-browser'; import { Http2ServerRequest } from 'node:http2'; import { Http2ServerResponse } from 'node:http2'; import { IncomingMessage } from 'node:http'; @@ -26,14 +27,14 @@ export class CommonEngine { // @public (undocumented) export interface CommonEngineOptions { - bootstrap?: Type<{}> | (() => Promise); + bootstrap?: Type<{}> | ((context: BootstrapContext) => Promise); enablePerformanceProfiler?: boolean; providers?: StaticProvider[]; } // @public (undocumented) export interface CommonEngineRenderOptions { - bootstrap?: Type<{}> | (() => Promise); + bootstrap?: Type<{}> | ((context: BootstrapContext) => Promise); // (undocumented) document?: string; // (undocumented) diff --git a/package.json b/package.json index 3746cc8dcf45..680605ea51eb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/devkit-repo", - "version": "20.2.2", + "version": "20.3.0", "private": true, "description": "Software Development Kit for Angular", "keywords": [ @@ -46,20 +46,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "20.2.3", - "@angular/cdk": "20.2.1", - "@angular/common": "20.2.3", - "@angular/compiler": "20.2.3", - "@angular/compiler-cli": "20.2.3", - "@angular/core": "20.2.3", - "@angular/forms": "20.2.3", - "@angular/localize": "20.2.3", - "@angular/material": "20.2.1", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#b991414e4f3ed15d99f4331b5353499434878374", - "@angular/platform-browser": "20.2.3", - "@angular/platform-server": "20.2.3", - "@angular/router": "20.2.3", - "@angular/service-worker": "20.2.3", + "@angular/animations": "20.3.0", + "@angular/cdk": "20.2.2", + "@angular/common": "20.3.0", + "@angular/compiler": "20.3.0", + "@angular/compiler-cli": "20.3.0", + "@angular/core": "20.3.0", + "@angular/forms": "20.3.0", + "@angular/localize": "20.3.0", + "@angular/material": "20.2.2", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#1b75cbad43a688705205725df89bf311a8d08652", + "@angular/platform-browser": "20.3.0", + "@angular/platform-server": "20.3.0", + "@angular/router": "20.3.0", + "@angular/service-worker": "20.3.0", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", "@eslint/compat": "1.3.2", diff --git a/packages/angular/build/BUILD.bazel b/packages/angular/build/BUILD.bazel index fbbe5e86ee12..1a35e4159412 100644 --- a/packages/angular/build/BUILD.bazel +++ b/packages/angular/build/BUILD.bazel @@ -123,6 +123,7 @@ ts_project( "//:node_modules/@angular/compiler-cli", "//:node_modules/@angular/core", "//:node_modules/@angular/localize", + "//:node_modules/@angular/platform-browser", "//:node_modules/@angular/platform-server", "//:node_modules/@angular/service-worker", "//:node_modules/@types/babel__core", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 4fffaacd8424..fecb37dbbac7 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -53,7 +53,7 @@ "@angular-devkit/core": "workspace:*", "jsdom": "26.1.0", "less": "4.4.0", - "ng-packagr": "20.2.0", + "ng-packagr": "20.3.0", "postcss": "8.5.6", "rxjs": "7.8.2", "vitest": "3.2.4" diff --git a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts index b17029f6c5e1..a19c9a496067 100644 --- a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts +++ b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts @@ -607,6 +607,9 @@ function getEsBuildCommonOptions(options: NormalizedApplicationBuildOptions): Bu } } + const minifySyntax = optimizationOptions.scripts; + const minifyIdentifiers = minifySyntax && allowMangle; + return { absWorkingDir: workspaceRoot, format: 'esm', @@ -618,9 +621,10 @@ function getEsBuildCommonOptions(options: NormalizedApplicationBuildOptions): Bu metafile: true, legalComments: options.extractLicenses ? 'none' : 'eof', logLevel: options.verbose && !jsonLogs ? 'debug' : 'silent', - minifyIdentifiers: optimizationOptions.scripts && allowMangle, - minifySyntax: optimizationOptions.scripts, - minifyWhitespace: optimizationOptions.scripts, + keepNames: !minifyIdentifiers, + minifyIdentifiers, + minifySyntax, + minifyWhitespace: minifySyntax, pure: ['forwardRef'], outdir: workspaceRoot, outExtension: outExtension ? { '.js': `.${outExtension}` } : undefined, @@ -637,7 +641,7 @@ function getEsBuildCommonOptions(options: NormalizedApplicationBuildOptions): Bu // Only set to false when script optimizations are enabled. It should not be set to true because // Angular turns `ngDevMode` into an object for development debugging purposes when not defined // which a constant true value would break. - ...(optimizationOptions.scripts ? { 'ngDevMode': 'false' } : undefined), + ...(minifySyntax ? { 'ngDevMode': 'false' } : undefined), 'ngJitMode': jit ? 'true' : 'false', 'ngServerMode': 'false', 'ngHmrMode': options.templateUpdates ? 'true' : 'false', diff --git a/packages/angular/build/src/tools/vite/utils.ts b/packages/angular/build/src/tools/vite/utils.ts index 2322eb210bec..048386a4dc4d 100644 --- a/packages/angular/build/src/tools/vite/utils.ts +++ b/packages/angular/build/src/tools/vite/utils.ts @@ -98,6 +98,7 @@ export function getDepOptimizationConfig({ esbuildOptions: { // Set esbuild supported targets. target, + keepNames: true, supported: getFeatureSupport(target, zoneless), plugins, loader, diff --git a/packages/angular/build/src/utils/server-rendering/load-esm-from-memory.ts b/packages/angular/build/src/utils/server-rendering/load-esm-from-memory.ts index 1d19a07e61de..87ca9928a86f 100644 --- a/packages/angular/build/src/utils/server-rendering/load-esm-from-memory.ts +++ b/packages/angular/build/src/utils/server-rendering/load-esm-from-memory.ts @@ -7,6 +7,7 @@ */ import type { ApplicationRef, Type } from '@angular/core'; +import type { BootstrapContext } from '@angular/platform-browser'; import type { ɵextractRoutesAndCreateRouteTree, ɵgetOrCreateAngularServerApp } from '@angular/ssr'; import { assertIsError } from '../error'; import { loadEsmModule } from '../load-esm'; @@ -15,7 +16,7 @@ import { loadEsmModule } from '../load-esm'; * Represents the exports available from the main server bundle. */ interface MainServerBundleExports { - default: (() => Promise) | Type; + default: ((context: BootstrapContext) => Promise) | Type; ɵextractRoutesAndCreateRouteTree: typeof ɵextractRoutesAndCreateRouteTree; ɵgetOrCreateAngularServerApp: typeof ɵgetOrCreateAngularServerApp; } diff --git a/packages/angular/cli/src/utilities/package-manager.ts b/packages/angular/cli/src/utilities/package-manager.ts index d95205f95184..63316fe2c67f 100644 --- a/packages/angular/cli/src/utilities/package-manager.ts +++ b/packages/angular/cli/src/utilities/package-manager.ts @@ -8,13 +8,25 @@ import { isJsonObject, json } from '@angular-devkit/core'; import { execSync, spawn } from 'node:child_process'; -import { existsSync, promises as fs, realpathSync, rmSync } from 'node:fs'; +import { promises as fs, readdirSync, realpathSync, rmSync } from 'node:fs'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; import { PackageManager } from '../../lib/config/workspace-schema'; import { AngularWorkspace, getProjectByCwd } from './config'; import { memoize } from './memoize'; +/** + * A map of package managers to their corresponding lockfile names. + */ +const LOCKFILE_NAMES: Readonly< + Record, string | readonly string[]> +> = { + [PackageManager.Yarn]: 'yarn.lock', + [PackageManager.Pnpm]: 'pnpm-lock.yaml', + [PackageManager.Bun]: ['bun.lockb', 'bun.lock'], + [PackageManager.Npm]: 'package-lock.json', +}; + interface PackageManagerOptions { saveDev: string; install: string; @@ -29,7 +41,13 @@ export interface PackageManagerUtilsContext { root: string; } +/** + * Utilities for interacting with various package managers. + */ export class PackageManagerUtils { + /** + * @param context The context for the package manager utilities, including workspace and global configuration. + */ constructor(private readonly context: PackageManagerUtilsContext) {} /** Get the package manager name. */ @@ -216,10 +234,12 @@ export class PackageManagerUtils { return packageManager; } - const hasNpmLock = this.hasLockfile(PackageManager.Npm); - const hasYarnLock = this.hasLockfile(PackageManager.Yarn); - const hasPnpmLock = this.hasLockfile(PackageManager.Pnpm); - const hasBunLock = this.hasLockfile(PackageManager.Bun); + const filesInRoot = readdirSync(this.context.root); + + const hasNpmLock = this.hasLockfile(PackageManager.Npm, filesInRoot); + const hasYarnLock = this.hasLockfile(PackageManager.Yarn, filesInRoot); + const hasPnpmLock = this.hasLockfile(PackageManager.Pnpm, filesInRoot); + const hasBunLock = this.hasLockfile(PackageManager.Bun, filesInRoot); // PERF NOTE: `this.getVersion` spawns the package a the child_process which can take around ~300ms at times. // Therefore, we should only call this method when needed. IE: don't call `this.getVersion(PackageManager.Pnpm)` unless truly needed. @@ -265,25 +285,21 @@ export class PackageManagerUtils { return PackageManager.Npm; } - private hasLockfile(packageManager: PackageManager): boolean { - let lockfileName: string; - switch (packageManager) { - case PackageManager.Yarn: - lockfileName = 'yarn.lock'; - break; - case PackageManager.Pnpm: - lockfileName = 'pnpm-lock.yaml'; - break; - case PackageManager.Bun: - lockfileName = 'bun.lockb'; - break; - case PackageManager.Npm: - default: - lockfileName = 'package-lock.json'; - break; - } - - return existsSync(join(this.context.root, lockfileName)); + /** + * Checks if a lockfile for a specific package manager exists in the root directory. + * @param packageManager The package manager to check for. + * @param filesInRoot An array of file names in the root directory. + * @returns True if the lockfile exists, false otherwise. + */ + private hasLockfile( + packageManager: Exclude, + filesInRoot: string[], + ): boolean { + const lockfiles = LOCKFILE_NAMES[packageManager]; + + return typeof lockfiles === 'string' + ? filesInRoot.includes(lockfiles) + : lockfiles.some((lockfile) => filesInRoot.includes(lockfile)); } private getConfiguredPackageManager(): PackageManager | undefined { diff --git a/packages/angular/ssr/BUILD.bazel b/packages/angular/ssr/BUILD.bazel index 2694830e3ff4..2218488daeb6 100644 --- a/packages/angular/ssr/BUILD.bazel +++ b/packages/angular/ssr/BUILD.bazel @@ -30,6 +30,7 @@ ts_project( deps = [ "//:node_modules/@angular/common", "//:node_modules/@angular/core", + "//:node_modules/@angular/platform-browser", "//:node_modules/@angular/platform-server", "//:node_modules/@angular/router", "//:node_modules/tslib", diff --git a/packages/angular/ssr/node/src/common-engine/common-engine.ts b/packages/angular/ssr/node/src/common-engine/common-engine.ts index 63c3f6075a23..079c1187696b 100644 --- a/packages/angular/ssr/node/src/common-engine/common-engine.ts +++ b/packages/angular/ssr/node/src/common-engine/common-engine.ts @@ -7,6 +7,7 @@ */ import { ApplicationRef, StaticProvider, Type } from '@angular/core'; +import { BootstrapContext } from '@angular/platform-browser'; import { renderApplication, renderModule, ɵSERVER_CONTEXT } from '@angular/platform-server'; import * as fs from 'node:fs'; import { dirname, join, normalize, resolve } from 'node:path'; @@ -23,7 +24,7 @@ const SSG_MARKER_REGEXP = /ng-server-context=["']\w*\|?ssg\|?\w*["']/; export interface CommonEngineOptions { /** A method that when invoked returns a promise that returns an `ApplicationRef` instance once resolved or an NgModule. */ - bootstrap?: Type<{}> | (() => Promise); + bootstrap?: Type<{}> | ((context: BootstrapContext) => Promise); /** A set of platform level providers for all requests. */ providers?: StaticProvider[]; @@ -34,7 +35,7 @@ export interface CommonEngineOptions { export interface CommonEngineRenderOptions { /** A method that when invoked returns a promise that returns an `ApplicationRef` instance once resolved or an NgModule. */ - bootstrap?: Type<{}> | (() => Promise); + bootstrap?: Type<{}> | ((context: BootstrapContext) => Promise); /** A set of platform level providers for the current request. */ providers?: StaticProvider[]; @@ -197,7 +198,9 @@ async function exists(path: fs.PathLike): Promise { } } -function isBootstrapFn(value: unknown): value is () => Promise { +function isBootstrapFn( + value: unknown, +): value is (context: BootstrapContext) => Promise { // We can differentiate between a module and a bootstrap function by reading compiler-generated `ɵmod` static property: return typeof value === 'function' && !('ɵmod' in value); } diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 79dc4f537f31..d2e0b666b7de 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "20.2.3", - "@angular/compiler": "20.2.3", - "@angular/core": "20.2.3", - "@angular/platform-browser": "20.2.3", - "@angular/platform-server": "20.2.3", - "@angular/router": "20.2.3", + "@angular/common": "20.3.0", + "@angular/compiler": "20.3.0", + "@angular/core": "20.3.0", + "@angular/platform-browser": "20.3.0", + "@angular/platform-server": "20.3.0", + "@angular/router": "20.3.0", "@schematics/angular": "workspace:*" }, "sideEffects": false, diff --git a/packages/angular/ssr/src/manifest.ts b/packages/angular/ssr/src/manifest.ts index d0f9032ec8b1..8fc415546033 100644 --- a/packages/angular/ssr/src/manifest.ts +++ b/packages/angular/ssr/src/manifest.ts @@ -6,6 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ +import type { BootstrapContext } from '@angular/platform-browser'; import type { SerializableRouteTreeNode } from './routes/route-tree'; import { AngularBootstrap } from './utils/ng'; diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts index 7c2db5275023..a7ca0d137d88 100644 --- a/packages/angular/ssr/src/routes/ng-routes.ts +++ b/packages/angular/ssr/src/routes/ng-routes.ts @@ -634,7 +634,7 @@ export async function getRoutesFromAngularRouterConfig( const moduleRef = await platformRef.bootstrapModule(bootstrap); applicationRef = moduleRef.injector.get(ApplicationRef); } else { - applicationRef = await bootstrap(); + applicationRef = await bootstrap({ platformRef }); } const injector = applicationRef.injector; diff --git a/packages/angular/ssr/src/routes/route-config.ts b/packages/angular/ssr/src/routes/route-config.ts index bcd791a7c5c4..f328cee4becc 100644 --- a/packages/angular/ssr/src/routes/route-config.ts +++ b/packages/angular/ssr/src/routes/route-config.ts @@ -356,20 +356,23 @@ export function withAppShell( * when using the `bootstrapApplication` function: * * ```ts - * import { bootstrapApplication } from '@angular/platform-browser'; + * import { bootstrapApplication, BootstrapContext } from '@angular/platform-browser'; * import { provideServerRendering, withRoutes, withAppShell } from '@angular/ssr'; * import { AppComponent } from './app/app.component'; * import { SERVER_ROUTES } from './app/app.server.routes'; * import { AppShellComponent } from './app/app-shell.component'; * - * bootstrapApplication(AppComponent, { - * providers: [ - * provideServerRendering( - * withRoutes(SERVER_ROUTES), - * withAppShell(AppShellComponent) - * ) - * ] - * }); + * const bootstrap = (context: BootstrapContext) => + * bootstrapApplication(AppComponent, { + * providers: [ + * provideServerRendering( + * withRoutes(SERVER_ROUTES), + * withAppShell(AppShellComponent), + * ), + * ], + * }, context); + * + * export default bootstrap; * ``` * @see {@link withRoutes} configures server-side routing * @see {@link withAppShell} configures the application shell diff --git a/packages/angular/ssr/src/utils/ng.ts b/packages/angular/ssr/src/utils/ng.ts index b92aa51d1d84..94abcb5ade28 100644 --- a/packages/angular/ssr/src/utils/ng.ts +++ b/packages/angular/ssr/src/utils/ng.ts @@ -14,6 +14,7 @@ import { type Type, ɵConsole, } from '@angular/core'; +import { BootstrapContext } from '@angular/platform-browser'; import { INITIAL_CONFIG, ɵSERVER_CONTEXT as SERVER_CONTEXT, @@ -31,7 +32,9 @@ import { joinUrlParts, stripIndexHtmlFromURL } from './url'; * - A reference to an Angular component or module (`Type`) that serves as the root of the application. * - A function that returns a `Promise`, which resolves with the root application reference. */ -export type AngularBootstrap = Type | (() => Promise); +export type AngularBootstrap = + | Type + | ((context: BootstrapContext) => Promise); /** * Renders an Angular application or module to an HTML string. @@ -90,7 +93,7 @@ export async function renderAngular( const moduleRef = await platformRef.bootstrapModule(bootstrap); applicationRef = moduleRef.injector.get(ApplicationRef); } else { - applicationRef = await bootstrap(); + applicationRef = await bootstrap({ platformRef }); } // Block until application is stable. diff --git a/packages/angular/ssr/test/testing-utils.ts b/packages/angular/ssr/test/testing-utils.ts index 9f1cd076e33e..d14dd9f34a46 100644 --- a/packages/angular/ssr/test/testing-utils.ts +++ b/packages/angular/ssr/test/testing-utils.ts @@ -90,15 +90,19 @@ export function setAngularAppTestingManifest( `, }, }, - bootstrap: async () => () => { - return bootstrapApplication(rootComponent, { - providers: [ - provideZonelessChangeDetection(), - provideRouter(routes), - provideServerRendering(withRoutes(serverRoutes)), - ...extraProviders, - ], - }); + bootstrap: async () => (context) => { + return bootstrapApplication( + rootComponent, + { + providers: [ + provideZonelessChangeDetection(), + provideRouter(routes), + provideServerRendering(withRoutes(serverRoutes)), + ...extraProviders, + ], + }, + context, + ); }, }); } diff --git a/packages/angular_devkit/build_angular/BUILD.bazel b/packages/angular_devkit/build_angular/BUILD.bazel index f7e0530a4105..459197eaf149 100644 --- a/packages/angular_devkit/build_angular/BUILD.bazel +++ b/packages/angular_devkit/build_angular/BUILD.bazel @@ -184,6 +184,7 @@ ts_project( "//:node_modules/@angular/compiler-cli", "//:node_modules/@angular/core", "//:node_modules/@angular/localize", + "//:node_modules/@angular/platform-browser", "//:node_modules/@angular/platform-server", "//:node_modules/@angular/service-worker", "//:node_modules/@types/babel__core", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 82d869b5360c..7d581aef8934 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -68,7 +68,7 @@ "@angular/ssr": "workspace:*", "@web/test-runner": "0.20.2", "browser-sync": "3.0.4", - "ng-packagr": "20.2.0", + "ng-packagr": "20.3.0", "undici": "7.13.0" }, "peerDependencies": { diff --git a/packages/angular_devkit/build_angular/src/builders/app-shell/render-worker.ts b/packages/angular_devkit/build_angular/src/builders/app-shell/render-worker.ts index 2955edb4c6d0..21a39698b5a0 100644 --- a/packages/angular_devkit/build_angular/src/builders/app-shell/render-worker.ts +++ b/packages/angular_devkit/build_angular/src/builders/app-shell/render-worker.ts @@ -7,6 +7,7 @@ */ import type { ApplicationRef, StaticProvider, Type } from '@angular/core'; +import type { BootstrapContext } from '@angular/platform-browser'; import type { renderApplication, renderModule, ɵSERVER_CONTEXT } from '@angular/platform-server'; import assert from 'node:assert'; import { workerData } from 'node:worker_threads'; @@ -33,7 +34,7 @@ interface ServerBundleExports { renderApplication?: typeof renderApplication; /** Standalone application bootstrapping function. */ - default?: () => Promise; + default?: (context: BootstrapContext) => Promise; } /** @@ -121,7 +122,9 @@ async function render({ serverBundlePath, document, url }: RenderRequest): Promi return Promise.race([renderAppPromise, renderingTimeout]).finally(() => clearTimeout(timer)); } -function isBootstrapFn(value: unknown): value is () => Promise { +function isBootstrapFn( + value: unknown, +): value is (context: BootstrapContext) => Promise { // We can differentiate between a module and a bootstrap function by reading compiler-generated `ɵmod` static property: return typeof value === 'function' && !('ɵmod' in value); } diff --git a/packages/angular_devkit/build_angular/src/builders/prerender/render-worker.ts b/packages/angular_devkit/build_angular/src/builders/prerender/render-worker.ts index afa255378b84..e651b6f84344 100644 --- a/packages/angular_devkit/build_angular/src/builders/prerender/render-worker.ts +++ b/packages/angular_devkit/build_angular/src/builders/prerender/render-worker.ts @@ -7,6 +7,7 @@ */ import type { ApplicationRef, StaticProvider, Type } from '@angular/core'; +import type { BootstrapContext } from '@angular/platform-browser'; import type { renderApplication, renderModule, ɵSERVER_CONTEXT } from '@angular/platform-server'; import assert from 'node:assert'; import * as fs from 'node:fs'; @@ -42,7 +43,7 @@ interface ServerBundleExports { renderApplication?: typeof renderApplication; /** Standalone application bootstrapping function. */ - default?: (() => Promise) | Type; + default?: ((context: BootstrapContext) => Promise) | Type; } /** @@ -148,7 +149,9 @@ async function render({ return result; } -function isBootstrapFn(value: unknown): value is () => Promise { +function isBootstrapFn( + value: unknown, +): value is (context: BootstrapContext) => Promise { // We can differentiate between a module and a bootstrap function by reading compiler-generated `ɵmod` static property: return typeof value === 'function' && !('ɵmod' in value); } diff --git a/packages/angular_devkit/build_angular/src/builders/prerender/routes-extractor-worker.ts b/packages/angular_devkit/build_angular/src/builders/prerender/routes-extractor-worker.ts index 8161ef1b82cd..ef324ba1dea6 100644 --- a/packages/angular_devkit/build_angular/src/builders/prerender/routes-extractor-worker.ts +++ b/packages/angular_devkit/build_angular/src/builders/prerender/routes-extractor-worker.ts @@ -7,6 +7,7 @@ */ import type { ApplicationRef, Type } from '@angular/core'; +import type { BootstrapContext } from '@angular/platform-browser'; import type { ɵgetRoutesFromAngularRouterConfig } from '@angular/ssr'; import assert from 'node:assert'; import * as fs from 'node:fs'; @@ -25,7 +26,7 @@ interface ServerBundleExports { AppServerModule?: Type; /** Standalone application bootstrapping function. */ - default?: (() => Promise) | Type; + default?: ((context: BootstrapContext) => Promise) | Type; /** Method to extract routes from the router config. */ ɵgetRoutesFromAngularRouterConfig: typeof ɵgetRoutesFromAngularRouterConfig; diff --git a/packages/angular_devkit/build_angular/src/builders/server/index.ts b/packages/angular_devkit/build_angular/src/builders/server/index.ts index 68eaed5fd6f2..3bdab8a55977 100644 --- a/packages/angular_devkit/build_angular/src/builders/server/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/server/index.ts @@ -219,6 +219,7 @@ async function initialize( { plugins: [ new webpack.DefinePlugin({ + 'ngJitMode': false, 'ngServerMode': true, }), ], diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 29ba7c8a259a..a8ebd17973c7 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": "20.2.3", - "@angular/compiler-cli": "20.2.3", + "@angular/compiler": "20.3.0", + "@angular/compiler-cli": "20.3.0", "typescript": "5.9.2", "webpack": "5.101.2" } diff --git a/packages/schematics/angular/ai-config/schema.json b/packages/schematics/angular/ai-config/schema.json index 3f46fbc6dede..cf89108f2cd0 100644 --- a/packages/schematics/angular/ai-config/schema.json +++ b/packages/schematics/angular/ai-config/schema.json @@ -20,27 +20,27 @@ }, { "value": "claude", - "label": "Claude [ https://docs.anthropic.com/en/docs/claude-code/memory ]" + "label": "Claude [ https://docs.anthropic.com/en/docs/claude-code/memory ]" }, { "value": "cursor", - "label": "Cursor [ https://docs.cursor.com/en/context/rules ]" + "label": "Cursor [ https://docs.cursor.com/en/context/rules ]" }, { "value": "gemini", - "label": "Gemini [ https://ai.google.dev/gemini-api/docs ]" + "label": "Gemini [ https://ai.google.dev/gemini-api/docs ]" }, { "value": "copilot", - "label": "GitHub Copilot [ https://code.visualstudio.com/docs/copilot/copilot-customization#_custom-instructions ]" + "label": "GitHub Copilot [ https://code.visualstudio.com/docs/copilot/copilot-customization ]" }, { "value": "jetbrains", - "label": "JetBrains AI Assistant [ https://www.jetbrains.com/help/junie/customize-guidelines.html ]" + "label": "JetBrains AI [ https://www.jetbrains.com/help/junie/customize-guidelines.html ]" }, { "value": "windsurf", - "label": "Windsurf [ https://docs.windsurf.com/windsurf/cascade/memories#rules ]" + "label": "Windsurf [ https://docs.windsurf.com/windsurf/cascade/memories#rules ]" } ] }, diff --git a/packages/schematics/angular/server/files/application-builder/standalone-src/main.server.ts.template b/packages/schematics/angular/server/files/application-builder/standalone-src/main.server.ts.template index bc0b6ba59758..cbe62e1fd0ad 100644 --- a/packages/schematics/angular/server/files/application-builder/standalone-src/main.server.ts.template +++ b/packages/schematics/angular/server/files/application-builder/standalone-src/main.server.ts.template @@ -1,7 +1,8 @@ -import { bootstrapApplication } from '@angular/platform-browser'; +import { BootstrapContext, bootstrapApplication } from '@angular/platform-browser'; import { <%= appComponentName %> } from '<%= appComponentPath %>'; import { config } from './app/app.config.server'; -const bootstrap = () => bootstrapApplication(<%= appComponentName %>, config); +const bootstrap = (context: BootstrapContext) => + bootstrapApplication(<%= appComponentName %>, config, context); export default bootstrap; diff --git a/packages/schematics/angular/server/files/server-builder/standalone-src/main.server.ts.template b/packages/schematics/angular/server/files/server-builder/standalone-src/main.server.ts.template index bc0b6ba59758..cbe62e1fd0ad 100644 --- a/packages/schematics/angular/server/files/server-builder/standalone-src/main.server.ts.template +++ b/packages/schematics/angular/server/files/server-builder/standalone-src/main.server.ts.template @@ -1,7 +1,8 @@ -import { bootstrapApplication } from '@angular/platform-browser'; +import { BootstrapContext, bootstrapApplication } from '@angular/platform-browser'; import { <%= appComponentName %> } from '<%= appComponentPath %>'; import { config } from './app/app.config.server'; -const bootstrap = () => bootstrapApplication(<%= appComponentName %>, config); +const bootstrap = (context: BootstrapContext) => + bootstrapApplication(<%= appComponentName %>, config, context); export default bootstrap; diff --git a/packages/schematics/angular/server/index_spec.ts b/packages/schematics/angular/server/index_spec.ts index de6046e38c00..2d86b83ddfff 100644 --- a/packages/schematics/angular/server/index_spec.ts +++ b/packages/schematics/angular/server/index_spec.ts @@ -201,7 +201,7 @@ describe('Server Schematic', () => { const filePath = '/projects/bar/src/main.server.ts'; expect(tree.exists(filePath)).toBeTrue(); const contents = tree.readContent(filePath); - expect(contents).toContain(`bootstrapApplication(App, config)`); + expect(contents).toContain(`bootstrapApplication(App, config, context)`); }); it('should account for renamed app component', async () => { @@ -212,7 +212,7 @@ describe('Server Schematic', () => { import { appConfig } from './app/app.config'; import { MyCustomApp } from './foo/bar/baz/app.foo'; - bootstrapApplication(MyCustomApp, appConfig) + bootstrapApplication(MyCustomApp, appConfig, context) .catch((err) => console.error(err)); `, ); @@ -222,7 +222,7 @@ describe('Server Schematic', () => { expect(tree.exists(filePath)).toBeTrue(); const contents = tree.readContent(filePath); expect(contents).toContain(`import { MyCustomApp } from './foo/bar/baz/app.foo';`); - expect(contents).toContain(`bootstrapApplication(MyCustomApp, config)`); + expect(contents).toContain(`bootstrapApplication(MyCustomApp, config, context)`); }); it('should account for renamed app component that is aliased within the main file', async () => { @@ -243,7 +243,7 @@ describe('Server Schematic', () => { expect(tree.exists(filePath)).toBeTrue(); const contents = tree.readContent(filePath); expect(contents).toContain(`import { MyCustomApp } from './foo/bar/baz/app.foo';`); - expect(contents).toContain(`bootstrapApplication(MyCustomApp, config)`); + expect(contents).toContain(`bootstrapApplication(MyCustomApp, config, context)`); }); it('should create server app config file', async () => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc301efb79fc..79398028cd4b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,47 +20,47 @@ importers: built: true devDependencies: '@angular/animations': - specifier: 20.2.3 - version: 20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 20.3.0 + version: 20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/cdk': - specifier: 20.2.1 - version: 20.2.1(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 20.2.2 + version: 20.2.2(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/common': - specifier: 20.2.3 - version: 20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 20.3.0 + version: 20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 20.2.3 - version: 20.2.3 + specifier: 20.3.0 + version: 20.3.0 '@angular/compiler-cli': - specifier: 20.2.3 - version: 20.2.3(@angular/compiler@20.2.3)(typescript@5.9.2) + specifier: 20.3.0 + version: 20.3.0(@angular/compiler@20.3.0)(typescript@5.9.2) '@angular/core': - specifier: 20.2.3 - version: 20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 20.3.0 + version: 20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/forms': - specifier: 20.2.3 - version: 20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.3(@angular/animations@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 20.3.0 + version: 20.3.0(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.0(@angular/animations@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/localize': - specifier: 20.2.3 - version: 20.2.3(@angular/compiler-cli@20.2.3(@angular/compiler@20.2.3)(typescript@5.9.2))(@angular/compiler@20.2.3) + specifier: 20.3.0 + version: 20.3.0(@angular/compiler-cli@20.3.0(@angular/compiler@20.3.0)(typescript@5.9.2))(@angular/compiler@20.3.0) '@angular/material': - specifier: 20.2.1 - version: 20.2.1(db7b32723760b0ee941b26d324534a22) + specifier: 20.2.2 + version: 20.2.2(458e7ea89830b69817139b360ad854ab) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#b991414e4f3ed15d99f4331b5353499434878374 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b991414e4f3ed15d99f4331b5353499434878374(@modelcontextprotocol/sdk@1.17.3) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#1b75cbad43a688705205725df89bf311a8d08652 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/1b75cbad43a688705205725df89bf311a8d08652(@modelcontextprotocol/sdk@1.17.3) '@angular/platform-browser': - specifier: 20.2.3 - version: 20.2.3(@angular/animations@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 20.3.0 + version: 20.3.0(@angular/animations@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 20.2.3 - version: 20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.2.3)(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.3(@angular/animations@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 20.3.0 + version: 20.3.0(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.0)(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.0(@angular/animations@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 20.2.3 - version: 20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.3(@angular/animations@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 20.3.0 + version: 20.3.0(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.0(@angular/animations@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 20.2.3 - version: 20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 20.3.0 + version: 20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@bazel/bazelisk': specifier: 1.26.0 version: 1.26.0 @@ -438,8 +438,8 @@ importers: specifier: 4.4.0 version: 4.4.0 ng-packagr: - specifier: 20.2.0 - version: 20.2.0(@angular/compiler-cli@20.2.3(@angular/compiler@20.2.3)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2) + specifier: 20.3.0 + version: 20.3.0(@angular/compiler-cli@20.3.0(@angular/compiler@20.3.0)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2) postcss: specifier: 8.5.6 version: 8.5.6 @@ -533,23 +533,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 20.2.3 - version: 20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 20.3.0 + version: 20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 20.2.3 - version: 20.2.3 + specifier: 20.3.0 + version: 20.3.0 '@angular/core': - specifier: 20.2.3 - version: 20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 20.3.0 + version: 20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/platform-browser': - specifier: 20.2.3 - version: 20.2.3(@angular/animations@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 20.3.0 + version: 20.3.0(@angular/animations@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 20.2.3 - version: 20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.2.3)(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.3(@angular/animations@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 20.3.0 + version: 20.3.0(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.0)(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.0(@angular/animations@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 20.2.3 - version: 20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.3(@angular/animations@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 20.3.0 + version: 20.3.0(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.0(@angular/animations@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -760,8 +760,8 @@ importers: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9) ng-packagr: - specifier: 20.2.0 - version: 20.2.0(@angular/compiler-cli@20.2.3(@angular/compiler@20.2.3)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2) + specifier: 20.3.0 + version: 20.3.0(@angular/compiler-cli@20.3.0(@angular/compiler@20.3.0)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2) undici: specifier: 7.13.0 version: 7.13.0 @@ -859,11 +859,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 20.2.3 - version: 20.2.3 + specifier: 20.3.0 + version: 20.3.0 '@angular/compiler-cli': - specifier: 20.2.3 - version: 20.2.3(@angular/compiler@20.2.3)(typescript@5.9.2) + specifier: 20.3.0 + version: 20.3.0(@angular/compiler@20.3.0)(typescript@5.9.2) typescript: specifier: 5.9.2 version: 5.9.2 @@ -975,47 +975,46 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@20.2.3': - resolution: {integrity: sha512-cyON3oVfaotz8d8DHP3uheC/XDG2gJD8aiyuG/SEAZ2X1S/tAHdVetESbDZM830lLdi+kB/3GBrMbWCCpMWD7Q==} + '@angular/animations@20.3.0': + resolution: {integrity: sha512-rCojVsJHaReDfSB4lwcWYJAfbkFXQmcdivdN5m1NavuSlKpWoLw4fLkxkcuOXDjUEwNSb45hRI4ixcwrcuQtmw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.2.3 - '@angular/core': 20.2.3 + '@angular/core': 20.3.0 - '@angular/cdk@20.2.1': - resolution: {integrity: sha512-yEPh5hr9LZW4ey/HxtaGdSBDIkNzziLo0Dr1RP8JcxhOQ2Bzv2PZ+g8jC6aPGD7NPV8FtDf0FhTEzQr+m+gBXQ==} + '@angular/cdk@20.2.2': + resolution: {integrity: sha512-jLvIMmFI8zoi6vAu1Aszua59GmhqBOtsVfkwLUGg5Hi86DI/inJr9BznNX2EKDtaulYMGZCmDgsltXQXeqP5Lg==} peerDependencies: '@angular/common': ^20.0.0 || ^21.0.0 '@angular/core': ^20.0.0 || ^21.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@20.2.3': - resolution: {integrity: sha512-QLffWL8asy2oG7p3jvoNmx9s1V1WuJAm6JmQ1S8J3AN/BxumCJan49Nj8rctP8J4uwJDPQV48hqbXUdl1v7CDg==} + '@angular/common@20.3.0': + resolution: {integrity: sha512-Il0HqdRdrmI8ufLXd49EYaa/BPqfiSqe5uuKrDxhkAdbRXwCXWsxbO/n8AwilwWn3CKLOCrEXQYKwbcFW0nYQQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 20.2.3 + '@angular/core': 20.3.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@20.2.3': - resolution: {integrity: sha512-adLyPXmKbH8VZJCyOraaha+RPTdAjEBRTqwZ5YkjkViTMMANFkuj1w3pDwQsG3LFknRJ99aym+9neGINeAaI7A==} + '@angular/compiler-cli@20.3.0': + resolution: {integrity: sha512-umnZzzKw9RqDVkotYIyupJiKXQpU8knehMUBT1G3QwdeHppC+d/opxISYTkQtY/4IUAsZFLMukWIr82as0DSmw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 20.2.3 + '@angular/compiler': 20.3.0 typescript: 5.9.2 peerDependenciesMeta: typescript: optional: true - '@angular/compiler@20.2.3': - resolution: {integrity: sha512-vYGDluko8zAIWhQmKijhcGO0tzanwGONDRgbJ01mCqUsQV+XwmDgUUDZKrUY9uve0wxxM3Xvo4/BjEpGpeG75w==} + '@angular/compiler@20.3.0': + resolution: {integrity: sha512-DvGDusjsDhxIX+nDzihSCGo81Fa8y94KB/bh24eyPwJWV6b0OkawFSvVwzxx8prV0UnNkCN1S/UoZXmtVZGJ4A==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@20.2.3': - resolution: {integrity: sha512-pFMfg11X8SNNZHcLa+wy4y+eAN3FApt+wPzaxkaXaJ64c+tyHcrPNLotoWgE0jmiw8Idn4gGjKAL/WC0uw5dQA==} + '@angular/core@20.3.0': + resolution: {integrity: sha512-4uH2TAMm1nXqQ9lcZyyNkjcdQ0Fjcf9Hh0HYrhMOEV6GAUHvM2I8Vr2dSQ40p/UKLEfe9+cpZ78EPocqPQCG6A==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 20.2.3 + '@angular/compiler': 20.3.0 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: @@ -1024,74 +1023,74 @@ packages: zone.js: optional: true - '@angular/forms@20.2.3': - resolution: {integrity: sha512-efMn/Hnspg91SzRTm69WpyGq0dgbCtWqUOrR0iZXTR/oDlJw9F/y/nrST36tOBwRNT0QQ2iU5z43iJY1Rl1Bng==} + '@angular/forms@20.3.0': + resolution: {integrity: sha512-/KGCZUskk8imxz2e47CKe5Ykh3eqEDop0b9YUkZTvJ/dY/cdFK89RAK2xUvOlyUr2mkcByzdzyOhHaM9XEaELg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.2.3 - '@angular/core': 20.2.3 - '@angular/platform-browser': 20.2.3 + '@angular/common': 20.3.0 + '@angular/core': 20.3.0 + '@angular/platform-browser': 20.3.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@20.2.3': - resolution: {integrity: sha512-+r7VbxuaOwUuvC1xPfuNpJSbwv4+LOUouVZhBq5sp2qYrKkVw2QZaIbd6uPTE1NWbu7rGwSGVw4rTx4LvA3fYw==} + '@angular/localize@20.3.0': + resolution: {integrity: sha512-0qkBPYA5g5KcrJpNxbCqxBiY/Q8RCb3ct5EBLUwj9Og2zTz4PQ04xzRW0B+FwF4XZ0g2kJ0FNmyM8GjUBut1yg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 20.2.3 - '@angular/compiler-cli': 20.2.3 + '@angular/compiler': 20.3.0 + '@angular/compiler-cli': 20.3.0 - '@angular/material@20.2.1': - resolution: {integrity: sha512-Zv1ay/eSwO9e2xUrPKOQFSKscb0+0bhZmDwy9etQhder0FBh380iizP+PaZnJGGy87zYDmauv0fjKcDfdWCJYA==} + '@angular/material@20.2.2': + resolution: {integrity: sha512-ovLk6h6XIw3qtSjp2bSqFn7ANYvWOIh2zTrRPdAB78siOpqs11d8YdyD4LUEuUrcZoInNgK7AMJsfldDkHwhnA==} peerDependencies: - '@angular/cdk': 20.2.1 + '@angular/cdk': 20.2.2 '@angular/common': ^20.0.0 || ^21.0.0 '@angular/core': ^20.0.0 || ^21.0.0 '@angular/forms': ^20.0.0 || ^21.0.0 '@angular/platform-browser': ^20.0.0 || ^21.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b991414e4f3ed15d99f4331b5353499434878374': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b991414e4f3ed15d99f4331b5353499434878374} - version: 0.0.0-06d3af5cfd1e122087c0acafdd7909edce4ad1d7 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/1b75cbad43a688705205725df89bf311a8d08652': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/1b75cbad43a688705205725df89bf311a8d08652} + version: 0.0.0-3186a078ec23edea6e2f6192ed013ec57bd95f87 hasBin: true - '@angular/platform-browser@20.2.3': - resolution: {integrity: sha512-oNaRqcGUve+E/CwR9fJb8uern5rb7qNOis1bZRdPXq5rHKaWgDCxUPkoqxRi0EytorntuYsWYPUPW3ul4Ea9tw==} + '@angular/platform-browser@20.3.0': + resolution: {integrity: sha512-/KsgfxDwP7/KXGrLLSyg4+Xd8HxmHi5dVCu+xHfa3QjzVIvvZfWZLxQj7guRlDtg/mz+t0/OSKvSUZzOAfVzGQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 20.2.3 - '@angular/common': 20.2.3 - '@angular/core': 20.2.3 + '@angular/animations': 20.3.0 + '@angular/common': 20.3.0 + '@angular/core': 20.3.0 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@20.2.3': - resolution: {integrity: sha512-KswW/6KX4Av8WdiJLIVElqi4f7RIcIrcnkRRYrVm2UUHEpH+W94LkMMN9ybACmGSArg0j5DlfyJtotZefwFtzQ==} + '@angular/platform-server@20.3.0': + resolution: {integrity: sha512-ixPyu3JEY3sgyvUdCqRbaZZA9M6KWGLZoiJPN4IszwcwCFUp3E5XOZ7mvSLzR+ZUYUml+z6ehtSPg2PM+e+CEQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.2.3 - '@angular/compiler': 20.2.3 - '@angular/core': 20.2.3 - '@angular/platform-browser': 20.2.3 + '@angular/common': 20.3.0 + '@angular/compiler': 20.3.0 + '@angular/core': 20.3.0 + '@angular/platform-browser': 20.3.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@20.2.3': - resolution: {integrity: sha512-r8yGJcxHPfeIHZOoyCxN2H4nMgBD/k4TVTFaq8MHf5ryy1iLzayIMPJTFaZe7xpwlJJuBYEjBrYfUN38fYKWgA==} + '@angular/router@20.3.0': + resolution: {integrity: sha512-JshumajvPCMztz1+7r/l5tRxFL3cn2jCpr5szdc5hESkpytY4050hedd09GogL1UoIyZAjhyYLhSlMnvrgjHBA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.2.3 - '@angular/core': 20.2.3 - '@angular/platform-browser': 20.2.3 + '@angular/common': 20.3.0 + '@angular/core': 20.3.0 + '@angular/platform-browser': 20.3.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@20.2.3': - resolution: {integrity: sha512-h3f44QBCEuC7FoKT0FH+PDW4VFqdsImn6PuGjXFEjMe7D8gcV9HK8aeYMCcvAJetWSqaG5hdDHO4gNoZgQV9Zg==} + '@angular/service-worker@20.3.0': + resolution: {integrity: sha512-Z/vpsypGbn2Gani1FZrHr89PpHVq5crS+mAkv3ZvzPRdpUSSlifBRv43VpBBiH/b0bTADnrn5aohJFyWKwNdFg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 20.2.3 + '@angular/core': 20.3.0 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@3.2.0': @@ -2123,8 +2122,8 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} - '@google/genai@1.16.0': - resolution: {integrity: sha512-hdTYu39QgDFxv+FB6BK2zi4UIJGWhx2iPc0pHQ0C5Q/RCi+m+4gsryIzTGO+riqWcUA8/WGYp6hpqckdOBNysw==} + '@google/genai@1.17.0': + resolution: {integrity: sha512-r/OZWN9D8WvYrte3bcKPoLODrZ+2TjfxHm5OOyVHUbdFYIp1C4yJaXX4+sCS8I/+CbN9PxLjU5zm1cgmS7qz+A==} engines: {node: '>=20.0.0'} peerDependencies: '@modelcontextprotocol/sdk': ^1.11.4 @@ -3429,6 +3428,9 @@ packages: '@types/semver@7.7.0': resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + '@types/send@0.17.5': resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} @@ -6141,6 +6143,9 @@ packages: jasmine-core@4.6.1: resolution: {integrity: sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==} + jasmine-core@5.10.0: + resolution: {integrity: sha512-MrChbWV5LBo+EaeKwTM1eZ6oYSz1brvFExnRafraEkJkbJ9evbUxABhnIgGQimhpMxhg+BD6QmOvb/e3NXsNdg==} + jasmine-core@5.9.0: resolution: {integrity: sha512-OMUvF1iI6+gSRYOhMrH4QYothVLN9C3EJ6wm4g7zLJlnaTl8zbaPOr0bTw70l7QxkoM7sVFOWo83u9B2Fe2Zng==} @@ -6154,6 +6159,10 @@ packages: resolution: {integrity: sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw==} hasBin: true + jasmine@5.10.0: + resolution: {integrity: sha512-v4FojO8cXQdx15mJXovGhjJOvyIcVf7AC+H0ZahnfLk52vUbwuLxjVgbikc95yLmgwKQsFT47/FGQ3dOrWVxtQ==} + hasBin: true + jasmine@5.9.0: resolution: {integrity: sha512-SspK51QMnuC92z5zpF4kOkWN+MyZZDOBv8zgzlMAYvMD0UoGwcq5yYaDe1mrpN7wXZ2CFXh5y8Ua2ugwE4OmXQ==} hasBin: true @@ -6773,12 +6782,12 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - ng-packagr@20.2.0: - resolution: {integrity: sha512-U8kv9O5hD9ojKlSke44A2NIH5sH0EmQXtQTtMLLrpn7y4LUeCQgTi5t8KsDXoMyCmBKMhDJzioa3R22pOy5vFg==} + ng-packagr@20.3.0: + resolution: {integrity: sha512-hwPZNeV/6C3pWojK70AHxe6uk1rz2bzoe+WdH+GIWouUcyXrjYQjOFyLfOGD0ia9D+yWVzjsi4CKVK/dQFDQ6Q==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler-cli': ^20.0.0 || ^20.2.0-rc + '@angular/compiler-cli': ^20.0.0 tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 tslib: ^2.3.0 typescript: 5.9.2 @@ -9096,29 +9105,28 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.30 - '@angular/animations@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/animations@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/common': 20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/cdk@20.2.1(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/cdk@20.2.2(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@20.2.3(@angular/compiler@20.2.3)(typescript@5.9.2)': + '@angular/compiler-cli@20.3.0(@angular/compiler@20.3.0)(typescript@5.9.2)': dependencies: - '@angular/compiler': 20.2.3 + '@angular/compiler': 20.3.0 '@babel/core': 7.28.3 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 4.0.3 @@ -9132,30 +9140,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@20.2.3': + '@angular/compiler@20.3.0': dependencies: tslib: 2.8.1 - '@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)': + '@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 20.2.3 + '@angular/compiler': 20.3.0 zone.js: 0.15.1 - '@angular/forms@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.3(@angular/animations@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/forms@20.3.0(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.0(@angular/animations@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 20.2.3(@angular/animations@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 20.3.0(@angular/animations@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@20.2.3(@angular/compiler-cli@20.2.3(@angular/compiler@20.2.3)(typescript@5.9.2))(@angular/compiler@20.2.3)': + '@angular/localize@20.3.0(@angular/compiler-cli@20.3.0(@angular/compiler@20.3.0)(typescript@5.9.2))(@angular/compiler@20.3.0)': dependencies: - '@angular/compiler': 20.2.3 - '@angular/compiler-cli': 20.2.3(@angular/compiler@20.2.3)(typescript@5.9.2) + '@angular/compiler': 20.3.0 + '@angular/compiler-cli': 20.3.0(@angular/compiler@20.3.0)(typescript@5.9.2) '@babel/core': 7.28.3 '@types/babel__core': 7.20.5 tinyglobby: 0.2.14 @@ -9163,21 +9171,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@20.2.1(db7b32723760b0ee941b26d324534a22)': + '@angular/material@20.2.2(458e7ea89830b69817139b360ad854ab)': dependencies: - '@angular/cdk': 20.2.1(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/common': 20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.3(@angular/animations@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) - '@angular/platform-browser': 20.2.3(@angular/animations@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/cdk': 20.2.2(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/common': 20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/forms': 20.3.0(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.0(@angular/animations@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + '@angular/platform-browser': 20.3.0(@angular/animations@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b991414e4f3ed15d99f4331b5353499434878374(@modelcontextprotocol/sdk@1.17.3)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/1b75cbad43a688705205725df89bf311a8d08652(@modelcontextprotocol/sdk@1.17.3)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.0) - '@google/genai': 1.16.0(@modelcontextprotocol/sdk@1.17.3)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.0)(utf-8-validate@6.0.5) + '@google/genai': 1.17.0(@modelcontextprotocol/sdk@1.17.3)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.0)(utf-8-validate@6.0.5) '@inquirer/prompts': 7.8.4(@types/node@24.3.0) '@inquirer/type': 3.0.8(@types/node@24.3.0) '@octokit/auth-app': 8.1.0 @@ -9200,7 +9208,7 @@ snapshots: '@types/jasmine': 5.1.9 '@types/minimatch': 6.0.0 '@types/node': 24.3.0 - '@types/semver': 7.7.0 + '@types/semver': 7.7.1 '@types/supports-color': 10.0.0 '@types/which': 3.0.4 '@types/yargs': 17.0.33 @@ -9217,8 +9225,8 @@ snapshots: firebase: 12.2.1 folder-hash: 4.1.1(supports-color@10.2.0) git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@5.0.0) - jasmine: 5.9.0 - jasmine-core: 5.9.0 + jasmine: 5.10.0 + jasmine-core: 5.10.0 jasmine-reporters: 2.5.2 jsonc-parser: 3.3.1 minimatch: 10.0.3 @@ -9236,35 +9244,35 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@20.2.3(@angular/animations@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/platform-browser@20.3.0(@angular/animations@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/common': 20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/animations': 20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)) - '@angular/platform-server@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.2.3)(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.3(@angular/animations@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/platform-server@20.3.0(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.0)(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.0(@angular/animations@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/compiler': 20.2.3 - '@angular/core': 20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 20.2.3(@angular/animations@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/compiler': 20.3.0 + '@angular/core': 20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 20.3.0(@angular/animations@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.3(@angular/animations@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/router@20.3.0(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.0(@angular/animations@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 20.2.3(@angular/animations@20.2.3(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 20.3.0(@angular/animations@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@20.2.3(@angular/core@20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/service-worker@20.3.0(@angular/core@20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 20.2.3(@angular/compiler@20.2.3)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 20.3.0(@angular/compiler@20.3.0)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 @@ -9954,7 +9962,7 @@ snapshots: '@conventional-changelog/git-client@1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@5.0.0)': dependencies: - '@types/semver': 7.7.0 + '@types/semver': 7.7.1 semver: 7.7.2 optionalDependencies: conventional-commits-filter: 5.0.0 @@ -10530,7 +10538,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.16.0(@modelcontextprotocol/sdk@1.17.3)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.0)(utf-8-validate@6.0.5)': + '@google/genai@1.17.0(@modelcontextprotocol/sdk@1.17.3)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.0)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 9.15.1(encoding@0.1.13)(supports-color@10.2.0) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -11812,6 +11820,8 @@ snapshots: '@types/semver@7.7.0': {} + '@types/semver@7.7.1': {} + '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 @@ -15144,6 +15154,8 @@ snapshots: jasmine-core@4.6.1: {} + jasmine-core@5.10.0: {} + jasmine-core@5.9.0: {} jasmine-reporters@2.5.2: @@ -15161,6 +15173,11 @@ snapshots: glob: 7.2.3 jasmine-core: 2.8.0 + jasmine@5.10.0: + dependencies: + glob: 10.4.5 + jasmine-core: 5.10.0 + jasmine@5.9.0: dependencies: glob: 10.4.5 @@ -15857,10 +15874,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@20.2.0(@angular/compiler-cli@20.2.3(@angular/compiler@20.2.3)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2): + ng-packagr@20.3.0(@angular/compiler-cli@20.3.0(@angular/compiler@20.3.0)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 20.2.3(@angular/compiler@20.2.3)(typescript@5.9.2) + '@angular/compiler-cli': 20.3.0(@angular/compiler@20.3.0)(typescript@5.9.2) '@rollup/plugin-json': 6.1.0(rollup@4.46.2) '@rollup/wasm-node': 4.50.0 ajv: 8.17.1 diff --git a/tests/legacy-cli/e2e/tests/build/prerender/error-with-sourcemaps.ts b/tests/legacy-cli/e2e/tests/build/prerender/error-with-sourcemaps.ts index 8e45499f0021..6420f7a6e5c4 100644 --- a/tests/legacy-cli/e2e/tests/build/prerender/error-with-sourcemaps.ts +++ b/tests/legacy-cli/e2e/tests/build/prerender/error-with-sourcemaps.ts @@ -48,6 +48,6 @@ export default async function () { message, // When babel is used it will add names to the sourcemap and `constructor` will be used in the stack trace. // This will currently only happen if AOT and script optimizations are set which enables advanced optimizations. - /window is not defined[.\s\S]*(?:constructor|_App) \(.*app\.ts\:\d+:\d+\)/, + /window is not defined[.\s\S]*(?:constructor|App) \(.*app\.ts\:\d+:\d+\)/, ); }