diff --git a/.github/shared-actions/windows-bazel-test/action.yml b/.github/shared-actions/windows-bazel-test/action.yml index 5267aacfca31..8e930147d29d 100644 --- a/.github/shared-actions/windows-bazel-test/action.yml +++ b/.github/shared-actions/windows-bazel-test/action.yml @@ -18,7 +18,7 @@ runs: steps: - name: Initialize WSL id: init_wsl - uses: angular/dev-infra/github-actions/setup-wsl@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/setup-wsl@db18d7175d759fdfb3e40d363a1579621d1fcffd with: wsl_firewall_interface: 'vEthernet (WSL (Hyper-V firewall))' diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 6d73cddc6839..f7fe10982800 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@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@f0289062692ca0af149a1bb61cc075a532003f49 + - uses: angular/dev-infra/github-actions/branch-manager@db18d7175d759fdfb3e40d363a1579621d1fcffd with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c29659e523da..740433ce3a35 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@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/setup@db18d7175d759fdfb3e40d363a1579621d1fcffd - 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@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/setup@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/configure-remote@db18d7175d759fdfb3e40d363a1579621d1fcffd with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest-4core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/setup@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/configure-remote@db18d7175d759fdfb3e40d363a1579621d1fcffd with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -87,13 +87,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/setup@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/configure-remote@db18d7175d759fdfb3e40d363a1579621d1fcffd with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -110,11 +110,11 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/setup@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/configure-remote@db18d7175d759fdfb3e40d363a1579621d1fcffd with: allow_windows_rbe: true google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} @@ -138,13 +138,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/setup@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/configure-remote@db18d7175d759fdfb3e40d363a1579621d1fcffd with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -163,13 +163,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/setup@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/configure-remote@db18d7175d759fdfb3e40d363a1579621d1fcffd with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -183,13 +183,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@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/setup@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/configure-remote@db18d7175d759fdfb3e40d363a1579621d1fcffd with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -219,11 +219,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/setup@db18d7175d759fdfb3e40d363a1579621d1fcffd - run: pnpm admin snapshots --verbose env: SNAPSHOT_BUILDS_GITHUB_TOKEN: ${{ secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN }} diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 36fdad9ff13e..b1774ecdcb04 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@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/pull-request-labeling@f0289062692ca0af149a1bb61cc075a532003f49 + - uses: angular/dev-infra/github-actions/pull-request-labeling@db18d7175d759fdfb3e40d363a1579621d1fcffd with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/post-approval-changes@f0289062692ca0af149a1bb61cc075a532003f49 + - uses: angular/dev-infra/github-actions/post-approval-changes@db18d7175d759fdfb3e40d363a1579621d1fcffd with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index b16b31b716b8..8ca8a6bf7566 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@f0289062692ca0af149a1bb61cc075a532003f49 + - uses: angular/dev-infra/github-actions/feature-request@db18d7175d759fdfb3e40d363a1579621d1fcffd with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 35c53796ac3b..d29f0073daf7 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@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - 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@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/setup@db18d7175d759fdfb3e40d363a1579621d1fcffd - 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 6c38b0154057..893c8d4edbf3 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@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/setup@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup ESLint Caching uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 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@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/linting/licenses@db18d7175d759fdfb3e40d363a1579621d1fcffd - 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@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/setup@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/configure-remote@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest-16core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/setup@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/configure-remote@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -117,13 +117,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/setup@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/configure-remote@db18d7175d759fdfb3e40d363a1579621d1fcffd - 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 }} @@ -132,11 +132,11 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/setup@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/configure-remote@db18d7175d759fdfb3e40d363a1579621d1fcffd with: allow_windows_rbe: true - name: Run CLI E2E tests @@ -157,13 +157,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/setup@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/configure-remote@db18d7175d759fdfb3e40d363a1579621d1fcffd - 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 }} @@ -180,12 +180,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/setup@db18d7175d759fdfb3e40d363a1579621d1fcffd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0289062692ca0af149a1bb61cc075a532003f49 + uses: angular/dev-infra/github-actions/bazel/configure-remote@db18d7175d759fdfb3e40d363a1579621d1fcffd - 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/WORKSPACE b/WORKSPACE index 5ab61ef3a8ba..f900d1edb09e 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -230,7 +230,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "devinfra", - commit = "f0289062692ca0af149a1bb61cc075a532003f49", + commit = "db18d7175d759fdfb3e40d363a1579621d1fcffd", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index b6ed90079246..bce526761448 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@angular/forms": "20.1.0-next.2", "@angular/localize": "20.1.0-next.2", "@angular/material": "20.1.0-next.1", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#c2b8d84fd686967020de322f3f13b3e7ddcd971e", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#c9b62e00819328fe530dd3ce3acad4042a34e00b", "@angular/platform-browser": "20.1.0-next.2", "@angular/platform-server": "20.1.0-next.2", "@angular/router": "20.1.0-next.2", @@ -69,7 +69,7 @@ "@rollup/plugin-commonjs": "^28.0.0", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "16.0.1", - "@stylistic/eslint-plugin": "^4.0.0", + "@stylistic/eslint-plugin": "^5.0.0", "@types/babel__core": "7.20.5", "@types/babel__generator": "^7.6.8", "@types/browser-sync": "^2.27.0", diff --git a/packages/angular/build/src/builders/unit-test/builder.ts b/packages/angular/build/src/builders/unit-test/builder.ts index a4dd349d12dd..7f625e0c31c2 100644 --- a/packages/angular/build/src/builders/unit-test/builder.ts +++ b/packages/angular/build/src/builders/unit-test/builder.ts @@ -24,11 +24,13 @@ import { OutputHashing } from '../application/schema'; import { writeTestFiles } from '../karma/application_builder'; import { findTests, getTestEntrypoints } from '../karma/find-tests'; import { useKarmaBuilder } from './karma-bridge'; -import { normalizeOptions } from './options'; +import { NormalizedUnitTestOptions, normalizeOptions } from './options'; import type { Schema as UnitTestOptions } from './schema'; export type { UnitTestOptions }; +type VitestCoverageOption = Exclude; + /** * @experimental Direct usage of this function is considered experimental. */ @@ -230,15 +232,11 @@ export async function* execute( include: [], reporters: normalizedOptions.reporters ?? ['default'], watch: normalizedOptions.watch, - coverage: { - enabled: !!normalizedOptions.codeCoverage, - excludeAfterRemap: true, - exclude: normalizedOptions.codeCoverage?.exclude ?? [], - // Special handling for `reporter` due to an undefined value causing upstream failures - ...(normalizedOptions.codeCoverage?.reporters - ? { reporter: normalizedOptions.codeCoverage.reporters } - : {}), - }, + coverage: generateCoverageOption( + normalizedOptions.codeCoverage, + workspaceRoot, + outputPath, + ), ...debugOptions, }, { @@ -249,7 +247,7 @@ export async function* execute( // Create a subproject that can be configured with plugins for browser mode. // Plugins defined directly in the vite overrides will not be present in the // browser specific Vite instance. - await context.injectTestProjects({ + const [project] = await context.injectTestProjects({ test: { name: projectName, root: outputPath, @@ -282,6 +280,15 @@ export async function* execute( }, ], }); + + // Adjust coverage excludes to not include the otherwise automatically inserted included unit tests. + // Vite does this as a convenience but is problematic for the bundling strategy employed by the + // builder's test setup. To workaround this, the excludes are adjusted here to only automaticallyAdd commentMore actions + // exclude the TypeScript source test files. + project.config.coverage.exclude = [ + ...(normalizedOptions.codeCoverage?.exclude ?? []), + '**/*.{test,spec}.?(c|m)ts', + ]; }, }, ], @@ -377,3 +384,24 @@ function generateOutputPath(): string { return path.join('dist', 'test-out', `${datePrefix}-${uuidSuffix}`); } +function generateCoverageOption( + codeCoverage: NormalizedUnitTestOptions['codeCoverage'], + workspaceRoot: string, + outputPath: string, +): VitestCoverageOption { + if (!codeCoverage) { + return { + enabled: false, + }; + } + + return { + enabled: true, + excludeAfterRemap: true, + include: [`${path.relative(workspaceRoot, outputPath)}/**`], + // Special handling for `reporter` due to an undefined value causing upstream failures + ...(codeCoverage.reporters + ? ({ reporter: codeCoverage.reporters } satisfies VitestCoverageOption) + : {}), + }; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ded01117edd8..1569a8b28f3a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,8 +42,8 @@ importers: specifier: 20.1.0-next.1 version: 20.1.0-next.1(l32yggn2tzdh3a577e6frrsqxm) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#c2b8d84fd686967020de322f3f13b3e7ddcd971e - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c2b8d84fd686967020de322f3f13b3e7ddcd971e + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#c9b62e00819328fe530dd3ce3acad4042a34e00b + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c9b62e00819328fe530dd3ce3acad4042a34e00b(encoding@0.1.13) '@angular/platform-browser': specifier: 20.1.0-next.2 version: 20.1.0-next.2(@angular/animations@20.1.0-next.2(@angular/common@20.1.0-next.2(@angular/core@20.1.0-next.2(@angular/compiler@20.1.0-next.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.1.0-next.2(@angular/compiler@20.1.0-next.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.1.0-next.2(@angular/core@20.1.0-next.2(@angular/compiler@20.1.0-next.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.1.0-next.2(@angular/compiler@20.1.0-next.2)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -84,8 +84,8 @@ importers: specifier: 16.0.1 version: 16.0.1(rollup@4.44.0) '@stylistic/eslint-plugin': - specifier: ^4.0.0 - version: 4.4.1(eslint@9.29.0(jiti@1.21.7))(typescript@5.8.3) + specifier: ^5.0.0 + version: 5.0.0(eslint@9.29.0(jiti@1.21.7)) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -980,9 +980,9 @@ packages: '@angular/platform-browser': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.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/c2b8d84fd686967020de322f3f13b3e7ddcd971e': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c2b8d84fd686967020de322f3f13b3e7ddcd971e} - version: 0.0.0-f0289062692ca0af149a1bb61cc075a532003f49 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c9b62e00819328fe530dd3ce3acad4042a34e00b': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c9b62e00819328fe530dd3ce3acad4042a34e00b} + version: 0.0.0-db18d7175d759fdfb3e40d363a1579621d1fcffd hasBin: true '@angular/platform-browser@20.1.0-next.2': @@ -1805,6 +1805,15 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} + '@google/genai@1.6.0': + resolution: {integrity: sha512-0vn8wMGesjiEsHeFsl10T8+SFqLj7q+RSE6mml66sE+jwI7U9wW2LQ3qYtwUEaI+P8ZYeEYE5IpYmNLcRQUBPQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@modelcontextprotocol/sdk': ^1.11.0 + peerDependenciesMeta: + '@modelcontextprotocol/sdk': + optional: true + '@grpc/grpc-js@1.13.4': resolution: {integrity: sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==} engines: {node: '>=12.10.0'} @@ -2636,8 +2645,8 @@ packages: '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - '@stylistic/eslint-plugin@4.4.1': - resolution: {integrity: sha512-CEigAk7eOLyHvdgmpZsKFwtiqS2wFwI1fn4j09IU9GmD4euFM4jEBAViWeCqaNLlbX2k2+A/Fq9cje4HQBXuJQ==} + '@stylistic/eslint-plugin@5.0.0': + resolution: {integrity: sha512-nVV2FSzeTJ3oFKw+3t9gQYQcrgbopgCASSY27QOtkhEGgSfdQQjDmzZd41NeT1myQ8Wc6l+pZllST9qIu4NKzg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=9.0.0' @@ -4791,10 +4800,18 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + gaxios@6.7.1: + resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} + engines: {node: '>=14'} + gaxios@7.1.0: resolution: {integrity: sha512-y1Q0MX1Ba6eg67Zz92kW0MHHhdtWksYckQy1KJsI6P4UlDQ8cvdvpLEPslD/k7vFkdPppMESFGTvk7XpSiKj8g==} engines: {node: '>=18'} + gcp-metadata@6.1.1: + resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==} + engines: {node: '>=14'} + gcp-metadata@7.0.0: resolution: {integrity: sha512-3PfRTzvT3Msu0Hy8Gf9ypxJvaClG2IB9pyH0r8QOmRBW5mUcrHgYpF4GYP+XulDbfhxEhBYtJtJJQb5S2wM+LA==} engines: {node: '>=18'} @@ -4889,10 +4906,18 @@ packages: resolution: {integrity: sha512-GspVjZj1RbyRWpQ9FbAXMKjFGzZwDKnUHi66JJ+tcjcu5/xYAP1pdlWotCuIkMwjfVsxxDvsGZXGLzRt72D0sQ==} engines: {node: '>=18'} + google-auth-library@9.15.1: + resolution: {integrity: sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==} + engines: {node: '>=14'} + google-gax@5.0.1-rc.1: resolution: {integrity: sha512-kz3HlvYvmQVBcam2C7FOphE6xrhjrlbKrRpNxvWYAmVHi+SCeMReWcKp64WJXNL7clSYAgYer3gCKVTTF/+wPA==} engines: {node: '>=18'} + google-logging-utils@0.0.2: + resolution: {integrity: sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==} + engines: {node: '>=14'} + google-logging-utils@1.1.1: resolution: {integrity: sha512-rcX58I7nqpu4mbKztFeOAObbomBbHU2oIb/d3tJfF3dizGSApqtSwYJigGCooHdnMyQBIw8BrWyK96w3YXgr6A==} engines: {node: '>=14'} @@ -4913,6 +4938,10 @@ packages: peerDependencies: protobufjs: '*' + gtoken@7.1.0: + resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} + engines: {node: '>=14.0.0'} + gtoken@8.0.0: resolution: {integrity: sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw==} engines: {node: '>=18'} @@ -7782,6 +7811,10 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -8231,6 +8264,11 @@ packages: resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} engines: {node: '>=18'} + zod-to-json-schema@3.24.5: + resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} + peerDependencies: + zod: ^3.24.1 + zod@3.25.67: resolution: {integrity: sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==} @@ -8321,9 +8359,10 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c2b8d84fd686967020de322f3f13b3e7ddcd971e': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c9b62e00819328fe530dd3ce3acad4042a34e00b(encoding@0.1.13)': dependencies: '@google-cloud/spanner': 8.0.0(supports-color@10.0.0) + '@google/genai': 1.6.0(encoding@0.1.13)(supports-color@10.0.0) '@octokit/rest': 22.0.0 '@types/semver': 7.7.0 '@types/supports-color': 10.0.0 @@ -8335,6 +8374,11 @@ snapshots: typescript: 5.8.3 which: 5.0.0 yaml: 2.8.0 + transitivePeerDependencies: + - '@modelcontextprotocol/sdk' + - bufferutil + - encoding + - utf-8-validate '@angular/platform-browser@20.1.0-next.2(@angular/animations@20.1.0-next.2(@angular/common@20.1.0-next.2(@angular/core@20.1.0-next.2(@angular/compiler@20.1.0-next.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.1.0-next.2(@angular/compiler@20.1.0-next.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.1.0-next.2(@angular/core@20.1.0-next.2(@angular/compiler@20.1.0-next.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.1.0-next.2(@angular/compiler@20.1.0-next.2)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: @@ -9270,6 +9314,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@google/genai@1.6.0(encoding@0.1.13)(supports-color@10.0.0)': + dependencies: + google-auth-library: 9.15.1(encoding@0.1.13)(supports-color@10.0.0) + ws: 8.18.2 + zod: 3.25.67 + zod-to-json-schema: 3.24.5(zod@3.25.67) + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + '@grpc/grpc-js@1.13.4': dependencies: '@grpc/proto-loader': 0.7.15 @@ -9999,17 +10055,15 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@stylistic/eslint-plugin@4.4.1(eslint@9.29.0(jiti@1.21.7))(typescript@5.8.3)': + '@stylistic/eslint-plugin@5.0.0(eslint@9.29.0(jiti@1.21.7))': dependencies: - '@typescript-eslint/utils': 8.34.1(eslint@9.29.0(jiti@1.21.7))(typescript@5.8.3) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@1.21.7)) + '@typescript-eslint/types': 8.34.1 eslint: 9.29.0(jiti@1.21.7) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 picomatch: 4.0.2 - transitivePeerDependencies: - - supports-color - - typescript '@tootallnate/once@2.0.0': {} @@ -12744,6 +12798,17 @@ snapshots: functions-have-names@1.2.3: {} + gaxios@6.7.1(encoding@0.1.13)(supports-color@10.0.0): + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.6(supports-color@10.0.0) + is-stream: 2.0.1 + node-fetch: 2.7.0(encoding@0.1.13) + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + gaxios@7.1.0(supports-color@10.0.0): dependencies: extend: 3.0.2 @@ -12752,6 +12817,15 @@ snapshots: transitivePeerDependencies: - supports-color + gcp-metadata@6.1.1(encoding@0.1.13)(supports-color@10.0.0): + dependencies: + gaxios: 6.7.1(encoding@0.1.13)(supports-color@10.0.0) + google-logging-utils: 0.0.2 + json-bigint: 1.0.0 + transitivePeerDependencies: + - encoding + - supports-color + gcp-metadata@7.0.0(supports-color@10.0.0): dependencies: gaxios: 7.1.0(supports-color@10.0.0) @@ -12879,6 +12953,18 @@ snapshots: transitivePeerDependencies: - supports-color + google-auth-library@9.15.1(encoding@0.1.13)(supports-color@10.0.0): + dependencies: + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + gaxios: 6.7.1(encoding@0.1.13)(supports-color@10.0.0) + gcp-metadata: 6.1.1(encoding@0.1.13)(supports-color@10.0.0) + gtoken: 7.1.0(encoding@0.1.13)(supports-color@10.0.0) + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + google-gax@5.0.1-rc.1(supports-color@10.0.0): dependencies: '@grpc/grpc-js': 1.13.4 @@ -12896,6 +12982,8 @@ snapshots: transitivePeerDependencies: - supports-color + google-logging-utils@0.0.2: {} + google-logging-utils@1.1.1: {} gopd@1.2.0: {} @@ -12909,6 +12997,14 @@ snapshots: '@grpc/grpc-js': 1.13.4 protobufjs: 7.5.3 + gtoken@7.1.0(encoding@0.1.13)(supports-color@10.0.0): + dependencies: + gaxios: 6.7.1(encoding@0.1.13)(supports-color@10.0.0) + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + gtoken@8.0.0(supports-color@10.0.0): dependencies: gaxios: 7.1.0(supports-color@10.0.0) @@ -16096,6 +16192,8 @@ snapshots: uuid@8.3.2: {} + uuid@9.0.1: {} + v8-compile-cache-lib@3.0.1: {} v8-to-istanbul@9.3.0: @@ -16627,6 +16725,10 @@ snapshots: yoctocolors-cjs@2.1.2: {} + zod-to-json-schema@3.24.5(zod@3.25.67): + dependencies: + zod: 3.25.67 + zod@3.25.67: {} zone.js@0.15.1: {} diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index da254e509a6e..830ed82bee5d 100644 --- a/tests/legacy-cli/e2e/ng-snapshot/package.json +++ b/tests/legacy-cli/e2e/ng-snapshot/package.json @@ -2,21 +2,21 @@ "description": "snapshot versions of Angular for e2e testing", "private": true, "dependencies": { - "@angular/animations": "github:angular/animations-builds#0fe63b2ad4255115e83c27912fb6db6444c2e392", - "@angular/cdk": "github:angular/cdk-builds#d1ee202d68c6758a5e2f508b74624628f3f69710", - "@angular/common": "github:angular/common-builds#813710757380351481d52c0a40ab3ebbd9212f57", - "@angular/compiler": "github:angular/compiler-builds#eda9db92560a3a9e97d33272a2c1f6eed6e0d7b3", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#749624b7c4461470b82c0debcddc176b191d53e0", - "@angular/core": "github:angular/core-builds#8548da3ebe6740c9419641af78dec6315a885303", - "@angular/forms": "github:angular/forms-builds#0673c2695208a3afe4255a49f6521413c51bdeb6", - "@angular/language-service": "github:angular/language-service-builds#f00920db0ca6fb24de21fb3ae804edafa32d3c33", - "@angular/localize": "github:angular/localize-builds#ee701741883697b552578afac2cb31c8f7ad052b", - "@angular/material": "github:angular/material-builds#1afc0ebb432ca0e9c2ead39682b910d584481f6b", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#d36f8251fbd290981e5ff240ef50024a9bc03e9d", - "@angular/platform-browser": "github:angular/platform-browser-builds#5f14f27c45dc1dbabcc6c8202bf235bed9764f4d", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#8c9c0aba906b5a0bba7c80294912266ead45b70c", - "@angular/platform-server": "github:angular/platform-server-builds#6f859fc45f4561282590624a185d09926ff0feef", - "@angular/router": "github:angular/router-builds#dffcafc6040be280db5c3f2b122d4abfebc1af0b", - "@angular/service-worker": "github:angular/service-worker-builds#2931073c5b4df49164de232e6271d065667b48b1" + "@angular/animations": "github:angular/animations-builds#2d4f720d8ae2a13d8950860743cb3f5c8cd447ee", + "@angular/cdk": "github:angular/cdk-builds#7b1e09f0dda60181c5b959a302c0a26e2d2ec2df", + "@angular/common": "github:angular/common-builds#7457ff29ae62e5cb9d71459094f33fc9810b3bde", + "@angular/compiler": "github:angular/compiler-builds#09e638f5214ca8a928ae5b21de5d8202d05ad489", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#b77cc4dec93d1149ebcb74169c32dbc85b66d677", + "@angular/core": "github:angular/core-builds#e07c6ddb294faf519f70b5e3eb0938d3cea18e2a", + "@angular/forms": "github:angular/forms-builds#284a1dee664dc3527fa68eac0c5f736175107ea7", + "@angular/language-service": "github:angular/language-service-builds#10534a4d81f2843be35a4f16a847940124cf6b69", + "@angular/localize": "github:angular/localize-builds#c127948dcded77a6e739514eb1a2a955e7ade6f2", + "@angular/material": "github:angular/material-builds#08cc2dfb050d6890a5bc636a9a5fa3bf36ed8e16", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#fb4c2b6e2b75c0d68b40493a8593ea9033e915ee", + "@angular/platform-browser": "github:angular/platform-browser-builds#082b9400210c43ac7c6db8526038d9615715f93c", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#8c121b7653b6cdc7da7578cf0e22645a1c70c4fb", + "@angular/platform-server": "github:angular/platform-server-builds#1a114a3bb0f0206d06bdf70d05173fc4ec2c98d9", + "@angular/router": "github:angular/router-builds#c465e88adc2766a131601760fd05cbef7ba6717e", + "@angular/service-worker": "github:angular/service-worker-builds#eea8ee77e335fabf6897a1fcebbf1c1c862cc455" } }