Nathan Rajlich
75346d45cc
[remix] Add SPA mode e2e tests ( #11257 )
...
Adds a couple e2e tests for [Remix SPA](https://remix.run/docs/en/main/future/spa-mode ) mode (both with and without using the Vercel Preset).
2024-03-15 23:47:17 +00:00
Vercel Release Bot
8619992def
Version Packages ( #11275 )
...
This PR was opened by the [Changesets
release](https://github.com/changesets/action ) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @vercel/build-utils@7.9.1
### Patch Changes
- Export `getSupportedNodeVersion`
([#11277 ](https://github.com/vercel/vercel/pull/11277 ))
## vercel@33.6.1
### Patch Changes
- Don't send `projectSettings.nodeVersion` for unsupported versions
([#11277 ](https://github.com/vercel/vercel/pull/11277 ))
- Updated dependencies
\[[`4bca0c6d0`](4bca0c6d0b ),
[`a67ad4b5a`](a67ad4b5a1 ),
[`11218a179`](11218a1798 ),
[`64b97bf4b`](64b97bf4b5 )]:
- @vercel/next@4.1.6
- @vercel/remix-builder@2.1.4
- @vercel/build-utils@7.9.1
- @vercel/static-build@2.4.4
- @vercel/node@3.0.24
## @vercel/client@13.1.7
### Patch Changes
- Updated dependencies
\[[`11218a179`](11218a1798 )]:
- @vercel/build-utils@7.9.1
## @vercel/gatsby-plugin-vercel-builder@2.0.22
### Patch Changes
- Updated dependencies
\[[`11218a179`](11218a1798 )]:
- @vercel/build-utils@7.9.1
## @vercel/next@4.1.6
### Patch Changes
- Ensure that static PPR pages have static streaming lambda paths.
([#11259 ](https://github.com/vercel/vercel/pull/11259 ))
## @vercel/node@3.0.24
### Patch Changes
- Updated dependencies
\[[`11218a179`](11218a1798 )]:
- @vercel/build-utils@7.9.1
## @vercel/remix-builder@2.1.4
### Patch Changes
- Disable `prepareCache()` npm install for Remix + Vite
([#11281 ](https://github.com/vercel/vercel/pull/11281 ))
## @vercel/static-build@2.4.4
### Patch Changes
- [framework-fixtures]: Bump the core group in
/packages/static-build/test/fixtures/angular-v17 with 15 updates
([#11274 ](https://github.com/vercel/vercel/pull/11274 ))
- Updated dependencies \[]:
- @vercel/gatsby-plugin-vercel-builder@2.0.22
## @vercel-internals/types@1.0.27
### Patch Changes
- Updated dependencies
\[[`11218a179`](11218a1798 )]:
- @vercel/build-utils@7.9.1
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-03-15 10:21:07 -05:00
Nathan Rajlich
a67ad4b5a1
[remix] Disable prepareCache() npm install for Remix + Vite ( #11281 )
...
In legacy Remix apps, we were running `npm install` once again before globbing the `node_modules` dir due to the injecting of the forked Remix compiler which would cause a cache miss without that happening.
For Vite, we are no longer mucking about `node_modules` at build-time, so there is no need to run `npm install` in the `prepareCache()` function.
There is also no "cacheDirectory" setting so the globbing of the legacy cache directory is also moved into the legacy-only logic.
**tl;dr** For Remix + Vite apps, the only thing that needs to be cached is `node_modules`.
2024-03-15 03:08:16 +00:00
Erika Rowland
11218a1798
[cli] Don't send projectSettings.nodeVersion for unsupported versions ( #11277 )
...
Previously, we used `semver` which correctly identified the nodeVersion used in `package.json`, but failed in two cases:
1. If the specified `engines` range started too low, it wouldn't correctly identify a later version compatible with Vercel. (`">10"` was detecting as Node `"10.x"` not `"20.x"`)
2. If the specified `engines` version was fixed too low to be compatible with Vercel, we sent it, and then Vercel predictably errored. (`"10"` was detecting as Node `"10.x"` which would lead to an error in the build process)
Now, case 1 should properly use the latest node version. And case 2 will not send a node version override to the API and will print a warning to the user on the CLI, but the deployment will still proceed with the version specified for the project in the web interface.
We chose to keep the error message shown to the user consistent with what shows in the logs for the build container, that is:
> WARN! Node.js Version "10.x" is discontinued and must be upgraded. Please set "engines": { "node": "20.x" } in your `package.json` file to use Node.js 20.
2024-03-14 21:34:51 +00:00
dependabot[bot]
64b97bf4b5
[framework-fixtures]: Bump the core group in /packages/static-build/test/fixtures/angular-v17 with 15 updates ( #11274 )
...
Bumps the core group in /packages/static-build/test/fixtures/angular-v17 with 15 updates:
| Package | From | To |
| --- | --- | --- |
| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations ) | `17.2.1` | `17.3.0` |
| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common ) | `17.2.1` | `17.3.0` |
| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler ) | `17.2.1` | `17.3.0` |
| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core ) | `17.2.1` | `17.3.0` |
| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms ) | `17.2.1` | `17.3.0` |
| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser ) | `17.2.1` | `17.3.0` |
| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic ) | `17.2.1` | `17.3.0` |
| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router ) | `17.2.1` | `17.3.0` |
| [@angular-devkit/build-angular](https://github.com/angular/angular-cli ) | `17.2.0` | `17.3.0` |
| [@angular/cli](https://github.com/angular/angular-cli ) | `17.2.0` | `17.3.0` |
| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli ) | `17.2.1` | `17.3.0` |
| [@angular-devkit/architect](https://github.com/angular/angular-cli ) | `0.1702.0` | `0.1703.0` |
| [@angular-devkit/build-webpack](https://github.com/angular/angular-cli ) | `0.1702.0` | `0.1703.0` |
| [@angular-devkit/core](https://github.com/angular/angular-cli ) | `17.2.0` | `17.3.0` |
| [@angular-devkit/schematics](https://github.com/angular/angular-cli ) | `17.2.0` | `17.3.0` |
Updates `@angular/animations` from 17.2.1 to 17.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases "><code>@angular/animations</code>'s releases</a>.</em></p>
<blockquote>
<h2>v17.3.0</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.3.0 (2024-03-13)</h1>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1a6beae8a2 "><img src="https://img.shields.io/badge/1a6beae8a2-feat-blue " alt="feat - 1a6beae8a2" /></a></td>
<td>Enable template pipeline by default. (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54571 ">#54571</a>)</td>
</tr>
<tr>
<td><a href="f386a04c9d "><img src="https://img.shields.io/badge/f386a04c9d-fix-green " alt="fix - f386a04c9d" /></a></td>
<td>handle two-way bindings to signal-based template variables in instruction generation (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54714 ">#54714</a>)</td>
</tr>
<tr>
<td><a href="1f129f114e "><img src="https://img.shields.io/badge/1f129f114e-fix-green " alt="fix - 1f129f114e" /></a></td>
<td>not catching for loop empty tracking expressions (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54772 ">#54772</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="12dc4d074e "><img src="https://img.shields.io/badge/12dc4d074e-fix-green " alt="fix - 12dc4d074e" /></a></td>
<td>account for as expression in docs extraction (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54414 ">#54414</a>)</td>
</tr>
<tr>
<td><a href="da7fbb40f0 "><img src="https://img.shields.io/badge/da7fbb40f0-fix-green " alt="fix - da7fbb40f0" /></a></td>
<td>detect when the linker is working in unpublished angular and widen supported versions (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54439 ">#54439</a>)</td>
</tr>
<tr>
<td><a href="492e03f699 "><img src="https://img.shields.io/badge/492e03f699-fix-green " alt="fix - 492e03f699" /></a></td>
<td>flag two-way bindings to non-signal values in templates (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54714 ">#54714</a>)</td>
</tr>
<tr>
<td><a href="5afa4f0ec1 "><img src="https://img.shields.io/badge/5afa4f0ec1-fix-green " alt="fix - 5afa4f0ec1" /></a></td>
<td>support <code>ModuleWithProviders</code> literal detection with <code>typeof</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54650 ">#54650</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="331b16efd2 "><img src="https://img.shields.io/badge/331b16efd2-feat-blue " alt="feat - 331b16efd2" /></a></td>
<td>add API to inject attributes on the host node (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54604 ">#54604</a>)</td>
</tr>
<tr>
<td><a href="fb540e169a "><img src="https://img.shields.io/badge/fb540e169a-feat-blue " alt="feat - fb540e169a" /></a></td>
<td>add migration for invalid two-way bindings (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54630 ">#54630</a>)</td>
</tr>
<tr>
<td><a href="c687b8f453 "><img src="https://img.shields.io/badge/c687b8f453-feat-blue " alt="feat - c687b8f453" /></a></td>
<td>expose new <code>output()</code> API (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="c809069f21 "><img src="https://img.shields.io/badge/c809069f21-feat-blue " alt="feat - c809069f21" /></a></td>
<td>introduce <code>outputFromObservable()</code> interop function (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="aff65fd1f4 "><img src="https://img.shields.io/badge/aff65fd1f4-feat-blue " alt="feat - aff65fd1f4" /></a></td>
<td>introduce <code>outputToObservable</code> interop helper (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="974958913c "><img src="https://img.shields.io/badge/974958913c-feat-blue " alt="feat - 974958913c" /></a></td>
<td>support TypeScript 5.4 (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54414 ">#54414</a>)</td>
</tr>
<tr>
<td><a href="39a50f9a8d "><img src="https://img.shields.io/badge/39a50f9a8d-fix-green " alt="fix - 39a50f9a8d" /></a></td>
<td>ensure all initializer functions run in an injection context (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54761 ">#54761</a>)</td>
</tr>
<tr>
<td><a href="243ccce624 "><img src="https://img.shields.io/badge/243ccce624-fix-green " alt="fix - 243ccce624" /></a></td>
<td>exclude class attribute intended for projection matching from directive matching (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54800 ">#54800</a>)</td>
</tr>
<tr>
<td><a href="2909e9817d "><img src="https://img.shields.io/badge/2909e9817d-fix-green " alt="fix - 2909e9817d" /></a></td>
<td>prevent infinite loops in clobbered elements check (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54425 ">#54425</a>)</td>
</tr>
<tr>
<td><a href="7243c704cf "><img src="https://img.shields.io/badge/7243c704cf-fix-green " alt="fix - 7243c704cf" /></a></td>
<td>return a readonly signal on <code>asReadonly</code>. (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54706 ">#54706</a>)</td>
</tr>
<tr>
<td><a href="bb35414a38 "><img src="https://img.shields.io/badge/bb35414a38-perf-orange " alt="perf - bb35414a38" /></a></td>
<td>speed up retrieval of <code>DestroyRef</code> in <code>EventEmitter</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54748 ">#54748</a>)</td>
</tr>
</tbody>
</table>
<h3>http</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="8d37ed035c "><img src="https://img.shields.io/badge/8d37ed035c-fix-green " alt="fix - 8d37ed035c" /></a></td>
<td>exclude caching for authenticated HTTP requests (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54746 ">#54746</a>)</td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="c1c7384e02 "><img src="https://img.shields.io/badge/c1c7384e02-feat-blue " alt="feat - c1c7384e02" /></a></td>
<td>Add reusable types for router guards (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54580 ">#54580</a>)</td>
</tr>
<tr>
<td><a href="7225485311 "><img src="https://img.shields.io/badge/7225485311-fix-green " alt="fix - 7225485311" /></a></td>
<td>Navigations triggered by cancellation events should cancel previous navigation (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54710 ">#54710</a>)</td>
</tr>
</tbody>
</table>
<h2>v17.3.0-rc.0</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.3.0-rc.0 (2024-03-06)</h1>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="5afa4f0ec1 "><img src="https://img.shields.io/badge/5afa4f0ec1-fix-green " alt="fix - 5afa4f0ec1" /></a></td>
<td>support <code>ModuleWithProviders</code> literal detection with <code>typeof</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="ae7dbe42de "><img src="https://img.shields.io/badge/ae7dbe42de-fix-green " alt="fix - ae7dbe42de" /></a></td>
<td>unwrap expressions with type parameters in query read property (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54647 ">#54647</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<p>| Commit | Description |</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md "><code>@angular/animations</code>'s changelog</a>.</em></p>
<blockquote>
<h1>17.3.0 (2024-03-13)</h1>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1a6beae8a2 ">1a6beae8a2</a></td>
<td>feat</td>
<td>Enable template pipeline by default. (<a href="https://redirect.github.com/angular/angular/pull/54571 ">#54571</a>)</td>
</tr>
<tr>
<td><a href="f386a04c9d ">f386a04c9d</a></td>
<td>fix</td>
<td>handle two-way bindings to signal-based template variables in instruction generation (<a href="https://redirect.github.com/angular/angular/pull/54714 ">#54714</a>)</td>
</tr>
<tr>
<td><a href="1f129f114e ">1f129f114e</a></td>
<td>fix</td>
<td>not catching for loop empty tracking expressions (<a href="https://redirect.github.com/angular/angular/pull/54772 ">#54772</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="12dc4d074e ">12dc4d074e</a></td>
<td>fix</td>
<td>account for as expression in docs extraction (<a href="https://redirect.github.com/angular/angular/pull/54414 ">#54414</a>)</td>
</tr>
<tr>
<td><a href="da7fbb40f0 ">da7fbb40f0</a></td>
<td>fix</td>
<td>detect when the linker is working in unpublished angular and widen supported versions (<a href="https://redirect.github.com/angular/angular/pull/54439 ">#54439</a>)</td>
</tr>
<tr>
<td><a href="492e03f699 ">492e03f699</a></td>
<td>fix</td>
<td>flag two-way bindings to non-signal values in templates (<a href="https://redirect.github.com/angular/angular/pull/54714 ">#54714</a>)</td>
</tr>
<tr>
<td><a href="5afa4f0ec1 ">5afa4f0ec1</a></td>
<td>fix</td>
<td>support <code>ModuleWithProviders</code> literal detection with <code>typeof</code> (<a href="https://redirect.github.com/angular/angular/pull/54650 ">#54650</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="331b16efd2 ">331b16efd2</a></td>
<td>feat</td>
<td>add API to inject attributes on the host node (<a href="https://redirect.github.com/angular/angular/pull/54604 ">#54604</a>)</td>
</tr>
<tr>
<td><a href="fb540e169a ">fb540e169a</a></td>
<td>feat</td>
<td>add migration for invalid two-way bindings (<a href="https://redirect.github.com/angular/angular/pull/54630 ">#54630</a>)</td>
</tr>
<tr>
<td><a href="c687b8f453 ">c687b8f453</a></td>
<td>feat</td>
<td>expose new <code>output()</code> API (<a href="https://redirect.github.com/angular/angular/pull/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="c809069f21 ">c809069f21</a></td>
<td>feat</td>
<td>introduce <code>outputFromObservable()</code> interop function (<a href="https://redirect.github.com/angular/angular/pull/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="aff65fd1f4 ">aff65fd1f4</a></td>
<td>feat</td>
<td>introduce <code>outputToObservable</code> interop helper (<a href="https://redirect.github.com/angular/angular/pull/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="974958913c ">974958913c</a></td>
<td>feat</td>
<td>support TypeScript 5.4 (<a href="https://redirect.github.com/angular/angular/pull/54414 ">#54414</a>)</td>
</tr>
<tr>
<td><a href="39a50f9a8d ">39a50f9a8d</a></td>
<td>fix</td>
<td>ensure all initializer functions run in an injection context (<a href="https://redirect.github.com/angular/angular/pull/54761 ">#54761</a>)</td>
</tr>
<tr>
<td><a href="243ccce624 ">243ccce624</a></td>
<td>fix</td>
<td>exclude class attribute intended for projection matching from directive matching (<a href="https://redirect.github.com/angular/angular/pull/54800 ">#54800</a>)</td>
</tr>
<tr>
<td><a href="2909e9817d ">2909e9817d</a></td>
<td>fix</td>
<td>prevent infinite loops in clobbered elements check (<a href="https://redirect.github.com/angular/angular/pull/54425 ">#54425</a>)</td>
</tr>
<tr>
<td><a href="7243c704cf ">7243c704cf</a></td>
<td>fix</td>
<td>return a readonly signal on <code>asReadonly</code>. (<a href="https://redirect.github.com/angular/angular/pull/54706 ">#54706</a>)</td>
</tr>
<tr>
<td><a href="bb35414a38 ">bb35414a38</a></td>
<td>perf</td>
<td>speed up retrieval of <code>DestroyRef</code> in <code>EventEmitter</code> (<a href="https://redirect.github.com/angular/angular/pull/54748 ">#54748</a>)</td>
</tr>
</tbody>
</table>
<h3>http</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="8d37ed035c ">8d37ed035c</a></td>
<td>fix</td>
<td>exclude caching for authenticated HTTP requests (<a href="https://redirect.github.com/angular/angular/pull/54746 ">#54746</a>)</td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="c1c7384e02 ">c1c7384e02</a></td>
<td>feat</td>
<td>Add reusable types for router guards (<a href="https://redirect.github.com/angular/angular/pull/54580 ">#54580</a>)</td>
</tr>
<tr>
<td><a href="7225485311 ">7225485311</a></td>
<td>fix</td>
<td>Navigations triggered by cancellation events should cancel previous navigation (<a href="https://redirect.github.com/angular/angular/pull/54710 ">#54710</a>)</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.2.4 (2024-03-06)</h1>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="917b9bdd2e ">917b9bdd2e</a></td>
<td>fix</td>
<td>unwrap expressions with type parameters in query read property (<a href="https://redirect.github.com/angular/angular/pull/54647 ">#54647</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="586cc24a10 ">586cc24a10</a></td>
<td>fix</td>
<td>apply TestBed provider overrides to <code>@defer</code> dependencies (<a href="https://redirect.github.com/angular/angular/pull/54667 ">#54667</a>)</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/angular/angular/commits/17.3.0/packages/animations ">compare view</a></li>
</ul>
</details>
<br />
Updates `@angular/common` from 17.2.1 to 17.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases "><code>@angular/common</code>'s releases</a>.</em></p>
<blockquote>
<h2>v17.3.0</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.3.0 (2024-03-13)</h1>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1a6beae8a2 "><img src="https://img.shields.io/badge/1a6beae8a2-feat-blue " alt="feat - 1a6beae8a2" /></a></td>
<td>Enable template pipeline by default. (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54571 ">#54571</a>)</td>
</tr>
<tr>
<td><a href="f386a04c9d "><img src="https://img.shields.io/badge/f386a04c9d-fix-green " alt="fix - f386a04c9d" /></a></td>
<td>handle two-way bindings to signal-based template variables in instruction generation (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54714 ">#54714</a>)</td>
</tr>
<tr>
<td><a href="1f129f114e "><img src="https://img.shields.io/badge/1f129f114e-fix-green " alt="fix - 1f129f114e" /></a></td>
<td>not catching for loop empty tracking expressions (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54772 ">#54772</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="12dc4d074e "><img src="https://img.shields.io/badge/12dc4d074e-fix-green " alt="fix - 12dc4d074e" /></a></td>
<td>account for as expression in docs extraction (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54414 ">#54414</a>)</td>
</tr>
<tr>
<td><a href="da7fbb40f0 "><img src="https://img.shields.io/badge/da7fbb40f0-fix-green " alt="fix - da7fbb40f0" /></a></td>
<td>detect when the linker is working in unpublished angular and widen supported versions (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54439 ">#54439</a>)</td>
</tr>
<tr>
<td><a href="492e03f699 "><img src="https://img.shields.io/badge/492e03f699-fix-green " alt="fix - 492e03f699" /></a></td>
<td>flag two-way bindings to non-signal values in templates (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54714 ">#54714</a>)</td>
</tr>
<tr>
<td><a href="5afa4f0ec1 "><img src="https://img.shields.io/badge/5afa4f0ec1-fix-green " alt="fix - 5afa4f0ec1" /></a></td>
<td>support <code>ModuleWithProviders</code> literal detection with <code>typeof</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54650 ">#54650</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="331b16efd2 "><img src="https://img.shields.io/badge/331b16efd2-feat-blue " alt="feat - 331b16efd2" /></a></td>
<td>add API to inject attributes on the host node (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54604 ">#54604</a>)</td>
</tr>
<tr>
<td><a href="fb540e169a "><img src="https://img.shields.io/badge/fb540e169a-feat-blue " alt="feat - fb540e169a" /></a></td>
<td>add migration for invalid two-way bindings (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54630 ">#54630</a>)</td>
</tr>
<tr>
<td><a href="c687b8f453 "><img src="https://img.shields.io/badge/c687b8f453-feat-blue " alt="feat - c687b8f453" /></a></td>
<td>expose new <code>output()</code> API (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="c809069f21 "><img src="https://img.shields.io/badge/c809069f21-feat-blue " alt="feat - c809069f21" /></a></td>
<td>introduce <code>outputFromObservable()</code> interop function (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="aff65fd1f4 "><img src="https://img.shields.io/badge/aff65fd1f4-feat-blue " alt="feat - aff65fd1f4" /></a></td>
<td>introduce <code>outputToObservable</code> interop helper (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="974958913c "><img src="https://img.shields.io/badge/974958913c-feat-blue " alt="feat - 974958913c" /></a></td>
<td>support TypeScript 5.4 (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54414 ">#54414</a>)</td>
</tr>
<tr>
<td><a href="39a50f9a8d "><img src="https://img.shields.io/badge/39a50f9a8d-fix-green " alt="fix - 39a50f9a8d" /></a></td>
<td>ensure all initializer functions run in an injection context (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54761 ">#54761</a>)</td>
</tr>
<tr>
<td><a href="243ccce624 "><img src="https://img.shields.io/badge/243ccce624-fix-green " alt="fix - 243ccce624" /></a></td>
<td>exclude class attribute intended for projection matching from directive matching (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54800 ">#54800</a>)</td>
</tr>
<tr>
<td><a href="2909e9817d "><img src="https://img.shields.io/badge/2909e9817d-fix-green " alt="fix - 2909e9817d" /></a></td>
<td>prevent infinite loops in clobbered elements check (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54425 ">#54425</a>)</td>
</tr>
<tr>
<td><a href="7243c704cf "><img src="https://img.shields.io/badge/7243c704cf-fix-green " alt="fix - 7243c704cf" /></a></td>
<td>return a readonly signal on <code>asReadonly</code>. (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54706 ">#54706</a>)</td>
</tr>
<tr>
<td><a href="bb35414a38 "><img src="https://img.shields.io/badge/bb35414a38-perf-orange " alt="perf - bb35414a38" /></a></td>
<td>speed up retrieval of <code>DestroyRef</code> in <code>EventEmitter</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54748 ">#54748</a>)</td>
</tr>
</tbody>
</table>
<h3>http</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="8d37ed035c "><img src="https://img.shields.io/badge/8d37ed035c-fix-green " alt="fix - 8d37ed035c" /></a></td>
<td>exclude caching for authenticated HTTP requests (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54746 ">#54746</a>)</td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="c1c7384e02 "><img src="https://img.shields.io/badge/c1c7384e02-feat-blue " alt="feat - c1c7384e02" /></a></td>
<td>Add reusable types for router guards (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54580 ">#54580</a>)</td>
</tr>
<tr>
<td><a href="7225485311 "><img src="https://img.shields.io/badge/7225485311-fix-green " alt="fix - 7225485311" /></a></td>
<td>Navigations triggered by cancellation events should cancel previous navigation (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54710 ">#54710</a>)</td>
</tr>
</tbody>
</table>
<h2>v17.3.0-rc.0</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.3.0-rc.0 (2024-03-06)</h1>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="5afa4f0ec1 "><img src="https://img.shields.io/badge/5afa4f0ec1-fix-green " alt="fix - 5afa4f0ec1" /></a></td>
<td>support <code>ModuleWithProviders</code> literal detection with <code>typeof</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="ae7dbe42de "><img src="https://img.shields.io/badge/ae7dbe42de-fix-green " alt="fix - ae7dbe42de" /></a></td>
<td>unwrap expressions with type parameters in query read property (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54647 ">#54647</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<p>| Commit | Description |</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md "><code>@angular/common</code>'s changelog</a>.</em></p>
<blockquote>
<h1>17.3.0 (2024-03-13)</h1>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1a6beae8a2 ">1a6beae8a2</a></td>
<td>feat</td>
<td>Enable template pipeline by default. (<a href="https://redirect.github.com/angular/angular/pull/54571 ">#54571</a>)</td>
</tr>
<tr>
<td><a href="f386a04c9d ">f386a04c9d</a></td>
<td>fix</td>
<td>handle two-way bindings to signal-based template variables in instruction generation (<a href="https://redirect.github.com/angular/angular/pull/54714 ">#54714</a>)</td>
</tr>
<tr>
<td><a href="1f129f114e ">1f129f114e</a></td>
<td>fix</td>
<td>not catching for loop empty tracking expressions (<a href="https://redirect.github.com/angular/angular/pull/54772 ">#54772</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="12dc4d074e ">12dc4d074e</a></td>
<td>fix</td>
<td>account for as expression in docs extraction (<a href="https://redirect.github.com/angular/angular/pull/54414 ">#54414</a>)</td>
</tr>
<tr>
<td><a href="da7fbb40f0 ">da7fbb40f0</a></td>
<td>fix</td>
<td>detect when the linker is working in unpublished angular and widen supported versions (<a href="https://redirect.github.com/angular/angular/pull/54439 ">#54439</a>)</td>
</tr>
<tr>
<td><a href="492e03f699 ">492e03f699</a></td>
<td>fix</td>
<td>flag two-way bindings to non-signal values in templates (<a href="https://redirect.github.com/angular/angular/pull/54714 ">#54714</a>)</td>
</tr>
<tr>
<td><a href="5afa4f0ec1 ">5afa4f0ec1</a></td>
<td>fix</td>
<td>support <code>ModuleWithProviders</code> literal detection with <code>typeof</code> (<a href="https://redirect.github.com/angular/angular/pull/54650 ">#54650</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="331b16efd2 ">331b16efd2</a></td>
<td>feat</td>
<td>add API to inject attributes on the host node (<a href="https://redirect.github.com/angular/angular/pull/54604 ">#54604</a>)</td>
</tr>
<tr>
<td><a href="fb540e169a ">fb540e169a</a></td>
<td>feat</td>
<td>add migration for invalid two-way bindings (<a href="https://redirect.github.com/angular/angular/pull/54630 ">#54630</a>)</td>
</tr>
<tr>
<td><a href="c687b8f453 ">c687b8f453</a></td>
<td>feat</td>
<td>expose new <code>output()</code> API (<a href="https://redirect.github.com/angular/angular/pull/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="c809069f21 ">c809069f21</a></td>
<td>feat</td>
<td>introduce <code>outputFromObservable()</code> interop function (<a href="https://redirect.github.com/angular/angular/pull/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="aff65fd1f4 ">aff65fd1f4</a></td>
<td>feat</td>
<td>introduce <code>outputToObservable</code> interop helper (<a href="https://redirect.github.com/angular/angular/pull/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="974958913c ">974958913c</a></td>
<td>feat</td>
<td>support TypeScript 5.4 (<a href="https://redirect.github.com/angular/angular/pull/54414 ">#54414</a>)</td>
</tr>
<tr>
<td><a href="39a50f9a8d ">39a50f9a8d</a></td>
<td>fix</td>
<td>ensure all initializer functions run in an injection context (<a href="https://redirect.github.com/angular/angular/pull/54761 ">#54761</a>)</td>
</tr>
<tr>
<td><a href="243ccce624 ">243ccce624</a></td>
<td>fix</td>
<td>exclude class attribute intended for projection matching from directive matching (<a href="https://redirect.github.com/angular/angular/pull/54800 ">#54800</a>)</td>
</tr>
<tr>
<td><a href="2909e9817d ">2909e9817d</a></td>
<td>fix</td>
<td>prevent infinite loops in clobbered elements check (<a href="https://redirect.github.com/angular/angular/pull/54425 ">#54425</a>)</td>
</tr>
<tr>
<td><a href="7243c704cf ">7243c704cf</a></td>
<td>fix</td>
<td>return a readonly signal on <code>asReadonly</code>. (<a href="https://redirect.github.com/angular/angular/pull/54706 ">#54706</a>)</td>
</tr>
<tr>
<td><a href="bb35414a38 ">bb35414a38</a></td>
<td>perf</td>
<td>speed up retrieval of <code>DestroyRef</code> in <code>EventEmitter</code> (<a href="https://redirect.github.com/angular/angular/pull/54748 ">#54748</a>)</td>
</tr>
</tbody>
</table>
<h3>http</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="8d37ed035c ">8d37ed035c</a></td>
<td>fix</td>
<td>exclude caching for authenticated HTTP requests (<a href="https://redirect.github.com/angular/angular/pull/54746 ">#54746</a>)</td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="c1c7384e02 ">c1c7384e02</a></td>
<td>feat</td>
<td>Add reusable types for router guards (<a href="https://redirect.github.com/angular/angular/pull/54580 ">#54580</a>)</td>
</tr>
<tr>
<td><a href="7225485311 ">7225485311</a></td>
<td>fix</td>
<td>Navigations triggered by cancellation events should cancel previous navigation (<a href="https://redirect.github.com/angular/angular/pull/54710 ">#54710</a>)</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.2.4 (2024-03-06)</h1>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="917b9bdd2e ">917b9bdd2e</a></td>
<td>fix</td>
<td>unwrap expressions with type parameters in query read property (<a href="https://redirect.github.com/angular/angular/pull/54647 ">#54647</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="586cc24a10 ">586cc24a10</a></td>
<td>fix</td>
<td>apply TestBed provider overrides to <code>@defer</code> dependencies (<a href="https://redirect.github.com/angular/angular/pull/54667 ">#54667</a>)</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="8d37ed035c "><code>8d37ed0</code></a> fix(http): exclude caching for authenticated HTTP requests (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54746 ">#54746</a>)</li>
<li><a href="974958913c "><code>9749589</code></a> feat(core): support TypeScript 5.4 (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54414 ">#54414</a>)</li>
<li><a href="707bfc9b32 "><code>707bfc9</code></a> perf(common): <code>AsyncPipe</code> should not call <code>markForCheck</code> on subscription (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54 ">#54</a>...</li>
<li><a href="55fd7b3c85 "><code>55fd7b3</code></a> docs(docs-infra): Add missing api entries (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54517 ">#54517</a>)</li>
<li><a href="219445cda4 "><code>219445c</code></a> fix(common): image placeholder not removed in OnPush component (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54515 ">#54515</a>)</li>
<li><a href="74b5a51226 "><code>74b5a51</code></a> fix(http): Use string body to generate transfer cache key. (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54379 ">#54379</a>)</li>
<li>See full diff in <a href="https://github.com/angular/angular/commits/17.3.0/packages/common ">compare view</a></li>
</ul>
</details>
<br />
Updates `@angular/compiler` from 17.2.1 to 17.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases "><code>@angular/compiler</code>'s releases</a>.</em></p>
<blockquote>
<h2>v17.3.0</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.3.0 (2024-03-13)</h1>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1a6beae8a2 "><img src="https://img.shields.io/badge/1a6beae8a2-feat-blue " alt="feat - 1a6beae8a2" /></a></td>
<td>Enable template pipeline by default. (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54571 ">#54571</a>)</td>
</tr>
<tr>
<td><a href="f386a04c9d "><img src="https://img.shields.io/badge/f386a04c9d-fix-green " alt="fix - f386a04c9d" /></a></td>
<td>handle two-way bindings to signal-based template variables in instruction generation (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54714 ">#54714</a>)</td>
</tr>
<tr>
<td><a href="1f129f114e "><img src="https://img.shields.io/badge/1f129f114e-fix-green " alt="fix - 1f129f114e" /></a></td>
<td>not catching for loop empty tracking expressions (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54772 ">#54772</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="12dc4d074e "><img src="https://img.shields.io/badge/12dc4d074e-fix-green " alt="fix - 12dc4d074e" /></a></td>
<td>account for as expression in docs extraction (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54414 ">#54414</a>)</td>
</tr>
<tr>
<td><a href="da7fbb40f0 "><img src="https://img.shields.io/badge/da7fbb40f0-fix-green " alt="fix - da7fbb40f0" /></a></td>
<td>detect when the linker is working in unpublished angular and widen supported versions (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54439 ">#54439</a>)</td>
</tr>
<tr>
<td><a href="492e03f699 "><img src="https://img.shields.io/badge/492e03f699-fix-green " alt="fix - 492e03f699" /></a></td>
<td>flag two-way bindings to non-signal values in templates (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54714 ">#54714</a>)</td>
</tr>
<tr>
<td><a href="5afa4f0ec1 "><img src="https://img.shields.io/badge/5afa4f0ec1-fix-green " alt="fix - 5afa4f0ec1" /></a></td>
<td>support <code>ModuleWithProviders</code> literal detection with <code>typeof</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54650 ">#54650</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="331b16efd2 "><img src="https://img.shields.io/badge/331b16efd2-feat-blue " alt="feat - 331b16efd2" /></a></td>
<td>add API to inject attributes on the host node (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54604 ">#54604</a>)</td>
</tr>
<tr>
<td><a href="fb540e169a "><img src="https://img.shields.io/badge/fb540e169a-feat-blue " alt="feat - fb540e169a" /></a></td>
<td>add migration for invalid two-way bindings (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54630 ">#54630</a>)</td>
</tr>
<tr>
<td><a href="c687b8f453 "><img src="https://img.shields.io/badge/c687b8f453-feat-blue " alt="feat - c687b8f453" /></a></td>
<td>expose new <code>output()</code> API (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="c809069f21 "><img src="https://img.shields.io/badge/c809069f21-feat-blue " alt="feat - c809069f21" /></a></td>
<td>introduce <code>outputFromObservable()</code> interop function (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="aff65fd1f4 "><img src="https://img.shields.io/badge/aff65fd1f4-feat-blue " alt="feat - aff65fd1f4" /></a></td>
<td>introduce <code>outputToObservable</code> interop helper (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="974958913c "><img src="https://img.shields.io/badge/974958913c-feat-blue " alt="feat - 974958913c" /></a></td>
<td>support TypeScript 5.4 (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54414 ">#54414</a>)</td>
</tr>
<tr>
<td><a href="39a50f9a8d "><img src="https://img.shields.io/badge/39a50f9a8d-fix-green " alt="fix - 39a50f9a8d" /></a></td>
<td>ensure all initializer functions run in an injection context (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54761 ">#54761</a>)</td>
</tr>
<tr>
<td><a href="243ccce624 "><img src="https://img.shields.io/badge/243ccce624-fix-green " alt="fix - 243ccce624" /></a></td>
<td>exclude class attribute intended for projection matching from directive matching (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54800 ">#54800</a>)</td>
</tr>
<tr>
<td><a href="2909e9817d "><img src="https://img.shields.io/badge/2909e9817d-fix-green " alt="fix - 2909e9817d" /></a></td>
<td>prevent infinite loops in clobbered elements check (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54425 ">#54425</a>)</td>
</tr>
<tr>
<td><a href="7243c704cf "><img src="https://img.shields.io/badge/7243c704cf-fix-green " alt="fix - 7243c704cf" /></a></td>
<td>return a readonly signal on <code>asReadonly</code>. (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54706 ">#54706</a>)</td>
</tr>
<tr>
<td><a href="bb35414a38 "><img src="https://img.shields.io/badge/bb35414a38-perf-orange " alt="perf - bb35414a38" /></a></td>
<td>speed up retrieval of <code>DestroyRef</code> in <code>EventEmitter</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54748 ">#54748</a>)</td>
</tr>
</tbody>
</table>
<h3>http</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="8d37ed035c "><img src="https://img.shields.io/badge/8d37ed035c-fix-green " alt="fix - 8d37ed035c" /></a></td>
<td>exclude caching for authenticated HTTP requests (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54746 ">#54746</a>)</td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="c1c7384e02 "><img src="https://img.shields.io/badge/c1c7384e02-feat-blue " alt="feat - c1c7384e02" /></a></td>
<td>Add reusable types for router guards (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54580 ">#54580</a>)</td>
</tr>
<tr>
<td><a href="7225485311 "><img src="https://img.shields.io/badge/7225485311-fix-green " alt="fix - 7225485311" /></a></td>
<td>Navigations triggered by cancellation events should cancel previous navigation (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54710 ">#54710</a>)</td>
</tr>
</tbody>
</table>
<h2>v17.3.0-rc.0</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.3.0-rc.0 (2024-03-06)</h1>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="5afa4f0ec1 "><img src="https://img.shields.io/badge/5afa4f0ec1-fix-green " alt="fix - 5afa4f0ec1" /></a></td>
<td>support <code>ModuleWithProviders</code> literal detection with <code>typeof</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="ae7dbe42de "><img src="https://img.shields.io/badge/ae7dbe42de-fix-green " alt="fix - ae7dbe42de" /></a></td>
<td>unwrap expressions with type parameters in query read property (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54647 ">#54647</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<p>| Commit | Description |</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md "><code>@angular/compiler</code>'s changelog</a>.</em></p>
<blockquote>
<h1>17.3.0 (2024-03-13)</h1>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1a6beae8a2 ">1a6beae8a2</a></td>
<td>feat</td>
<td>Enable template pipeline by default. (<a href="https://redirect.github.com/angular/angular/pull/54571 ">#54571</a>)</td>
</tr>
<tr>
<td><a href="f386a04c9d ">f386a04c9d</a></td>
<td>fix</td>
<td>handle two-way bindings to signal-based template variables in instruction generation (<a href="https://redirect.github.com/angular/angular/pull/54714 ">#54714</a>)</td>
</tr>
<tr>
<td><a href="1f129f114e ">1f129f114e</a></td>
<td>fix</td>
<td>not catching for loop empty tracking expressions (<a href="https://redirect.github.com/angular/angular/pull/54772 ">#54772</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="12dc4d074e ">12dc4d074e</a></td>
<td>fix</td>
<td>account for as expression in docs extraction (<a href="https://redirect.github.com/angular/angular/pull/54414 ">#54414</a>)</td>
</tr>
<tr>
<td><a href="da7fbb40f0 ">da7fbb40f0</a></td>
<td>fix</td>
<td>detect when the linker is working in unpublished angular and widen supported versions (<a href="https://redirect.github.com/angular/angular/pull/54439 ">#54439</a>)</td>
</tr>
<tr>
<td><a href="492e03f699 ">492e03f699</a></td>
<td>fix</td>
<td>flag two-way bindings to non-signal values in templates (<a href="https://redirect.github.com/angular/angular/pull/54714 ">#54714</a>)</td>
</tr>
<tr>
<td><a href="5afa4f0ec1 ">5afa4f0ec1</a></td>
<td>fix</td>
<td>support <code>ModuleWithProviders</code> literal detection with <code>typeof</code> (<a href="https://redirect.github.com/angular/angular/pull/54650 ">#54650</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="331b16efd2 ">331b16efd2</a></td>
<td>feat</td>
<td>add API to inject attributes on the host node (<a href="https://redirect.github.com/angular/angular/pull/54604 ">#54604</a>)</td>
</tr>
<tr>
<td><a href="fb540e169a ">fb540e169a</a></td>
<td>feat</td>
<td>add migration for invalid two-way bindings (<a href="https://redirect.github.com/angular/angular/pull/54630 ">#54630</a>)</td>
</tr>
<tr>
<td><a href="c687b8f453 ">c687b8f453</a></td>
<td>feat</td>
<td>expose new <code>output()</code> API (<a href="https://redirect.github.com/angular/angular/pull/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="c809069f21 ">c809069f21</a></td>
<td>feat</td>
<td>introduce <code>outputFromObservable()</code> interop function (<a href="https://redirect.github.com/angular/angular/pull/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="aff65fd1f4 ">aff65fd1f4</a></td>
<td>feat</td>
<td>introduce <code>outputToObservable</code> interop helper (<a href="https://redirect.github.com/angular/angular/pull/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="974958913c ">974958913c</a></td>
<td>feat</td>
<td>support TypeScript 5.4 (<a href="https://redirect.github.com/angular/angular/pull/54414 ">#54414</a>)</td>
</tr>
<tr>
<td><a href="39a50f9a8d ">39a50f9a8d</a></td>
<td>fix</td>
<td>ensure all initializer functions run in an injection context (<a href="https://redirect.github.com/angular/angular/pull/54761 ">#54761</a>)</td>
</tr>
<tr>
<td><a href="243ccce624 ">243ccce624</a></td>
<td>fix</td>
<td>exclude class attribute intended for projection matching from directive matching (<a href="https://redirect.github.com/angular/angular/pull/54800 ">#54800</a>)</td>
</tr>
<tr>
<td><a href="2909e9817d ">2909e9817d</a></td>
<td>fix</td>
<td>prevent infinite loops in clobbered elements check (<a href="https://redirect.github.com/angular/angular/pull/54425 ">#54425</a>)</td>
</tr>
<tr>
<td><a href="7243c704cf ">7243c704cf</a></td>
<td>fix</td>
<td>return a readonly signal on <code>asReadonly</code>. (<a href="https://redirect.github.com/angular/angular/pull/54706 ">#54706</a>)</td>
</tr>
<tr>
<td><a href="bb35414a38 ">bb35414a38</a></td>
<td>perf</td>
<td>speed up retrieval of <code>DestroyRef</code> in <code>EventEmitter</code> (<a href="https://redirect.github.com/angular/angular/pull/54748 ">#54748</a>)</td>
</tr>
</tbody>
</table>
<h3>http</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="8d37ed035c ">8d37ed035c</a></td>
<td>fix</td>
<td>exclude caching for authenticated HTTP requests (<a href="https://redirect.github.com/angular/angular/pull/54746 ">#54746</a>)</td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="c1c7384e02 ">c1c7384e02</a></td>
<td>feat</td>
<td>Add reusable types for router guards (<a href="https://redirect.github.com/angular/angular/pull/54580 ">#54580</a>)</td>
</tr>
<tr>
<td><a href="7225485311 ">7225485311</a></td>
<td>fix</td>
<td>Navigations triggered by cancellation events should cancel previous navigation (<a href="https://redirect.github.com/angular/angular/pull/54710 ">#54710</a>)</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.2.4 (2024-03-06)</h1>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="917b9bdd2e ">917b9bdd2e</a></td>
<td>fix</td>
<td>unwrap expressions with type parameters in query read property (<a href="https://redirect.github.com/angular/angular/pull/54647 ">#54647</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="586cc24a10 ">586cc24a10</a></td>
<td>fix</td>
<td>apply TestBed provider overrides to <code>@defer</code> dependencies (<a href="https://redirect.github.com/angular/angular/pull/54667 ">#54667</a>)</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="f386a04c9d "><code>f386a04</code></a> fix(compiler): handle two-way bindings to signal-based template variables in ...</li>
<li><a href="1f129f114e "><code>1f129f1</code></a> fix(compiler): not catching for loop empty tracking expressions (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54772 ">#54772</a>)</li>
<li><a href="b40f1e5b86 "><code>b40f1e5</code></a> refactor(compiler): Remove deep imports in the language service (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54695 ">#54695</a>)</li>
<li><a href="5e32a775d9 "><code>5e32a77</code></a> refactor(compiler): cleanup unused code in template builder pipeline (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54654 ">#54654</a>)</li>
<li><a href="1a6beae8a2 "><code>1a6beae</code></a> feat(compiler): Enable template pipeline by default. (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54571 ">#54571</a>)</li>
<li><a href="badda0c389 "><code>badda0c</code></a> fix(compiler-cli): correctly detect deferred dependencies across scoped nodes...</li>
<li><a href="dba3e0b5aa "><code>dba3e0b</code></a> fix(compiler): adding the inert property to the "SCHEMA" array (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/53148 ">#53148</a>)</li>
<li><a href="6c2d4b650b "><code>6c2d4b6</code></a> refactor(compiler): Enable Template Pipeline globally in 1P. (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54435 ">#54435</a>)</li>
<li>See full diff in <a href="https://github.com/angular/angular/commits/17.3.0/packages/compiler ">compare view</a></li>
</ul>
</details>
<br />
Updates `@angular/core` from 17.2.1 to 17.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases "><code>@angular/core</code>'s releases</a>.</em></p>
<blockquote>
<h2>v17.3.0</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.3.0 (2024-03-13)</h1>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1a6beae8a2 "><img src="https://img.shields.io/badge/1a6beae8a2-feat-blue " alt="feat - 1a6beae8a2" /></a></td>
<td>Enable template pipeline by default. (<a href="https://github.com/angular/angular/tree/HEAD/packages/core/issues/54571 ">#54571</a>)</td>
</tr>
<tr>
<td><a href="f386a04c9d "><img src="https://img.shields.io/badge/f386a04c9d-fix-green " alt="fix - f386a04c9d" /></a></td>
<td>handle two-way bindings to signal-based template variables in instruction generation (<a href="https://github.com/angular/angular/tree/HEAD/packages/core/issues/54714 ">#54714</a>)</td>
</tr>
<tr>
<td><a href="1f129f114e "><img src="https://img.shields.io/badge/1f129f114e-fix-green " alt="fix - 1f129f114e" /></a></td>
<td>not catching for loop empty tracking expressions (<a href="https://github.com/angular/angular/tree/HEAD/packages/core/issues/54772 ">#54772</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="12dc4d074e "><img src="https://img.shields.io/badge/12dc4d074e-fix-green " alt="fix - 12dc4d074e" /></a></td>
<td>account for as expression in docs extraction (<a href="https://github.com/angular/angular/tree/HEAD/packages/core/issues/54414 ">#54414</a>)</td>
</tr>
<tr>
<td><a href="da7fbb40f0 "><img src="https://img.shields.io/badge/da7fbb40f0-fix-green " alt="fix - da7fbb40f0" /></a></td>
<td>detect when the linker is working in unpublished angular and widen supported versions (<a href="https://github.com/angular/angular/tree/HEAD/packages/core/issues/54439 ">#54439</a>)</td>
</tr>
<tr>
<td><a href="492e03f699 "><img src="https://img.shields.io/badge/492e03f699-fix-green " alt="fix - 492e03f699" /></a></td>
<td>flag two-way bindings to non-signal values in templates (<a href="https://github.com/angular/angular/tree/HEAD/packages/core/issues/54714 ">#54714</a>)</td>
</tr>
<tr>
<td><a href="5afa4f0ec1 "><img src="https://img.shields.io/badge/5afa4f0ec1-fix-green " alt="fix - 5afa4f0ec1" /></a></td>
<td>support <code>ModuleWithProviders</code> literal detection with <code>typeof</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/core/issues/54650 ">#54650</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="331b16efd2 "><img src="https://img.shields.io/badge/331b16efd2-feat-blue " alt="feat - 331b16efd2" /></a></td>
<td>add API to inject attributes on the host node (<a href="https://github.com/angular/angular/tree/HEAD/packages/core/issues/54604 ">#54604</a>)</td>
</tr>
<tr>
<td><a href="fb540e169a "><img src="https://img.shields.io/badge/fb540e169a-feat-blue " alt="feat - fb540e169a" /></a></td>
<td>add migration for invalid two-way bindings (<a href="https://github.com/angular/angular/tree/HEAD/packages/core/issues/54630 ">#54630</a>)</td>
</tr>
<tr>
<td><a href="c687b8f453 "><img src="https://img.shields.io/badge/c687b8f453-feat-blue " alt="feat - c687b8f453" /></a></td>
<td>expose new <code>output()</code> API (<a href="https://github.com/angular/angular/tree/HEAD/packages/core/issues/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="c809069f21 "><img src="https://img.shields.io/badge/c809069f21-feat-blue " alt="feat - c809069f21" /></a></td>
<td>introduce <code>outputFromObservable()</code> interop function (<a href="https://github.com/angular/angular/tree/HEAD/packages/core/issues/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="aff65fd1f4 "><img src="https://img.shields.io/badge/aff65fd1f4-feat-blue " alt="feat - aff65fd1f4" /></a></td>
<td>introduce <code>outputToObservable</code> interop helper (<a href="https://github.com/angular/angular/tree/HEAD/packages/core/issues/54650 ">#54650</a>)</td>
</tr>
<tr>
<td><a href="974958913c "><img src="https://img.shields.io/badge/974958913c-feat-blue " alt="feat - 974958913c" /></a></td>
<td>support TypeScript 5.4 (<a href="https://github.com/angular/angular/tree/HEAD/packages/core/issues/54414 ">#54414</a>)</td>
</tr>
<tr>
<td><a href="39a50f9a8d "><img src="https://img.shields.io/badge/39a50f9a8d-fix-green " alt="fix - 39a50f9a8d" /></a></td>
<td>ensure all initializer functions run in an injection context (<a href="https://github.com/angular/angular/tree/HEAD/packages/core/issues/54761 ">#54761</a>)</td>
</tr>
<tr>
<td><a href="243ccce624 "><img src="https://img.shields.io/badge/243ccce624-fix-green " alt="fix - 243ccce624" /></a></td>
<td>exclude class attribute intended for projection matching from directive matching (<a href="https://github.com/angular/angular/tree/HEAD/packages/core/issues/54800 ">#54800</a>)</td>
</tr>
<tr>
<td><a href="https://github.com/angular/angular/commit/2909e9817daf69b6478 ...
_Description has been truncated_
2024-03-14 21:05:24 +00:00
Trek Glowacki
5c3d2e7411
[tests] Shuffle proprety order in dependabot.yml ( #11240 )
...
Property order isn't meaningful here. I figured directory name first
makes the order a bit nicer and alphabetical.
2024-03-14 15:45:40 -05:00
Wyatt Johnson
4bca0c6d0b
[next] Ensure all static routes have static streaming lambda path ( #11259 )
...
When there's a match for a prerender, the dynamic query parameters will
not be provided via the `x-now-route-matches`. This ensures that when
generating any static route that the static streaming lambda path is
used if it's provided, ensuring that when a page is generated via
`generateStaticParams`:
```tsx
// app/blog/[slug]/page.tsx
type Props = {
params: {
slug: string
}
}
export function generateStaticParams() {
return [{ slug: "one" }, { slug: "two" }, { slug: "three" }]
}
export default function BlogPage({ slug }: Props) {
// ...
}
```
That we use the specific routes (`/blog/one`, `/blog/two`, and
`/blog/three`) for the partial prerendering streaming path instead of
the paramatarized pathname (`/blog/[slug]`) as the rewrites won't be
matched once a match for a prerender has been found.
This additionally updates the tests to ensure that the correct pathname
is observed (this was previously silently failing).
2024-03-14 12:37:48 -06:00
Vercel Release Bot
fab5fca939
Version Packages ( #11262 )
...
This PR was opened by the [Changesets
release](https://github.com/changesets/action ) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @vercel/build-utils@7.9.0
### Minor Changes
- Add `base` parameter to `scanParentDirs()`
([#11261 ](https://github.com/vercel/vercel/pull/11261 ))
## vercel@33.6.0
### Minor Changes
- Set `projectSettings.nodeVersion` in `vc deploy` based on
"engines.node" field
([#11261 ](https://github.com/vercel/vercel/pull/11261 ))
### Patch Changes
- Stops warning about legacy Speed Insights for Next.js apps
([#11268 ](https://github.com/vercel/vercel/pull/11268 ))
- Fix framework version detection in monorepos
([#11212 ](https://github.com/vercel/vercel/pull/11212 ))
- Updated dependencies
\[[`8ea93839c`](8ea93839cc ),
[`58ef91bfe`](58ef91bfe8 )]:
- @vercel/build-utils@7.9.0
- @vercel/remix-builder@2.1.3
- @vercel/node@3.0.23
- @vercel/static-build@2.4.3
## @vercel/client@13.1.6
### Patch Changes
- Updated dependencies
\[[`8ea93839c`](8ea93839cc )]:
- @vercel/build-utils@7.9.0
## @vercel/gatsby-plugin-vercel-builder@2.0.21
### Patch Changes
- Updated dependencies
\[[`8ea93839c`](8ea93839cc )]:
- @vercel/build-utils@7.9.0
## @vercel/node@3.0.23
### Patch Changes
- Updated dependencies
\[[`8ea93839c`](8ea93839cc )]:
- @vercel/build-utils@7.9.0
## @vercel/remix-builder@2.1.3
### Patch Changes
- Improve hueristics for detecting Remix + Vite
([#11256 ](https://github.com/vercel/vercel/pull/11256 ))
## @vercel/static-build@2.4.3
### Patch Changes
- Updated dependencies \[]:
- @vercel/gatsby-plugin-vercel-builder@2.0.21
## @vercel-internals/types@1.0.26
### Patch Changes
- Updated dependencies
\[[`8ea93839c`](8ea93839cc )]:
- @vercel/build-utils@7.9.0
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-03-14 10:37:36 -05:00
Damien Simonin Feugas
2ad44999dd
[cli] stops warning Next.js users about legacy Speed Insights ( #11268 )
...
### 🧐 What's in there?
Vercel's Speed Insights legacy injection is deprecated in favor of `@vercel/speed-insights` package.
CLI has a couple places where it warns users running `vc build` locally (or on their CI).
Some users complained about seeing the warning while they are already using the package.
This PR removes the message
### ❗ Note to reviewers
@tobiaslins, @timolins and I had a long discussion on the approach here.
This warning is issued because during `vc pull`, the project API on Vercel returns a legacy analytics.id field, [which is stored](https://github.com/vercel/vercel/blame/main/packages/cli/src/util/projects/project-settings.ts#L35 ) in `.vercel/project.json`.
While it is legit for users who never used `@vercel/speed-insights` package, it also appear for users who migrated from legacy.
Besides setting the warning, `VERCEL_ANALYTICS_ID` is set, which triggers auto-injection in Next.js, and is useful during self-hosting.
We first considered removing the legacy id from `project.json`, but it would break self-hosting.
We also considered printing the warning only if the application never used the package (which the project API on Vercel knows).
In the end, we realized that vercel.com Speed Insights dashboard has plenty of disclaimer and incentives to use the new package. Having it in the CLI doesn't worth the annoyance.
2024-03-14 15:00:43 +00:00
Austin Merrick
eee57262f0
Fix README links ( #11270 )
...
These links went to the overview page. Pointing to the CLI docs is more helpful.
2024-03-14 09:07:15 +00:00
Sean Massa
fd762d8800
Update CODEOWNERS to ensure Zero Config can always approve ( #11272 )
...
I tagged everyone for review that might be impacted. I removed no one, but added Zero Config to each section.
This allows Zero Config to make uncontroversial tweaks as needed. For any significant changes to these areas, we'd of course still wait for other teams' reviews.
2024-03-14 08:55:35 +00:00
Nathan Rajlich
8ea93839cc
[cli] Set projectSettings.nodeVersion in vc deploy based on "engines.node" field ( #11261 )
...
Read the package.json and use the `engines.node` value to set the
`projectSettings.nodeVersion` property on the create deployment API call
POST body. This allows for the Node 20 build container image to be
properly specified before the deployment is created on the server side.
2024-03-13 15:39:51 -07:00
Nathan Rajlich
b9f3438c2d
[cli] Fix framework version detection in monorepos ( #11212 )
...
I noticed that the framework version was not being printed on deployments in a monorepo. Turns out the framework detection logic was happening at the root of the monorepo, instead of the project directory.
2024-03-12 22:54:53 +00:00
Nathan Rajlich
58ef91bfe8
[remix] Improve hueristics for detecting Remix + Vite ( #11256 )
...
In particular, when both `remix.config` and `vite.config` files exist,
run some additional checks to try to detect if the project is using the
Vite plugin or not.
2024-03-12 15:05:32 -07:00
Nathan Rajlich
4111fbaa89
[tests] Specify testing tsconfig path for Jest ( #11253 )
...
This fixes the stack traces on failed Jest tests.
2024-03-11 14:39:08 -07:00
Vercel Release Bot
c3251e3775
Version Packages ( #11248 )
...
This PR was opened by the [Changesets
release](https://github.com/changesets/action ) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @vercel/build-utils@7.8.0
### Minor Changes
- Remove `VERCEL_ENABLE_NPM_DEFAULT` env var check
([#11242 ](https://github.com/vercel/vercel/pull/11242 ))
### Patch Changes
- Rename variants to flags and remove legacy flags
([#11121 ](https://github.com/vercel/vercel/pull/11121 ))
## vercel@33.5.5
### Patch Changes
- Rename variants to flags and remove legacy flags
([#11121 ](https://github.com/vercel/vercel/pull/11121 ))
- fix vc with root dir issues
([#11243 ](https://github.com/vercel/vercel/pull/11243 ))
- Updated dependencies
\[[`908e7837d`](908e7837d5 ),
[`5e3656ec1`](5e3656ec1b ),
[`a53d1b0d3`](a53d1b0d38 )]:
- @vercel/build-utils@7.8.0
- @vercel/next@4.1.5
- @vercel/remix-builder@2.1.2
- @vercel/node@3.0.22
- @vercel/static-build@2.4.2
## @vercel/client@13.1.5
### Patch Changes
- Updated dependencies
\[[`908e7837d`](908e7837d5 ),
[`5e3656ec1`](5e3656ec1b )]:
- @vercel/build-utils@7.8.0
## @vercel/gatsby-plugin-vercel-builder@2.0.20
### Patch Changes
- Updated dependencies
\[[`908e7837d`](908e7837d5 ),
[`5e3656ec1`](5e3656ec1b )]:
- @vercel/build-utils@7.8.0
## @vercel/next@4.1.5
### Patch Changes
- Rename variants to flags and remove legacy flags
([#11121 ](https://github.com/vercel/vercel/pull/11121 ))
## @vercel/node@3.0.22
### Patch Changes
- Updated dependencies
\[[`908e7837d`](908e7837d5 ),
[`5e3656ec1`](5e3656ec1b )]:
- @vercel/build-utils@7.8.0
## @vercel/remix-builder@2.1.2
### Patch Changes
- Update `@remix-run/dev` fork to v2.8.1
([#11241 ](https://github.com/vercel/vercel/pull/11241 ))
## @vercel/static-build@2.4.2
### Patch Changes
- Updated dependencies \[]:
- @vercel/gatsby-plugin-vercel-builder@2.0.20
## @vercel-internals/types@1.0.25
### Patch Changes
- Updated dependencies
\[[`908e7837d`](908e7837d5 ),
[`5e3656ec1`](5e3656ec1b )]:
- @vercel/build-utils@7.8.0
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-03-08 15:42:44 -06:00
Sean Massa
33202dec1f
fix vc with root dir issues ( #11243 )
...
There's an issue with `vc link` and `vc deploy` when using a project
root directory. Framework detection fails because it's looking in the
wrong directory.
---
Manually tested and this fixes the issue. A project with a rootDirectory
was previously not detecting a framework, but now it says:
```
Auto-detected Project Settings (Remix):
```
---------
Co-authored-by: Nathan Rajlich <n@n8.io >
2024-03-08 15:21:18 -06:00
Vercel Release Bot
a53d1b0d38
[remix] Update @remix-run/dev to v2.8.1 ( #11241 )
...
This auto-generated PR updates `@remix-run/dev` to version 2.8.1.
2024-03-08 20:38:02 +00:00
Nathan Rajlich
5e3656ec1b
[build-utils] Remove VERCEL_ENABLE_NPM_DEFAULT env var check ( #11242 )
...
Flag has been rolled out for long enough at this point.
npm will now always be used as the package manager when no lockfile is present.
2024-03-08 20:13:30 +00:00
Andy
908e7837d5
[cli][build-utils] Rename variants to flags ( #11121 )
...
- Removes all the legacy `flags`
- Renames the new `variants` to `flags`
Neither the legacy flags, nor the new variants were exposed to anyone, except for the type in build-utils, so there shouldn't be any issues removing/renaming them.
2024-03-08 16:06:23 +00:00
Vercel Release Bot
dfa2f07c45
[examples][tests] Upgrade Next.js to version 14.1.3 ( #11237 )
...
This auto-generated PR updates 7 packages to Next.js version 14.1.3
Co-authored-by: Steven <steven@ceriously.com >
2024-03-08 10:51:02 -05:00
Nathan Rajlich
33181274bb
[static-build] Remove Build Output API v1 tests ( #11247 )
...
Remove these old tests for the legacy BOA version. Specifically,
`66-build-output-directory-with-functions` has become problematic
because the "go1.x" Lambda runtime no longer deploys. I figured we take
the opportunity to remove the others as well though. Will make running
the tests slightly faster.
2024-03-08 10:28:30 -05:00
Vercel Release Bot
96117d3f17
Version Packages ( #11210 )
...
This PR was opened by the [Changesets
release](https://github.com/changesets/action ) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @vercel/build-utils@7.7.1
### Patch Changes
- [build-utils] increase max memory limit
([#11209 ](https://github.com/vercel/vercel/pull/11209 ))
## vercel@33.5.4
### Patch Changes
- [build-utils] increase max memory limit
([#11209 ](https://github.com/vercel/vercel/pull/11209 ))
- Updated dependencies
\[[`b1d8b83ab`](b1d8b83abb ),
[`37b193c84`](37b193c845 ),
[`20237d4f7`](20237d4f7b ),
[`f8fab639b`](f8fab639bf ),
[`6ed0fe6fb`](6ed0fe6fb1 )]:
- @vercel/next@4.1.4
- @vercel/build-utils@7.7.1
- @vercel/remix-builder@2.1.1
- @vercel/static-build@2.4.1
- @vercel/node@3.0.21
## @vercel/client@13.1.4
### Patch Changes
- Updated dependencies
\[[`37b193c84`](37b193c845 )]:
- @vercel/build-utils@7.7.1
## @vercel/fs-detectors@5.2.1
### Patch Changes
- [build-utils] increase max memory limit
([#11209 ](https://github.com/vercel/vercel/pull/11209 ))
## @vercel/gatsby-plugin-vercel-builder@2.0.19
### Patch Changes
- Updated dependencies
\[[`37b193c84`](37b193c845 )]:
- @vercel/build-utils@7.7.1
## @vercel/next@4.1.4
### Patch Changes
- Enable partial prerendering support for pre-generated pages
([#11183 ](https://github.com/vercel/vercel/pull/11183 ))
## @vercel/node@3.0.21
### Patch Changes
- Updated dependencies
\[[`37b193c84`](37b193c845 )]:
- @vercel/build-utils@7.7.1
## @vercel/remix-builder@2.1.1
### Patch Changes
- [build-utils] increase max memory limit
([#11209 ](https://github.com/vercel/vercel/pull/11209 ))
- Remove usage of `ensureResolvable()` in Vite builds
([#11213 ](https://github.com/vercel/vercel/pull/11213 ))
- Update `@remix-run/dev` fork to v2.8.0
([#11206 ](https://github.com/vercel/vercel/pull/11206 ))
- Ensure the symlink directory exists in `ensureSymlink()`
([#11205 ](https://github.com/vercel/vercel/pull/11205 ))
## @vercel/static-build@2.4.1
### Patch Changes
- [build-utils] increase max memory limit
([#11209 ](https://github.com/vercel/vercel/pull/11209 ))
- Updated dependencies \[]:
- @vercel/gatsby-plugin-vercel-builder@2.0.19
## @vercel-internals/types@1.0.24
### Patch Changes
- Updated dependencies
\[[`37b193c84`](37b193c845 )]:
- @vercel/build-utils@7.7.1
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-03-06 10:19:42 -06:00
Nathan Rajlich
20237d4f7b
[remix] Remove usage of ensureResolvable() in Vite builds ( #11213 )
...
This function can lead to unexpected results (for example, in a monorepo setup where there were different versions of Remix being used, I encountered the wrong version of Remix being symlinked causing issues at runtime).
Instead, throw an error at build time at the NFT step if `@remix-run/node` is missing for routes using Node.js, or when `@remix-run/server-runtime` is missing for routes using Edge.
Less magical is better. Explicit is better than implicit.
2024-03-06 02:10:22 +00:00
Nathan Rajlich
293770a2f6
[cli] Fix failing test due to npm default change ( #11230 )
2024-03-05 17:52:19 -08:00
Nathan Rajlich
c9c0a203cc
[examples] Update Remix template to use Vite ( #11229 )
...
Updates the Remix example template to use Vite and latest version of
dependencies.
2024-03-05 16:22:46 -08:00
Nathan Rajlich
5064dd404d
Revert "[examples] Update Remix template to use Vite ( #11217 )" ( #11227 )
...
This reverts commit 1a45731c92 . This
should not have been merged yet. There is still an issue with framework
detection selecting Vite instead of Remix preset.
2024-03-05 14:45:00 -08:00
Nathan Rajlich
1a45731c92
[examples] Update Remix template to use Vite ( #11217 )
...
Updates the Remix example template to use Vite and latest version of dependencies.
2024-03-05 20:10:19 +00:00
Trek Glowacki
168f9578cf
[tests] Update dependabot.yml to ignore major/patch ( #11223 )
...
Update dependebot to skip patch and major version updates. Patch is too noisy, major requires a new fixture.
2024-03-05 19:49:38 +00:00
Vercel Release Bot
c2728ef9c0
[examples][tests] Upgrade Next.js to version 14.1.2 ( #11224 )
...
This auto-generated PR updates 7 packages to Next.js version 14.1.2
2024-03-05 10:15:27 -05:00
Trek Glowacki
c5fe7c2bea
[examples] Bump Middleman and Jekyll dependencies to support ruby 3.x ( #11203 )
...
Some dependency updates are required to support Ruby 3.x+
2024-03-04 10:19:42 -06:00
Wyatt Johnson
b1d8b83abb
[next] Support pre-generated pages without fallbacks with Partial Prerendering ( #11183 )
2024-03-01 18:29:31 -07:00
Vercel Release Bot
24ec5c5aca
[examples][tests] Upgrade Next.js to version 14.1.1 ( #11215 )
...
This auto-generated PR updates 7 packages to Next.js version 14.1.1
2024-03-01 13:35:53 -05:00
Shohei Maeda
37b193c845
[build-utils] increase max memory limit ( #11209 )
...
internal ref. https://github.com/vercel/api/pull/25997
increasing max limit from 3008 -> 3009 MB
---------
Co-authored-by: Nathan Rajlich <n@n8.io >
2024-03-01 08:23:11 +09:00
Vercel Release Bot
f8fab639bf
[remix] Update @remix-run/dev to v2.8.0 ( #11206 )
...
This auto-generated PR updates `@remix-run/dev` to version 2.8.0.
2024-02-29 19:21:11 +00:00
Nathan Rajlich
6ed0fe6fb1
[remix] Ensure the symlink directory exists in ensureSymlink() ( #11205 )
...
Customer reported an edge case where (in a monorepo) their project's
`package.json` did not list any dependencies (instead they are listed at
the root-level `package.json`) and this caused the `node_modules`
directory to not exist in the app subdirectory, causing
`ensureSymlink()` to fail.
2024-02-29 10:44:18 -08:00
Vercel Release Bot
de2738ba06
Version Packages ( #11193 )
...
This PR was opened by the [Changesets
release](https://github.com/changesets/action ) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @vercel/frameworks@3.0.0
### Major Changes
- Make "remix" framework preset supersede "vite"
([#11031 ](https://github.com/vercel/vercel/pull/11031 ))
## @vercel/fs-detectors@5.2.0
### Minor Changes
- Make "remix" framework preset supersede "vite"
([#11031 ](https://github.com/vercel/vercel/pull/11031 ))
### Patch Changes
- Updated dependencies
\[[`1333071a3`](1333071a3a )]:
- @vercel/frameworks@3.0.0
## @vercel/remix-builder@2.1.0
### Minor Changes
- Remix Vite plugin support
([#11031 ](https://github.com/vercel/vercel/pull/11031 ))
## vercel@33.5.3
### Patch Changes
- Updated dependencies
\[[`c2d99855e`](c2d99855ea ),
[`1333071a3`](1333071a3a )]:
- @vercel/next@4.1.3
- @vercel/remix-builder@2.1.0
## @vercel/next@4.1.3
### Patch Changes
- Fix manifest with experimental flag
([#11192 ](https://github.com/vercel/vercel/pull/11192 ))
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-02-28 11:34:25 -06:00
Nathan Rajlich
1333071a3a
Remix Vite plugin support ( #11031 )
...
Adds support for Remix apps which use the new Remix Vite plugin.
* The vanilla Remix + Vite template deploys correctly out-of-the-box,
however only a single Node.js function will be used, and a warning will
be printed saying to configure the `vercelPreset()` Preset.
* When used in conjunction with the `vercelPreset()` Preset
(https://github.com/vercel/remix/pull/81 ), allows for the application to
utilize Vercel-specific features, like per-route `export const config`
configuration, including multi-runtime (Node.js / Edge runtimes) within
the same app.
## To test this today
1. Generate a Remix + Vite project from the template:
```
npx create-remix@latest --template remix-run/remix/templates/vite
```
1. Install `@vercel/remix`:
```
npm i --save-dev @vercel/remix
```
1. **(Before Remix v2.8.0 is released)** - Update the `@remix-run/dev`
dependency to use the "pre" tag which contains [a bug
fix](https://github.com/remix-run/remix/pull/8864 ):
```
npm i --save--dev @remix-run/dev@pre @remix-run/serve@pre
```
1. Configure the `vercelPreset()` in the `vite.config.ts` file:
```diff
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,10 +1,11 @@
import { vitePlugin as remix } from "@remix-run/dev";
import { installGlobals } from "@remix-run/node";
import { defineConfig } from "vite";
+import { vercelPreset } from "@vercel/remix/vite";
import tsconfigPaths from "vite-tsconfig-paths";
installGlobals();
export default defineConfig({
- plugins: [remix(), tsconfigPaths()],
+ plugins: [remix({ presets: [vercelPreset()] }), tsconfigPaths()],
});
```
1. Create a new Vercel Project in the dashboard, and ensure the Vercel
preset is set to "Remix" in the Project Settings. The autodetection will
work correctly once this PR is merged, but for now it gets incorrectly
detected as "Vite" preset.
* **Hint**: You can create a new empty Project by running the `vercel
link` command.
<img width="545" alt="Screenshot 2024-02-27 at 10 37 11"
src="https://github.com/vercel/vercel/assets/71256/f46baf57-5d97-4bde-9529-c9165632cb30 ">
1. Deploy to Vercel, setting the `VERCEL_CLI_VERSION` environment
variable to use the changes in this PR:
```
vercel deploy -b
VERCEL_CLI_VERSION=https://vercel-git-tootallnate-zero-1217-research-remix-v-next-vite.vercel.sh/tarballs/vercel.tgz
```
2024-02-28 11:22:05 -06:00
JJ Kasper
c2d99855ea
Fix manifest with experimental flag ( #11192 )
...
This ensures we don't attempt the manifests filtering behavior with this
experimental flag enabled as it is incompatible with it as we don't know
what to filter by at this point.
2024-02-23 01:02:17 -08:00
Vercel Release Bot
0d112c848a
Version Packages ( #11154 )
...
This PR was opened by the [Changesets
release](https://github.com/changesets/action ) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## vercel@33.5.2
### Patch Changes
- Updated dependencies
\[[`e109e3325`](e109e3325a ),
[`d17abf463`](d17abf463a ),
[`644721a90`](644721a90d ),
[`ea0e9aeae`](ea0e9aeaec ),
[`e318a0eea`](e318a0eea5 ),
[`1fee87e76`](1fee87e76f ),
[`bfc01fd98`](bfc01fd98f ),
[`7910f2f30`](7910f2f307 ),
[`440ef3ba9`](440ef3ba98 )]:
- @vercel/remix-builder@2.0.20
- @vercel/next@4.1.2
- @vercel/node@3.0.20
- @vercel/redwood@2.0.8
## @vercel/next@4.1.2
### Patch Changes
- Update experimental bundle flag
([#11187 ](https://github.com/vercel/vercel/pull/11187 ))
- [next] Add flag for experimental grouping
([#11177 ](https://github.com/vercel/vercel/pull/11177 ))
- bump `@vercel/nft@0.26 .4`
([#11155 ](https://github.com/vercel/vercel/pull/11155 ))
- fix: missing experimental field
([#11184 ](https://github.com/vercel/vercel/pull/11184 ))
## @vercel/node@3.0.20
### Patch Changes
- bump `@vercel/nft@0.26 .4`
([#11155 ](https://github.com/vercel/vercel/pull/11155 ))
## @vercel/redwood@2.0.8
### Patch Changes
- bump `@vercel/nft@0.26 .4`
([#11155 ](https://github.com/vercel/vercel/pull/11155 ))
## @vercel/remix-builder@2.0.20
### Patch Changes
- Don't install Remix fork when not using split configuration
([#11152 ](https://github.com/vercel/vercel/pull/11152 ))
- Add `serverBundles` post-build sanity check and fallback
([#11153 ](https://github.com/vercel/vercel/pull/11153 ))
- bump `@vercel/nft@0.26 .4`
([#11155 ](https://github.com/vercel/vercel/pull/11155 ))
- Update `@remix-run/dev` fork to v2.6.0
([#11162 ](https://github.com/vercel/vercel/pull/11162 ))
- Update `@remix-run/dev` fork to v2.7.0
([#11180 ](https://github.com/vercel/vercel/pull/11180 ))
- Update `@remix-run/dev` fork to v2.7.2
([#11186 ](https://github.com/vercel/vercel/pull/11186 ))
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-02-22 10:08:24 -06:00
JJ Kasper
d17abf463a
Update experimental bundle flag ( #11187 )
...
Makes bailing from grouping logic more explicit
2024-02-21 20:53:16 -08:00
Vercel Release Bot
440ef3ba98
[remix] Update @remix-run/dev to v2.7.2 ( #11186 )
2024-02-21 16:27:49 -08:00
Wyatt Johnson
38c5e93625
Add immutability modifiers to types ( #11182 )
...
This doesn't change any functionality, and only replaces some mutable types (like `Map`, `Set`, and `Array`) with their immutable versions (like `ReadonlyMap`, `ReadonlySet`, and `ReadonlyArray`). This can help keep functions as pure as possible and improves the readability of some of the involved functions.
2024-02-21 17:50:56 +00:00
JJ Kasper
1fee87e76f
fix: missing experimental field ( #11184 )
...
Ensures we pass this through properly when the flag is enabled
2024-02-20 23:11:38 -08:00
JJ Kasper
ea0e9aeaec
[next] Add flag for experimental grouping ( #11177 )
...
Just adds a flag for experimenting
2024-02-20 18:03:03 -08:00
Vercel Release Bot
7910f2f307
[remix] Update @remix-run/dev to v2.7.0 ( #11180 )
...
This auto-generated PR updates `@remix-run/dev` to version 2.7.0.
2024-02-20 17:34:45 -08:00
Trek Glowacki
670441620f
[tests] Add hydrogen-2023 to static-build test fixtures ( #11163 )
...
Add hydrogen-2023 to static-build test fixtures
2024-02-15 14:59:00 -06:00
Vercel Release Bot
bfc01fd98f
[remix] Update @remix-run/dev to v2.6.0 ( #11162 )
...
This auto-generated PR updates `@remix-run/dev` to version 2.6.0.
2024-02-15 19:32:15 +00:00
Trek Glowacki
6d74b9b61a
[tests] Add astro to dependabot ( #11161 )
...
Add astro to dependabot
2024-02-15 12:41:02 -06:00
dependabot[bot]
9483d49f72
[framework-fixtures]: Bump the core group in /packages/static-build/test/fixtures/angular-v17 with 15 updates ( #11160 )
...
Bumps the core group in /packages/static-build/test/fixtures/angular-v17 with 15 updates:
| Package | From | To |
| --- | --- | --- |
| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations ) | `17.0.7` | `17.2.1` |
| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common ) | `17.0.7` | `17.2.1` |
| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler ) | `17.0.7` | `17.2.1` |
| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core ) | `17.0.7` | `17.2.1` |
| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms ) | `17.0.7` | `17.2.1` |
| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser ) | `17.0.7` | `17.2.1` |
| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic ) | `17.0.7` | `17.2.1` |
| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router ) | `17.0.7` | `17.2.1` |
| [@angular-devkit/build-angular](https://github.com/angular/angular-cli ) | `17.0.7` | `17.2.0` |
| [@angular/cli](https://github.com/angular/angular-cli ) | `17.0.7` | `17.2.0` |
| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli ) | `17.0.7` | `17.2.1` |
| [@angular-devkit/architect](https://github.com/angular/angular-cli ) | `0.1700.7` | `0.1702.0` |
| [@angular-devkit/build-webpack](https://github.com/angular/angular-cli ) | `0.1700.7` | `0.1702.0` |
| [@angular-devkit/core](https://github.com/angular/angular-cli ) | `17.0.7` | `17.2.0` |
| [@angular-devkit/schematics](https://github.com/angular/angular-cli ) | `17.0.7` | `17.2.0` |
Updates `@angular/animations` from 17.0.7 to 17.2.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases "><code>@angular/animations</code>'s releases</a>.</em></p>
<blockquote>
<h2>v17.2.1</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.2.1 (2024-02-14)</h1>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="7234824228 "><img src="https://img.shields.io/badge/7234824228-fix-green " alt="fix - 7234824228" /></a></td>
<td>fix broken version detection condition (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54443 ">#54443</a>)</td>
</tr>
</tbody>
</table>
<h2>v17.2.0</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.2.0 (2024-02-14)</h1>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="03c3b3eb79 "><img src="https://img.shields.io/badge/03c3b3eb79-feat-blue " alt="feat - 03c3b3eb79" /></a></td>
<td>add Netlify image loader (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54311 ">#54311</a>)</td>
</tr>
<tr>
<td><a href="f5c520b836 "><img src="https://img.shields.io/badge/f5c520b836-feat-blue " alt="feat - f5c520b836" /></a></td>
<td>add placeholder to NgOptimizedImage (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/53783 ">#53783</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="47e6e84101 "><img src="https://img.shields.io/badge/47e6e84101-feat-blue " alt="feat - 47e6e84101" /></a></td>
<td>Add a TSConfig option <code>useTemplatePipeline</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54057 ">#54057</a>)</td>
</tr>
<tr>
<td><a href="66e940aebf "><img src="https://img.shields.io/badge/66e940aebf-feat-blue " alt="feat - 66e940aebf" /></a></td>
<td>scope selectors in <a href="https://github.com/starting-style "><code>@starting-style</code></a> (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/53943 ">#53943</a>)</td>
</tr>
<tr>
<td><a href="7b4d275f49 "><img src="https://img.shields.io/badge/7b4d275f49-fix-green " alt="fix - 7b4d275f49" /></a></td>
<td>Fix the template pipeline option (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54148 ">#54148</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="7e861c640e "><img src="https://img.shields.io/badge/7e861c640e-feat-blue " alt="feat - 7e861c640e" /></a></td>
<td>generate extra imports for component local dependencies in local mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/53543 ">#53543</a>)</td>
</tr>
<tr>
<td><a href="3263df23f2 "><img src="https://img.shields.io/badge/3263df23f2-feat-blue " alt="feat - 3263df23f2" /></a></td>
<td>generate global imports in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/53543 ">#53543</a>)</td>
</tr>
<tr>
<td><a href="b774e22d8e "><img src="https://img.shields.io/badge/b774e22d8e-feat-blue " alt="feat - b774e22d8e" /></a></td>
<td>make it configurable to generate alias reexports (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/53937 ">#53937</a>)</td>
</tr>
<tr>
<td><a href="3e1384048e "><img src="https://img.shields.io/badge/3e1384048e-feat-blue " alt="feat - 3e1384048e" /></a></td>
<td>support host directives for local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/53877 ">#53877</a>)</td>
</tr>
<tr>
<td><a href="a592904c69 "><img src="https://img.shields.io/badge/a592904c69-fix-green " alt="fix - a592904c69" /></a></td>
<td>allow custom/duplicate decorators for <code>@Injectable</code> classes in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54139 ">#54139</a>)</td>
</tr>
<tr>
<td><a href="4b1d948b36 "><img src="https://img.shields.io/badge/4b1d948b36-fix-green " alt="fix - 4b1d948b36" /></a></td>
<td>consider the case of duplicate Angular decorators in local compilation diagnostics (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54139 ">#54139</a>)</td>
</tr>
<tr>
<td><a href="96bcf4fb12 "><img src="https://img.shields.io/badge/96bcf4fb12-fix-green " alt="fix - 96bcf4fb12" /></a></td>
<td>forbid custom/duplicate decorator when option <code>forbidOrphanComponents</code> is set (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54139 ">#54139</a>)</td>
</tr>
<tr>
<td><a href="64fa5715c6 "><img src="https://img.shields.io/badge/64fa5715c6-fix-green " alt="fix - 64fa5715c6" /></a></td>
<td>generating extra imports in local compilation mode when cycle is introduced (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/53543 ">#53543</a>)</td>
</tr>
<tr>
<td><a href="6c8b09468a "><img src="https://img.shields.io/badge/6c8b09468a-fix-green " alt="fix - 6c8b09468a" /></a></td>
<td>highlight the unresolved element in the <a href="https://github.com/Component "><code>@Component</code></a>.styles array for the error LOCAL_COMPILATION_UNRESOLVED_CONST (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="0970129e20 "><img src="https://img.shields.io/badge/0970129e20-fix-green " alt="fix - 0970129e20" /></a></td>
<td>show proper error for custom decorators in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/53983 ">#53983</a>)</td>
</tr>
<tr>
<td><a href="f39cb06418 "><img src="https://img.shields.io/badge/f39cb06418-fix-green " alt="fix - f39cb06418" /></a></td>
<td>show specific error for unresolved <a href="https://github.com/Directive "><code>@Directive</code></a>.exportAs in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="f3851b5945 "><img src="https://img.shields.io/badge/f3851b5945-fix-green " alt="fix - f3851b5945" /></a></td>
<td>show specific error for unresolved <a href="https://github.com/HostBinding "><code>@HostBinding</code></a>'s argument in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="39ddd884e8 "><img src="https://img.shields.io/badge/39ddd884e8-fix-green " alt="fix - 39ddd884e8" /></a></td>
<td>show specific error for unresolved <a href="https://github.com/HostListener "><code>@HostListener</code></a>'s event name in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="5d633240fd "><img src="https://img.shields.io/badge/5d633240fd-fix-green " alt="fix - 5d633240fd" /></a></td>
<td>show the correct message for the error LOCAL_COMPILATION_UNRESOLVED_CONST when an unresolved symbol used for <a href="https://github.com/Component "><code>@Component</code></a>.styles (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="58b8a232d6 "><img src="https://img.shields.io/badge/58b8a232d6-fix-green " alt="fix - 58b8a232d6" /></a></td>
<td>support jumping to definitions of signal-based inputs (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54053 ">#54053</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="702ab28b4c "><img src="https://img.shields.io/badge/702ab28b4c-feat-blue " alt="feat - 702ab28b4c" /></a></td>
<td>add support for model inputs (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54252 ">#54252</a>)</td>
</tr>
<tr>
<td><a href="e95ef2cbc6 "><img src="https://img.shields.io/badge/e95ef2cbc6-feat-blue " alt="feat - e95ef2cbc6" /></a></td>
<td>expose queries as signals (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54283 ">#54283</a>)</td>
</tr>
<tr>
<td><a href="656bc282e3 "><img src="https://img.shields.io/badge/656bc282e3-fix-green " alt="fix - 656bc282e3" /></a></td>
<td>add toString implementation to signals (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54002 ">#54002</a>)</td>
</tr>
<tr>
<td><a href="62b87b4551 "><img src="https://img.shields.io/badge/62b87b4551-fix-green " alt="fix - 62b87b4551" /></a></td>
<td>do not crash for signal query that does not have any matches (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54353 ">#54353</a>)</td>
</tr>
<tr>
<td><a href="4b96f370ee "><img src="https://img.shields.io/badge/4b96f370ee-fix-green " alt="fix - 4b96f370ee" /></a></td>
<td>expose model signal subcribe for type checking purposes (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54357 ">#54357</a>)</td>
</tr>
<tr>
<td><a href="744cb1e561 "><img src="https://img.shields.io/badge/744cb1e561-fix-green " alt="fix - 744cb1e561" /></a></td>
<td>return the same children query results if there are no changes (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54392 ">#54392</a>)</td>
</tr>
<tr>
<td><a href="6d00115bf4 "><img src="https://img.shields.io/badge/6d00115bf4-fix-green " alt="fix - 6d00115bf4" /></a></td>
<td>show placeholder block on the server with immediate trigger (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/54394 ">#54394</a>)</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md "><code>@angular/animations</code>'s changelog</a>.</em></p>
<blockquote>
<h1>17.2.1 (2024-02-14)</h1>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="7234824228 ">7234824228</a></td>
<td>fix</td>
<td>fix broken version detection condition (<a href="https://redirect.github.com/angular/angular/pull/54443 ">#54443</a>)</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.2.0 (2024-02-14)</h1>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="03c3b3eb79 ">03c3b3eb79</a></td>
<td>feat</td>
<td>add Netlify image loader (<a href="https://redirect.github.com/angular/angular/pull/54311 ">#54311</a>)</td>
</tr>
<tr>
<td><a href="f5c520b836 ">f5c520b836</a></td>
<td>feat</td>
<td>add placeholder to NgOptimizedImage (<a href="https://redirect.github.com/angular/angular/pull/53783 ">#53783</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="47e6e84101 ">47e6e84101</a></td>
<td>feat</td>
<td>Add a TSConfig option <code>useTemplatePipeline</code> (<a href="https://redirect.github.com/angular/angular/pull/54057 ">#54057</a>)</td>
</tr>
<tr>
<td><a href="66e940aebf ">66e940aebf</a></td>
<td>feat</td>
<td>scope selectors in <a href="https://github.com/starting-style "><code>@starting-style</code></a> (<a href="https://redirect.github.com/angular/angular/pull/53943 ">#53943</a>)</td>
</tr>
<tr>
<td><a href="7b4d275f49 ">7b4d275f49</a></td>
<td>fix</td>
<td>Fix the template pipeline option (<a href="https://redirect.github.com/angular/angular/pull/54148 ">#54148</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="7e861c640e ">7e861c640e</a></td>
<td>feat</td>
<td>generate extra imports for component local dependencies in local mode (<a href="https://redirect.github.com/angular/angular/pull/53543 ">#53543</a>)</td>
</tr>
<tr>
<td><a href="3263df23f2 ">3263df23f2</a></td>
<td>feat</td>
<td>generate global imports in local compilation mode (<a href="https://redirect.github.com/angular/angular/pull/53543 ">#53543</a>)</td>
</tr>
<tr>
<td><a href="b774e22d8e ">b774e22d8e</a></td>
<td>feat</td>
<td>make it configurable to generate alias reexports (<a href="https://redirect.github.com/angular/angular/pull/53937 ">#53937</a>)</td>
</tr>
<tr>
<td><a href="3e1384048e ">3e1384048e</a></td>
<td>feat</td>
<td>support host directives for local compilation mode (<a href="https://redirect.github.com/angular/angular/pull/53877 ">#53877</a>)</td>
</tr>
<tr>
<td><a href="a592904c69 ">a592904c69</a></td>
<td>fix</td>
<td>allow custom/duplicate decorators for <code>@Injectable</code> classes in local compilation mode (<a href="https://redirect.github.com/angular/angular/pull/54139 ">#54139</a>)</td>
</tr>
<tr>
<td><a href="4b1d948b36 ">4b1d948b36</a></td>
<td>fix</td>
<td>consider the case of duplicate Angular decorators in local compilation diagnostics (<a href="https://redirect.github.com/angular/angular/pull/54139 ">#54139</a>)</td>
</tr>
<tr>
<td><a href="96bcf4fb12 ">96bcf4fb12</a></td>
<td>fix</td>
<td>forbid custom/duplicate decorator when option <code>forbidOrphanComponents</code> is set (<a href="https://redirect.github.com/angular/angular/pull/54139 ">#54139</a>)</td>
</tr>
<tr>
<td><a href="64fa5715c6 ">64fa5715c6</a></td>
<td>fix</td>
<td>generating extra imports in local compilation mode when cycle is introduced (<a href="https://redirect.github.com/angular/angular/pull/53543 ">#53543</a>)</td>
</tr>
<tr>
<td><a href="6c8b09468a ">6c8b09468a</a></td>
<td>fix</td>
<td>highlight the unresolved element in the <a href="https://github.com/Component "><code>@Component</code></a>.styles array for the error LOCAL_COMPILATION_UNRESOLVED_CONST (<a href="https://redirect.github.com/angular/angular/pull/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="0970129e20 ">0970129e20</a></td>
<td>fix</td>
<td>show proper error for custom decorators in local compilation mode (<a href="https://redirect.github.com/angular/angular/pull/53983 ">#53983</a>)</td>
</tr>
<tr>
<td><a href="f39cb06418 ">f39cb06418</a></td>
<td>fix</td>
<td>show specific error for unresolved <a href="https://github.com/Directive "><code>@Directive</code></a>.exportAs in local compilation mode (<a href="https://redirect.github.com/angular/angular/pull/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="f3851b5945 ">f3851b5945</a></td>
<td>fix</td>
<td>show specific error for unresolved <a href="https://github.com/HostBinding "><code>@HostBinding</code></a>'s argument in local compilation mode (<a href="https://redirect.github.com/angular/angular/pull/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="39ddd884e8 ">39ddd884e8</a></td>
<td>fix</td>
<td>show specific error for unresolved <a href="https://github.com/HostListener "><code>@HostListener</code></a>'s event name in local compilation mode (<a href="https://redirect.github.com/angular/angular/pull/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="5d633240fd ">5d633240fd</a></td>
<td>fix</td>
<td>show the correct message for the error LOCAL_COMPILATION_UNRESOLVED_CONST when an unresolved symbol used for <a href="https://github.com/Component "><code>@Component</code></a>.styles (<a href="https://redirect.github.com/angular/angular/pull/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="58b8a232d6 ">58b8a232d6</a></td>
<td>fix</td>
<td>support jumping to definitions of signal-based inputs (<a href="https://redirect.github.com/angular/angular/pull/54053 ">#54053</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="702ab28b4c ">702ab28b4c</a></td>
<td>feat</td>
<td>add support for model inputs (<a href="https://redirect.github.com/angular/angular/pull/54252 ">#54252</a>)</td>
</tr>
<tr>
<td><a href="e95ef2cbc6 ">e95ef2cbc6</a></td>
<td>feat</td>
<td>expose queries as signals (<a href="https://redirect.github.com/angular/angular/pull/54283 ">#54283</a>)</td>
</tr>
<tr>
<td><a href="656bc282e3 ">656bc282e3</a></td>
<td>fix</td>
<td>add toString implementation to signals (<a href="https://redirect.github.com/angular/angular/pull/54002 ">#54002</a>)</td>
</tr>
<tr>
<td><a href="62b87b4551 ">62b87b4551</a></td>
<td>fix</td>
<td>do not crash for signal query that does not have any matches (<a href="https://redirect.github.com/angular/angular/pull/54353 ">#54353</a>)</td>
</tr>
<tr>
<td><a href="4b96f370ee ">4b96f370ee</a></td>
<td>fix</td>
<td>expose model signal subcribe for type checking purposes (<a href="https://redirect.github.com/angular/angular/pull/54357 ">#54357</a>)</td>
</tr>
<tr>
<td><a href="744cb1e561 ">744cb1e561</a></td>
<td>fix</td>
<td>return the same children query results if there are no changes (<a href="https://redirect.github.com/angular/angular/pull/54392 ">#54392</a>)</td>
</tr>
<tr>
<td><a href="6d00115bf4 ">6d00115bf4</a></td>
<td>fix</td>
<td>show placeholder block on the server with immediate trigger (<a href="https://redirect.github.com/angular/angular/pull/54394 ">#54394</a>)</td>
</tr>
</tbody>
</table>
<h3>http</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="bbbe477f47 "><code>bbbe477</code></a> refactor: migrate animations to prettier formatting (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/53977 ">#53977</a>)</li>
<li><a href="5ae85e4849 "><code>5ae85e4</code></a> refactor(core): node removal notifies scheduler only when animations are enab...</li>
<li><a href="91f250dab7 "><code>91f250d</code></a> build: configure cross-pkg resolution for api extraction (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/52499 ">#52499</a>)</li>
<li><a href="c4de4e1f89 "><code>c4de4e1</code></a> refactor(docs-infra): build adev application using local generated assets (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/5 ">#5</a>...</li>
<li><a href="d7e7409e81 "><code>d7e7409</code></a> refactor(animations): drop <code>convertToMap</code> & <code>copyStyles</code> and use native funct...</li>
<li><a href="d28ce0a4cf "><code>d28ce0a</code></a> refactor(animations): use a spread operator instead of custom <code>copyObj</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/52441 ">#52441</a>)</li>
<li><a href="6a347d36eb "><code>6a347d3</code></a> refactor(animations): use a spread operator to convert an iterable to an arra...</li>
<li><a href="635c3b4fa8 "><code>635c3b4</code></a> refactor(animations): use existing helper methods. (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/52441 ">#52441</a>)</li>
<li><a href="5ee11a74ec "><code>5ee11a7</code></a> fix(animations): prevent the AsyncAnimationRenderer from calling the delegate...</li>
<li><a href="a02a745a4a "><code>a02a745</code></a> fix(animations): remove <code>finish</code> listener once player is destroyed (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/51136 ">#51136</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/angular/angular/commits/17.2.1/packages/animations ">compare view</a></li>
</ul>
</details>
<br />
Updates `@angular/common` from 17.0.7 to 17.2.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases "><code>@angular/common</code>'s releases</a>.</em></p>
<blockquote>
<h2>v17.2.1</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.2.1 (2024-02-14)</h1>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="7234824228 "><img src="https://img.shields.io/badge/7234824228-fix-green " alt="fix - 7234824228" /></a></td>
<td>fix broken version detection condition (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54443 ">#54443</a>)</td>
</tr>
</tbody>
</table>
<h2>v17.2.0</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.2.0 (2024-02-14)</h1>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="03c3b3eb79 "><img src="https://img.shields.io/badge/03c3b3eb79-feat-blue " alt="feat - 03c3b3eb79" /></a></td>
<td>add Netlify image loader (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54311 ">#54311</a>)</td>
</tr>
<tr>
<td><a href="f5c520b836 "><img src="https://img.shields.io/badge/f5c520b836-feat-blue " alt="feat - f5c520b836" /></a></td>
<td>add placeholder to NgOptimizedImage (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/53783 ">#53783</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="47e6e84101 "><img src="https://img.shields.io/badge/47e6e84101-feat-blue " alt="feat - 47e6e84101" /></a></td>
<td>Add a TSConfig option <code>useTemplatePipeline</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54057 ">#54057</a>)</td>
</tr>
<tr>
<td><a href="66e940aebf "><img src="https://img.shields.io/badge/66e940aebf-feat-blue " alt="feat - 66e940aebf" /></a></td>
<td>scope selectors in <a href="https://github.com/starting-style "><code>@starting-style</code></a> (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/53943 ">#53943</a>)</td>
</tr>
<tr>
<td><a href="7b4d275f49 "><img src="https://img.shields.io/badge/7b4d275f49-fix-green " alt="fix - 7b4d275f49" /></a></td>
<td>Fix the template pipeline option (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54148 ">#54148</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="7e861c640e "><img src="https://img.shields.io/badge/7e861c640e-feat-blue " alt="feat - 7e861c640e" /></a></td>
<td>generate extra imports for component local dependencies in local mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/53543 ">#53543</a>)</td>
</tr>
<tr>
<td><a href="3263df23f2 "><img src="https://img.shields.io/badge/3263df23f2-feat-blue " alt="feat - 3263df23f2" /></a></td>
<td>generate global imports in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/53543 ">#53543</a>)</td>
</tr>
<tr>
<td><a href="b774e22d8e "><img src="https://img.shields.io/badge/b774e22d8e-feat-blue " alt="feat - b774e22d8e" /></a></td>
<td>make it configurable to generate alias reexports (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/53937 ">#53937</a>)</td>
</tr>
<tr>
<td><a href="3e1384048e "><img src="https://img.shields.io/badge/3e1384048e-feat-blue " alt="feat - 3e1384048e" /></a></td>
<td>support host directives for local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/53877 ">#53877</a>)</td>
</tr>
<tr>
<td><a href="a592904c69 "><img src="https://img.shields.io/badge/a592904c69-fix-green " alt="fix - a592904c69" /></a></td>
<td>allow custom/duplicate decorators for <code>@Injectable</code> classes in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54139 ">#54139</a>)</td>
</tr>
<tr>
<td><a href="4b1d948b36 "><img src="https://img.shields.io/badge/4b1d948b36-fix-green " alt="fix - 4b1d948b36" /></a></td>
<td>consider the case of duplicate Angular decorators in local compilation diagnostics (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54139 ">#54139</a>)</td>
</tr>
<tr>
<td><a href="96bcf4fb12 "><img src="https://img.shields.io/badge/96bcf4fb12-fix-green " alt="fix - 96bcf4fb12" /></a></td>
<td>forbid custom/duplicate decorator when option <code>forbidOrphanComponents</code> is set (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54139 ">#54139</a>)</td>
</tr>
<tr>
<td><a href="64fa5715c6 "><img src="https://img.shields.io/badge/64fa5715c6-fix-green " alt="fix - 64fa5715c6" /></a></td>
<td>generating extra imports in local compilation mode when cycle is introduced (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/53543 ">#53543</a>)</td>
</tr>
<tr>
<td><a href="6c8b09468a "><img src="https://img.shields.io/badge/6c8b09468a-fix-green " alt="fix - 6c8b09468a" /></a></td>
<td>highlight the unresolved element in the <a href="https://github.com/Component "><code>@Component</code></a>.styles array for the error LOCAL_COMPILATION_UNRESOLVED_CONST (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="0970129e20 "><img src="https://img.shields.io/badge/0970129e20-fix-green " alt="fix - 0970129e20" /></a></td>
<td>show proper error for custom decorators in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/53983 ">#53983</a>)</td>
</tr>
<tr>
<td><a href="f39cb06418 "><img src="https://img.shields.io/badge/f39cb06418-fix-green " alt="fix - f39cb06418" /></a></td>
<td>show specific error for unresolved <a href="https://github.com/Directive "><code>@Directive</code></a>.exportAs in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="f3851b5945 "><img src="https://img.shields.io/badge/f3851b5945-fix-green " alt="fix - f3851b5945" /></a></td>
<td>show specific error for unresolved <a href="https://github.com/HostBinding "><code>@HostBinding</code></a>'s argument in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="39ddd884e8 "><img src="https://img.shields.io/badge/39ddd884e8-fix-green " alt="fix - 39ddd884e8" /></a></td>
<td>show specific error for unresolved <a href="https://github.com/HostListener "><code>@HostListener</code></a>'s event name in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="5d633240fd "><img src="https://img.shields.io/badge/5d633240fd-fix-green " alt="fix - 5d633240fd" /></a></td>
<td>show the correct message for the error LOCAL_COMPILATION_UNRESOLVED_CONST when an unresolved symbol used for <a href="https://github.com/Component "><code>@Component</code></a>.styles (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="58b8a232d6 "><img src="https://img.shields.io/badge/58b8a232d6-fix-green " alt="fix - 58b8a232d6" /></a></td>
<td>support jumping to definitions of signal-based inputs (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54053 ">#54053</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="702ab28b4c "><img src="https://img.shields.io/badge/702ab28b4c-feat-blue " alt="feat - 702ab28b4c" /></a></td>
<td>add support for model inputs (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54252 ">#54252</a>)</td>
</tr>
<tr>
<td><a href="e95ef2cbc6 "><img src="https://img.shields.io/badge/e95ef2cbc6-feat-blue " alt="feat - e95ef2cbc6" /></a></td>
<td>expose queries as signals (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54283 ">#54283</a>)</td>
</tr>
<tr>
<td><a href="656bc282e3 "><img src="https://img.shields.io/badge/656bc282e3-fix-green " alt="fix - 656bc282e3" /></a></td>
<td>add toString implementation to signals (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54002 ">#54002</a>)</td>
</tr>
<tr>
<td><a href="62b87b4551 "><img src="https://img.shields.io/badge/62b87b4551-fix-green " alt="fix - 62b87b4551" /></a></td>
<td>do not crash for signal query that does not have any matches (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54353 ">#54353</a>)</td>
</tr>
<tr>
<td><a href="4b96f370ee "><img src="https://img.shields.io/badge/4b96f370ee-fix-green " alt="fix - 4b96f370ee" /></a></td>
<td>expose model signal subcribe for type checking purposes (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54357 ">#54357</a>)</td>
</tr>
<tr>
<td><a href="744cb1e561 "><img src="https://img.shields.io/badge/744cb1e561-fix-green " alt="fix - 744cb1e561" /></a></td>
<td>return the same children query results if there are no changes (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54392 ">#54392</a>)</td>
</tr>
<tr>
<td><a href="6d00115bf4 "><img src="https://img.shields.io/badge/6d00115bf4-fix-green " alt="fix - 6d00115bf4" /></a></td>
<td>show placeholder block on the server with immediate trigger (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54394 ">#54394</a>)</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md "><code>@angular/common</code>'s changelog</a>.</em></p>
<blockquote>
<h1>17.2.1 (2024-02-14)</h1>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="7234824228 ">7234824228</a></td>
<td>fix</td>
<td>fix broken version detection condition (<a href="https://redirect.github.com/angular/angular/pull/54443 ">#54443</a>)</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.2.0 (2024-02-14)</h1>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="03c3b3eb79 ">03c3b3eb79</a></td>
<td>feat</td>
<td>add Netlify image loader (<a href="https://redirect.github.com/angular/angular/pull/54311 ">#54311</a>)</td>
</tr>
<tr>
<td><a href="f5c520b836 ">f5c520b836</a></td>
<td>feat</td>
<td>add placeholder to NgOptimizedImage (<a href="https://redirect.github.com/angular/angular/pull/53783 ">#53783</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="47e6e84101 ">47e6e84101</a></td>
<td>feat</td>
<td>Add a TSConfig option <code>useTemplatePipeline</code> (<a href="https://redirect.github.com/angular/angular/pull/54057 ">#54057</a>)</td>
</tr>
<tr>
<td><a href="66e940aebf ">66e940aebf</a></td>
<td>feat</td>
<td>scope selectors in <a href="https://github.com/starting-style "><code>@starting-style</code></a> (<a href="https://redirect.github.com/angular/angular/pull/53943 ">#53943</a>)</td>
</tr>
<tr>
<td><a href="7b4d275f49 ">7b4d275f49</a></td>
<td>fix</td>
<td>Fix the template pipeline option (<a href="https://redirect.github.com/angular/angular/pull/54148 ">#54148</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="7e861c640e ">7e861c640e</a></td>
<td>feat</td>
<td>generate extra imports for component local dependencies in local mode (<a href="https://redirect.github.com/angular/angular/pull/53543 ">#53543</a>)</td>
</tr>
<tr>
<td><a href="3263df23f2 ">3263df23f2</a></td>
<td>feat</td>
<td>generate global imports in local compilation mode (<a href="https://redirect.github.com/angular/angular/pull/53543 ">#53543</a>)</td>
</tr>
<tr>
<td><a href="b774e22d8e ">b774e22d8e</a></td>
<td>feat</td>
<td>make it configurable to generate alias reexports (<a href="https://redirect.github.com/angular/angular/pull/53937 ">#53937</a>)</td>
</tr>
<tr>
<td><a href="3e1384048e ">3e1384048e</a></td>
<td>feat</td>
<td>support host directives for local compilation mode (<a href="https://redirect.github.com/angular/angular/pull/53877 ">#53877</a>)</td>
</tr>
<tr>
<td><a href="a592904c69 ">a592904c69</a></td>
<td>fix</td>
<td>allow custom/duplicate decorators for <code>@Injectable</code> classes in local compilation mode (<a href="https://redirect.github.com/angular/angular/pull/54139 ">#54139</a>)</td>
</tr>
<tr>
<td><a href="4b1d948b36 ">4b1d948b36</a></td>
<td>fix</td>
<td>consider the case of duplicate Angular decorators in local compilation diagnostics (<a href="https://redirect.github.com/angular/angular/pull/54139 ">#54139</a>)</td>
</tr>
<tr>
<td><a href="96bcf4fb12 ">96bcf4fb12</a></td>
<td>fix</td>
<td>forbid custom/duplicate decorator when option <code>forbidOrphanComponents</code> is set (<a href="https://redirect.github.com/angular/angular/pull/54139 ">#54139</a>)</td>
</tr>
<tr>
<td><a href="64fa5715c6 ">64fa5715c6</a></td>
<td>fix</td>
<td>generating extra imports in local compilation mode when cycle is introduced (<a href="https://redirect.github.com/angular/angular/pull/53543 ">#53543</a>)</td>
</tr>
<tr>
<td><a href="6c8b09468a ">6c8b09468a</a></td>
<td>fix</td>
<td>highlight the unresolved element in the <a href="https://github.com/Component "><code>@Component</code></a>.styles array for the error LOCAL_COMPILATION_UNRESOLVED_CONST (<a href="https://redirect.github.com/angular/angular/pull/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="0970129e20 ">0970129e20</a></td>
<td>fix</td>
<td>show proper error for custom decorators in local compilation mode (<a href="https://redirect.github.com/angular/angular/pull/53983 ">#53983</a>)</td>
</tr>
<tr>
<td><a href="f39cb06418 ">f39cb06418</a></td>
<td>fix</td>
<td>show specific error for unresolved <a href="https://github.com/Directive "><code>@Directive</code></a>.exportAs in local compilation mode (<a href="https://redirect.github.com/angular/angular/pull/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="f3851b5945 ">f3851b5945</a></td>
<td>fix</td>
<td>show specific error for unresolved <a href="https://github.com/HostBinding "><code>@HostBinding</code></a>'s argument in local compilation mode (<a href="https://redirect.github.com/angular/angular/pull/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="39ddd884e8 ">39ddd884e8</a></td>
<td>fix</td>
<td>show specific error for unresolved <a href="https://github.com/HostListener "><code>@HostListener</code></a>'s event name in local compilation mode (<a href="https://redirect.github.com/angular/angular/pull/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="5d633240fd ">5d633240fd</a></td>
<td>fix</td>
<td>show the correct message for the error LOCAL_COMPILATION_UNRESOLVED_CONST when an unresolved symbol used for <a href="https://github.com/Component "><code>@Component</code></a>.styles (<a href="https://redirect.github.com/angular/angular/pull/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="58b8a232d6 ">58b8a232d6</a></td>
<td>fix</td>
<td>support jumping to definitions of signal-based inputs (<a href="https://redirect.github.com/angular/angular/pull/54053 ">#54053</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="702ab28b4c ">702ab28b4c</a></td>
<td>feat</td>
<td>add support for model inputs (<a href="https://redirect.github.com/angular/angular/pull/54252 ">#54252</a>)</td>
</tr>
<tr>
<td><a href="e95ef2cbc6 ">e95ef2cbc6</a></td>
<td>feat</td>
<td>expose queries as signals (<a href="https://redirect.github.com/angular/angular/pull/54283 ">#54283</a>)</td>
</tr>
<tr>
<td><a href="656bc282e3 ">656bc282e3</a></td>
<td>fix</td>
<td>add toString implementation to signals (<a href="https://redirect.github.com/angular/angular/pull/54002 ">#54002</a>)</td>
</tr>
<tr>
<td><a href="62b87b4551 ">62b87b4551</a></td>
<td>fix</td>
<td>do not crash for signal query that does not have any matches (<a href="https://redirect.github.com/angular/angular/pull/54353 ">#54353</a>)</td>
</tr>
<tr>
<td><a href="4b96f370ee ">4b96f370ee</a></td>
<td>fix</td>
<td>expose model signal subcribe for type checking purposes (<a href="https://redirect.github.com/angular/angular/pull/54357 ">#54357</a>)</td>
</tr>
<tr>
<td><a href="744cb1e561 ">744cb1e561</a></td>
<td>fix</td>
<td>return the same children query results if there are no changes (<a href="https://redirect.github.com/angular/angular/pull/54392 ">#54392</a>)</td>
</tr>
<tr>
<td><a href="6d00115bf4 ">6d00115bf4</a></td>
<td>fix</td>
<td>show placeholder block on the server with immediate trigger (<a href="https://redirect.github.com/angular/angular/pull/54394 ">#54394</a>)</td>
</tr>
</tbody>
</table>
<h3>http</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="1c536250b6 "><code>1c53625</code></a> fix(http): Use string body to generate transfer cache key. (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54379 ">#54379</a>)</li>
<li><a href="03c3b3eb79 "><code>03c3b3e</code></a> feat(common): add Netlify image loader (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54311 ">#54311</a>)</li>
<li><a href="122213d37d "><code>122213d</code></a> fix(common): The date pipe should return ISO format for week and week-year as...</li>
<li><a href="4a44f73288 "><code>4a44f73</code></a> docs: Update docs about equality. (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54158 ">#54158</a>)</li>
<li><a href="0460a9dfaf "><code>0460a9d</code></a> refactor: migrate common to prettier formatting (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/54150 ">#54150</a>)</li>
<li><a href="f3567bbc26 "><code>f3567bb</code></a> refactor(common): simplify i18n plural and select pipe metadata (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/53939 ">#53939</a>)</li>
<li><a href="3c881acc5d "><code>3c881ac</code></a> refactor(common): simplify date pipe metadata (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/53939 ">#53939</a>)</li>
<li><a href="15c48113c2 "><code>15c4811</code></a> refactor(router): Update integration tests to cover navigation and history AP...</li>
<li><a href="f5c520b836 "><code>f5c520b</code></a> feat(common): add placeholder to NgOptimizedImage (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/53783 ">#53783</a>)</li>
<li><a href="7800a3c9f5 "><code>7800a3c</code></a> refactor(core): remove <code>InjectionToken</code> descriptions in optimized builds. (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/5 ">#5</a>...</li>
<li>Additional commits viewable in <a href="https://github.com/angular/angular/commits/17.2.1/packages/common ">compare view</a></li>
</ul>
</details>
<br />
Updates `@angular/compiler` from 17.0.7 to 17.2.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases "><code>@angular/compiler</code>'s releases</a>.</em></p>
<blockquote>
<h2>v17.2.1</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.2.1 (2024-02-14)</h1>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="7234824228 "><img src="https://img.shields.io/badge/7234824228-fix-green " alt="fix - 7234824228" /></a></td>
<td>fix broken version detection condition (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54443 ">#54443</a>)</td>
</tr>
</tbody>
</table>
<h2>v17.2.0</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.2.0 (2024-02-14)</h1>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="03c3b3eb79 "><img src="https://img.shields.io/badge/03c3b3eb79-feat-blue " alt="feat - 03c3b3eb79" /></a></td>
<td>add Netlify image loader (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54311 ">#54311</a>)</td>
</tr>
<tr>
<td><a href="f5c520b836 "><img src="https://img.shields.io/badge/f5c520b836-feat-blue " alt="feat - f5c520b836" /></a></td>
<td>add placeholder to NgOptimizedImage (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/53783 ">#53783</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="47e6e84101 "><img src="https://img.shields.io/badge/47e6e84101-feat-blue " alt="feat - 47e6e84101" /></a></td>
<td>Add a TSConfig option <code>useTemplatePipeline</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54057 ">#54057</a>)</td>
</tr>
<tr>
<td><a href="66e940aebf "><img src="https://img.shields.io/badge/66e940aebf-feat-blue " alt="feat - 66e940aebf" /></a></td>
<td>scope selectors in <a href="https://github.com/starting-style "><code>@starting-style</code></a> (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/53943 ">#53943</a>)</td>
</tr>
<tr>
<td><a href="7b4d275f49 "><img src="https://img.shields.io/badge/7b4d275f49-fix-green " alt="fix - 7b4d275f49" /></a></td>
<td>Fix the template pipeline option (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54148 ">#54148</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="7e861c640e "><img src="https://img.shields.io/badge/7e861c640e-feat-blue " alt="feat - 7e861c640e" /></a></td>
<td>generate extra imports for component local dependencies in local mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/53543 ">#53543</a>)</td>
</tr>
<tr>
<td><a href="3263df23f2 "><img src="https://img.shields.io/badge/3263df23f2-feat-blue " alt="feat - 3263df23f2" /></a></td>
<td>generate global imports in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/53543 ">#53543</a>)</td>
</tr>
<tr>
<td><a href="b774e22d8e "><img src="https://img.shields.io/badge/b774e22d8e-feat-blue " alt="feat - b774e22d8e" /></a></td>
<td>make it configurable to generate alias reexports (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/53937 ">#53937</a>)</td>
</tr>
<tr>
<td><a href="3e1384048e "><img src="https://img.shields.io/badge/3e1384048e-feat-blue " alt="feat - 3e1384048e" /></a></td>
<td>support host directives for local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/53877 ">#53877</a>)</td>
</tr>
<tr>
<td><a href="a592904c69 "><img src="https://img.shields.io/badge/a592904c69-fix-green " alt="fix - a592904c69" /></a></td>
<td>allow custom/duplicate decorators for <code>@Injectable</code> classes in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54139 ">#54139</a>)</td>
</tr>
<tr>
<td><a href="4b1d948b36 "><img src="https://img.shields.io/badge/4b1d948b36-fix-green " alt="fix - 4b1d948b36" /></a></td>
<td>consider the case of duplicate Angular decorators in local compilation diagnostics (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54139 ">#54139</a>)</td>
</tr>
<tr>
<td><a href="96bcf4fb12 "><img src="https://img.shields.io/badge/96bcf4fb12-fix-green " alt="fix - 96bcf4fb12" /></a></td>
<td>forbid custom/duplicate decorator when option <code>forbidOrphanComponents</code> is set (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54139 ">#54139</a>)</td>
</tr>
<tr>
<td><a href="64fa5715c6 "><img src="https://img.shields.io/badge/64fa5715c6-fix-green " alt="fix - 64fa5715c6" /></a></td>
<td>generating extra imports in local compilation mode when cycle is introduced (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/53543 ">#53543</a>)</td>
</tr>
<tr>
<td><a href="6c8b09468a "><img src="https://img.shields.io/badge/6c8b09468a-fix-green " alt="fix - 6c8b09468a" /></a></td>
<td>highlight the unresolved element in the <a href="https://github.com/Component "><code>@Component</code></a>.styles array for the error LOCAL_COMPILATION_UNRESOLVED_CONST (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="0970129e20 "><img src="https://img.shields.io/badge/0970129e20-fix-green " alt="fix - 0970129e20" /></a></td>
<td>show proper error for custom decorators in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/53983 ">#53983</a>)</td>
</tr>
<tr>
<td><a href="f39cb06418 "><img src="https://img.shields.io/badge/f39cb06418-fix-green " alt="fix - f39cb06418" /></a></td>
<td>show specific error for unresolved <a href="https://github.com/Directive "><code>@Directive</code></a>.exportAs in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="f3851b5945 "><img src="https://img.shields.io/badge/f3851b5945-fix-green " alt="fix - f3851b5945" /></a></td>
<td>show specific error for unresolved <a href="https://github.com/HostBinding "><code>@HostBinding</code></a>'s argument in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="39ddd884e8 "><img src="https://img.shields.io/badge/39ddd884e8-fix-green " alt="fix - 39ddd884e8" /></a></td>
<td>show specific error for unresolved <a href="https://github.com/HostListener "><code>@HostListener</code></a>'s event name in local compilation mode (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="5d633240fd "><img src="https://img.shields.io/badge/5d633240fd-fix-green " alt="fix - 5d633240fd" /></a></td>
<td>show the correct message for the error LOCAL_COMPILATION_UNRESOLVED_CONST when an unresolved symbol used for <a href="https://github.com/Component "><code>@Component</code></a>.styles (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54230 ">#54230</a>)</td>
</tr>
<tr>
<td><a href="58b8a232d6 "><img src="https://img.shields.io/badge/58b8a232d6-fix-green " alt="fix - 58b8a232d6" /></a></td>
<td>support jumping to definitions of signal-based inputs (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54053 ">#54053</a>)</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="702ab28b4c "><img src="https://img.shields.io/badge/702ab28b4c-feat-blue " alt="feat - 702ab28b4c" /></a></td>
<td>add support for model inputs (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54252 ">#54252</a>)</td>
</tr>
<tr>
<td><a href="e95ef2cbc6 "><img src="https://img.shields.io/badge/e95ef2cbc6-feat-blue " alt="feat - e95ef2cbc6" /></a></td>
<td>expose queries as signals (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54283 ">#54283</a>)</td>
</tr>
<tr>
<td><a href="656bc282e3 "><img src="https://img.shields.io/badge/656bc282e3-fix-green " alt="fix - 656bc282e3" /></a></td>
<td>add toString implementation to signals (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54002 ">#54002</a>)</td>
</tr>
<tr>
<td><a href="62b87b4551 "><img src="https://img.shields.io/badge/62b87b4551-fix-green " alt="fix - 62b87b4551" /></a></td>
<td>do not crash for signal query that does not have any matches (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54353 ">#54353</a>)</td>
</tr>
<tr>
<td><a href="4b96f370ee "><img src="https://img.shields.io/badge/4b96f370ee-fix-green " alt="fix - 4b96f370ee" /></a></td>
<td>expose model signal subcribe for type checking purposes (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54357 ">#54357</a>)</td>
</tr>
<tr>
<td><a href="744cb1e561 "><img src="https://img.shields.io/badge/744cb1e561-fix-green " alt="fix - 744cb1e561" /></a></td>
<td>return the same children query results if there are no changes (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54392 ">#54392</a>)</td>
</tr>
<tr>
<td><a href="6d00115bf4 "><img src="https://img.shields.io/badge/6d00115bf4-fix-green " alt="fix - 6d00115bf4" /></a></td>
<td>show placeholder block on the server with immediate trigger (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/54394 ">#54394</a>)</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md "><code>@angular/compiler</code>'s changelog</a>.</em></p>
<blockquote>
<h1>17.2.1 (2024-02-14)</h1>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="7234824228 ">7234824228</a></td>
<td>fix</td>
<td>fix broken version detection condition (<a href="https://redirect.github.com/angular/angular/pull/54443 ">#54443</a>)</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>17.2.0 (2024-02-14)</h1>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="03c3b3eb79 ">03c3b3eb79</a></td>
<td>feat</td>
<td>add Netlify image loader (<a href="https://redirect.github.com/angular/angular/pull/54311 ">#54311</a>)</td>
</tr>
<tr>
<td><a href="f5c520b836 ">f5c520b836</a></td>
<td>feat</td>
<td>add placeholder to NgOptimizedImage (<a href="https://redirect.github.com/angular/angular/pull/53783 ">#53783</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="47e6e84101 ">47e6e84101</a></td>
<td>feat</td>
<td>Add a TSConfig option <code>useTemplatePipeline</code> (<a href="https://redirect.github.com/angular/angular/pull/54057 ">#54057</a>)</td>
</tr>
<tr>
<td><a href="66e940aebf ">66e940aebf</a></td>
<td>feat</td>
<td>scope selectors in <a href="https://github.com/starting-style "><code>@starting-style</code></a> (<a href="https://redirect.github.com/angular/angular/pull/53943 ">#53943</a>)</td>
</tr>
<tr>
<td><a href="7b4d275f49 ">7b4d275f49</a></td>
<td>fix</td>
<td>Fix the template pipeline option (<a href="https://redirect.github.com/angular/angular/pull/54148 ">#54148</a>)</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="7e861c640e ">7e861c640e</a></td>
<td>feat</td>
<td>generate extra imports for component local dependencies in local mode (<a href="https://redirect.github.com/angular/angular/pull/53543 ">#53543</a>)</td>
</tr>
<tr>
<td><a href="3263df23f2 ">3263df23f2</a></td>
<td>feat</td>
<td>generate global imports in local compilation mode (<a href="https://redirect.github.com/angular/angular/pull/53543 ">#53543</a>)</td>
</tr>
<tr>
<td><a href="https://github.com/angular/angular/commit/b774e22d8e384f43e9cd8f5c ...
_Description has been truncated_
2024-02-15 17:25:58 +00:00