Deliver web apps with confidence 🚀
Find a file
Alex Rickabaugh 08a4f10ee7 fix(ivy): move setClassMetadata calls into a pure iife (#33337)
This commit transforms the setClassMetadata calls generated by ngtsc from:

```typescript
/*@__PURE__*/ setClassMetadata(...);
```

to:

```typescript
/*@__PURE__*/ (function() {
  setClassMetadata(...);
})();
```

Without the IIFE, terser won't remove these function calls because the
function calls have arguments that themselves are function calls or other
impure expressions. In order to make the whole block be DCE-ed by terser,
we wrap it into IIFE and mark the IIFE as pure.

It should be noted that this change doesn't have any impact on CLI* with
build-optimizer, which removes the whole setClassMetadata block within
the webpack loader, so terser or webpack itself don't get to see it at
all. This is done to prevent cross-chunk retention issues caused by
webpack's internal module registry.

* actually we do expect a short-term size regression while
https://github.com/angular/angular-cli/pull/16228
is merged and released in the next rc of the CLI. But long term this
change does nothing to CLI + build-optimizer configuration and is done
primarly to correct the seemingly correct but non-function PURE annotation
that builds not using build-optimizer could rely on.

PR Close #33337
2019-11-20 12:55:58 -08:00
.circleci build: fix build scripts on macOS (#33854) 2019-11-15 16:05:00 -08:00
.devcontainer docs: add info on setting up VSCode remote development using docker containers (#33790) 2019-11-13 13:33:21 -08:00
.github docs: remove migration-ngcc guide (#33727) 2019-11-12 14:03:48 -08:00
.vscode style: increase timeout to give blaze sufficient time to build (#33678) 2019-11-08 10:55:01 -08:00
aio fix(ivy): move setClassMetadata calls into a pure iife (#33337) 2019-11-20 12:55:58 -08:00
docs build: fix build scripts on macOS (#33854) 2019-11-15 16:05:00 -08:00
integration fix(ivy): move setClassMetadata calls into a pure iife (#33337) 2019-11-20 12:55:58 -08:00
modules build: fixes for cross-platform RBE (#33708) 2019-11-15 10:49:55 -08:00
packages fix(ivy): move setClassMetadata calls into a pure iife (#33337) 2019-11-20 12:55:58 -08:00
scripts build: ensure package-builder finds bazel (#33904) 2019-11-19 11:40:19 -08:00
third_party build: update to @bazel/bazel 1.0.0 (#33476) 2019-10-29 16:22:41 -07:00
tools build: add ngJitMode to ng_rollup_bundle terser config (#33865) 2019-11-20 10:29:46 -08:00
.bazelignore build: update to rules_nodejs 0.32.2 (#31325) 2019-07-01 14:16:42 -07:00
.bazelrc build: remove rollup-rule temp settings (#33908) 2019-11-18 16:02:25 -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 docs: add info on setting up VSCode remote development using docker containers (#33790) 2019-11-13 13:33:21 -08:00
.mailmap build: add a Git .mailmap with my new name (#19550) 2017-10-09 14:35:30 -07:00
.nvmrc build: update .nvmrc to correct node version (#33636) 2019-11-06 21:23:07 +00:00
browser-providers.conf.js ci: re-enable chrome mobile tests on android (#32447) 2019-09-03 11:58:30 -07:00
BUILD.bazel build: reference zone.js from source directly instead of npm. (#33046) 2019-11-06 00:48:34 +00:00
CHANGELOG.md docs(changelog): mention CLDR update in breaking changes (#33848) 2019-11-15 10:34:36 -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: add missing parenthesis (#31041) 2019-10-07 11:02:33 -07:00
gulpfile.js build: move cldr dependency to npm (#33634) 2019-11-07 17:49:19 +00:00
karma-js.conf.js build: reference zone.js from source directly instead of npm. (#33046) 2019-11-06 00:48:34 +00:00
LICENSE build: bump year (#27880) 2019-01-11 11:15:59 -08:00
package.json build: update to fsevents@2.1.2 (#33866) 2019-11-18 09:12:30 -08:00
protractor-perf.conf.js fixup! test(ivy): make the test run with benchpress (#30449) 2019-05-16 20:04:04 -07:00
README.md docs: fix typo of Typescript to TypeScript (#32153) 2019-08-15 12:44:41 -07:00
renovate.json ci: update packageFiles to be renovated (#29071) 2019-03-05 09:43:23 -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 style: enforce disallowance of String, Number and Boolean constructors (#33210) 2019-10-17 14:12:00 -04:00
WORKSPACE build: remove rules_nodejs legacy rollup_bundle patch (#33915) 2019-11-19 11:39:49 -08:00
yarn.lock build: update to fsevents@2.1.2 (#33866) 2019-11-18 09:12:30 -08:00
yarn.lock.readme.md build: remove travisci leftovers (#27979) 2019-01-09 10:41:16 -08:00

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.