angular/packages/zone.js/test
JiaLiPassion f35f7c6d37 fix(zone.js): fesm2015 bundle should also be strict module. (#40456)
Close #40215

`fesm2015/zone.js` is built to `esm` bundle with rollup, so the 'use strict';
statement is not generated in the bundle, even we put the 'use strict' in the src code,
rollup removes the code in the final bundle.

So if we load the `fesm2015/zone.js` as a module, such as `ng serve`, in the index.html

```
<script src="polyfills.js" type="module"></script>
```

Everything works fine, since polyfills.js is loaded as `module`, so it is always `strict`.

But in `ng test`, webpack concat the `zone.js` and loaded into the karma html. For other app and
 test code, they are still `strict` since they are `module` because they have `export/import`
statement, but `zone.js` is a bundle without `export`, it is a `side effect` bundle, so after
 loaded by webpack, it becomes non-strict. Which causes some issues, such as #40215,
the root cause is the `this` context should be `undefined` but treated as `Window` in `non-strict` mode.

```
Object.prototype.toString.apply(undefined);
// should be [object undefined], but it is [object Window] in non-strict mode.

// zone.js patched version of toString
Object.prototype.toString = function() {
  ...
  // in non-strict mode, this is Window
  return originalObjectPrototypeToString.call(this);
}

```

So in this commit, `'use strict';` is always added to the `esm` bundles.

PR Close #40456
2021-01-19 09:16:41 -08:00
..
assets build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
browser feat(zone.js): monkey patches queueMicrotask() (#38904) 2020-11-05 11:23:33 -08:00
closure test(zone.js): add zone.js externs test (#39108) 2020-10-22 13:40:08 -07:00
common fix(zone.js): patch child method that overrides an already patched method (#39850) 2020-12-02 12:52:27 -08:00
extra feat(zone.js): upgrade zone.js to angular package format(APF) (#36540) 2020-06-11 11:08:48 -07:00
jest refactor(zone.js): rename several internal apis in fake async zone spec (#39127) 2020-10-13 15:56:22 -07:00
node fix(zone.js): patch nodejs EventEmtter.prototype.off (#37863) 2020-07-24 15:45:00 -07:00
npm_package fix(zone.js): fesm2015 bundle should also be strict module. (#40456) 2021-01-19 09:16:41 -08:00
patch build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
performance build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
promise build: reformat repo to new clang@1.4.0 (#36613) 2020-04-14 12:08:36 -07:00
rxjs fix(zone.js): zone patch rxjs should return null _unsubscribe correctly. (#37091) 2020-07-27 12:10:27 -07:00
typings build: support building with TypeScript 4.1 (#39571) 2020-11-25 11:10:01 -08:00
webdriver test(zone.js): do not run tests on IE 9 and IE 10 (#39189) 2020-10-12 08:27:25 -07:00
zone-spec build: support building with TypeScript 4.1 (#39571) 2020-11-25 11:10:01 -08:00
browser-env-setup.ts build: move zone.js to angular repo (#30962) 2019-06-20 11:27:39 -07:00
browser-zone-setup.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
browser_disable_wrap_uncaught_promise_rejection_entry_point.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
browser_disable_wrap_uncaught_promise_rejection_setup.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
browser_entry_point.ts feat(zone.js): monkey patches queueMicrotask() (#38904) 2020-11-05 11:23:33 -08:00
browser_es2015_entry_point.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
browser_shadydom_entry_point.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
browser_shadydom_setup.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
browser_symbol_setup.ts build: move zone.js to angular repo (#30962) 2019-06-20 11:27:39 -07:00
BUILD.bazel feat(zone.js): upgrade zone.js to angular package format(APF) (#36540) 2020-06-11 11:08:48 -07:00
common_tests.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
fake_entry.js build: move zone.js to angular repo (#30962) 2019-06-20 11:27:39 -07:00
jasmine-patch.spec.ts build: support building with TypeScript 4.1 (#39571) 2020-11-25 11:10:01 -08:00
karma_test.bzl build: update to use npm_package.pack rule (#39636) 2020-12-14 11:29:33 -08:00
main.ts refactor(zone.js): rename BlacklistedStackFrames to InternalZoneJsStackFrames (#38978) 2020-09-28 16:23:41 -04:00
mocha-patch.spec.ts build: support building with TypeScript 4.1 (#39571) 2020-11-25 11:10:01 -08:00
node-env-setup.ts build: move zone.js to angular repo (#30962) 2019-06-20 11:27:39 -07:00
node_bluebird_entry_point.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
node_entry_point.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
node_entry_point_no_patch_clock.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
node_error_disable_policy_entry_point.ts refactor(zone.js): rename BlacklistedStackFrames to InternalZoneJsStackFrames (#38978) 2020-09-28 16:23:41 -04:00
node_error_entry_point.ts refactor(zone.js): rename BlacklistedStackFrames to InternalZoneJsStackFrames (#38978) 2020-09-28 16:23:41 -04:00
node_error_lazy_policy_entry_point.ts refactor(zone.js): rename BlacklistedStackFrames to InternalZoneJsStackFrames (#38978) 2020-09-28 16:23:41 -04:00
node_tests.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
saucelabs.js build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
test-env-setup-jasmine-no-patch-clock.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
test-env-setup-jasmine.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
test-env-setup-mocha.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
test-util.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
test_fake_polyfill.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
ws-client.js build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
ws-server.js build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
ws-webworker-context.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
wtf_mock.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
zone_worker_entry_point.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00