Commit graph

26693 commits

Author SHA1 Message Date
Andrew Kushnir
cf46dfb215 ci: disable size tracking CI job in favor of integration tests size checks (#49788)
Currently we have multiple integration apps which are instrumented with the payload size checks. In addition to that, there is a separate CI job that performs similar checks. The checks in CI job are redundant, thus this commit disables a separate CI job.

PR Close #49788
2023-04-11 10:48:00 -07:00
Brandon Roberts
0b3677e149 fix(http): ensure new cache state is returned on each request (#49749)
The cache state is only used only the first server request. Restarting the server uses the cache on first request.

Subsequent requests skip the cache because the value is mutated.

This change ensures a new cache state is returned on every request.

PR Close #49749
2023-04-11 10:40:04 -07:00
Nikola Kološnjaji
8272b5b3e6 docs: Typo (#49781)
PR Close #49781
2023-04-11 10:27:51 -07:00
Paul Gschwendtner
d5e02427ea build: create script to update integration lock files (#49787)
* Adds a small script to conveniently re-generate lock files for
  integration tests.
* Updates the `.gitignore` for integration tests to ignore node
  modules. Some tests do not have a `.gitignore` (like the CLI
  boilerplate tests).

PR Close #49787
2023-04-11 10:26:43 -07:00
Paul Gschwendtner
4238ed8fb6 build: sort integration package.json dependencies (#49787)
This commits contains changes proposes by running `yarn install`
for these integration tests.

PR Close #49787
2023-04-11 10:26:43 -07:00
Paul Gschwendtner
63673ddd3f build: re-add lock files for integration tests (#49787)
The lock files for integration tests have been accidentally
removed with: 612eaca3c5

This commit re-adds them.

PR Close #49787
2023-04-11 10:26:42 -07:00
De Wildt
ee816e171f revert "fixup! fix(router): fix = not parsed in router segment name" (#47332)
This reverts commit 2279f4d4620eba083a9832ed096890b69a25ec42.

Reverting that commit based off PR feedback that this change should only affect the parsing of sergments and node encoding of the url

PR Close #47332
2023-04-11 09:16:31 -07:00
dewildt
748c33ca6b fix(router): fix = not parsed in router segment name (#47332)
fix router segment name parsing to allow segements to container an unscaped = character. Currently if you have a url like /some-site/folder=/some-file then then middle segment "folder=" will stop parsing at the = sign and register that part of the path as just "folder"

Fixes #21381

PR Close #47332
2023-04-11 09:16:31 -07:00
Andrew Kushnir
b98ecbc0ce build: update minimum supported Node version from 16.13.0 -> 16.14.0 (#49771)
This commit updates the minimum supported Node version across packages from 16.13.0 -> 16.14.0 to ensure compatibility with dependencies.

PR Close #49771
2023-04-11 07:56:31 -07:00
Andrew Kushnir
10644b1deb ci: move error pages outside of the public-api group (#49770)
Currently, a change in an error guide triggers a review for the `public-api` group (requests 3 reviewers and al least 2 must approve). This is overly aggressive and we can relax this by moving the guides under `fw-core` and extended diagnistics under `fw-compiler`. In this case 1 reviewer would be requested.

PR Close #49770
2023-04-10 13:29:57 -07:00
Andrew Kushnir
f7b4491353 docs: adding a note on comment nodes in the server-rendered output (#49765)
PR Close #49765
2023-04-10 12:24:20 -07:00
Kristiyan Kostadinov
41b7ec4eb9 refactor(migrations): log a link to the standalone migration (#49752)
Resolves an old TODO about adding a link to the standalone migration guide.

PR Close #49752
2023-04-10 09:04:02 -07:00
Andrew Kushnir
83262dc0f9 refactor(core): do not enable hydration when server response was incorrect (#49750)
This commit updates the logic to avoid enabling hydration in case server response doesn't contain hydration-related info serialized. It can happen when `provideClientHydration()` call only happens on the client, but not on the server.

PR Close #49750
2023-04-10 09:03:20 -07:00
Matthieu Riegler
893eef39fc docs: update docs about prodMode. (#49745)
Following angular#49723, this commit updates the doc to reflect the actual message prompted in the console.

PR Close #49745
2023-04-10 09:02:29 -07:00
Andrew Kushnir
fe34de47bf refactor(core): add a warning when hydration annotation is missing in server response (#49743)
This commit updates the logic to detect a situation when hydration support was enabled only on the client. If that happens, Angular produces a warning in a console with a link to the error guide.

PR Close #49743
2023-04-07 09:41:55 -07:00
Joey Perrott
8ad31d53b0 ci: remove lock-closed action (#49650)
Remove the lock-closed asction as it has been centralized within dev-infra

PR Close #49650
2023-04-06 15:37:14 -07:00
Matthieu Riegler
ed8a595408 docs: Improve previous version navigation (#49063)
In archive mode the link to the current doc will now point to same page.
If the page doesn't exist anymore, it will show a contextualized warning message.

See #46850

PR Close #49063
2023-04-06 11:07:00 -07:00
Andrew Kushnir
fe58f0a383 refactor(core): update the link in hydration stats message (#49728)
Currently, the link points to https://angular.io/guides/hydration and there are 2 issues with it: the `guides/hydration` should actually be `guide/hydration` and the guide is only available at https://next.angular.io, but not at https://angular.io. It will be available at https://angular.io once v16 final is released. For now, we can point to https://next.angular.io, so that developers testing hydration during the pre-release period can follow the link.

PR Close #49728
2023-04-06 11:00:59 -07:00
Andrew Kushnir
bf1b5b424f refactor(core): drop a reference to enableProdMode() in a console.log (#49723)
New `ng new` apps no longer generate `enableProdMode` calls when an app is created. The prod mode is enabled via CLI flags (and configuration in the `angular.json` if needed).

PR Close #49723
2023-04-06 11:00:26 -07:00
Andrew Kushnir
e08d6797ad refactor(core): skip hydration for components that use ShadowDom encapsulation (#49722)
The Domino DOM emulation library doesn't support shadow DOM. For such components we can not guarantee that client and server representations would match perfectly. To avoid hydration mismatch errors, such components are opted out of hydration.

PR Close #49722
2023-04-06 10:59:26 -07:00
Andrew Kushnir
5bf2b7da6f refactor(core): skip hydration for components that use i18n (instead of throwing an error) (#49722)
Currently, non-destructive hydration for i18n blocks is not supported (but support is coming!).
This commit updates the serialization logic from throwing an error when it comes across an i18n
block to annotating a component with a skip hydration flag.

PR Close #49722
2023-04-06 10:59:26 -07:00
Joey Perrott
ec0b44da8c docs: release notes for the v13.4.0 release 2023-04-06 11:46:19 -06:00
Dylan Hunn
726f09c01e docs: release notes for the v16.0.0-next.7 release 2023-04-05 20:00:53 -07:00
Dylan Hunn
d3beaaf3f4 release: bump the next branch to v16.1.0-next.0 2023-04-05 20:00:53 -07:00
Dylan Hunn
a7479545db docs: release notes for the v15.2.6 release 2023-04-05 19:46:21 -07:00
Matthieu Riegler
40ed152d21 refactor(animations): remove #9100 todos. (#49407)
Breaking change: On `AnimationPlayer.setPosition` the argument is now of type `number`

PR Close #49407
2023-04-05 19:33:52 -07:00
Matthieu Riegler
9bd9a11f4e refactor(platform-browser): remove deprecated BrowserTransferStateModule symbol (#49718)
The `TransferState` class was updated in v14 in a way that the `BrowserTransferStateModule` was no longer required. The `BrowserTransferStateModule` was deprecated in v14.1 and it's currently empty. This commit removes the `BrowserTransferStateModule`.

BREAKING CHANGE: The deprecated `BrowserTransferStateModule` was removed, since it's no longer needed. The `TransferState` class can be injected without providing the module. The `BrowserTransferStateModule` was empty starting from v14 and you can just remove the reference to that module from your applications.

PR Close #49718
2023-04-05 13:00:25 -07:00
Alan Agius
dc9651b3a5 refactor(platform-browser): remove empty begin and end methods from renderer (#49630)
This methods are optional and thus not needed to be defined.

PR Close #49630
2023-04-05 11:42:57 -07:00
Alan Agius
d37e21c582 refactor(animations): remove Domino specific logic (#49630)
These workarounds are no longer required following the fixes in https://github.com/angular/domino/pull/14/

PR Close #49630
2023-04-05 11:42:57 -07:00
Alan Agius
4f3abbcf93 refactor(platform-server): remove ServerRendererFactory2 and EmulatedEncapsulationServerRenderer2 (#49630)
These methods are no longer required following the fixes in https://github.com/angular/domino/pull/14/

PR Close #49630
2023-04-05 11:42:57 -07:00
Alan Agius
42f2f41f9e refactor(platform-browser): update renderer to be able to remove ServerRendererFactory2 and EmulatedEncapsulationServerRenderer2 (#49630)
This commits updates the render to able to handle the slight differences between platform-server and platform-browser.

This is needed to eventually be able to remove `ServerRendererFactory2` and `EmulatedEncapsulationServerRenderer2` from platform-server.

PR Close #49630
2023-04-05 11:42:57 -07:00
Alex Rickabaugh
a6fc8b3cee refactor(core): add explicit import for ngDevMode (#49708)
This commit adds an explicit import of the ngDevMode definition to the
files in the signal package which use it.

PR Close #49708
2023-04-05 11:10:09 -07:00
Alex Rickabaugh
a4732c6cde refactor(core): export additional symbols from the signals index (#49708)
This commit adds a few missing exports from the signals index.

PR Close #49708
2023-04-05 11:10:09 -07:00
Alex Rickabaugh
10795288b0 refactor(core): add postSignalSetFn hook for WritableSignal (#49708)
This commit adds a hook to `WritableSignal` that is called whenever the
signal's value is updated via the mutation API. This hook allows consumers
to implement logic which is synchronous with signal sets (e.g. executing
effects). It's currently unused.

PR Close #49708
2023-04-05 11:10:09 -07:00
Alan Agius
77bdf77968 build: combine @bazel/concatjs patches (#49714)
This commit combines all the `@bazel/concatjs` patches

PR Close #49714
2023-04-05 10:54:29 -07:00
Angular Robot
1c16be4728 build: update domino digest to aa8de34 (#49716)
See associated pull request for more information.

PR Close #49716
2023-04-05 10:52:49 -07:00
Pawel Kozlowski
df1dfc4c17 fix(core): make sure that lifecycle hooks are not tracked (#49701)
Angular lifecycle hooks should never be run as part of the reactive
context: we do not expect that signal reads in lifecycle hooks
report to any consumers.

In the current Angular some of the lifecycle hooks can be flushed
early, while executting template update pass. We need to make sure
that signal reads in those lifecycle hooks do not register as part
of the effect that marks components for check.
"

PR Close #49701
2023-04-05 10:48:22 -07:00
Andrew Scott
a4e749ffca fix(core): When using setInput, mark view dirty in same was as markForCheck (#49711)
`ComponentRef.setInput` internally calls `markDirtyIfOnPush` which only marks
the given view as dirty but does not mark parents dirty like `ChangeDetectorRef.markForCheck` would.
f071224720/packages/core/src/render3/instructions/shared.ts (L1018-L1024)

`markDirtyIfOnPush` has an assumption that it’s being called from the parent’s template. That is, we don’t need to mark dirty to the root, because we’ve already traversed down to it.
The function used to only be called during template execution for input
bindings but was added to `setInput` later. It's not a good fit because
it means that if you are responding to events such as an emit from an `Observable`
and call `setInput`, the view of your `ComponentRef` won't necessarily get checked
when change detection runs next. If this lives inside some `OnPush` component tree
that's not already dirty, it only gets refreshed if you also call
`ChangeDetectorRef.markForCheck` in the host component (because it will be "shielded" be a non-dirty parent).

PR Close #49711
2023-04-05 10:13:21 -07:00
Charles Lyding
aad05ebeb4 feat(core): support usage of non-experimental decorators with TypeScript 5.0 (#49492)
Previously, attempting to turn off the `experimentalDecorators` TypeScript configuration
option within an Angular project would result in build time errors. These errors were due
to an exposed Decorator signature from `@angular/core` that TypeScript thought was incompatible
with standard decorators. However, Angular's class decorators (`Component`, `Directive`, `Pipe`,
`Injectable`, `NgModule`) are actually already compatible with standard decorators. The export types for
the decorators only needed to be updated to reflect that compatibility. With the updated exported types,
applications will now successfully compile and execute in AOT mode with one important dependency injection
caveat explained in the note below.
For JIT mode applications that are built with the Angular CLI, `@ngtools/webpack`, or use `tsickle`,
there were also no additional changes required. These tools automatically convert property decorators
(now called field decorators) at build time to store Angular property metadata directly on the relevant
class. Building with these tools is the overwhelmingly common method of building an application. Any
applications that do not use one of these tools will not function at runtime in JIT mode if using standard
decorators. The behavior and code for when experimental decorators is enabled has been left intact.

NOTE: Angular constructor dependency injection that requires parameter decorators is not supported.
The standard decorator specification does not support parameter decorators. The `inject` function must be
used for all cases that previously required a parameter decorator. This includes such decorators as `Inject`,
`Optional`, `Self`, `SkipSelf`, `Host`, and `Attribute`. Constructor dependency injection that relies only
on the supplied parameter type will continue to function as expected if using AOT; as well as in JIT mode
if using the Angular CLI, `@ngtools/webpack` directly, or `tsickle`.

Documentation for the `inject` function can be found at: https://angular.io/api/core/inject
The decorator specification proposal can be found at: https://github.com/tc39/proposal-decorators

PR Close #49492
2023-04-05 09:59:07 -07:00
Matthieu Riegler
d497be7aca refactor(core): Use the nullish coalescing assignment in render3 functions (#49698)
The usage of `??=` make the code more clear & concise.

PR Close #49698
2023-04-05 09:45:53 -07:00
Dylan Hunn
136ffbca8e refactor(forms): Add a test that uses ControlConfig with a non-static validator. (#49693)
Previously, this PR cleaned up a bug introduced by #48679. However, since that PR needed to be rolled back, this PR now just checks in the test, to prevent that issue from re-occurring in the future.

PR Close #49693
2023-04-05 09:08:39 -07:00
Matthieu Riegler
3b863ddc1e refactor(core): Remove ReflectiveInjector symbol (#48103)
The `ReflectiveInjector` symbol has been deprecated in v5 (11 major versions ago). This commit removes ReflectiveInjector and related symbols.

BREAKING CHANGE: The `ReflectiveInjector` and related symbols were removed. Please update the code to avoid references to the `ReflectiveInjector` symbol. Use `Injector.create` as a replacement to create an injector instead.

PR Close #48103
2023-04-04 16:43:53 -07:00
Angular Robot
f071224720 build: update eslint dependencies to v5.57.1 (#49696)
See associated pull request for more information.

PR Close #49696
2023-04-04 15:14:32 -07:00
Matthieu Riegler
1aef29ceb1 refactor(core): Cleanup for Iterable differs test. (#49598)
Remove some `any` and use the non-deprecated `Injector.create` overload.

PR Close #49598
2023-04-04 15:13:01 -07:00
Matthieu Riegler
061f3d1086 feat(core): Drop public factories property for IterableDiffers : Breaking change (#49598)
The `factories` property was marked as deprecated in v4 to make it private. Let's move it to private.

PR Close #49598
2023-04-04 15:13:01 -07:00
Andrew Scott
34b2d34d5b refactor(router): Remove RouterTestingModule in favor of RouterModule.forRoot (#49427)
`RouterTestingModule` is not needed as of v16. Instead, TestBed
automatically provides `MockPlatformLocation` in order to help test
navigations in the application. The location mocks in the
RouterTestingModule aren't necessary anymore.

There doesn't appear to be any real documentation around
`RouterTestingModule` other than the API docs.

PR Close #49427
2023-04-04 15:12:33 -07:00
Matthieu Riegler
1f3f5642f5 refactor(zone.js): remove #9100 todos. (#49409)
This commit assigns the correct type instead of `any`.

PR Close #49409
2023-04-04 15:10:58 -07:00
Matthieu Riegler
d71cde8dab refactor(core): remove ɵmakeDecorator from private exports (#49300)
`makeDecorator` is unused outside of core and is not part of the public API (not exported).

PR Close #49300
2023-04-04 15:10:16 -07:00
Andrew Scott
b203e4c19d fix(router): create correct URL relative to path with empty child (#49691)
The previous fix for squashing empty children didn't quite work when the
existing route had segments. The result would be that the segments from
the existing route were dropped from the final URL.

PR Close #49691
2023-04-04 15:05:41 -07:00
Angular Robot
a218ef5bf2 build: update domino digest to 89bec1a (#49703)
See associated pull request for more information.

PR Close #49703
2023-04-04 15:04:50 -07:00