36609 Commits

Author SHA1 Message Date
Alan Agius 7955627630 ci: enable Renovate on main and 20.0.x branches (#61160)
Dependency updates can no longer be cherry-picked due to hash changes in Aspect lock files. This commit enables Renovate to run directly on the `main` and `20.0.x` branches.

PR Close #61160
2025-05-07 10:44:10 +02:00
Vlad Boisa 5105fd6f05 docs: fix non-working link (#61131)
Swap non-working @link to just usual `` link to work


Same like #61011
PR Close #61131
2025-05-06 14:11:25 -07:00
Miles Malerba 47e44c8af0 docs: update rendering to use generated repo link (#61130)
PR Close #61130
2025-05-06 14:07:32 -07:00
Miles Malerba 72284bcda5 docs: update API generation to include repo name (#61130)
PR Close #61130
2025-05-06 14:07:31 -07:00
Matthieu Riegler eda8909772 fix(devtools): support defer blocks in IdentityTracker (#61139)
This reverts the fix of #61080 which wasn't adequate.

PR Close #61139
2025-05-06 13:44:37 -07:00
Alan Agius d5c6f2c4de refactor: add Node.js 24 as supported version (#61142)
Node.js 24 has been released https://nodejs.org/en/about/previous-releases

Closes: #61140

PR Close #61142
2025-05-06 13:38:25 -07:00
Joey Perrott be17ed3309 build: update tslint configuration (#61146)
Update the configuration for tslint

PR Close #61146
2025-05-06 13:35:24 -07:00
Joey Perrott 0b92c51a75 ci: migrate node target version for deploy script to node20 (#61102)
Migrate the generated script to target node20 which is already the environment we run the action in.

PR Close #61102
2025-05-06 13:33:28 -07:00
Joey Perrott 8756c8aa07 build: migrate documentation site deploy script to use ts_project (#61102)
Migrate to the new toolchain

PR Close #61102
2025-05-06 13:33:28 -07:00
Andrew Kushnir c39e79943a Revert "docs(docs-infra): fix first-app intro example (#61042)" (#61145)
This reverts commit ab91a355f8.

Revert reason: the change causes CI to fail (the `lint` CI job).

PR Close #61145
2025-05-06 11:06:22 -07:00
Tom Adler c3ff01be4b docs: fix whitespace after a link (#61136)
PR Close #61136
2025-05-06 10:25:48 -07:00
Kristiyan Kostadinov 583b9a7be5 fix(core): missing useExisting providers throwing for optional calls (#61137)
Fixes that the runtime was throwing a DI error when attempting to inject a missing `useExisting` provider, despite the call being optional.

The problem was that when the provider has `useExisting`, we do a second `inject` call under the hood which didn't include the inject flags from the original call.

Fixes #61121.

PR Close #61137
2025-05-06 09:12:38 -07:00
Alan Agius 140538743f ci: add interop pnpm and aspect files to fileFilters (#61138)
This change will force these files to be committed.

PR Close #61138
2025-05-06 09:11:07 -07:00
Angular Robot d225c72618 build: update github/codeql-action action to v3.28.17 (#61134)
See associated pull request for more information.

PR Close #61134
2025-05-06 09:09:56 -07:00
Jan Martin 06d6da345f fix(platform-server): less aggressive ngServerMode cleanup (#61106)
Other code may depend on `ngServerMode` and it might have been set
globally / via a bundler. Forcing it to `undefined` in those situations
can lead to hard debug issues where the only symptom is that "suddenly"
browser-specific code paths run on the server and (obviously) break.

PR Close #61106
2025-05-06 09:08:47 -07:00
Matthieu Riegler ab91a355f8 docs(docs-infra): fix first-app intro example (#61042)
fixes #60844

PR Close #61042
2025-05-06 09:07:26 -07:00
Alan Agius a2b61634ec docs: update ssr docs to include prerendering wildcards (#61116)
This feature was introduced in version 20.

PR Close #61116
2025-05-05 17:02:29 -07:00
Angular Robot 235f7c9668 build: update rules_angular digest to 42d4791 (#61126)
See associated pull request for more information.

PR Close #61126
2025-05-05 15:36:37 -07:00
Kristiyan Kostadinov 2c17145520 refactor(compiler): element references not resolved when selectorless matcher is passed in (#61100)
Fixes that the template binder didn't resolve references to DOM nodes (e.g. `<div #ref></div>` if the matcher being passed in isn't a `SelectorMatcher`.

PR Close #61100
2025-05-05 14:38:13 -07:00
Kristiyan Kostadinov 7d2a6b3864 refactor(compiler-cli): defer selectorless dependencies (#61100)
Fixes that selectorless dependencies weren't being deferred correctly.

PR Close #61100
2025-05-05 14:38:12 -07:00
Kristiyan Kostadinov 707a70ea0b refactor(compiler-cli): properly emit references to selectorless pipes (#61100)
Fixes that we weren't emitting references to selectorless pipes, because we were checking the name of the pipe, rather than the local name of the symbol.

PR Close #61100
2025-05-05 14:38:12 -07:00
Kristiyan Kostadinov 4a1f5db517 refactor(compiler-cli): assert that selectorless references are standalone (#61100)
Adds some logic to assert that the directives referenced in a selectorless way are all standalone.

PR Close #61100
2025-05-05 14:38:12 -07:00
Kristiyan Kostadinov d5a68d8a22 refactor(compiler-cli): wire up selectorless behavior (#61100)
These changes connect the dependency analysis data from the previous commits with the template type checker which allows us to fully type check a selectorless component.

Also includes tests for all of the new selectorless behaviors that have been introduced so far.

PR Close #61100
2025-05-05 14:38:12 -07:00
Kristiyan Kostadinov e15dc2c3b5 refactor(compiler-cli): add scope for selectorless components (#61100)
Adds the new `SelectorlessComponentScopeReader` that will be used for selectorless components.

PR Close #61100
2025-05-05 14:38:12 -07:00
Kristiyan Kostadinov 7118dac442 refactor(compiler-cli): add selectorless-related analysis to components (#61100)
Adds the logic to determine whether a component is selectorless and to track which symbols are used in the template.

PR Close #61100
2025-05-05 14:38:12 -07:00
Angular Robot 310e5ffe24 build: update rules_angular digest to 3ba9d67 (#61124)
See associated pull request for more information.

PR Close #61124
2025-05-05 09:24:33 -07:00
Andrew Scott e7f5aa2b52 refactor(core): Remove use of private export PendingTasksInternal where possible (#61049)
This commit removes the use of the privately exported
PendingTasksInternal everywhere except for Router. A follow-up change
will be done to remove that one as well and delete the private export.

PR Close #61049
2025-05-05 08:56:20 -07:00
Andrew Scott 0c925af2dd test(router): This commit removes ZoneJS from the router tests (#61078)
There is nothing in the Router that requires ZoneJS and we do not need
`fakeAsync` as a mock clock. We can instead use any mock clock implementation
to speed up test execution.

This removes ZoneJS completely from the bundle of the Router tests.
ZoneJS causes the stacks to be unreadable when combined with the massive
rxjs stack in the router transition.

PR Close #61078
2025-05-05 08:55:01 -07:00
Klaas Cuvelier d8532bc87d docs(router): update typing for skipLocationChange in RedirectCommand example (#61119)
The example for the RedirectCommand used a string for skipLocationChange, changed this to a boolean

PR Close #61119
2025-05-05 08:47:52 -07:00
oliv37 b579c71633 docs(docs-infra): update use production configuration (#61112)
PR Close #61112
2025-05-05 08:45:01 -07:00
Miles Malerba e0248aae6a docs: hide entries that are marked @docs-private (#61104)
PR Close #61104
2025-05-05 08:43:30 -07:00
Joey Perrott 1e79d47064 build: enable rules_js interop mode in ng-dev release (#61087)
This will result in the release tool automatically updating the Aspect
lock files when necessary.

PR Close #61087
2025-05-02 09:12:23 -07:00
Joey Perrott 669b02cd54 build: update renovate config for rules_js hybrid mode (#61087)
This will automatically result in Renovate updating the Aspect lock
files.

PR Close #61087
2025-05-02 09:12:23 -07:00
Joey Perrott 72b7de0d73 build: set up ts_project interop for rules_js migration (#61087)
The `ts_project` interop rule that we've built was also used in the
Angular CLI migration, and it allows us to mix `ts_project` and
`ts_library` targets; enabling an incremental migration. Additionally
set up the `ng_project` to replace `ng_module`.

PR Close #61087
2025-05-02 09:12:23 -07:00
Joey Perrott 1c7f669f33 build: setup rules_ts for compiling TypeScript sources (#61087)
This commit sets up `rules_ts`, providing the `ts_library` equivalent
for the `rules_js` migration.

PR Close #61087
2025-05-02 09:12:23 -07:00
Joey Perrott 059a2cb38e build: setup rules_js and link dependencies (#61087)
Sets up `rules_js` and links dependencies into the bazel-bin.

PR Close #61087
2025-05-02 09:12:23 -07:00
Joey Perrott cfa0591c8b build: update to bazel 6 (#61087)
This is necessary for an incremental migration to `rules_js` which
requires Bazel v6. Bazel v6 removed the managed directories feature,
which means we no longer can rely on symlinked node modules as the Bazel
repository; but rather need to duplicate dependencies. This is
okay/acceptable to enable the incremental migration.

PR Close #61087
2025-05-02 09:12:23 -07:00
Joey Perrott ebaa5f7d32 build: add .prettierignore configuration file (#61087)
Add a configuration file to prevent autogenerated files from being formatted.

PR Close #61087
2025-05-02 09:12:23 -07:00
Foysol Ahmed 5fe726dd45 docs: ViewContainerRef.createComponent jsdoc update (#61097)
Co-authored-by: Jessica Janiuk <1596273+thePunderWoman@users.noreply.github.com>
PR Close #61097
2025-05-02 07:57:10 -07:00
KryptonBD 0b6c8dc72d docs: ViewContainerRef.createComponent jsdoc update to reflect actual behavior (#61097)
Fixes #59918

PR Close #61097
2025-05-02 07:57:09 -07:00
Angular Robot 826b4f604f build: update angular/dev-infra digest to a4538b2 (#61096)
See associated pull request for more information.

PR Close #61096
2025-05-02 07:56:25 -07:00
Angular Robot df2c600e23 docs: update Angular CDK apis [main] (#61094)
Updated Angular CDK api files.

PR Close #61094
2025-05-02 07:55:44 -07:00
arturovt 2235699b65 refactor(zone.js): drop isIE checks (#61091)
This should not be considered as a breaking change, because Angular doesn't support IE.

PR Close #61091
2025-05-02 07:53:35 -07:00
Jessica Janiuk f054c00e54 docs: add guide for using native CSS animations (#60984)
This adds a guide for how to switch from the
angular animations package over to native CSS
animations.

PR Close #60984
2025-05-02 07:52:10 -07:00
Matthieu Riegler f580318411 docs(docs-infra): Add version of introduction for APIs (#60814)
For new APIs we'll mention since when a particular API is in its current status (experimental, devPreview, stable)

fixes #49668

PR Close #60814
2025-05-02 07:51:33 -07:00
Miles Malerba 8828a84ecf ci: add a script to copy cdk api files to adev (#61081)
Refactors the update-cli-help script into a generic script to copy json
assets, and uses the shared code to also copy the CDK apis

PR Close #61081
2025-05-01 15:00:41 -07:00
Andrew Scott 88858118ea refactor(common): Mark inputs of deprecated control flow directives as deprecated (#61089)
This updates the inputs of the deprecated control flow directives as also deprecated.
Helpful for language services/tokenization tools

PR Close #61089
2025-05-01 14:59:25 -07:00
Matthieu Riegler d47d6720e7 fix(devtools): fix profiler support with @defer blocks (#61080)
Prior to this change, the devtools profile logged warnings "Unable to find parent node for ...".

PR Close #61080
2025-05-01 14:58:21 -07:00
arturovt 1bbf75017c fix(common): cleanup updateLatestValue if view is destroyed before promise resolves (#58041)
According to the promise specification, promises are not cancellable by default.
Once a promise is created, it will either resolve or reject, and it doesn't
provide a built-in mechanism to cancel it.
There may be situations where a promise is provided, and it either resolves after
the pipe has been destroyed or never resolves at all. If the promise never
resolves — potentially due to factors beyond our control, such as third-party
libraries — this can lead to a memory leak.
When we use `async.then(updateLatestValue)`, the engine captures a reference to the
`updateLatestValue` function. This allows the promise to invoke that function when it
resolves. In this case, the promise directly captures a reference to the
`updateLatestValue` function. If the promise resolves later, it retains a reference
to the original `updateLatestValue`, meaning that even if the context where
`updateLatestValue` was defined has been destroyed, the function reference remains in memory.
This can lead to memory leaks if `updateLatestValue` is no longer needed or if it holds
onto resources that should be released.
When we do `async.then(v => ...)` the promise captures a reference to the lambda
function (the arrow function).
When we assign `updateLatestValue = null` within the context of an `unsubscribe` function,
we're changing the reference of `updateLatestValue` in the current scope to `null`.
The lambda will no longer have access to it after the assignment, effectively
preventing any further calls to the original function and allowing it to be garbage collected.

If Chrome is built with additional flags and run with `--allow-natives-syntax --track-retaining-path`,
we could use `%DebugTrackRetainingPath` to see the distance from the root for `updateLatestValue`
if it's passed directly to async.then, e.g.:

```js
%DebugTrackRetainingPath(updateLatestValue);

// Distance from root 4: 0x123456789abc <JSPromise (sfi = 0x1fbb02e2d7f1)>
```

PR Close #58041
2025-05-01 14:53:13 -07:00
arturovt 5f31c953ed refactor(zone.js): drop passive supported check (#58010)
https://caniuse.com/passive-event-listener
Passive event listeners are supported in all major evergreen browsers.
Thus, we don't need to check whether passives are supported.

PR Close #58010
2025-05-01 11:42:13 -07:00