Commit Graph

24429 Commits

Author SHA1 Message Date
Paul Gschwendtner 141bb16632 ci: update github robot config to reflect update in syncing (#45907)
The `ng_module` Starlark code is not used internally, just
`ngc-wrapped`.

PR Close #45907
2022-05-06 09:51:49 -07:00
George Kalpakas 74a2e2e2ec fix(ngcc): cope with packages following APF v14+ (#45833)
In PR #45405, the Angular Package Format (APF) was updated so that
secondary entry-points (such as `@angular/common/http`) do not have
their own `package.json` file, as they used to. Instead, the paths to
their various formats and types are exposed via the primary
`package.json` file's `exports` property. As an example, see the v13
[@angular/common/http/package.json][1] and compare it with the v14
[@angular/common/package.json > exports][2].

Previously, `ngcc` was not able to analyze such v14+ entry-points and
would instead error as it considered such entry-points missing.

This commit addresses the issue by detecting this situation and
synthesizing a `package.json` file for the secondary entry-points based
on the `exports` property of the primary `package.json` file. This data
is only used by `ngcc` in order to determine that the entry-point does
not need further processing, since it is already in Ivy format.

[1]: https://unpkg.com/browse/@angular/common@13.3.5/http/package.json
[2]: https://unpkg.com/browse/@angular/common@14.0.0-next.15/package.json

PR Close #45833
2022-05-06 09:51:14 -07:00
George Kalpakas 018b917602 refactor(ngcc): move loadPackageJson() and related types to utils.ts (#45833)
Move the `loadPackageJson()` helper (and associated generic types, such
as `JsonObject`) from `packages/entry_point.ts` to `utils.ts` and also
rename it to `loadJson()`. This way, they can be used in other places in
future commits, without introducing cyclical dependencies.

PR Close #45833
2022-05-06 09:51:14 -07:00
George Kalpakas 06bfcb2be3 refactor(ngcc): remove unused dependencies (#45833)
Remove some unused dependencies from `ngcc` source code.

PR Close #45833
2022-05-06 09:51:14 -07:00
dario-piotrowicz 323ef1ebf7 docs(docs-infra): improve clarity of toh-pt2 li>button code (#45858)
in the tour of heros part 2 guide the addition of a button with spans is
slighly unclear, so update the code to make things more clear

resolves #45760

PR Close #45858
2022-05-05 16:58:47 -07:00
mgechev fe2855167a docs: update the Angular DevTools supported version in docs and README (#45902)
Ensure we document we support Angular v12 or older. Also remove Ivy as
a requirement because that's implicit.

PR Close #45902
2022-05-05 16:56:46 -07:00
Andrew Kushnir ff2dc4a719 test(platform-browser): refactor flaky test (#45906)
This commit updates a flaky test related to the Testability. The tests are only flaky in Chrome on Android.

PR Close #45906
2022-05-05 16:56:12 -07:00
Andrew Kushnir 86f0213303 ci: update the list of excluded paths in NgBot config (#45901)
This commit aligns the NgBot config that is used to determine whether a presubmit is needed with its internal version.

PR Close #45901
2022-05-05 15:45:50 -07:00
Paul Gschwendtner d48e0ccc01 fix(bazel): speed up d.ts bundling by configuring worker (#45900)
Speeds up the `d.ts` bundling by configuring it as a Bazel
persistent worker. Also improve logging for the ng packager
rule to make it easier to spot which actions/bundles take
up significant time.

Type bundling will occur for every entry-point so for machines
with rather limited cores/threads, this will be useful to save
NodeJS boot and resolution time.

PR Close #45900
2022-05-05 15:35:14 -07:00
AleksanderBodurri f94055dee6 build(devtools): Optimize prod build for Angular DevTools (#45886)
Uses `createEsbuildAngularOptimizePlugin` from dev-infra-private and passes in `GLOBAL_DEFS_FOR_TERSER_WITH_AOT` into a new esbuild prod configuration. Notably, this removes references to `ngDevMode` from the final build and enables minification.

PR Close #45886
2022-05-05 15:33:14 -07:00
mgechev 7604585cd3 docs: update the Angular DevTools auto-generated READMEs (#45884)
Replace the auto-generated READMEs in the different Angular DevTools
submodules with brief descriptions.

PR Close #45884
2022-05-05 15:29:27 -07:00
mgechev af36adf540 refactor(devtools): remove support for v11 and older versions of Angular (#45883)
In Angular v12 we introduced debugging APIs sufficient for DevTools.
Prior to that Angular DevTools accesses the logical data structures of
Ivy directly, which sometimes produces suboptimal results and skips
dynamically inserted content.

With the end of v11's LTS, we'll support only Angular v12 and up.

PR Close #45883
2022-05-05 15:28:42 -07:00
George Kalpakas 58a8bd3df2 build(docs-infra): remove unused Docker artifacts when updating the preview server (#45895)
Update the `update-preview-server.sh` script that is used to update the
PR preview server to also remove unused Docker images and containers
after the update. This avoids having unused Docker artifacts grow
uncontrolled and fill up the VM disk drive.

PR Close #45895
2022-05-05 14:49:16 -07:00
George Kalpakas c793efd9b7 test(docs-infra): update preview server serify-setup tests to match implementation (#45895)
Update the mocks used in the `verify-setup` tests of the PR preview
server to account for changes made in PR #45349. These tests run to
verify that a newly built docker container works as expected before
deploying it to the preview server, so having them fail prevents the
preview server from updating automatically.

NOTE:
These tests are currently not run on CI due to complications with
running Docker inside Docker.

PR Close #45895
2022-05-05 14:49:16 -07:00
Paul Gschwendtner f6543c25aa build: use vendored yarn script for installing Sass repositories (#45892)
Fixes the Bazel analysis warning and the fact that Yarn is unnecessarily
downloaded by `rules_nodejs`.

```
DEBUG: /home/circleci/.cache/bazel/_bazel_circleci/9ce5c2144ecf75d11717c0aa41e45a8d/external/build_bazel_rules_nodejs/index.bzl:73:14: yarn_install#yarn attribute not set and no repository named 'yarn' exists; installing default yarn
```

PR Close #45892
2022-05-05 13:56:38 -07:00
Will 保哥 3f9faad356 docs: fix a markdown syntax error in aio/content/marketing/analytics.md (#45898)
PR Close #45898
2022-05-05 11:51:00 -07:00
Andrew Kushnir 40bf2a6a81 refactor(core): make Testability compatible with tree-shaking (#45657)
This commit refactors the `Testability`-related logic to extract the necessary providers into a separate array, so that it can later become it's own NgModule (or exposed as an array of providers) and be excluded from the new APIs by default.

PR Close #45657
2022-05-05 11:50:23 -07:00
Andrew Kushnir dcea70fab7 refactor(core): rename internal bootstrap function (#45896)
This commit renames an internal function that implements the core bootstrap logic. The function is exported as a private symbol (with `ɵ`), but in order to avoid any possible confusion, we include "internal" into the function name as well.

PR Close #45896
2022-05-05 10:55:56 -07:00
Renovate Bot 1e4e9ee9a7 build: update dependency @types/chrome to ^0.0.184 (#45849)
PR Close #45849
2022-05-05 10:16:12 -07:00
Renovate Bot d80018b7ca build: update angular (#45848)
PR Close #45848
2022-05-05 10:09:05 -07:00
Andrew Scott 8786c609f8 refactor(docs-infra): Redirect old document title guide to new router feature (#45857)
The "set-document-title" guide was in place to direct developers to the
`Title` service for managing page titles. Managing the title is now
available in the `Router` package and is much easier. This change
deletes the old guide and redirects it to the section in the router
guide about setting the page title.

PR Close #45857
2022-05-04 16:37:16 -07:00
Paul Gschwendtner d93ca6cc81 build: remove outdated/obsolete github PR utility scripts (#45868)
Removes scripts and documentation for tools which are no longer
actively used and likely do not work anyway at this point.

All of our PR-related tooling has moved into the `yarn ng-dev` command.
The `PR_REVIEW` markdown file is deleted since it was soley about
the legacy review scripts and the PR review workflow also does not
seem like the common/standard workflow Angular team members follow.

PR Close #45868
2022-05-04 16:29:27 -07:00
George Kalpakas 4dbcf9766b build(docs-infra): upgrade cli command docs sources to b71844f36 (#45871)
Updating [angular#main](https://github.com/angular/angular/tree/main) from
[cli-builds#main](https://github.com/angular/cli-builds/tree/main).

##
Relevant changes in
[commit range](https://github.com/angular/cli-builds/compare/f258be5be...b71844f36):

**Modified**
- help/completion.json

PR Close #45871
2022-05-04 16:25:57 -07:00
Paul Gschwendtner e586cb8124 build: clean up references to old master branch (#45856)
Cleans up all references to the `master` branch we renamed to
`main` across Angular.

PR Close #45856
2022-05-04 16:23:33 -07:00
Paul Gschwendtner de008f1149 ci: invalidate cache for windows job to prune unused nested node_modules (#45872)
An additional issue with the current approach of how Yarn and Bazel
interact, Yarn 1.x. does not prune unused nested `node_modules`. This
can throw-off the Bazel NodeJS rules because they (correctly) would not
expect such a nested folder.

This seems to happen in some caches currently, so we invalidate the
cache. Its worth seeing if we should rather cache the Yarn cache
folder on Windows as well, but for now this will remain as is.

Yarn 2.x+ will solve this for us, by addressing the root-cause.
Dev-Infra already has Yarn 2.x+ running, so it's not far from happening.

PR Close #45872
2022-05-04 16:20:57 -07:00
Paul Gschwendtner 0c61ea426a build: disable bazel nodejs linker to improve stability on windows (#45872)
The NodeJS Bazel linker does not work well on Windows because there
is no sandboxing and linker processes from different tests will attempt
to modify the same `node_modules`, causing concurrency race conditions
and resulting in flakiness.

PR Close #45872
2022-05-04 16:20:57 -07:00
Dylan Hunn 967e9345b3 release: cut the v14.0.0-next.16 release (#45875)
PR Close #45875
14.0.0-next.16
2022-05-04 13:55:01 -07:00
Dylan Hunn c988487f03 docs: release notes for the v13.3.6 release (#45874)
PR Close #45874
2022-05-04 13:07:02 -07:00
Dylan Hunn 2dbdebc646 feat(forms): Add FormBuilder.nonNullable. (#45852)
With typed forms, all `FormControl`s are nullable by default, because they can be reset to `null`. This behavior is possible to change by passing the option `initialValueIsDefault: true`. However, in a large form, this is extremely cumbersome, as the option must be repeated over and over. Additionally, it is not possible to take full advantage of `FormBuilder`, since `FormBuilder.group` and `FormBuilder.array` will produce nullable controls.

This PR introduces a new accessor `FormBuilder.nonNullable`, which produces *non-nullable* controls. Specifically, any call to `.control` will produce controls with `{initialValueIsDefault: true}`, and calls to `.array` or `.group` that implicitly build inner controls will have the same effect.

```ts
let nfb = new FormBuilder().nonNullable;
let name = nfb.group({who: 'Alex'}); // FormGroup<{who: FormControl<string>}>
name.reset();
console.log(name); // {who: 'Alex'}
```

PR Close #45852
2022-05-04 12:46:05 -07:00
Charles Lyding 41e2a68e30 feat(router): add type properties to all router events (#44189)
All router events now have a `type` property with a string name identifying the specific type of the event.
The `type` property can be used to perform TypeScript type narrowing using an `if` statement, `switch`
statement, or similar. This removes the need to perform `instanceof` checks but still allows them if
preferred. An `instanceof` check requires the use of the event class value which may not be available
or preferred in certain situations.
The Router's `enableTracing` option is also now guarded with the `ngDevMode` flag which combined with
the use of a new `stringifyEvent` function allows the tree-shaking of the string generation code for
each router event class. However, the original `toString` class methods are still present to prevent
a potential breaking change. As a result, full benefits of the tree-shaking potential will not be realized
until they are removed.

PR Close #44189
2022-05-04 12:44:51 -07:00
Paul Gschwendtner ea2b3a9dfa docs: update angular package format guide to reflect recent changes (#45725)
Updates the Angular package format guide to reflect recent
changes where we removed the secondary entry-point package.json
files.

PR Close #45725
2022-05-04 12:44:28 -07:00
Kristiyan Kostadinov 32c625d027 fix(compiler-cli): handle forwardRef in imports of standalone component (#45869)
Fixes that the compiler wasn't resolving `forwardRef` values when they're used in the `imports` of a standalone component.

PR Close #45869
2022-05-04 12:43:58 -07:00
cexbrayat 10691c626b fix(common): properly cast http param values to strings (#42643)
Before this commit, when initializing `HttpParams` with:

    const body = new HttpParams({fromObject: {b: 2}});

then `body.get('b')` returned `2` instead of `'2'` as expected.

This commit makes sure the values are converted to strings in such cases.

Fixes #42641

PR Close #42643
2022-05-04 12:43:37 -07:00
Dylan Hunn a2d5358c9b Revert "feat(compiler-cli): exclude abstract classes from strictInjectionParameters requirement (#44615)" (#45862)
This reverts commit 9cf14ff03d.

PR Close #45862
2022-05-03 17:03:25 -07:00
Andrew Kushnir fa755b2a54 fix(core): prevent BrowserModule providers from being loaded twice (#45826)
This commit updates the logic of the `BrowserModule` to detect a situation when it's used in the `bootstrapApplication` case, which already includes `BrowserModule` providers.

PR Close #45826
2022-05-03 16:08:04 -07:00
Cédric Exbrayat a6675925b0 feat(core): allow to throw on unknown properties in tests (#45853)
Allows to provide a TestBed option to throw on unknown properties in templates:

```ts
getTestBed().initTestEnvironment(
  BrowserDynamicTestingModule,
  platformBrowserDynamicTesting(), {
    errorOnUnknownProperties: true
  }
);
```

The default value of `errorOnUnknownProperties` is `false`, so this is not a breaking change.

PR Close #45853
2022-05-03 15:49:00 -07:00
Andrew Kushnir 7005da9c0f ci: decrease the number of required public-api and size-tracking reviews (#45855)
This commit updates the PullApprove config to decrease the number of required reviews from `public-api` and `size-tracking` group members.

PR Close #45855
2022-05-03 15:48:26 -07:00
Pawel Kozlowski 410d81f0e2 refactor(core): disallow standalone components in importProvidersFrom calls (#45837)
This commit narrows down acceptable argument types of the
`importProvidersFrom` function. More specifically, it rejects
standalone components as a source of imports.

PR Close #45837
2022-05-03 13:12:36 -07:00
Alex Rickabaugh 8ba4ddcb69 refactor(compiler-cli): improve error for imports in non-standalone cmp (#45851)
This commit improves the error message for using `imports` on a component
that isn't set to `standalone: true`. Two concrete improvements are made:

* A related information message is added to the diagnostic which suggests
  the fix of adding `standalone: true`.
* The component is marked as poisoned, preventing other errors which might
  be caused by an incorrectly configured template scope from being generated
  and thus masking the original problem.

Fixes #45850

PR Close #45851
2022-05-03 11:04:09 -07:00
JoostK 9cf14ff03d feat(compiler-cli): exclude abstract classes from strictInjectionParameters requirement (#44615)
In AOT compilations, the `strictInjectionParameters` compiler option can
be enabled to report errors when an `@Injectable` annotated class has a
constructor with parameters that do not provide an injection token, e.g.
only a primitive type or interface.

Since Ivy it's become required that any class with Angular behavior
(e.g. the `ngOnDestroy` lifecycle hook) is decorated using an Angular
decorator, which meant that `@Injectable()` may need to have been added
to abstract base classes. Doing so would then report an error if
`strictInjectionParameters` is enabled, if the abstract class has an
incompatible constructor for DI purposes. This may be fine though, as
a subclass may call the constructor explicitly without relying on
Angular's DI mechanism.

Therefore, this commit excludes abstract classes from the
`strictInjectionParameters` check. This avoids an error from being
reported at compile time. If the constructor ends up being used by
Angular's DI system at runtime, then the factory function of the
abstract class will throw an error by means of the `ɵɵinvalidFactory`
instruction.

In addition to the runtime error, this commit also analyzes the inheritance
chain of an injectable without a constructor to verify that their inherited
constructor is valid.

Closes #37914

PR Close #44615
2022-05-03 10:39:56 -07:00
Andrew Kushnir 401dec46eb feat(core): update TestBed to recognize Standalone Components (#45809)
This commit updates an internal logic of the TestBed to recognize Standalone Components to be able to apply the necessary overrides correctly.

PR Close #45809
2022-05-03 10:33:52 -07:00
Kristiyan Kostadinov bb8d7091c6 fix(compiler): exclude empty styles from emitted metadata (#45459)
Excludes styles that resolve to empty strings from the emitted metadata so that they don't result in empty `<style>` tags at runtime.

Fixes #31191.

PR Close #45459
2022-05-03 09:38:36 -07:00
George Kalpakas 9f558003c4 docs(service-worker): fix alert closing tag (#45797)
This also allows correctly parsing other tags further below (such as
the `@reviewed` tag at the end).

PR Close #45797
2022-05-03 09:27:36 -07:00
Andrew Scott 9e6538c4ba fix(dev-infra): Fix pullapprove by commenting out the empty availability (#45846)
Fixes invalid yml caused by https://github.com/angular/angular/commit/509cab9972dc9ee3366649324e0b19ec9277d7f8

PR Close #45846
2022-05-02 16:33:42 -07:00
Alex Rickabaugh d322052db3 refactor(core): guard against importProvidersFrom in components (#45838)
`importProvidersFrom` provides a bridge from the world of NgModule-based DI
configuration to the new, "standalone" world of direct providers and
environment injectors. Early user feedback suggested some confusion around
where this function was supposed to be used, particularly around importing
NgModule-based providers into standalone component `providers` arrays, which
is not the intended use. This confusion is exacerbated by the fact that due
to the unified `Provider` type, this kind of misconfiguration was happily
accepted by the type system.

This commit changes the return type of `importProvidersFrom` to wrap the
returned providers in an opaque type that prevents them from being used in
component provider contexts. This, together with stronger documentation
around the purpose and functionality of `importProvidersFrom`, should
address some of the above confusion.

PR Close #45838
2022-05-02 15:50:44 -07:00
AleksanderBodurri a521571e85 docs(devtools): create documentation on installing Angular DevTools in Safari (#45763)
With the introduction of many new devtools extensions APIs, it is now possible to install Angular DevTools in Safari.

This commit details how to convert an Angular DevTools build to a Safari web extension with Xcode and `xcrun safari-web-extension-converter `

PR Close #45763
2022-05-02 15:36:37 -07:00
Pawel Kozlowski 509cab9972 ci: mark pkozlowski as availabe for PR reviews (#45842)
Change pullapprove configuration to re-include pkozlowski

PR Close #45842
2022-05-02 15:35:34 -07:00
Pawel Kozlowski 3d5363cc5e docs(core): add public API for standalone entities (#45798)
This commit adds public API docs for standalome components,
directives and pipes.

PR Close #45798
2022-05-02 15:09:31 -07:00
Dylan Hunn fce50637c5 docs(forms): Add documentation for typed forms. (#45841)
Update the JSDoc on forms model classes with more specific information about the new types.

PR Close #45841
2022-05-02 15:03:40 -07:00
Andrew Kushnir ad5ffffc7b refactor(core): rename INJECTOR_INITIALIZER -> ENVIRONMENT_INITIALIZER (#45845)
This commit renames the `INJECTOR_INITIALIZER` to `ENVIRONMENT_INITIALIZER` to better represent the intention of the token.

PR Close #45845
2022-05-02 15:02:06 -07:00