From 82de1dea4a236c756261ef97a0d8762f52e290bd Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 6 Nov 2024 19:11:07 +0000 Subject: [PATCH 1/3] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 +- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/pr.yml | 40 +- package.json | 32 +- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- yarn.lock | 601 +++++------------- 10 files changed, 231 insertions(+), 540 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index b05f6db8e1bb..b0beaee04e11 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@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + - uses: angular/dev-infra/github-actions/branch-manager@933dcd42f8837d6d6ce3a28419a760edb94f10e6 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 71f29e3c2b43..bda9b169150c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Install node modules run: yarn install --immutable - name: Generate JSON schema types @@ -42,11 +42,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/setup@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/configure-remote@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -56,11 +56,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/setup@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/configure-remote@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -90,13 +90,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/setup@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/configure-remote@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/setup@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/configure-remote@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -132,13 +132,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/setup@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/configure-remote@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -149,13 +149,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@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/setup@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/configure-remote@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -182,11 +182,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/setup@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - run: yarn 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 5c664438909e..40b8dd78cf1e 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/commit-message-based-labels@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@933dcd42f8837d6d6ce3a28419a760edb94f10e6 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@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + - uses: angular/dev-infra/github-actions/post-approval-changes@933dcd42f8837d6d6ce3a28419a760edb94f10e6 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 5ffcf2432b83..20d50222d698 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@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + - uses: angular/dev-infra/github-actions/feature-request@933dcd42f8837d6d6ce3a28419a760edb94f10e6 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 204d2fb9eebd..f0064d756a64 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,7 +34,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Setup ESLint Caching uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/linting/licenses@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Check tooling setup run: yarn check-tooling-setup - name: Check commit message @@ -70,11 +70,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/setup@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/configure-remote@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -90,11 +90,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/setup@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/configure-remote@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/setup@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/configure-remote@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -125,13 +125,13 @@ jobs: runs-on: windows-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/setup@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/configure-remote@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -146,13 +146,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/setup@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/configure-remote@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -169,12 +169,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/setup@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c8e09d00cfc4bcefbab8c06f144608cd67d16451 + uses: angular/dev-infra/github-actions/bazel/configure-remote@933dcd42f8837d6d6ce3a28419a760edb94f10e6 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/package.json b/package.json index f61a155f0333..4937e4b5ea4c 100644 --- a/package.json +++ b/package.json @@ -52,23 +52,23 @@ }, "devDependencies": { "@ampproject/remapping": "2.3.0", - "@angular/animations": "19.0.0-rc.0", + "@angular/animations": "19.0.0-rc.1", "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#0386111e4e9937afa3740afb7e9ce2a0c35d39b8", - "@angular/cdk": "19.0.0-rc.0", - "@angular/common": "19.0.0-rc.0", - "@angular/compiler": "19.0.0-rc.0", - "@angular/compiler-cli": "19.0.0-rc.0", - "@angular/core": "19.0.0-rc.0", - "@angular/forms": "19.0.0-rc.0", - "@angular/localize": "19.0.0-rc.0", - "@angular/material": "19.0.0-rc.0", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#1357f6aab253245fac2c66b40287d0ded76e12b1", - "@angular/platform-browser": "19.0.0-rc.0", - "@angular/platform-browser-dynamic": "19.0.0-rc.0", - "@angular/platform-server": "19.0.0-rc.0", - "@angular/router": "19.0.0-rc.0", - "@angular/service-worker": "19.0.0-rc.0", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#9f63e93d2e3035ce984c157216bac41d59827bf8", + "@angular/cdk": "19.0.0-rc.1", + "@angular/common": "19.0.0-rc.1", + "@angular/compiler": "19.0.0-rc.1", + "@angular/compiler-cli": "19.0.0-rc.1", + "@angular/core": "19.0.0-rc.1", + "@angular/forms": "19.0.0-rc.1", + "@angular/localize": "19.0.0-rc.1", + "@angular/material": "19.0.0-rc.1", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#f7a60f3dda6fb0030538446849c28ea90f823383", + "@angular/platform-browser": "19.0.0-rc.1", + "@angular/platform-browser-dynamic": "19.0.0-rc.1", + "@angular/platform-server": "19.0.0-rc.1", + "@angular/router": "19.0.0-rc.1", + "@angular/service-worker": "19.0.0-rc.1", "@babel/core": "7.26.0", "@babel/generator": "7.26.2", "@babel/helper-annotate-as-pure": "7.25.9", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index fa8d5d64633e..c8ebc4f48548 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -22,12 +22,12 @@ "@angular/router": "^19.0.0-next.0" }, "devDependencies": { - "@angular/common": "19.0.0-rc.0", - "@angular/compiler": "19.0.0-rc.0", - "@angular/core": "19.0.0-rc.0", - "@angular/platform-browser": "19.0.0-rc.0", - "@angular/platform-server": "19.0.0-rc.0", - "@angular/router": "19.0.0-rc.0", + "@angular/common": "19.0.0-rc.1", + "@angular/compiler": "19.0.0-rc.1", + "@angular/core": "19.0.0-rc.1", + "@angular/platform-browser": "19.0.0-rc.1", + "@angular/platform-server": "19.0.0-rc.1", + "@angular/router": "19.0.0-rc.1", "@bazel/runfiles": "^5.8.1" }, "sideEffects": false, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 3f81d8aab804..0247f5120c96 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -27,8 +27,8 @@ }, "devDependencies": { "@angular-devkit/core": "0.0.0-PLACEHOLDER", - "@angular/compiler": "19.0.0-rc.0", - "@angular/compiler-cli": "19.0.0-rc.0", + "@angular/compiler": "19.0.0-rc.1", + "@angular/compiler-cli": "19.0.0-rc.1", "typescript": "5.6.3", "webpack": "5.96.1" } diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index fd2becf71d06..e3c666c75d68 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#0cde73b3a2fbfe380d924aa725088dc45c17ae60", - "@angular/cdk": "github:angular/cdk-builds#a65486ffad1ca454e6a062b60d30b5db913b8372", - "@angular/common": "github:angular/common-builds#8c817e04767086452acba10eab378afb54a59cd0", - "@angular/compiler": "github:angular/compiler-builds#54afbf466bebec6509988415ad96d39a6bf9923e", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#fe363f7b907e9ef874369307d87bd99fc54feb3b", - "@angular/core": "github:angular/core-builds#c6d05b50fb4cfd311bc36559e7a045234063b1a6", - "@angular/forms": "github:angular/forms-builds#f5f71dea7d4862ebcb5b102583baea8b4c34525f", - "@angular/language-service": "github:angular/language-service-builds#c61ad3ad80f680c28426ce2dfa4a48b5427c6fd6", - "@angular/localize": "github:angular/localize-builds#5186966790d353733adc429c9caf50bb48e80283", - "@angular/material": "github:angular/material-builds#a1a8fe9ab191240434cf24caa59510294eb84860", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#0899cd8b39319a593ee68e003d0cf08d99a049b8", - "@angular/platform-browser": "github:angular/platform-browser-builds#a5fb25d3a87af2160dc8b0c04d28c9d50161a69c", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#2a124b5ed72911564c7ccdcce690207386f74941", - "@angular/platform-server": "github:angular/platform-server-builds#f6e82e5f300eac23f2a90daeb30aac24ea1a2275", - "@angular/router": "github:angular/router-builds#bb9441e5d1883181579c036eb8e7196d6b109afd", - "@angular/service-worker": "github:angular/service-worker-builds#9c34a1e4caa5eaf9ec70dec48748ea33c0dc673f" + "@angular/animations": "github:angular/animations-builds#45213e9fe275c1875402076378f975dc3241a09c", + "@angular/cdk": "github:angular/cdk-builds#ad62cdc221786080aefe6bab35d088797b3e65a5", + "@angular/common": "github:angular/common-builds#093376b3dbc2da13d08b980ed3b0a6ac6f46193c", + "@angular/compiler": "github:angular/compiler-builds#b48887c49e9f0d9a44f765a56e735c28c2f456e1", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#e8da1bec463981c7d4b0ebba0a74ebd8928c166c", + "@angular/core": "github:angular/core-builds#dbb3596b0cc8203ec1aa53e8b46e901ba749d1b6", + "@angular/forms": "github:angular/forms-builds#7a5fff67cfd73d448db3faa81dded585c7705500", + "@angular/language-service": "github:angular/language-service-builds#fc682f92365a742ed4efa5644ace2401197b2360", + "@angular/localize": "github:angular/localize-builds#92fa436d4a160a759d99decc08a20d0a10321c4c", + "@angular/material": "github:angular/material-builds#811fc92d5ad2a109e91e2a58fff56e5f1e479481", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#190edcefd55875d6369a5843d6e2ab9299b3506e", + "@angular/platform-browser": "github:angular/platform-browser-builds#a22f3b54bb7cc908715314943614379f751355c5", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#ac65f0b158b0abcd0009b5fa147b9990c47fd3f2", + "@angular/platform-server": "github:angular/platform-server-builds#e23977c12e5af5a9ca51fa89377323f75f7895c5", + "@angular/router": "github:angular/router-builds#caa52ec91e890245382eb056907ee61deaad463b", + "@angular/service-worker": "github:angular/service-worker-builds#39255c4665e2fcdac8a98b3d43df4674bc150427" } } diff --git a/yarn.lock b/yarn.lock index 156168d43482..f8ca06c57981 100644 --- a/yarn.lock +++ b/yarn.lock @@ -40,18 +40,18 @@ __metadata: languageName: unknown linkType: soft -"@angular-devkit/architect@npm:0.1900.0-rc.0": - version: 0.1900.0-rc.0 - resolution: "@angular-devkit/architect@npm:0.1900.0-rc.0" +"@angular-devkit/architect@npm:0.1900.0-rc.1": + version: 0.1900.0-rc.1 + resolution: "@angular-devkit/architect@npm:0.1900.0-rc.1" dependencies: - "@angular-devkit/core": "npm:19.0.0-rc.0" + "@angular-devkit/core": "npm:19.0.0-rc.1" rxjs: "npm:7.8.1" dependenciesMeta: esbuild: built: true puppeteer: built: true - checksum: 10c0/5419fd0edd29aa7709327f4e01415b435a6a1b9a29f3b624294542b672bf369d00f25fdf4f3618e694a56f2da6146a9bbcfae0b75bf941c5066ff1080d5fc9cd + checksum: 10c0/d0e48c132f5356d56782bee1c3abfa7543a49dd5342712632bf4620ed56721c6386417737c277ee7cf0a6d945d96b2dce2806bbac3226035ff450e8572b8660d languageName: node linkType: hard @@ -194,9 +194,9 @@ __metadata: languageName: unknown linkType: soft -"@angular-devkit/core@npm:19.0.0-rc.0": - version: 19.0.0-rc.0 - resolution: "@angular-devkit/core@npm:19.0.0-rc.0" +"@angular-devkit/core@npm:19.0.0-rc.1": + version: 19.0.0-rc.1 + resolution: "@angular-devkit/core@npm:19.0.0-rc.1" dependencies: ajv: "npm:8.17.1" ajv-formats: "npm:3.0.1" @@ -214,7 +214,7 @@ __metadata: peerDependenciesMeta: chokidar: optional: true - checksum: 10c0/d13f3b397776cca505914e0c4f924366cef81503c7b46b19e8213b8be30eb7472ee9503458504745c110078b9581eeb863dbb7633dd98bb37389d7d8e29f9eee + checksum: 10c0/db9a0e27ddccd9d202eba4043c0725be598922aa66adb3516b64ae6604a59fbf4db0c33f351c5a93676ee11fba843124cc32b4280259549dda4e7b69c601de2a languageName: node linkType: hard @@ -245,14 +245,14 @@ __metadata: languageName: unknown linkType: soft -"@angular/animations@npm:19.0.0-rc.0": - version: 19.0.0-rc.0 - resolution: "@angular/animations@npm:19.0.0-rc.0" +"@angular/animations@npm:19.0.0-rc.1": + version: 19.0.0-rc.1 + resolution: "@angular/animations@npm:19.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.0.0-rc.0 - checksum: 10c0/8b52c7f7a7763abb99fbd444b4a8f03fc3ac3d72251553fa986958dd1e510746a8e461203b38edf2341e76ed3913b6a8f26687d6ba63c87ddbe5600d3b8e440c + "@angular/core": 19.0.0-rc.1 + checksum: 10c0/571b62383a10f40ea52fd45c0013c123c66cf1eb9dea3464922ebe8df9480b02f9284b59dbcae90e58b1b99d32ceff842cb6342ffb61c5450346739036d0cf77 languageName: node linkType: hard @@ -324,12 +324,12 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#0386111e4e9937afa3740afb7e9ce2a0c35d39b8": - version: 0.0.0-c8e09d00cfc4bcefbab8c06f144608cd67d16451 - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=0386111e4e9937afa3740afb7e9ce2a0c35d39b8" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#9f63e93d2e3035ce984c157216bac41d59827bf8": + version: 0.0.0-933dcd42f8837d6d6ce3a28419a760edb94f10e6 + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=9f63e93d2e3035ce984c157216bac41d59827bf8" dependencies: "@angular/benchpress": "npm:0.3.0" - "@angular/build": "npm:19.0.0-rc.0" + "@angular/build": "npm:19.0.0-rc.1" "@babel/core": "npm:^7.16.0" "@babel/helper-annotate-as-pure": "npm:^7.18.6" "@babel/plugin-proposal-async-generator-functions": "npm:^7.20.1" @@ -365,7 +365,7 @@ __metadata: dependenciesMeta: re2: built: false - checksum: 10c0/b8ee367b359083a1b57112db89bccd1f385182884628b97ce9de03971f2b1a6cd2c14f507fba0cfc32d921f68647f650b9d6ae98c433679d50d9f83d0921be1f + checksum: 10c0/bc5e055a6ddc678a7d9e93f9816e1e70c4071617a842c90caf8c50a84e67f72c13d23dd7c92673be0fecc4941944cef9e546365f5b7a83e8f40030e12b564eb3 languageName: node linkType: hard @@ -431,12 +431,12 @@ __metadata: languageName: unknown linkType: soft -"@angular/build@npm:19.0.0-rc.0": - version: 19.0.0-rc.0 - resolution: "@angular/build@npm:19.0.0-rc.0" +"@angular/build@npm:19.0.0-rc.1": + version: 19.0.0-rc.1 + resolution: "@angular/build@npm:19.0.0-rc.1" dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular-devkit/architect": "npm:0.1900.0-rc.0" + "@angular-devkit/architect": "npm:0.1900.0-rc.1" "@babel/core": "npm:7.26.0" "@babel/helper-annotate-as-pure": "npm:7.25.9" "@babel/helper-split-export-declaration": "npm:7.24.7" @@ -450,14 +450,14 @@ __metadata: https-proxy-agent: "npm:7.0.5" istanbul-lib-instrument: "npm:6.0.3" listr2: "npm:8.2.5" - lmdb: "npm:3.1.3" + lmdb: "npm:3.1.4" magic-string: "npm:0.30.12" mrmime: "npm:2.0.0" parse5-html-rewriting-stream: "npm:7.0.0" picomatch: "npm:4.0.2" piscina: "npm:4.7.0" - rollup: "npm:4.24.3" - sass: "npm:1.80.5" + rollup: "npm:4.24.4" + sass: "npm:1.80.6" semver: "npm:7.6.3" vite: "npm:5.4.10" watchpack: "npm:2.4.2" @@ -467,7 +467,7 @@ __metadata: "@angular/localize": ^19.0.0-next.9 "@angular/platform-server": ^19.0.0-next.9 "@angular/service-worker": ^19.0.0-next.9 - "@angular/ssr": ^19.0.0-rc.0 + "@angular/ssr": ^19.0.0-rc.1 less: ^4.2.0 postcss: ^8.4.0 tailwindcss: ^2.0.0 || ^3.0.0 @@ -494,13 +494,13 @@ __metadata: optional: true tailwindcss: optional: true - checksum: 10c0/512b5886a5c61e23097a2664bdb5266a5a257f6847c15e81e881996f6ea222fe27e7e245add7fd56fe6fb8a420695cf62a197b9e4c13176e5d2e0178b2175608 + checksum: 10c0/8c55690c235a3d0f4d1814ea863271b1060e1971b0420aee050da432ec896b02cc1ab36b36f82ff449b01892f773b76bdbffb6a052bc3949d08576d1710f22e1 languageName: node linkType: hard -"@angular/cdk@npm:19.0.0-rc.0": - version: 19.0.0-rc.0 - resolution: "@angular/cdk@npm:19.0.0-rc.0" +"@angular/cdk@npm:19.0.0-rc.1": + version: 19.0.0-rc.1 + resolution: "@angular/cdk@npm:19.0.0-rc.1" dependencies: parse5: "npm:^7.1.2" tslib: "npm:^2.3.0" @@ -511,7 +511,7 @@ __metadata: dependenciesMeta: parse5: optional: true - checksum: 10c0/22c558be245308340c40525b6b9f0d2a38a4832b5480856dc5442fc105432dabab3d759d97dbfc2c3c2f83687285adbfd7cbcf80c8a21d73b43d4c8071b0ed7f + checksum: 10c0/d89988b4619b63be8220c3fa393e305653f1c22b76c1cadac596a69173ffa9effc486c8e02df2db20855f8e470da8a76bc6ae6f7730e9f4c1bafd253fd9bdee5 languageName: node linkType: hard @@ -541,23 +541,23 @@ __metadata: languageName: unknown linkType: soft -"@angular/common@npm:19.0.0-rc.0": - version: 19.0.0-rc.0 - resolution: "@angular/common@npm:19.0.0-rc.0" +"@angular/common@npm:19.0.0-rc.1": + version: 19.0.0-rc.1 + resolution: "@angular/common@npm:19.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.0.0-rc.0 + "@angular/core": 19.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/26c3109f47778ac8ab106fe1ad20b039fc64607ee3d17c2959ee217694570a1b301f39a8fe99f2e02fd4977139d5a3dc20df3644b2faab5e97e17e6dcbb28c80 + checksum: 10c0/87d57686069a0c48bda439954878dece5ac9a57da7b93bb5b8622a76494e67fc1421eba29abe8d61387f8ba2d02ed368e1900269a6d7d27fca44182729866ac4 languageName: node linkType: hard -"@angular/compiler-cli@npm:19.0.0-rc.0": - version: 19.0.0-rc.0 - resolution: "@angular/compiler-cli@npm:19.0.0-rc.0" +"@angular/compiler-cli@npm:19.0.0-rc.1": + version: 19.0.0-rc.1 + resolution: "@angular/compiler-cli@npm:19.0.0-rc.1" dependencies: - "@babel/core": "npm:7.25.2" + "@babel/core": "npm:7.26.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" chokidar: "npm:^4.0.0" convert-source-map: "npm:^1.5.1" @@ -566,39 +566,39 @@ __metadata: tslib: "npm:^2.3.0" yargs: "npm:^17.2.1" peerDependencies: - "@angular/compiler": 19.0.0-rc.0 + "@angular/compiler": 19.0.0-rc.1 typescript: ">=5.5 <5.7" bin: ng-xi18n: bundles/src/bin/ng_xi18n.js ngc: bundles/src/bin/ngc.js ngcc: bundles/ngcc/index.js - checksum: 10c0/a05214d370df1f3d5d6a42f182c3ec9e913c94f4ad4851ec7cbf5f0affd819d866e9044606bea80f59a8fb407623cdd2727c9ede9f36fc683c76a7ecdce64682 + checksum: 10c0/cb02fc43c3300c224d5994e7f9f90d7f6c5b723659a572c05e4944a9a5e68273b203df31095725cc2566e438956f8f17ef36e41699bf4c6736575d67a6ab73a0 languageName: node linkType: hard -"@angular/compiler@npm:19.0.0-rc.0": - version: 19.0.0-rc.0 - resolution: "@angular/compiler@npm:19.0.0-rc.0" +"@angular/compiler@npm:19.0.0-rc.1": + version: 19.0.0-rc.1 + resolution: "@angular/compiler@npm:19.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.0.0-rc.0 + "@angular/core": 19.0.0-rc.1 peerDependenciesMeta: "@angular/core": optional: true - checksum: 10c0/df54a0c49c980369ad8478f5394a59c86845ceff0210d4fef64f86028610ead35b7bd2741a3649ec1073cc383502a3278a02df0962dfe83e7b8c46ca01b25816 + checksum: 10c0/1d5114ad649fc488bf2fba74361ed1b9351a3cf358f735978c7e49251c48828c811f78e466d15c9be471aa2c8c64ec094dd6a72da1952b04c3c3c9a75e7c26ef languageName: node linkType: hard -"@angular/core@npm:19.0.0-rc.0": - version: 19.0.0-rc.0 - resolution: "@angular/core@npm:19.0.0-rc.0" +"@angular/core@npm:19.0.0-rc.1": + version: 19.0.0-rc.1 + resolution: "@angular/core@npm:19.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 - checksum: 10c0/2b367560c6d767373b3b77c2321b45aa5646629ef407c49db922913a3993f694973317823a0542b06580e60ff88dd862142387bb721cb6984626d2546f074e0c + checksum: 10c0/ca917494d236ef902a8be013b08615f26d1cff534b067fcdc5e500785e08611b4b0d7c019ca2cf62dca7e2a94cdd3ca2556f0e9e2b14e8c54d6227d72e2bec06 languageName: node linkType: hard @@ -629,23 +629,23 @@ __metadata: resolution: "@angular/devkit-repo@workspace:." dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular/animations": "npm:19.0.0-rc.0" + "@angular/animations": "npm:19.0.0-rc.1" "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#0386111e4e9937afa3740afb7e9ce2a0c35d39b8" - "@angular/cdk": "npm:19.0.0-rc.0" - "@angular/common": "npm:19.0.0-rc.0" - "@angular/compiler": "npm:19.0.0-rc.0" - "@angular/compiler-cli": "npm:19.0.0-rc.0" - "@angular/core": "npm:19.0.0-rc.0" - "@angular/forms": "npm:19.0.0-rc.0" - "@angular/localize": "npm:19.0.0-rc.0" - "@angular/material": "npm:19.0.0-rc.0" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#1357f6aab253245fac2c66b40287d0ded76e12b1" - "@angular/platform-browser": "npm:19.0.0-rc.0" - "@angular/platform-browser-dynamic": "npm:19.0.0-rc.0" - "@angular/platform-server": "npm:19.0.0-rc.0" - "@angular/router": "npm:19.0.0-rc.0" - "@angular/service-worker": "npm:19.0.0-rc.0" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#9f63e93d2e3035ce984c157216bac41d59827bf8" + "@angular/cdk": "npm:19.0.0-rc.1" + "@angular/common": "npm:19.0.0-rc.1" + "@angular/compiler": "npm:19.0.0-rc.1" + "@angular/compiler-cli": "npm:19.0.0-rc.1" + "@angular/core": "npm:19.0.0-rc.1" + "@angular/forms": "npm:19.0.0-rc.1" + "@angular/localize": "npm:19.0.0-rc.1" + "@angular/material": "npm:19.0.0-rc.1" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#f7a60f3dda6fb0030538446849c28ea90f823383" + "@angular/platform-browser": "npm:19.0.0-rc.1" + "@angular/platform-browser-dynamic": "npm:19.0.0-rc.1" + "@angular/platform-server": "npm:19.0.0-rc.1" + "@angular/router": "npm:19.0.0-rc.1" + "@angular/service-worker": "npm:19.0.0-rc.1" "@babel/core": "npm:7.26.0" "@babel/generator": "npm:7.26.2" "@babel/helper-annotate-as-pure": "npm:7.25.9" @@ -802,59 +802,59 @@ __metadata: languageName: unknown linkType: soft -"@angular/forms@npm:19.0.0-rc.0": - version: 19.0.0-rc.0 - resolution: "@angular/forms@npm:19.0.0-rc.0" +"@angular/forms@npm:19.0.0-rc.1": + version: 19.0.0-rc.1 + resolution: "@angular/forms@npm:19.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.0.0-rc.0 - "@angular/core": 19.0.0-rc.0 - "@angular/platform-browser": 19.0.0-rc.0 + "@angular/common": 19.0.0-rc.1 + "@angular/core": 19.0.0-rc.1 + "@angular/platform-browser": 19.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/07fe744c535c19f6fceef8f1e91b934715d5e5d4b917ce79adbae651341e9f3ea3f16ce59de4fd1ebdb20eb63e7d768ffcc0e447ec02eaaebca874ddc2625783 + checksum: 10c0/04e49eb27bee86b016c86e3a6b8438710f89e25f315f3d6e6b574e948ca4c7f4f502530ac0723e729425740b598f81821b93022fe31b6478a62f0be558f5e471 languageName: node linkType: hard -"@angular/localize@npm:19.0.0-rc.0": - version: 19.0.0-rc.0 - resolution: "@angular/localize@npm:19.0.0-rc.0" +"@angular/localize@npm:19.0.0-rc.1": + version: 19.0.0-rc.1 + resolution: "@angular/localize@npm:19.0.0-rc.1" dependencies: - "@babel/core": "npm:7.25.2" + "@babel/core": "npm:7.26.0" "@types/babel__core": "npm:7.20.5" fast-glob: "npm:3.3.2" yargs: "npm:^17.2.1" peerDependencies: - "@angular/compiler": 19.0.0-rc.0 - "@angular/compiler-cli": 19.0.0-rc.0 + "@angular/compiler": 19.0.0-rc.1 + "@angular/compiler-cli": 19.0.0-rc.1 bin: localize-extract: tools/bundles/src/extract/cli.js localize-migrate: tools/bundles/src/migrate/cli.js localize-translate: tools/bundles/src/translate/cli.js - checksum: 10c0/2ede64c28c9ebc7bbf76b4d0029d807f939fecd25a74d55e8e08260f7e7073541b45083ed1fb424fc032d3f6ab65bdbc8617eb40a6a29662759ee4d34ef75b55 + checksum: 10c0/1d864de6be24968e7ff852c10089b7dec8887ef9b6f8359967f8d96110ec75d1f85efc8d024e51955b790d8561b5b368258bcc3cec7211b15560944331afdb00 languageName: node linkType: hard -"@angular/material@npm:19.0.0-rc.0": - version: 19.0.0-rc.0 - resolution: "@angular/material@npm:19.0.0-rc.0" +"@angular/material@npm:19.0.0-rc.1": + version: 19.0.0-rc.1 + resolution: "@angular/material@npm:19.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: "@angular/animations": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 - "@angular/cdk": 19.0.0-rc.0 + "@angular/cdk": 19.0.0-rc.1 "@angular/common": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 "@angular/core": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 "@angular/forms": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 "@angular/platform-browser": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/7432fd8330a81ea7ed70c8695dfbd1a30a4ab72cf779ea3f49f1773ec1ce600027508fb6da5a8dee2a2c8c8be9a49264bb68d70ea1fbbfc1eb4aefb1abf66aab + checksum: 10c0/f2737aca2dab2552c2a99ef58f6b2ecadc61be54f45d78846ffae5bf1daa8057829bb56509f72a493b70ce0d4a742efe0ec1519350ac1fefad2bfad369fd134f languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#1357f6aab253245fac2c66b40287d0ded76e12b1": - version: 0.0.0-c8e09d00cfc4bcefbab8c06f144608cd67d16451 - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=1357f6aab253245fac2c66b40287d0ded76e12b1" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#f7a60f3dda6fb0030538446849c28ea90f823383": + version: 0.0.0-933dcd42f8837d6d6ce3a28419a760edb94f10e6 + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=f7a60f3dda6fb0030538446849c28ea90f823383" dependencies: "@octokit/rest": "npm:21.0.2" "@types/semver": "npm:^7.3.6" @@ -868,53 +868,53 @@ __metadata: yaml: "npm:2.6.0" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/e294c92f1af71913dc7ee3d903ecd0063050408ab652b71f18181cfb7385a6df366a0724398965f62db7d900c6c8c22b3bc8dbf4195c64da033132e255c90194 + checksum: 10c0/d54241b0c41fca8c108a2b24a0ce5bb2240ebb829f79b47a60d5196833361a4c556ea900c9b58044b2ccf70d2a517f6ee8495e88955009f994f0e63ce6afec78 languageName: node linkType: hard -"@angular/platform-browser-dynamic@npm:19.0.0-rc.0": - version: 19.0.0-rc.0 - resolution: "@angular/platform-browser-dynamic@npm:19.0.0-rc.0" +"@angular/platform-browser-dynamic@npm:19.0.0-rc.1": + version: 19.0.0-rc.1 + resolution: "@angular/platform-browser-dynamic@npm:19.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.0.0-rc.0 - "@angular/compiler": 19.0.0-rc.0 - "@angular/core": 19.0.0-rc.0 - "@angular/platform-browser": 19.0.0-rc.0 - checksum: 10c0/3ce5a5e667e87e045502358ef18f1fab04b15f4527135b0ee7989b99bf6a0a15abd61c8bc64b0a89db10ea48884b955036f3948c36bfaf3bc35a1446e99f7f49 + "@angular/common": 19.0.0-rc.1 + "@angular/compiler": 19.0.0-rc.1 + "@angular/core": 19.0.0-rc.1 + "@angular/platform-browser": 19.0.0-rc.1 + checksum: 10c0/99d4dc21043e00b7609edcd80ea526f956b122a183c13913acbb1722a1ab9e4af58524fa134a6b696ed17c27ba78eea2c89583267cc8975d32e67b7be85c63c7 languageName: node linkType: hard -"@angular/platform-browser@npm:19.0.0-rc.0": - version: 19.0.0-rc.0 - resolution: "@angular/platform-browser@npm:19.0.0-rc.0" +"@angular/platform-browser@npm:19.0.0-rc.1": + version: 19.0.0-rc.1 + resolution: "@angular/platform-browser@npm:19.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/animations": 19.0.0-rc.0 - "@angular/common": 19.0.0-rc.0 - "@angular/core": 19.0.0-rc.0 + "@angular/animations": 19.0.0-rc.1 + "@angular/common": 19.0.0-rc.1 + "@angular/core": 19.0.0-rc.1 peerDependenciesMeta: "@angular/animations": optional: true - checksum: 10c0/c0aba8a3b328b314bfceea3c941b9124e03b7ba771ae28a856a8039b3b5ec0c6832f22dbf5417ac666549d9ab87f7cac182e4f137a1401ac5ab828a3edf8dfef + checksum: 10c0/1e45d02ede4d34d0349942ab32bfed99586f433efad06ea907bfed0573bad50c92d7efa273e9dea056fbbf71ca5550a56162f36ac4ad360ad901710644119597 languageName: node linkType: hard -"@angular/platform-server@npm:19.0.0-rc.0": - version: 19.0.0-rc.0 - resolution: "@angular/platform-server@npm:19.0.0-rc.0" +"@angular/platform-server@npm:19.0.0-rc.1": + version: 19.0.0-rc.1 + resolution: "@angular/platform-server@npm:19.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" xhr2: "npm:^0.2.0" peerDependencies: - "@angular/animations": 19.0.0-rc.0 - "@angular/common": 19.0.0-rc.0 - "@angular/compiler": 19.0.0-rc.0 - "@angular/core": 19.0.0-rc.0 - "@angular/platform-browser": 19.0.0-rc.0 - checksum: 10c0/08d85d2124e0b7e942fd5fb4ba5b667ed2463b0e456595a2ad725462f06f1cbfa17ac51bd1fd6d6d456c35563d3798f490f453836d9fb24e54997bb8b5b75c62 + "@angular/animations": 19.0.0-rc.1 + "@angular/common": 19.0.0-rc.1 + "@angular/compiler": 19.0.0-rc.1 + "@angular/core": 19.0.0-rc.1 + "@angular/platform-browser": 19.0.0-rc.1 + checksum: 10c0/76957d0389512fd313a3226b9ea94b89777032c445b9bf0565308202485de2ca6174ebdd82d4dd7111b6299b20903644b40babf88aebf27cbce3294a298bf73e languageName: node linkType: hard @@ -933,31 +933,31 @@ __metadata: languageName: unknown linkType: soft -"@angular/router@npm:19.0.0-rc.0": - version: 19.0.0-rc.0 - resolution: "@angular/router@npm:19.0.0-rc.0" +"@angular/router@npm:19.0.0-rc.1": + version: 19.0.0-rc.1 + resolution: "@angular/router@npm:19.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.0.0-rc.0 - "@angular/core": 19.0.0-rc.0 - "@angular/platform-browser": 19.0.0-rc.0 + "@angular/common": 19.0.0-rc.1 + "@angular/core": 19.0.0-rc.1 + "@angular/platform-browser": 19.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/b1d76f2069b50c00e317e8e6f48f1c47872b6ce98872ef4b3d55c3c905000f0a3314b1ae95590022ab0ff3d08585998979f388903db7f5dff3a6441c34ba362b + checksum: 10c0/33b5dc4691af17a13ada40829e4da1a952cd78a5c42a08620f544cab5bd52b5d31448c340692762acb924e8df9feb8e661b8b47d50a302b335c42edbba90be1c languageName: node linkType: hard -"@angular/service-worker@npm:19.0.0-rc.0": - version: 19.0.0-rc.0 - resolution: "@angular/service-worker@npm:19.0.0-rc.0" +"@angular/service-worker@npm:19.0.0-rc.1": + version: 19.0.0-rc.1 + resolution: "@angular/service-worker@npm:19.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.0.0-rc.0 - "@angular/core": 19.0.0-rc.0 + "@angular/common": 19.0.0-rc.1 + "@angular/core": 19.0.0-rc.1 bin: ngsw-config: ngsw-config.js - checksum: 10c0/bf491b8bd16501720466bffd786b555055c9f602c4d25047d89a39368bffb902efca705f19d8b95025e64c6caec2517f8bb2993d98aae434c76fac98638cfc7c + checksum: 10c0/be4db75be6aa059dd5f9328130e900db2f59b388353343febf2c5bd6d2257a51531381a070c93de0be7a0af915e8b71d032e523af9ac6c277dc314b23bfd6c3c languageName: node linkType: hard @@ -965,12 +965,12 @@ __metadata: version: 0.0.0-use.local resolution: "@angular/ssr@workspace:packages/angular/ssr" dependencies: - "@angular/common": "npm:19.0.0-rc.0" - "@angular/compiler": "npm:19.0.0-rc.0" - "@angular/core": "npm:19.0.0-rc.0" - "@angular/platform-browser": "npm:19.0.0-rc.0" - "@angular/platform-server": "npm:19.0.0-rc.0" - "@angular/router": "npm:19.0.0-rc.0" + "@angular/common": "npm:19.0.0-rc.1" + "@angular/compiler": "npm:19.0.0-rc.1" + "@angular/core": "npm:19.0.0-rc.1" + "@angular/platform-browser": "npm:19.0.0-rc.1" + "@angular/platform-server": "npm:19.0.0-rc.1" + "@angular/router": "npm:19.0.0-rc.1" "@bazel/runfiles": "npm:^5.8.1" tslib: "npm:^2.3.0" peerDependencies: @@ -981,7 +981,7 @@ __metadata: languageName: unknown linkType: soft -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.11, @babel/code-frame@npm:^7.24.7, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.11, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0": version: 7.26.2 resolution: "@babel/code-frame@npm:7.26.2" dependencies: @@ -999,29 +999,6 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:7.25.2": - version: 7.25.2 - resolution: "@babel/core@npm:7.25.2" - dependencies: - "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.0" - "@babel/helper-compilation-targets": "npm:^7.25.2" - "@babel/helper-module-transforms": "npm:^7.25.2" - "@babel/helpers": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.0" - "@babel/template": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.2" - "@babel/types": "npm:^7.25.2" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 10c0/a425fa40e73cb72b6464063a57c478bc2de9dbcc19c280f1b55a3d88b35d572e87e8594e7d7b4880331addb6faef641bbeb701b91b41b8806cd4deae5d74f401 - languageName: node - linkType: hard - "@babel/core@npm:7.26.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.16.0, @babel/core@npm:^7.23.9": version: 7.26.0 resolution: "@babel/core@npm:7.26.0" @@ -1045,7 +1022,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:7.26.2, @babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.9, @babel/generator@npm:^7.26.0": +"@babel/generator@npm:7.26.2, @babel/generator@npm:^7.25.9, @babel/generator@npm:^7.26.0": version: 7.26.2 resolution: "@babel/generator@npm:7.26.2" dependencies: @@ -1077,7 +1054,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.25.2, @babel/helper-compilation-targets@npm:^7.25.9": +"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-compilation-targets@npm:7.25.9" dependencies: @@ -1164,7 +1141,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.25.2, @babel/helper-module-transforms@npm:^7.25.9, @babel/helper-module-transforms@npm:^7.26.0": +"@babel/helper-module-transforms@npm:^7.25.9, @babel/helper-module-transforms@npm:^7.26.0": version: 7.26.0 resolution: "@babel/helper-module-transforms@npm:7.26.0" dependencies: @@ -1280,7 +1257,7 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.25.0, @babel/helpers@npm:^7.26.0": +"@babel/helpers@npm:^7.26.0": version: 7.26.0 resolution: "@babel/helpers@npm:7.26.0" dependencies: @@ -1290,7 +1267,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2": version: 7.26.2 resolution: "@babel/parser@npm:7.26.2" dependencies: @@ -2134,7 +2111,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.25.0, @babel/template@npm:^7.25.9": +"@babel/template@npm:^7.25.9": version: 7.25.9 resolution: "@babel/template@npm:7.25.9" dependencies: @@ -2145,7 +2122,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.25.9": +"@babel/traverse@npm:^7.25.9": version: 7.25.9 resolution: "@babel/traverse@npm:7.25.9" dependencies: @@ -2160,7 +2137,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.4.4": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.4.4": version: 7.26.0 resolution: "@babel/types@npm:7.26.0" dependencies: @@ -3158,13 +3135,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-darwin-arm64@npm:3.1.3": - version: 3.1.3 - resolution: "@lmdb/lmdb-darwin-arm64@npm:3.1.3" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@lmdb/lmdb-darwin-arm64@npm:3.1.4": version: 3.1.4 resolution: "@lmdb/lmdb-darwin-arm64@npm:3.1.4" @@ -3172,13 +3142,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-darwin-x64@npm:3.1.3": - version: 3.1.3 - resolution: "@lmdb/lmdb-darwin-x64@npm:3.1.3" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@lmdb/lmdb-darwin-x64@npm:3.1.4": version: 3.1.4 resolution: "@lmdb/lmdb-darwin-x64@npm:3.1.4" @@ -3186,13 +3149,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-linux-arm64@npm:3.1.3": - version: 3.1.3 - resolution: "@lmdb/lmdb-linux-arm64@npm:3.1.3" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - "@lmdb/lmdb-linux-arm64@npm:3.1.4": version: 3.1.4 resolution: "@lmdb/lmdb-linux-arm64@npm:3.1.4" @@ -3200,13 +3156,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-linux-arm@npm:3.1.3": - version: 3.1.3 - resolution: "@lmdb/lmdb-linux-arm@npm:3.1.3" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "@lmdb/lmdb-linux-arm@npm:3.1.4": version: 3.1.4 resolution: "@lmdb/lmdb-linux-arm@npm:3.1.4" @@ -3214,13 +3163,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-linux-x64@npm:3.1.3": - version: 3.1.3 - resolution: "@lmdb/lmdb-linux-x64@npm:3.1.3" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - "@lmdb/lmdb-linux-x64@npm:3.1.4": version: 3.1.4 resolution: "@lmdb/lmdb-linux-x64@npm:3.1.4" @@ -3228,13 +3170,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-win32-x64@npm:3.1.3": - version: 3.1.3 - resolution: "@lmdb/lmdb-win32-x64@npm:3.1.3" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@lmdb/lmdb-win32-x64@npm:3.1.4": version: 3.1.4 resolution: "@lmdb/lmdb-win32-x64@npm:3.1.4" @@ -3511,8 +3446,8 @@ __metadata: resolution: "@ngtools/webpack@workspace:packages/ngtools/webpack" dependencies: "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" - "@angular/compiler": "npm:19.0.0-rc.0" - "@angular/compiler-cli": "npm:19.0.0-rc.0" + "@angular/compiler": "npm:19.0.0-rc.1" + "@angular/compiler-cli": "npm:19.0.0-rc.1" typescript: "npm:5.6.3" webpack: "npm:5.96.1" peerDependencies: @@ -4250,13 +4185,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.24.3" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@rollup/rollup-android-arm-eabi@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-android-arm-eabi@npm:4.24.4" @@ -4264,13 +4192,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-android-arm64@npm:4.24.3" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-android-arm64@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-android-arm64@npm:4.24.4" @@ -4278,13 +4199,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-darwin-arm64@npm:4.24.3" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-arm64@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-darwin-arm64@npm:4.24.4" @@ -4292,13 +4206,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-darwin-x64@npm:4.24.3" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-x64@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-darwin-x64@npm:4.24.4" @@ -4306,13 +4213,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.24.3" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-freebsd-arm64@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-freebsd-arm64@npm:4.24.4" @@ -4320,13 +4220,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-freebsd-x64@npm:4.24.3" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-freebsd-x64@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-freebsd-x64@npm:4.24.4" @@ -4334,13 +4227,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.24.3" - conditions: os=linux & cpu=arm & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-arm-gnueabihf@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.24.4" @@ -4348,13 +4234,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.24.3" - conditions: os=linux & cpu=arm & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-arm-musleabihf@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.24.4" @@ -4362,13 +4241,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.24.3" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-gnu@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.24.4" @@ -4376,13 +4248,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.24.3" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-musl@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.24.4" @@ -4390,13 +4255,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.3" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.4" @@ -4404,13 +4262,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.24.3" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-riscv64-gnu@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.24.4" @@ -4418,13 +4269,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.24.3" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-s390x-gnu@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.24.4" @@ -4432,13 +4276,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.24.3" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-gnu@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.24.4" @@ -4446,13 +4283,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.24.3" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-musl@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-linux-x64-musl@npm:4.24.4" @@ -4460,13 +4290,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.24.3" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-win32-arm64-msvc@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.24.4" @@ -4474,13 +4297,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.24.3" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@rollup/rollup-win32-ia32-msvc@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.24.4" @@ -4488,13 +4304,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.24.3" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-win32-x64-msvc@npm:4.24.4": version: 4.24.4 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.24.4" @@ -12693,41 +12502,6 @@ __metadata: languageName: node linkType: hard -"lmdb@npm:3.1.3": - version: 3.1.3 - resolution: "lmdb@npm:3.1.3" - dependencies: - "@lmdb/lmdb-darwin-arm64": "npm:3.1.3" - "@lmdb/lmdb-darwin-x64": "npm:3.1.3" - "@lmdb/lmdb-linux-arm": "npm:3.1.3" - "@lmdb/lmdb-linux-arm64": "npm:3.1.3" - "@lmdb/lmdb-linux-x64": "npm:3.1.3" - "@lmdb/lmdb-win32-x64": "npm:3.1.3" - msgpackr: "npm:^1.10.2" - node-addon-api: "npm:^6.1.0" - node-gyp: "npm:latest" - node-gyp-build-optional-packages: "npm:5.2.2" - ordered-binary: "npm:^1.4.1" - weak-lru-cache: "npm:^1.2.2" - dependenciesMeta: - "@lmdb/lmdb-darwin-arm64": - optional: true - "@lmdb/lmdb-darwin-x64": - optional: true - "@lmdb/lmdb-linux-arm": - optional: true - "@lmdb/lmdb-linux-arm64": - optional: true - "@lmdb/lmdb-linux-x64": - optional: true - "@lmdb/lmdb-win32-x64": - optional: true - bin: - download-lmdb-prebuilds: bin/download-prebuilds.js - checksum: 10c0/8810de473828faee47a579dbc807625c954bc5872882892efe03a5309a61e6d905a6d4a14ad029b895ae4339d08c0a573e6d7c31be48a046c8b86a6f303d11a8 - languageName: node - linkType: hard - "lmdb@npm:3.1.4": version: 3.1.4 resolution: "lmdb@npm:3.1.4" @@ -14233,7 +14007,7 @@ __metadata: languageName: node linkType: hard -"ordered-binary@npm:^1.4.1, ordered-binary@npm:^1.5.2": +"ordered-binary@npm:^1.5.2": version: 1.5.3 resolution: "ordered-binary@npm:1.5.3" checksum: 10c0/2b67c90c79071f54344762fcecac256c3c6fe02a3ce1d349c7cab38a55a6137320b13022d6dd26faac462d887f48a32e04693a3ae30592185f290c793b92de03 @@ -15772,75 +15546,6 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.24.3": - version: 4.24.3 - resolution: "rollup@npm:4.24.3" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.24.3" - "@rollup/rollup-android-arm64": "npm:4.24.3" - "@rollup/rollup-darwin-arm64": "npm:4.24.3" - "@rollup/rollup-darwin-x64": "npm:4.24.3" - "@rollup/rollup-freebsd-arm64": "npm:4.24.3" - "@rollup/rollup-freebsd-x64": "npm:4.24.3" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.24.3" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.24.3" - "@rollup/rollup-linux-arm64-gnu": "npm:4.24.3" - "@rollup/rollup-linux-arm64-musl": "npm:4.24.3" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.24.3" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.24.3" - "@rollup/rollup-linux-s390x-gnu": "npm:4.24.3" - "@rollup/rollup-linux-x64-gnu": "npm:4.24.3" - "@rollup/rollup-linux-x64-musl": "npm:4.24.3" - "@rollup/rollup-win32-arm64-msvc": "npm:4.24.3" - "@rollup/rollup-win32-ia32-msvc": "npm:4.24.3" - "@rollup/rollup-win32-x64-msvc": "npm:4.24.3" - "@types/estree": "npm:1.0.6" - fsevents: "npm:~2.3.2" - dependenciesMeta: - "@rollup/rollup-android-arm-eabi": - optional: true - "@rollup/rollup-android-arm64": - optional: true - "@rollup/rollup-darwin-arm64": - optional: true - "@rollup/rollup-darwin-x64": - optional: true - "@rollup/rollup-freebsd-arm64": - optional: true - "@rollup/rollup-freebsd-x64": - optional: true - "@rollup/rollup-linux-arm-gnueabihf": - optional: true - "@rollup/rollup-linux-arm-musleabihf": - optional: true - "@rollup/rollup-linux-arm64-gnu": - optional: true - "@rollup/rollup-linux-arm64-musl": - optional: true - "@rollup/rollup-linux-powerpc64le-gnu": - optional: true - "@rollup/rollup-linux-riscv64-gnu": - optional: true - "@rollup/rollup-linux-s390x-gnu": - optional: true - "@rollup/rollup-linux-x64-gnu": - optional: true - "@rollup/rollup-linux-x64-musl": - optional: true - "@rollup/rollup-win32-arm64-msvc": - optional: true - "@rollup/rollup-win32-ia32-msvc": - optional: true - "@rollup/rollup-win32-x64-msvc": - optional: true - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: 10c0/32425475db7a0bcb8937f92488ee8e48f7adaff711b5b5c52d86d37114c9f21fe756e21a91312d12d30da146d33d8478a11dfeb6249dbecc54fbfcc78da46005 - languageName: node - linkType: hard - "rollup@npm:4.24.4, rollup@npm:^4.20.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": version: 4.24.4 resolution: "rollup@npm:4.24.4" @@ -16019,20 +15724,6 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.80.5": - version: 1.80.5 - resolution: "sass@npm:1.80.5" - dependencies: - "@parcel/watcher": "npm:^2.4.1" - chokidar: "npm:^4.0.0" - immutable: "npm:^4.0.0" - source-map-js: "npm:>=0.6.2 <2.0.0" - bin: - sass: sass.js - checksum: 10c0/d592e57c037315f4c5976af3d37ce4c7758b1b4e89d064455d6992829ea59888c71b9dbc86f7fc8dca87ac98ebc9cece10e5c8fc5509bf192db81712a34fd579 - languageName: node - linkType: hard - "sass@npm:1.80.6, sass@npm:^1.79.5": version: 1.80.6 resolution: "sass@npm:1.80.6" From ffbe9b9a7bd788b43ca1ee924b514eef1581cc17 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 7 Nov 2024 18:28:26 +0000 Subject: [PATCH 2/3] fix(@angular/ssr): support for HTTP/2 request/response handling This commit introduces support for handling HTTP/2 requests and responses in the `@angular/ssr` package. Closes #28807 --- .../public-api/angular/ssr/node/index.api.md | 8 +- packages/angular/ssr/node/src/app-engine.ts | 11 +- packages/angular/ssr/node/src/request.ts | 30 +++- packages/angular/ssr/node/src/response.ts | 13 +- ...{request_spec.ts => request_http1_spec.ts} | 2 +- .../ssr/node/test/request_http2_spec.ts | 152 ++++++++++++++++++ ...esponse_spec.ts => response_http1_spec.ts} | 2 +- .../ssr/node/test/response_http2_spec.ts | 119 ++++++++++++++ .../e2e/tests/vite/ssr-entry-express.ts | 9 +- .../e2e/tests/vite/ssr-entry-fastify.ts | 9 +- .../legacy-cli/e2e/tests/vite/ssr-entry-h3.ts | 9 +- .../e2e/tests/vite/ssr-entry-hono.ts | 7 - .../legacy-cli/e2e/tests/vite/ssr-with-ssl.ts | 59 +++++++ 13 files changed, 383 insertions(+), 47 deletions(-) rename packages/angular/ssr/node/test/{request_spec.ts => request_http1_spec.ts} (98%) create mode 100644 packages/angular/ssr/node/test/request_http2_spec.ts rename packages/angular/ssr/node/test/{response_spec.ts => response_http1_spec.ts} (98%) create mode 100644 packages/angular/ssr/node/test/response_http2_spec.ts create mode 100644 tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts diff --git a/goldens/public-api/angular/ssr/node/index.api.md b/goldens/public-api/angular/ssr/node/index.api.md index 9b196f0bfd41..6488d0f363dd 100644 --- a/goldens/public-api/angular/ssr/node/index.api.md +++ b/goldens/public-api/angular/ssr/node/index.api.md @@ -5,6 +5,8 @@ ```ts import { ApplicationRef } from '@angular/core'; +import type { Http2ServerRequest } from 'node:http2'; +import type { Http2ServerResponse } from 'node:http2'; import type { IncomingMessage } from 'node:http'; import type { ServerResponse } from 'node:http'; import { StaticProvider } from '@angular/core'; @@ -12,7 +14,7 @@ import { Type } from '@angular/core'; // @public export class AngularNodeAppEngine { - handle(request: IncomingMessage, requestContext?: unknown): Promise; + handle(request: IncomingMessage | Http2ServerRequest, requestContext?: unknown): Promise; } // @public @@ -46,7 +48,7 @@ export interface CommonEngineRenderOptions { export function createNodeRequestHandler(handler: T): T; // @public -export function createWebRequestFromNodeRequest(nodeRequest: IncomingMessage): Request; +export function createWebRequestFromNodeRequest(nodeRequest: IncomingMessage | Http2ServerRequest): Request; // @public export function isMainModule(url: string): boolean; @@ -55,7 +57,7 @@ export function isMainModule(url: string): boolean; export type NodeRequestHandlerFunction = (req: IncomingMessage, res: ServerResponse, next: (err?: unknown) => void) => Promise | void; // @public -export function writeResponseToNodeResponse(source: Response, destination: ServerResponse): Promise; +export function writeResponseToNodeResponse(source: Response, destination: ServerResponse | Http2ServerResponse): Promise; // (No @packageDocumentation comment for this package) diff --git a/packages/angular/ssr/node/src/app-engine.ts b/packages/angular/ssr/node/src/app-engine.ts index 7a4b4ad25050..a59502ee47a8 100644 --- a/packages/angular/ssr/node/src/app-engine.ts +++ b/packages/angular/ssr/node/src/app-engine.ts @@ -8,6 +8,7 @@ import { AngularAppEngine } from '@angular/ssr'; import type { IncomingMessage } from 'node:http'; +import type { Http2ServerRequest } from 'node:http2'; import { createWebRequestFromNodeRequest } from './request'; /** @@ -27,14 +28,20 @@ export class AngularNodeAppEngine { * Handles an incoming HTTP request by serving prerendered content, performing server-side rendering, * or delivering a static file for client-side rendered routes based on the `RenderMode` setting. * - * @param request - The HTTP request to handle. + * This method adapts Node.js's `IncomingMessage` or `Http2ServerRequest` + * to a format compatible with the `AngularAppEngine` and delegates the handling logic to it. + * + * @param request - The incoming HTTP request (`IncomingMessage` or `Http2ServerRequest`). * @param requestContext - Optional context for rendering, such as metadata associated with the request. * @returns A promise that resolves to the resulting HTTP response object, or `null` if no matching Angular route is found. * * @remarks A request to `https://www.example.com/page/index.html` will serve or render the Angular route * corresponding to `https://www.example.com/page`. */ - async handle(request: IncomingMessage, requestContext?: unknown): Promise { + async handle( + request: IncomingMessage | Http2ServerRequest, + requestContext?: unknown, + ): Promise { const webRequest = createWebRequestFromNodeRequest(request); return this.angularAppEngine.handle(webRequest, requestContext); diff --git a/packages/angular/ssr/node/src/request.ts b/packages/angular/ssr/node/src/request.ts index 38433781026c..990a3100df05 100644 --- a/packages/angular/ssr/node/src/request.ts +++ b/packages/angular/ssr/node/src/request.ts @@ -7,15 +7,31 @@ */ import type { IncomingHttpHeaders, IncomingMessage } from 'node:http'; +import type { Http2ServerRequest } from 'node:http2'; /** - * Converts a Node.js `IncomingMessage` into a Web Standard `Request`. + * A set containing all the pseudo-headers defined in the HTTP/2 specification. * - * @param nodeRequest - The Node.js `IncomingMessage` object to convert. + * This set can be used to filter out pseudo-headers from a list of headers, + * as they are not allowed to be set directly using the `Node.js` Undici API or + * the web `Headers` API. + */ +const HTTP2_PSEUDO_HEADERS = new Set([':method', ':scheme', ':authority', ':path', ':status']); + +/** + * Converts a Node.js `IncomingMessage` or `Http2ServerRequest` into a + * Web Standard `Request` object. + * + * This function adapts the Node.js request objects to a format that can + * be used by web platform APIs. + * + * @param nodeRequest - The Node.js request object (`IncomingMessage` or `Http2ServerRequest`) to convert. * @returns A Web Standard `Request` object. * @developerPreview */ -export function createWebRequestFromNodeRequest(nodeRequest: IncomingMessage): Request { +export function createWebRequestFromNodeRequest( + nodeRequest: IncomingMessage | Http2ServerRequest, +): Request { const { headers, method = 'GET' } = nodeRequest; const withBody = method !== 'GET' && method !== 'HEAD'; @@ -37,6 +53,10 @@ function createRequestHeaders(nodeHeaders: IncomingHttpHeaders): Headers { const headers = new Headers(); for (const [name, value] of Object.entries(nodeHeaders)) { + if (HTTP2_PSEUDO_HEADERS.has(name)) { + continue; + } + if (typeof value === 'string') { headers.append(name, value); } else if (Array.isArray(value)) { @@ -52,10 +72,10 @@ function createRequestHeaders(nodeHeaders: IncomingHttpHeaders): Headers { /** * Creates a `URL` object from a Node.js `IncomingMessage`, taking into account the protocol, host, and port. * - * @param nodeRequest - The Node.js `IncomingMessage` object to extract URL information from. + * @param nodeRequest - The Node.js `IncomingMessage` or `Http2ServerRequest` object to extract URL information from. * @returns A `URL` object representing the request URL. */ -function createRequestUrl(nodeRequest: IncomingMessage): URL { +function createRequestUrl(nodeRequest: IncomingMessage | Http2ServerRequest): URL { const { headers, socket, diff --git a/packages/angular/ssr/node/src/response.ts b/packages/angular/ssr/node/src/response.ts index f243be1a7acb..936693c2b168 100644 --- a/packages/angular/ssr/node/src/response.ts +++ b/packages/angular/ssr/node/src/response.ts @@ -7,18 +7,23 @@ */ import type { ServerResponse } from 'node:http'; +import type { Http2ServerRequest, Http2ServerResponse } from 'node:http2'; /** - * Streams a web-standard `Response` into a Node.js `ServerResponse`. + * Streams a web-standard `Response` into a Node.js `ServerResponse` + * or `Http2ServerResponse`. + * + * This function adapts the web `Response` object to write its content + * to a Node.js response object, handling both HTTP/1.1 and HTTP/2. * * @param source - The web-standard `Response` object to stream from. - * @param destination - The Node.js `ServerResponse` object to stream into. + * @param destination - The Node.js response object (`ServerResponse` or `Http2ServerResponse`) to stream into. * @returns A promise that resolves once the streaming operation is complete. * @developerPreview */ export async function writeResponseToNodeResponse( source: Response, - destination: ServerResponse, + destination: ServerResponse | Http2ServerResponse, ): Promise { const { status, headers, body } = source; destination.statusCode = status; @@ -66,7 +71,7 @@ export async function writeResponseToNodeResponse( break; } - destination.write(value); + (destination as ServerResponse).write(value); } } catch { destination.end('Internal server error.'); diff --git a/packages/angular/ssr/node/test/request_spec.ts b/packages/angular/ssr/node/test/request_http1_spec.ts similarity index 98% rename from packages/angular/ssr/node/test/request_spec.ts rename to packages/angular/ssr/node/test/request_http1_spec.ts index 93513bf6cfd7..6559af458954 100644 --- a/packages/angular/ssr/node/test/request_spec.ts +++ b/packages/angular/ssr/node/test/request_http1_spec.ts @@ -10,7 +10,7 @@ import { IncomingMessage, Server, ServerResponse, createServer, request } from ' import { AddressInfo } from 'node:net'; import { createWebRequestFromNodeRequest } from '../src/request'; -describe('createWebRequestFromNodeRequest', () => { +describe('createWebRequestFromNodeRequest (HTTP/1.1)', () => { let server: Server; let port: number; diff --git a/packages/angular/ssr/node/test/request_http2_spec.ts b/packages/angular/ssr/node/test/request_http2_spec.ts new file mode 100644 index 000000000000..61f12eada863 --- /dev/null +++ b/packages/angular/ssr/node/test/request_http2_spec.ts @@ -0,0 +1,152 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +import { + ClientHttp2Session, + Http2Server, + Http2ServerRequest, + Http2ServerResponse, + connect, + createServer, +} from 'node:http2'; +import { AddressInfo } from 'node:net'; +import { createWebRequestFromNodeRequest } from '../src/request'; + +describe('createWebRequestFromNodeRequest (HTTP/2)', () => { + let server: Http2Server; + let port: number; + let client: ClientHttp2Session; + + function extractNodeRequest(makeRequest: () => void): Promise { + const nodeRequest = getNodeRequest(); + makeRequest(); + + return nodeRequest; + } + + async function getNodeRequest(): Promise { + const { req, res } = await new Promise<{ + req: Http2ServerRequest; + res: Http2ServerResponse; + }>((resolve) => { + server.once('request', (req, res) => resolve({ req, res })); + }); + + res.end(); + + return req; + } + + beforeAll((done) => { + server = createServer(); + server.listen(0, () => { + port = (server.address() as AddressInfo).port; + done(); + client = connect(`http://localhost:${port}`); + }); + }); + + afterAll((done) => { + client.close(); + server.close(done); + }); + + describe('GET Handling', () => { + it('should correctly handle a basic GET request', async () => { + const nodeRequest = await extractNodeRequest(() => { + client + .request({ + ':path': '/basic-get', + ':method': 'GET', + }) + .end(); + }); + + const webRequest = createWebRequestFromNodeRequest(nodeRequest); + expect(webRequest.method).toBe('GET'); + expect(webRequest.url).toBe(`http://localhost:${port}/basic-get`); + }); + + it('should correctly handle GET request with query parameters', async () => { + const nodeRequest = await extractNodeRequest(() => { + client + .request({ + ':scheme': 'http', + ':path': '/search?query=hello&page=2', + ':method': 'POST', + }) + .end(); + }); + + const webRequest = createWebRequestFromNodeRequest(nodeRequest); + expect(webRequest.method).toBe('POST'); + expect(webRequest.url).toBe(`http://localhost:${port}/search?query=hello&page=2`); + }); + + it('should correctly handle GET request with custom headers', async () => { + const nodeRequest = await extractNodeRequest(() => { + client + .request({ + ':path': '/with-headers', + ':method': 'GET', + 'X-Custom-Header1': 'value1', + 'X-Custom-Header2': 'value2', + }) + .end(); + }); + + const webRequest = createWebRequestFromNodeRequest(nodeRequest); + expect(webRequest.method).toBe('GET'); + expect(webRequest.url).toBe(`http://localhost:${port}/with-headers`); + expect(webRequest.headers.get('x-custom-header1')).toBe('value1'); + expect(webRequest.headers.get('x-custom-header2')).toBe('value2'); + }); + }); + + describe('POST Handling', () => { + it('should handle POST request with JSON body and correct response', async () => { + const postData = JSON.stringify({ message: 'Hello from POST' }); + const nodeRequest = await extractNodeRequest(() => { + const clientRequest = client.request({ + ':path': '/post-json', + ':method': 'POST', + 'Content-Type': 'application/json', + 'Content-Length': Buffer.byteLength(postData), + }); + clientRequest.write(postData); + clientRequest.end(); + }); + + const webRequest = createWebRequestFromNodeRequest(nodeRequest); + expect(webRequest.method).toBe('POST'); + expect(webRequest.url).toBe(`http://localhost:${port}/post-json`); + expect(webRequest.headers.get('content-type')).toBe('application/json'); + expect(await webRequest.json()).toEqual({ message: 'Hello from POST' }); + }); + + it('should handle POST request with empty text body', async () => { + const postData = ''; + const nodeRequest = await extractNodeRequest(() => { + const clientRequest = client.request({ + ':path': '/post-text', + ':method': 'POST', + 'Content-Type': 'text/plain', + 'Content-Length': Buffer.byteLength(postData), + }); + clientRequest.write(postData); + clientRequest.end(); + }); + + const webRequest = createWebRequestFromNodeRequest(nodeRequest); + expect(webRequest.method).toBe('POST'); + expect(webRequest.url).toBe(`http://localhost:${port}/post-text`); + expect(webRequest.headers.get('content-type')).toBe('text/plain'); + expect(await webRequest.text()).toBe(''); + }); + }); +}); diff --git a/packages/angular/ssr/node/test/response_spec.ts b/packages/angular/ssr/node/test/response_http1_spec.ts similarity index 98% rename from packages/angular/ssr/node/test/response_spec.ts rename to packages/angular/ssr/node/test/response_http1_spec.ts index a2e527dba280..8deae2b7e3b4 100644 --- a/packages/angular/ssr/node/test/response_spec.ts +++ b/packages/angular/ssr/node/test/response_http1_spec.ts @@ -10,7 +10,7 @@ import { IncomingMessage, Server, createServer, request as requestCb } from 'nod import { AddressInfo } from 'node:net'; import { writeResponseToNodeResponse } from '../src/response'; -describe('writeResponseToNodeResponse', () => { +describe('writeResponseToNodeResponse (HTTP/1.1)', () => { let server: Server; function simulateResponse( diff --git a/packages/angular/ssr/node/test/response_http2_spec.ts b/packages/angular/ssr/node/test/response_http2_spec.ts new file mode 100644 index 000000000000..c2de8e977561 --- /dev/null +++ b/packages/angular/ssr/node/test/response_http2_spec.ts @@ -0,0 +1,119 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.dev/license + */ + +import { + Http2Server, + IncomingHttpHeaders, + IncomingHttpStatusHeader, + connect, + createServer, +} from 'node:http2'; +import { AddressInfo } from 'node:net'; +import { writeResponseToNodeResponse } from '../src/response'; + +describe('writeResponseToNodeResponse (HTTP/2)', () => { + let server: Http2Server; + function simulateResponse(res: Response): Promise<{ + body: string | null; + headers: IncomingHttpHeaders & IncomingHttpStatusHeader; + statusCode: number | undefined; + }> { + server.once('request', (req, nodeResponse) => { + void writeResponseToNodeResponse(res, nodeResponse); + }); + + const { port } = server.address() as AddressInfo; + const client = connect(`http://localhost:${port}`); + + return new Promise<{ + body: string | null; + headers: IncomingHttpHeaders & IncomingHttpStatusHeader; + statusCode: number | undefined; + }>((resolve, reject) => { + const req = client.request({ + ':path': '/', + }); + + req.once('response', (headers) => { + let body: string | null = null; + + req + .on('data', (chunk) => { + body ??= ''; + body += chunk; + }) + .on('end', () => resolve({ headers, statusCode: headers[':status'], body })) + .on('error', reject); + }); + }).finally(() => { + client.close(); + }); + } + + beforeAll((done) => { + server = createServer(); + server.listen(0, done); + }); + + afterAll((done) => { + server.close(done); + }); + + it('should write status, headers, and body to Node.js response', async () => { + const { headers, statusCode, body } = await simulateResponse( + new Response('Hello, world!', { + status: 201, + headers: { + 'Content-Type': 'text/plain', + 'X-Custom-Header': 'custom-value', + }, + }), + ); + + expect(statusCode).toBe(201); + expect(headers['content-type']).toBe('text/plain'); + expect(headers['x-custom-header']).toBe('custom-value'); + expect(body).toBe('Hello, world!'); + }); + + it('should handle empty body', async () => { + const { statusCode, body } = await simulateResponse( + new Response(null, { + status: 204, + }), + ); + + expect(statusCode).toBe(204); + expect(body).toBeNull(); + }); + + it('should handle JSON content types', async () => { + const jsonData = JSON.stringify({ message: 'Hello JSON' }); + const { statusCode, body } = await simulateResponse( + new Response(jsonData, { + headers: { 'Content-Type': 'application/json' }, + }), + ); + + expect(statusCode).toBe(200); + expect(body).toBe(jsonData); + }); + + it('should set cookies on the ServerResponse', async () => { + const cookieValue: string[] = [ + 'myCookie=myValue; Path=/; HttpOnly', + 'anotherCookie=anotherValue; Path=/test', + ]; + + const headers = new Headers(); + cookieValue.forEach((v) => headers.append('set-cookie', v)); + const { headers: resHeaders } = await simulateResponse(new Response(null, { headers })); + + expect(resHeaders['set-cookie']).toEqual(cookieValue); + }); +}); diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts index ef222d7e6940..5337ad5e5cc5 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts @@ -3,7 +3,7 @@ import { setTimeout } from 'node:timers/promises'; import { replaceInFile, writeMultipleFiles } from '../../utils/fs'; import { ng, silentNg, waitForAnyProcessOutputToMatch } from '../../utils/process'; import { installWorkspacePackages, uninstallPackage } from '../../utils/packages'; -import { ngServe, updateJsonFile, useSha } from '../../utils/project'; +import { ngServe, useSha } from '../../utils/project'; import { getGlobalVariable } from '../../utils/env'; export default async function () { @@ -18,13 +18,6 @@ export default async function () { await useSha(); await installWorkspacePackages(); - // Update angular.json - await updateJsonFile('angular.json', (workspaceJson) => { - const appArchitect = workspaceJson.projects['test-project'].architect; - const options = appArchitect.build.options; - options.outputMode = 'server'; - }); - await writeMultipleFiles({ // Replace the template of app.component.html as it makes it harder to debug 'src/app/app.component.html': '', diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts index c811287023c6..87c84ad0010f 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts @@ -3,7 +3,7 @@ import { setTimeout } from 'node:timers/promises'; import { replaceInFile, writeMultipleFiles } from '../../utils/fs'; import { ng, silentNg, waitForAnyProcessOutputToMatch } from '../../utils/process'; import { installPackage, installWorkspacePackages, uninstallPackage } from '../../utils/packages'; -import { ngServe, updateJsonFile, useSha } from '../../utils/project'; +import { ngServe, useSha } from '../../utils/project'; import { getGlobalVariable } from '../../utils/env'; export default async function () { @@ -19,13 +19,6 @@ export default async function () { await installWorkspacePackages(); await installPackage('fastify@5'); - // Update angular.json - await updateJsonFile('angular.json', (workspaceJson) => { - const appArchitect = workspaceJson.projects['test-project'].architect; - const options = appArchitect.build.options; - options.outputMode = 'server'; - }); - await writeMultipleFiles({ // Replace the template of app.component.html as it makes it harder to debug 'src/app/app.component.html': '', diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts index 34072abf371d..0027190395f4 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts @@ -3,7 +3,7 @@ import { setTimeout } from 'node:timers/promises'; import { replaceInFile, writeMultipleFiles } from '../../utils/fs'; import { ng, silentNg, waitForAnyProcessOutputToMatch } from '../../utils/process'; import { installPackage, installWorkspacePackages, uninstallPackage } from '../../utils/packages'; -import { ngServe, updateJsonFile, useSha } from '../../utils/project'; +import { ngServe, useSha } from '../../utils/project'; import { getGlobalVariable } from '../../utils/env'; export default async function () { @@ -19,13 +19,6 @@ export default async function () { await installWorkspacePackages(); await installPackage('h3@1'); - // Update angular.json - await updateJsonFile('angular.json', (workspaceJson) => { - const appArchitect = workspaceJson.projects['test-project'].architect; - const options = appArchitect.build.options; - options.outputMode = 'server'; - }); - await writeMultipleFiles({ // Replace the template of app.component.html as it makes it harder to debug 'src/app/app.component.html': '', diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts b/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts index 7ddc04b90492..353a6cf5b855 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts @@ -19,13 +19,6 @@ export default async function () { await installWorkspacePackages(); await installPackage('hono@4'); - // Update angular.json - await updateJsonFile('angular.json', (workspaceJson) => { - const appArchitect = workspaceJson.projects['test-project'].architect; - const options = appArchitect.build.options; - options.outputMode = 'server'; - }); - await writeMultipleFiles({ // Replace the template of app.component.html as it makes it harder to debug 'src/app/app.component.html': '', diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts b/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts new file mode 100644 index 000000000000..0708153d478e --- /dev/null +++ b/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts @@ -0,0 +1,59 @@ +import assert from 'node:assert'; +import { writeMultipleFiles } from '../../utils/fs'; +import { ng, silentNg } from '../../utils/process'; +import { installWorkspacePackages, uninstallPackage } from '../../utils/packages'; +import { ngServe, useSha } from '../../utils/project'; +import { getGlobalVariable } from '../../utils/env'; + +export default async function () { + assert( + getGlobalVariable('argv')['esbuild'], + 'This test should not be called in the Webpack suite.', + ); + + // Forcibly remove in case another test doesn't clean itself up. + await uninstallPackage('@angular/ssr'); + await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await useSha(); + await installWorkspacePackages(); + + await writeMultipleFiles({ + // Replace the template of app.component.html as it makes it harder to debug + 'src/app/app.component.html': '', + 'src/app/app.routes.ts': ` + import { Routes } from '@angular/router'; + import { HomeComponent } from './home/home.component'; + + export const routes: Routes = [ + { path: 'home', component: HomeComponent } + ]; + `, + 'src/app/app.routes.server.ts': ` + import { RenderMode, ServerRoute } from '@angular/ssr'; + + export const serverRoutes: ServerRoute[] = [ + { path: '**', renderMode: RenderMode.Server } + ]; + `, + }); + + await silentNg('generate', 'component', 'home'); + + const port = await ngServe('--ssl'); + + // Verify the server is running and the API response is correct. + await validateResponse('/main.js', /bootstrapApplication/); + await validateResponse('/home', /home works/); + + async function validateResponse(pathname: string, match: RegExp): Promise { + try { + process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; + const response = await fetch(new URL(pathname, `https://localhost:${port}`)); + const text = await response.text(); + assert.match(text, match); + assert.equal(response.status, 200); + } finally { + process.env.NODE_TLS_REJECT_UNAUTHORIZED = '1'; + } + } +} From b0965a9a4a7b39a52787f2b4624001c44b076020 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 7 Nov 2024 19:41:05 +0000 Subject: [PATCH 3/3] build: update `rollup-license-plugin` to `3.0.1` There is no need for the local patch as the issue was fixed upstream --- ...-license-plugin-npm-3.0.0-038e5f6edc.patch | 13 ------------ package.json | 2 +- yarn.lock | 21 +++++-------------- 3 files changed, 6 insertions(+), 30 deletions(-) delete mode 100644 .yarn/patches/rollup-license-plugin-npm-3.0.0-038e5f6edc.patch diff --git a/.yarn/patches/rollup-license-plugin-npm-3.0.0-038e5f6edc.patch b/.yarn/patches/rollup-license-plugin-npm-3.0.0-038e5f6edc.patch deleted file mode 100644 index e6e00dd59bfa..000000000000 --- a/.yarn/patches/rollup-license-plugin-npm-3.0.0-038e5f6edc.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/dist/index.js b/dist/index.js -index 9baea0c8023c03d19b1494f818e1e11578f05b32..8f1a7a6050980d88e050423e63ef041195011fcc 100644 ---- a/dist/index.js -+++ b/dist/index.js -@@ -101,7 +101,7 @@ function createRollupLicensePlugin(pluginOptions = {}, pluginName = "rollup-lice - Object.entries(chunk.modules).filter( - ([path, module]) => Boolean(path.match(/node_modules/)) && module.renderedLength > 0 - ).map( -- ([path]) => path.startsWith("\0") ? path.replace(/^\0/, "") : path -+ ([path]) => (path.startsWith("\0") ? path.replace(/^\0/, "") : path).replace(/\\/g, '/') - ).map((path) => [path, path.split("node_modules").pop()]).map(([path, filePath]) => { - const segments = filePath.replace(/^\//, "").split("/"); - const packageName = segments[0].startsWith("@") ? `${segments[0]}/${segments[1]}` : segments[0]; diff --git a/package.json b/package.json index 4937e4b5ea4c..45606f31b2ab 100644 --- a/package.json +++ b/package.json @@ -186,7 +186,7 @@ "quicktype-core": "23.0.170", "resolve-url-loader": "5.0.0", "rollup": "4.24.4", - "rollup-license-plugin": "patch:rollup-license-plugin@npm%3A3.0.0#~/.yarn/patches/rollup-license-plugin-npm-3.0.0-038e5f6edc.patch", + "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", "rxjs": "7.8.1", "sass": "1.80.6", diff --git a/yarn.lock b/yarn.lock index f8ca06c57981..8414b94df3da 100644 --- a/yarn.lock +++ b/yarn.lock @@ -763,7 +763,7 @@ __metadata: quicktype-core: "npm:23.0.170" resolve-url-loader: "npm:5.0.0" rollup: "npm:4.24.4" - rollup-license-plugin: "patch:rollup-license-plugin@npm%3A3.0.0#~/.yarn/patches/rollup-license-plugin-npm-3.0.0-038e5f6edc.patch" + rollup-license-plugin: "npm:~3.0.1" rollup-plugin-sourcemaps: "npm:^0.6.0" rxjs: "npm:7.8.1" sass: "npm:1.80.6" @@ -15508,25 +15508,14 @@ __metadata: languageName: node linkType: hard -"rollup-license-plugin@npm:3.0.0": - version: 3.0.0 - resolution: "rollup-license-plugin@npm:3.0.0" - dependencies: - get-npm-tarball-url: "npm:^2.1.0" - node-fetch: "npm:^3.3.2" - spdx-expression-validate: "npm:^2.0.0" - checksum: 10c0/b7cd7d336acbd8530ad0583e057c72f9b05e9f274f9cec1f36ad936ea2043503c32bf26b68b496e616447775d747e8d31957cc503c9c35ef7b43630e2e457078 - languageName: node - linkType: hard - -"rollup-license-plugin@patch:rollup-license-plugin@npm%3A3.0.0#~/.yarn/patches/rollup-license-plugin-npm-3.0.0-038e5f6edc.patch": - version: 3.0.0 - resolution: "rollup-license-plugin@patch:rollup-license-plugin@npm%3A3.0.0#~/.yarn/patches/rollup-license-plugin-npm-3.0.0-038e5f6edc.patch::version=3.0.0&hash=be9ba3" +"rollup-license-plugin@npm:~3.0.1": + version: 3.0.1 + resolution: "rollup-license-plugin@npm:3.0.1" dependencies: get-npm-tarball-url: "npm:^2.1.0" node-fetch: "npm:^3.3.2" spdx-expression-validate: "npm:^2.0.0" - checksum: 10c0/d4f340c704cce97ba36251f43859945c15e5865edacdca71da2470067041ea66bda792a5da63ea02e5d72713731e1a42a898b517fd3ffc59f6887fc1491516b0 + checksum: 10c0/df5858507bd77370eb27edb91286094fb694d470c251251b44c81cd9d574f69ad629db7fbc36acbdc08069001bf27e298da105935059b0dff0577ee726a5f651 languageName: node linkType: hard