17309 Commits

Author SHA1 Message Date
Pete Bacon Darwin 8768fc4de4 perf(ngcc): use binary search when flattening mappings (#36027)
The `@angular/core` package has a large number of source files
and mappings which exposed performance issues in the new source-map
flattening algorithm.

This change uses a binary search (rather than linear) when finding
matching mappings to merge. Initial measurements indicate that this
reduces processing time for `@angular/core` by about 50%.

PR Close #36027
2020-03-13 08:00:30 -07:00
Pete Bacon Darwin d03da9c041 test(ngcc): remove unused FileSystem variable (#36027)
PR Close #36027
2020-03-13 08:00:30 -07:00
Andrew Kushnir 9cd115d153 fix(core): verify parsed ICU expression at runtime before executing it (#35923)
Prior to this commit, i18n runtime logic relied on the assumption that provided translation is syntactically correct, specifically around ICU syntax. However provided translations might contain some errors that lead to parsing failure. Specifically when translation contains curly braces, runtime i18n logic tries to parse them as an ICU expression and fails. This commit validates ICU parsing result (making sure it was parsed correctly) and throws an error if parsing error happens. The error that is thrown also contains translated message text for easier debugging.

Note: the check and the error message introduced in this PR is a safeguard against the problem that led to unhandled i18n runtime logic crash. So the framework behavior remains the same, we just improve the error message and it should be safe to merge to the patch branch.

Resolves #35689.

PR Close #35923
2020-03-13 07:58:54 -07:00
Andrew Scott f699c962bb test(core): Add benchpress test for transplanted view change detection (#36001)
Adds a performance benchmark for transplanted views (those which are declared in one component and inserted into another).

PR Close #36001
2020-03-12 12:14:41 -07:00
Alan Agius dec80b0e35 revert: "ci: prevent api golden tests on windows CI (#36025)" (#36034)
This reverts commit 3112b1b00a.

PR Close #36034
2020-03-12 09:49:01 -07:00
Alan Agius 13abbeb289 build: provide full paths to ts_api_guardian_test_npm_package and ts_api_guardian_test (#36034)
ts-api-guardian uses `require.resolve` to resolve the actual and golden files under bazel. In Windows for these files to be resolved correct the full path including the workspace name as per the MANIFEST entries is required.

This used to be the case until the recent changes done to use npm_integration tests

https://github.com/angular/angular/blob/83c74ceacf620535673ec141fc8a1003aed187ef/tools/public_api_guard/public_api_guard.bzl#L19
https://github.com/angular/angular/blob/83c74ceacf620535673ec141fc8a1003aed187ef/tools/public_api_guard/public_api_guard.bzl#L28

```
bazel test //packages/... --test_tag_filters=api_guard

//packages/animations:animations_api                            (cached) PASSED in 18.4s
//packages/common:common_api                                    (cached) PASSED in 25.5s
//packages/compiler-cli:compiler_options_api                    (cached) PASSED in 12.4s
//packages/compiler-cli:error_code_api                          (cached) PASSED in 11.6s
//packages/core:core_api                                        (cached) PASSED in 20.6s
//packages/core:ng_global_utils_api                             (cached) PASSED in 13.5s
//packages/elements:elements_api                                (cached) PASSED in 11.9s
//packages/forms:forms_api                                      (cached) PASSED in 13.9s
//packages/http:http_api                                        (cached) PASSED in 14.8s
//packages/localize:localize_api                                (cached) PASSED in 6.3s
//packages/platform-browser:platform-browser_api                (cached) PASSED in 18.1s
//packages/platform-browser-dynamic:platform-browser-dynamic_api (cached) PASSED in 14.0s
//packages/platform-server:platform-server_api                  (cached) PASSED in 13.9s
//packages/platform-webworker:platform-webworker_api            (cached) PASSED in 13.7s
//packages/platform-webworker-dynamic:platform-webworker-dynamic_api (cached) PASSED in 11.7s
//packages/router:router_api                                    (cached) PASSED in 19.9s
//packages/service-worker:service-worker_api                    (cached) PASSED in 18.1s
//packages/upgrade:upgrade_api                                  (cached) PASSED in 13.5s
```

Reference: DEV-71

PR Close #36034
2020-03-12 09:49:01 -07:00
Stephen Fluin 13d85e10a2 docs: add developer survey 2020 (#35655)
PR Close #35655
2020-03-11 16:10:48 -07:00
Greg Magolan 7af0648207 build: remove legacy integration test runner (#35985)
* integration tests target definitions in integration/BUILD.bazel updated to use a single dict
* payload tracking for integration tests updated to work under Bazel
* legacy integration_test CI job removed
* integration/run_tests.sh script no longer used in CI so it has been updated for running integration tests locally in the legacy way

PR Close #35985
2020-03-11 15:12:34 -07:00
JiaLiPassion 1dca5e4748 fix(zone.js): fix zone-patch-rxjs bundle to refer to rxjs (rather than include) it. (#35983)
Close #35878.

Before zone.js 0.10, the rollup config would refer to `rxjs` when bundling `zone-patch-rxjs.js`
From zone.js 0.10, we started to use bazel to build `zone-patch-rxjs.js` and the configuration was wrongly defined to include a copy of `rxjs` in the `zone-patch-rxjs.js`.

PR Close #35983
2020-03-11 15:09:04 -07:00
Pete Bacon Darwin 2c5dd3fe71 refactor(ngcc): remove unused LockFileWithSignalHandlers (#35934)
PR Close #35934
2020-03-11 15:07:10 -07:00
Pete Bacon Darwin 743ce7b964 fix(ngcc): a new LockFile implementation that uses a child-process (#35934)
This version of `LockFile` creates an "unlocker" child-process that monitors
the main ngcc process and deletes the lock file if it exits unexpectedly.

This resolves the issue where the main process could not be killed by pressing
Ctrl-C at the terminal.

Fixes #35761

PR Close #35934
2020-03-11 15:07:09 -07:00
Pete Bacon Darwin f2295448f3 refactor(ngcc): move locking code into its own folder (#35934)
PR Close #35934
2020-03-11 15:07:09 -07:00
Pete Bacon Darwin 3f930fd186 refactor(ngcc): separate SyncLocker and LockFile (#35934)
The previous implementation mixed up the management
of locking a piece of code with the management of writing
and removing the lockFile that is used as the flag for
which process has locked the code.

This change splits these two concepts up, allowing the `LockFile`
implementation to be replaced cleanly.

PR Close #35934
2020-03-11 15:07:09 -07:00
Pete Bacon Darwin 1d04f98170 refactor(ngcc): expose logging level on the logger (#35934)
PR Close #35934
2020-03-11 15:07:09 -07:00
Yvonne Allen e262962b12 fix(docs-infra): add boilerplate path and project type for elements example project (#33484)
Fixes #31332

PR Close #33484
2020-03-11 14:52:59 -04:00
ayazhafiz f5e44108b2 fix(language-service): infer $implicit value for ngIf template contexts (#35941)
Today, the language service infers the type of variables bound to the
"ngIf" template context member of an NgIf directive, but does not do the
same for the the "$implicit" context member. This commit adds support
for that.

Fixes https://github.com/angular/vscode-ng-language-service/issues/676

PR Close #35941
2020-03-11 14:52:28 -04:00
George Kalpakas 4659bca69b fix(dev-infra): sort contributors alphabetically in get-data.ts script (#35997)
The `contributing-stats/get-data.ts` script, which is used to retrieve
org-wide contribution data, returned the contributors in retrieval
order.

This commit ensures contributors are ordered alphabetically, which makes
it easier to find the stats for a specific contributor.

PR Close #35997
2020-03-11 14:49:18 -04:00
George Kalpakas 65e0595c55 refactor(docs-infra): merge .api-body style blocks (#31574)
This commit merges the two `.api-body` style blocks, removing duplicate
styles and re-ordering sub-blocks (to group relevant styles together).
It should not affect styling.

PR Close #31574
2020-03-11 14:47:17 -04:00
George Kalpakas 2ff4d11e58 refactor(docs-infra): remove duplicate .github-links styles (#31574)
PR Close #31574
2020-03-11 14:47:16 -04:00
Stefanie Fluin 7b0a1d2df4 fix(docs-infra): make API member name bold (#31574)
- Return API member name bold font weight
- SCSS formatting cleanup

Closes #31494

PR Close #31574
2020-03-11 14:47:16 -04:00
dishanfernando 4a1f115d65 docs: change grammar in architecture guide (#35541)
grammar change for better understanding

PR Close #35541
2020-03-11 14:46:45 -04:00
Kara Erickson 17921157b5 build: add more info to SauceLabs README (#35704)
This commit adds a debugging section to the existing
SauceLabs README. It lays out tips to debug and resolve
a few issues that I encountered while running SauceLabs
locally this morning. It also adds some clarification
to the steps in the beginning.

PR Close #35704
2020-03-11 14:46:16 -04:00
George Kalpakas 510e3bfe7e fix(dev-infra): do not run the lock-closed GitHub action on forks (#36000)
Previously, the `lock-closed` GitHub action, which runs daily and locks
closed inactive issues, was run on each fork of the `angular/angular`
repo. While the action is a [no-op on forks][1], it make still fail from
time to time, generating a confusing notification e-mail for the fork
owner.

This commit configures the `lock-closed` action to only run on the main
`angular/angular` repository (using the method suggested [here][2]).

[1]: https://github.com/angular/dev-infra/blob/13b25d383/github-actions/lock-closed/src/main.ts#L117
[2]: https://github.community/t5/GitHub-Actions/Do-not-run-cron-workflows-in-forks/td-p/46756

PR Close #36000
2020-03-11 14:45:47 -04:00
Alan Agius 5dccb65b67 build(dev-infra): handle async failures in get-data.ts (#36007)
Wrap the await block in a try/catch so not to have unhandled promise rejections.

PR Close #36007
2020-03-11 14:45:17 -04:00
jornare c773816a65 docs: Added ngVikings 2020 on angular.io events (#35129)
PR Close #35129
2020-03-11 14:43:47 -04:00
Joey Perrott 3112b1b00a ci: prevent api golden tests on windows CI (#36025)
PR Close #36025
2020-03-11 13:53:18 -04:00
Joey Perrott 8bf26c67c9 docs(dev-infra): update triage and contributing docs for dev-infra (#35995)
PR Close #35995
2020-03-10 21:02:18 -04:00
Misko Hevery 479ee684b3 refactor(core): Take advantage of 'assert functions' for ngDevMode asserts (#35964)
As of TypeScript 3.7, TypeScript supports [Assert Functions](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion-functions). This change adds assert types to our `assert*` functions.

We can't fully take advantage of this due to [Assert functions do not constraint type when they are guarded by a truthy expression.](https://github.com/microsoft/TypeScript/issues/37295)

PR Close #35964
2020-03-10 21:01:26 -04:00
Joey Perrott 04ef34ca10 ci: move public-api goldens to goldens directory (#35768)
Moves the public api .d.ts files from tools/public_api_guard to
goldens/public-api.

Additionally, provides a README in the goldens directory and a script
assist in testing the current state of the repo against the goldens as
well as a command for accepting all changes to the goldens in a single
command.

PR Close #35768
2020-03-10 20:58:40 -04:00
Pawel Kozlowski 3fa632b705 fix(core): don't re-invoke pure pipes that throw and arguments are the same (#35827)
Pure pipes are not invoked again until their arguments are modified. The same
rule should apply to pure pipes that throw an exception. This fix ensures that
a pure pipe is not re-invoked if it throws an exception and arguments are not
changed.

PR Close #35827
2020-03-10 20:58:08 -04:00
Matias Niemelä 5b39a36597 docs: fix CHANGELOG.md date for v9.0.6 2020-03-10 17:49:25 -07:00
Matias Niemelä ecac8c032b release: cut the v9.0.6 release 9.0.6 2020-03-10 17:32:16 -07:00
Andrew Kushnir ce728dd323 build: adding a script to compare commits in master and stable branches (#35130)
Adding a script that compares commits in master and patch branches and finds a delta between them. This is useful for release reviews, to make sure all the necessary commits are included into the patch branch and there is no discrepancy.

PR Close #35130
2020-03-10 17:40:56 -04:00
Joey Perrott 20dd0ac4f2 build: Add pullapprove verification tool to dev-infra-private package (#35911)
Migrates pullapprove verification tool to be available in the dev-infra-private
package

PR Close #35911
2020-03-10 14:17:56 -04:00
Joey Perrott 0f4d424da9 build: creates a script to get contributor stats from across the angular org (#35834)
This script gets all of the current users for the organization and retrieves
information about PR/Issue contributions/authorship since a provided date.
Returning this information as a CSV.

PR Close #35834
2020-03-10 14:17:25 -04:00
Andrew Kushnir 6f2fd6e4b4 fix(compiler): process imports first and declarations second while calculating scopes (#35850)
Prior to this commit, while calculating the scope for a module, Ivy compiler processed `declarations` field first and `imports` after that. That results in a couple issues:

* for Pipes with the same `name` and present in `declarations` and in an imported module, Pipe from imported module was selected. In View Engine the logic is opposite: Pipes from `declarations` field receive higher priority.
* for Directives with the same selector and present in `declarations` and in an imported module, we first invoked the logic of a Directive from `declarations` field and after that - imported Directive logic. In View Engine, it was the opposite and the logic of a Directive from the `declarations` field was invoked last.

In order to align Ivy and View Engine behavior, this commit updates the logic in which we populate module scope: we first process all imports and after that handle `declarations` field. As a result, in Ivy both use-cases listed above work similar to View Engine.

Resolves #35502.

PR Close #35850
2020-03-10 14:16:59 -04:00
crisbeto 8a68a7c490 build: fix elements test failures on IE (#35940)
Fixes the following issues which caused the `elements` unit tests to break on IE:
1. `core.js` wasn't included which caused an error about `Promise` and `Symbol` to be thrown.
2. We were using a version of `@webcomponents/custom-elements` which was shipping ES6 code to npm. As a result, IE was throwing a syntax error.

PR Close #35940
2020-03-10 14:16:34 -04:00
Joey Perrott 800e31b6d3 build: set dev-infra package to be private (#35910)
Setting the dev-infra package to private will prevent us
from accidentally publishing the package to npm.

PR Close #35910
2020-03-10 14:15:58 -04:00
Alex Rickabaugh 0d784e0b00 test(compiler): add a public API guard for the public compiler options (#35885)
This commit adds a public API test which guards against unintentional
changes to the accepted keys in `angularCompilerOptions`.

PR Close #35885
2020-03-10 14:15:29 -04:00
Alex Rickabaugh 8b0e26f786 refactor(compiler): split core/api.ts into multiple files (#35885)
This commit splits the ngtsc `core` package's api entrypoint, which
previously was a single `api.ts` file, into an api/ directory with multiple
files. This is done to isolate the parts of the API definitions pertaining
to the public-facing `angularCompilerOptions` field in tsconfig.json into a
single file, which will enable a public API guard test to be added in a
future commit.

PR Close #35885
2020-03-10 14:15:29 -04:00
Paul Gschwendtner 6ff6159e32 ci: update components-repo-unit-tests job commit (#35961)
Updates the commit that the `components-repo-unit-tests` job runs
against to the latest available commit at time of writing.

The motivation for updating is that a lot of changes have been made, and
that a upcoming framework PR that fixes check no changes for OnPush
components exposed a test failure in `angular/components`.

See: https://github.com/angular/components/commit/eae5cf886d6e93e0d189a7974d2615cc448d54e8

PR Close #35961
2020-03-10 13:29:03 -04:00
Alan Agius db9704a433 fix(platform-browser): add missing peerDependency on @angular/animations (#35949)
`@angular/platform-browser/animations` has a dependency on `@angular/animations` however, this is not listed in `peerDependencies`

With this change we add this package as an optional peerDependency as it's only required when using the `@angular/platform-browser/animations` entrypoint.

Fixes #35888

PR Close #35949
2020-03-10 13:28:33 -04:00
Andrew Scott add3e18e9d test(router): use pageYOffset in testing when scrollY is not available (#35976)
IE 9, 10, and 11 use the non-standard name `pageYOffset` instead of
`scrollY`.

PR Close #35976
2020-03-10 13:28:04 -04:00
Keen Yee Liau b71cdf99fc refactor(compiler): optionalOperator -> consumeOptionalOperator (#35980)
PR Close #35980
2020-03-10 13:27:37 -04:00
ivanwonder f882ff01f3 fix(language-service): resolve the variable from the template context first (#35982)
PR Close #35982
2020-03-10 13:27:04 -04:00
Joey Perrott 2184ad5436 feat(dev-infra): add dev-infra to the commit message scopes (#35992)
Adds dev-infra to the commit message scopes.  Also, sets the scope to be ignored
in changelogs.

PR Close #35992
2020-03-10 13:26:14 -04:00
Pete Bacon Darwin 83d7819bfc fix(localize): merge translation from all XLIFF <file> elements (#35936)
XLIFF translation files can contain multiple `<file>` elements,
each of which contains translations. In ViewEngine all these
translations are merged into a single translation bundle.

Previously in Ivy only the translations from the last `<file>`
element were being loaded. Now all the translations from each
`<file>` are merged into a single translation bundle.

Fixes #35839

PR Close #35936
2020-03-09 13:06:05 -04:00
Wagner Maciel 4cc519eb10 refactor(benchpress): remove benchmarks_external from ..pullapprove.yml (#35670)
PR Close #35670
2020-03-09 12:19:25 -04:00
Wagner Maciel 8bcb0784bc refactor(benchpress): delete unused code (#35670)
PR Close #35670
2020-03-09 12:19:25 -04:00
Pete Bacon Darwin 9f68ff9e5b fix(localize): improve matching and parsing of XTB translation files (#35793)
This commit improves the `canParse()` method to check that the file is
valid XML and has the expected root node. Previously it was relying upon
a regular expression to do this.

PR Close #35793
2020-03-09 12:12:00 -04:00