Go to file
Alex Rickabaugh 95c729f5d1 build: typescript 3.8 support (#35864)
This commit adds support in the Angular monorepo and in the Angular
compiler(s) for TypeScript 3.8. All packages can now compile with
TS 3.8.

For most of the repo, only a handful few typings adjustments were needed:

* TS 3.8 has a new `CustomElementConstructor` DOM type, which enforces a
  zero-argument constructor. The `NgElementConstructor` type previously
  declared a required `injector` argument despite the fact that its
  implementation allowed `injector` to be optional. The interface type was
  updated to reflect the optionality of the argument.
* Certain error messages were changed, and expectations in tests were
  updated as a result.
* tsserver (part of language server) now returns performance information in
  responses, so test expectations were changed to only assert on the actual
  body content of responses.

For compiler-cli and schematics (which use the TypeScript AST) a major
breaking change was the introduction of the export form:

```typescript
export * as foo from 'bar';
```

This is a `ts.NamespaceExport`, and the `exportClause` of a
`ts.ExportDeclaration` can now take this type as well as `ts.NamedExports`.
This broke a lot of places where `exportClause` was assumed to be
`ts.NamedExports`.

For the most part these breakages were in cases where it is not necessary
to handle the new `ts.NamedExports` anyway. ngtsc's design uses the
`ts.TypeChecker` APIs to understand syntax and so automatically supports the
new form of exports.

The View Engine compiler on the other hand extracts TS structures into
metadata.json files, and that format was not designed for namespaced
exports. As a result it will take a nontrivial amount of work if we want to
support such exports in View Engine. For now, these new exports are not
accounted for in metadata.json, and so using them in "folded" Angular
expressions will result in errors (probably claiming that the referenced
exported namespace doesn't exist).

Care was taken to only use TS APIs which are present in 3.7/3.6, as Angular
needs to remain compatible with these for the time being.

This commit does not update angular.io.

PR Close #35864
2020-03-10 17:51:20 -04:00
.circleci ci: update components-repo-unit-tests job commit (#35961) 2020-03-10 13:29:02 -04:00
.devcontainer build: update the recommended `Dockerfile` for VSCode remote development (#34697) 2020-01-09 13:31:14 -08:00
.github ci: Migrate from CODEOWNERS to PullApprove for PR review management (#34814) 2020-01-28 09:19:34 -08:00
.vscode build: migrate references and scripts that set to build with ivy via compile=aot to use config=ivy (#33983) 2019-11-26 16:38:40 -05:00
.yarn build: vendor yarn using the .yarnrc yarn-path value (#34902) 2020-01-23 11:41:23 -08:00
aio refactor: export silentLogger not SilentLoggerFn (#34079) 2020-03-06 17:37:12 -05:00
dev-infra build: Add pullapprove verification tool to dev-infra-private package (#35911) 2020-03-10 14:17:56 -04:00
docs build: move build scripts to dedicated directory (#35780) 2020-03-04 08:35:26 -08:00
integration build: typescript 3.8 support (#35864) 2020-03-10 17:51:20 -04:00
modules refactor(benchpress): delete unused code (#35670) 2020-03-09 12:19:25 -04:00
packages build: typescript 3.8 support (#35864) 2020-03-10 17:51:20 -04:00
scripts build: adding a script to compare commits in master and stable branches (#35130) 2020-03-10 17:40:56 -04:00
third_party ci: Remove old vendoring solution in favor of relying on yarn-path (#35083) 2020-02-06 15:30:51 -08:00
tools build: typescript 3.8 support (#35864) 2020-03-10 17:51:20 -04:00
.bazelignore build: add npm package manifest to npm_integration_test (#35669) 2020-02-26 12:58:35 -08:00
.bazelrc build: remove CI_CHROMEDIRVER_VERSION_ARG from integration/bazel-schematics (#33927) 2020-02-24 08:59:18 -08:00
.clang-format feat(tooling): Add a .clang-format for automated JavaScript formatting. 2015-04-02 08:44:34 -07:00
.editorconfig build: use https link to editorconfig.org in .editorconfig (#27664) 2018-12-18 09:30:09 -08:00
.gitattributes test: fix ts api guardian and public guard tests on windows (#30105) 2019-04-26 16:32:22 -07:00
.gitignore ci: do not run benchmark measurements in circleci (#34753) 2020-01-29 09:22:27 -08:00
.mailmap build: add a Git .mailmap with my new name (#19550) 2017-10-09 14:35:30 -07:00
.nvmrc build: migrate to node@12.14.1 (#34955) 2020-01-27 09:31:22 -08:00
.pullapprove.yml build: creates a script to get contributor stats from across the angular org (#35834) 2020-03-10 14:17:24 -04:00
.yarnrc build: vendor yarn using the .yarnrc yarn-path value (#34902) 2020-01-23 11:41:23 -08:00
BUILD.bazel test: saucelab targets for all karma tests (#35516) 2020-02-24 17:27:21 -08:00
CHANGELOG.md docs: release notes for the v9.1.0-next.3 release 2020-03-04 11:46:14 -08:00
CODE_OF_CONDUCT.md docs: fix community tab in GitHub by copying CoC 2018-02-27 19:02:30 -08:00
CONTRIBUTING.md docs: remove `ivy` and mention `ve` label in docs (#35809) 2020-03-04 08:34:54 -08:00
LICENSE build: bump year (#34651) 2020-01-13 07:21:43 -08:00
README.md docs: fix typo of Typescript to TypeScript (#32153) 2019-08-15 12:44:41 -07:00
WORKSPACE build: update to rules_nodejs 1.4.0 (#35813) 2020-03-03 08:58:26 -08:00
browser-providers.conf.js ci: update the browser test matrix to match supported browsers (#35202) 2020-02-14 11:14:05 -08:00
gulpfile.js build: no longer run tslint from within gulp task (#35800) 2020-03-03 09:20:49 -08:00
karma-js.conf.js ci: ensure saucelabs browsers can load karma test page (#35171) 2020-02-06 15:36:27 -08:00
package.json build: typescript 3.8 support (#35864) 2020-03-10 17:51:20 -04:00
protractor-perf.conf.js test: ensure global options for benchmark tests can be set in bazel (#34753) 2020-01-29 09:22:27 -08:00
shims_for_IE.js Revert "refactor: add license header to JS files & format files (#12035)" 2016-10-04 14:06:41 -07:00
test-events.js refactor: rename unpatched event flag in Zone from `BLACK_LISTED_EVENTS` to `UNPATCHED_EVENTS` (#29617) 2019-10-04 08:44:58 -07:00
test-main.js feat(ivy): i18n - implement compile-time inlining (#32881) 2019-10-09 13:19:38 -07:00
tslint.json build: no longer run tslint from within gulp task (#35800) 2020-03-03 09:20:49 -08:00
yarn.lock build: typescript 3.8 support (#35864) 2020-03-10 17:51:20 -04:00
yarn.lock.readme.md build: remove travisci leftovers (#27979) 2019-01-09 10:41:16 -08:00

README.md

CircleCI BrowserStack Status Join the chat at https://gitter.im/angular/angular npm version

Angular

Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages.

Quickstart

Get started in 5 minutes.

Changelog

Learn about the latest improvements.

Want to help?

Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on our guidelines for contributing and then check out one of our issues in the hotlist: community-help.