feat(zone.js): upgrade zone.js to angular package format(APF) (#36540)

Close #35157

In the current version of zone.js, zone.js uses it's own package format, and it is not following the rule
of Angualr package format(APF), so it is not easily to be consumed by Angular CLI or other bundle tools.
For example, zone.js npm package has two bundles,

1. zone.js/dist/zone.js, this is a `es5` bundle.
2. zone.js/dist/zone-evergreen.js, this is a `es2015` bundle.

And Angular CLI has to add some hard-coding code to handle this case, o5376a8b139/packages/schematics/angular/application/files/src/polyfills.ts.template (L55-L58)

This PR upgrade zone.js npm package format to follow APF rule, https://docs.google.com/document/d/1CZC2rcpxffTDfRDs6p1cfbmKNLA6x5O-NtkJglDaBVs/edit#heading=h.k0mh3o8u5hx

The updated points are:

1. in package.json, update all bundle related properties

```
  "main": "./bundles/zone.umd.js",
  "module": "./fesm2015/zone.js",
  "es2015": "./fesm2015/zone.js",
  "fesm2015": "./fesm2015/zone.js",
```

2. re-organize dist folder, for example for `zone.js` bundle, now we have

```
  dist/
      bundles/
             zone.js            // this is the es5 bundle
      fesm2015/
             zone.js            // this is the es2015 bundle (in the old version is `zone-evergreen.js`)
```

3. have several sub-packages.

1. `zone-testing`, provide zone-testing bundles include zone.js and testing libraries
2. `zone-node`, provide zone.js implemention for NodeJS
3. `zone-mix`, provide zone.js patches for both Browser and NodeJS

All those sub-packages will have their own `package.json` and the bundle will reference `bundles(es5)` and `fesm2015(es2015)`.

4. keep backward compatibility, still keep the `zone.js/dist` folder, and all bundles will be redirected to `zone.js/bundles` or `zone.js/fesm2015` folders.

PR Close #36540
This commit is contained in:
JiaLiPassion
2020-05-17 10:53:03 +09:00
committed by Misko Hevery
parent 1fce6d6bae
commit 583a9d38a1
182 changed files with 1710 additions and 904 deletions

View File

@ -1,5 +1,8 @@
load("//tools:defaults.bzl", "pkg_npm")
load("//packages/zone.js:bundles.bzl", "ES2015_BUNDLES", "ES5_BUNDLES", "ES5_GLOBAL_BUNDLES")
load("//packages/zone.js:bundles.bzl", "BUNDLES_ENTRY_POINTS")
load("//packages/zone.js:tools.bzl", "generate_rollup_bundle")
package(default_visibility = ["//visibility:public"])
exports_files([
"tsconfig.json",
@ -21,27 +24,75 @@ genrule(
cmd = "(echo '/**\n @license' && cat $< && echo '*/') > $@",
)
# copy this file from //lib to //dist
genrule(
name = "zone_externs",
srcs = ["//packages/zone.js/lib:closure/zone_externs.js"],
outs = ["zone_externs.js"],
cmd = "cp $< $@",
)
genrule(
name = "zone_js_d_ts",
srcs = ["//packages/zone.js/lib:zone_d_ts"],
outs = ["zone.js.d.ts"],
cmd = "cp $< $@",
)
genrule(
name = "zone_extensions_d_ts",
srcs = ["//packages/zone.js/lib:zone.api.extensions.ts"],
outs = ["zone.api.extensions.ts"],
cmd = "cp $< $@",
)
genrule(
name = "zone_configurations_d_ts",
srcs = ["//packages/zone.js/lib:zone.configurations.api.ts"],
outs = ["zone.configurations.api.ts"],
cmd = "cp $< $@",
)
filegroup(
name = "zone_d_ts",
srcs = [
":zone_configurations_d_ts",
":zone_extensions_d_ts",
":zone_js_d_ts",
],
)
generate_rollup_bundle(
bundles = BUNDLES_ENTRY_POINTS,
)
pkg_npm(
name = "npm_package",
srcs = [
"CHANGELOG.md",
"README.md",
"package.json",
"//packages/zone.js/mix:package.json",
"//packages/zone.js/node:package.json",
"//packages/zone.js/testing:package.json",
],
visibility = ["//visibility:public"],
deps = [
":LICENSE.wrapped",
":LICENSE_copy",
"//packages/zone.js/dist:zone_externs",
"//packages/zone.js/lib",
":zone_externs",
"//packages/zone.js/dist:dist_bundle_group",
] + [
"//packages/zone.js/dist:" + b + "-dist"
for b in ES5_BUNDLES
"//packages/zone.js/bundles:" + b + "-es5.dist"
for b in BUNDLES_ENTRY_POINTS.keys()
] + [
"//packages/zone.js/dist:" + b + "-dist"
for b in ES2015_BUNDLES
"//packages/zone.js/bundles:" + b + "-es5.min.dist"
for b in BUNDLES_ENTRY_POINTS.keys()
] + [
"//packages/zone.js/dist:" + b + "-dist"
for b in ES5_GLOBAL_BUNDLES
] + ["//packages/zone.js/dist:zone_d_ts"],
"//packages/zone.js/fesm2015:" + b + "-es2015.dist"
for b in BUNDLES_ENTRY_POINTS.keys()
] + [
"//packages/zone.js/fesm2015:" + b + "-es2015.min.dist"
for b in BUNDLES_ENTRY_POINTS.keys()
] + [":zone_d_ts"],
)

View File

@ -5,47 +5,143 @@ by mapping the bundle name to the source location.
_DIR = "//packages/zone.js/lib:"
ES5_GLOBAL_BUNDLES = {
"zone": _DIR + "browser/rollup-legacy-main",
"zone-mix": _DIR + "mix/rollup-mix",
"zone-node": _DIR + "node/rollup-main",
"zone-testing-node-bundle": _DIR + "node/rollup-test-main",
}
ES5_BUNDLES = {
"async-test": _DIR + "testing/async-testing",
"fake-async-test": _DIR + "testing/fake-async",
"long-stack-trace-zone": _DIR + "zone-spec/long-stack-trace",
"proxy": _DIR + "zone-spec/proxy",
"zone-patch-rxjs-fake-async": _DIR + "rxjs/rxjs-fake-async",
"sync-test": _DIR + "zone-spec/sync-test",
"task-tracking": _DIR + "zone-spec/task-tracking",
"wtf": _DIR + "zone-spec/wtf",
"zone-error": _DIR + "common/error-rewrite",
"zone-legacy": _DIR + "browser/browser-legacy",
"zone-bluebird": _DIR + "extra/bluebird",
"zone-patch-canvas": _DIR + "browser/canvas",
"zone-patch-cordova": _DIR + "extra/cordova",
"zone-patch-electron": _DIR + "extra/electron",
"zone-patch-fetch": _DIR + "common/fetch",
"jasmine-patch": _DIR + "jasmine/jasmine",
"zone-patch-jsonp": _DIR + "extra/jsonp",
"webapis-media-query": _DIR + "browser/webapis-media-query",
"mocha-patch": _DIR + "mocha/mocha",
"webapis-notification": _DIR + "browser/webapis-notification",
"zone-patch-promise-test": _DIR + "testing/promise-testing",
"zone-patch-resize-observer": _DIR + "browser/webapis-resize-observer",
"webapis-rtc-peer-connection": _DIR + "browser/webapis-rtc-peer-connection",
"zone-patch-rxjs": _DIR + "rxjs/rxjs",
"webapis-shadydom": _DIR + "browser/shadydom",
"zone-patch-socket-io": _DIR + "extra/socket-io",
"zone-patch-message-port": _DIR + "browser/message-port",
"zone-patch-user-media": _DIR + "browser/webapis-user-media",
"zone-testing": _DIR + "testing/zone-testing",
"zone-testing-bundle": _DIR + "browser/rollup-legacy-test-main",
}
ES2015_BUNDLES = {
"zone-evergreen": _DIR + "browser/rollup-main",
"zone-evergreen-testing-bundle": _DIR + "browser/rollup-test-main",
BUNDLES_ENTRY_POINTS = {
"zone": {
"es5": _DIR + "browser/rollup-legacy-main",
"es2015": _DIR + "browser/rollup-main",
"rollup": "global-es2015",
},
"zone-mix": {
"entrypoint": _DIR + "mix/rollup-mix",
"rollup": "global-es2015",
},
"zone-node": {
"entrypoint": _DIR + "node/rollup-main",
"rollup": "global-es2015",
},
"async-test": {
"entrypoint": _DIR + "testing/async-testing",
"rollup": "es5",
},
"fake-async-test": {
"entrypoint": _DIR + "testing/fake-async",
"rollup": "es5",
},
"long-stack-trace-zone": {
"entrypoint": _DIR + "zone-spec/long-stack-trace",
"rollup": "es5",
},
"proxy": {
"entrypoint": _DIR + "zone-spec/proxy",
"rollup": "es5",
},
"zone-patch-rxjs-fake-async": {
"entrypoint": _DIR + "zone-spec/proxy",
"rollup": "es5",
},
"sync-test": {
"entrypoint": _DIR + "zone-spec/sync-test",
"rollup": "es5",
},
"task-tracking": {
"entrypoint": _DIR + "zone-spec/task-tracking",
"rollup": "es5",
},
"wtf": {
"entrypoint": _DIR + "zone-spec/wtf",
"rollup": "es5",
},
"zone-error": {
"entrypoint": _DIR + "common/error-rewrite",
"rollup": "es5",
},
"zone-legacy": {
"entrypoint": _DIR + "browser/browser-legacy",
"rollup": "es5",
},
"zone-bluebird": {
"entrypoint": _DIR + "extra/bluebird",
"rollup": "es5",
},
"zone-patch-canvas": {
"entrypoint": _DIR + "browser/canvas",
"rollup": "es5",
},
"zone-patch-cordova": {
"entrypoint": _DIR + "extra/cordova",
"rollup": "es5",
},
"zone-patch-electron": {
"entrypoint": _DIR + "extra/electron",
"rollup": "es5",
},
"zone-patch-fetch": {
"entrypoint": _DIR + "common/fetch",
"rollup": "es5",
},
"jasmine-patch": {
"entrypoint": _DIR + "jasmine/jasmine",
"rollup": "es5",
},
"zone-patch-jsonp": {
"entrypoint": _DIR + "extra/jsonp",
"rollup": "es5",
},
"webapis-media-query": {
"entrypoint": _DIR + "browser/webapis-media-query",
"rollup": "es5",
},
"mocha-patch": {
"entrypoint": _DIR + "mocha/mocha",
"rollup": "es5",
},
"webapis-notification": {
"entrypoint": _DIR + "browser/webapis-notification",
"rollup": "es5",
},
"zone-patch-promise-test": {
"entrypoint": _DIR + "testing/promise-testing",
"rollup": "es5",
},
"zone-patch-resize-observer": {
"entrypoint": _DIR + "browser/webapis-resize-observer",
"rollup": "es5",
},
"webapis-rtc-peer-connection": {
"entrypoint": _DIR + "browser/webapis-rtc-peer-connection",
"rollup": "es5",
},
"zone-patch-rxjs": {
"entrypoint": _DIR + "rxjs/rxjs",
"rollup": "es5",
},
"webapis-shadydom": {
"entrypoint": _DIR + "browser/shadydom",
"rollup": "es5",
},
"zone-patch-socket-io": {
"entrypoint": _DIR + "extra/socket-io",
"rollup": "es5",
},
"zone-patch-message-port": {
"entrypoint": _DIR + "browser/message-port",
"rollup": "es5",
},
"zone-patch-user-media": {
"entrypoint": _DIR + "browser/webapis-user-media",
"rollup": "es5",
},
"zone-testing": {
"entrypoint": _DIR + "testing/zone-testing",
"rollup": "es5",
},
"zone-testing-bundle": {
"es5": _DIR + "browser/rollup-legacy-test-main",
"es2015": _DIR + "browser/rollup-test-main",
"rollup": "global-es2015",
},
"zone-testing-node-bundle": {
"entrypoint": _DIR + "node/rollup-test-main",
"rollup": "global-es2015",
},
}

View File

@ -0,0 +1,8 @@
load("//packages/zone.js:tools.bzl", "generate_dist")
load("//packages/zone.js:bundles.bzl", "BUNDLES_ENTRY_POINTS")
generate_dist(
bundles = BUNDLES_ENTRY_POINTS.items(),
output_format = "es5",
umd = "umd",
)

View File

@ -1,62 +1,80 @@
load("//packages/zone.js:bundles.bzl", "ES2015_BUNDLES", "ES5_BUNDLES", "ES5_GLOBAL_BUNDLES")
load("//packages/zone.js/dist:tools.bzl", "generate_dist", "zone_rollup_bundle")
package(default_visibility = ["//visibility:public"])
# copy this file from //lib to //dist
genrule(
name = "zone_externs",
srcs = ["//packages/zone.js/lib:closure/zone_externs.js"],
outs = ["zone_externs.js"],
cmd = "cp $< $@",
)
genrule(
name = "zone_js_d_ts",
srcs = ["//packages/zone.js/lib:zone_d_ts"],
outs = ["zone.js.d.ts"],
cmd = "cp $< $@",
)
genrule(
name = "zone_extensions_d_ts",
srcs = ["//packages/zone.js/lib:zone.api.extensions.ts"],
outs = ["zone.api.extensions.ts"],
cmd = "cp $< $@",
)
genrule(
name = "zone_configurations_d_ts",
srcs = ["//packages/zone.js/lib:zone.configurations.api.ts"],
outs = ["zone.configurations.api.ts"],
cmd = "cp $< $@",
)
filegroup(
name = "zone_d_ts",
name = "dist_bundle_group",
srcs = [
":zone_configurations_d_ts",
":zone_extensions_d_ts",
":zone_js_d_ts",
"//packages/zone.js/dist:async-test.min/package.json",
"//packages/zone.js/dist:async-test/package.json",
"//packages/zone.js/dist:fake-async-test.min/package.json",
"//packages/zone.js/dist:fake-async-test/package.json",
"//packages/zone.js/dist:jasmine-patch.min/package.json",
"//packages/zone.js/dist:jasmine-patch/package.json",
"//packages/zone.js/dist:long-stack-trace-zone.min/package.json",
"//packages/zone.js/dist:long-stack-trace-zone/package.json",
"//packages/zone.js/dist:mocha-patch.min/package.json",
"//packages/zone.js/dist:mocha-patch/package.json",
"//packages/zone.js/dist:proxy.min/package.json",
"//packages/zone.js/dist:proxy/package.json",
"//packages/zone.js/dist:sync-test.min/package.json",
"//packages/zone.js/dist:sync-test/package.json",
"//packages/zone.js/dist:task-tracking.min/package.json",
"//packages/zone.js/dist:task-tracking/package.json",
"//packages/zone.js/dist:webapis-media-query.min/package.json",
"//packages/zone.js/dist:webapis-media-query/package.json",
"//packages/zone.js/dist:webapis-notification.min/package.json",
"//packages/zone.js/dist:webapis-notification/package.json",
"//packages/zone.js/dist:webapis-rtc-peer-connection.min/package.json",
"//packages/zone.js/dist:webapis-rtc-peer-connection/package.json",
"//packages/zone.js/dist:webapis-shadydom.min/package.json",
"//packages/zone.js/dist:webapis-shadydom/package.json",
"//packages/zone.js/dist:wtf.min/package.json",
"//packages/zone.js/dist:wtf/package.json",
"//packages/zone.js/dist:zone.min/package.json",
"//packages/zone.js/dist:zone-bluebird.min/package.json",
"//packages/zone.js/dist:zone-bluebird/package.json",
"//packages/zone.js/dist:zone-error.min/package.json",
"//packages/zone.js/dist:zone-error/package.json",
"//packages/zone.js/dist:zone-evergreen.min/package.json",
"//packages/zone.js/dist:zone-evergreen-testing-bundle.min/package.json",
"//packages/zone.js/dist:zone-evergreen-testing-bundle/package.json",
"//packages/zone.js/dist:zone-evergreen/package.json",
"//packages/zone.js/dist:zone-legacy.min/package.json",
"//packages/zone.js/dist:zone-legacy/package.json",
"//packages/zone.js/dist:zone-mix.min/package.json",
"//packages/zone.js/dist:zone-mix/package.json",
"//packages/zone.js/dist:zone-node.min/package.json",
"//packages/zone.js/dist:zone-node/package.json",
"//packages/zone.js/dist:zone-patch-canvas.min/package.json",
"//packages/zone.js/dist:zone-patch-canvas/package.json",
"//packages/zone.js/dist:zone-patch-cordova.min/package.json",
"//packages/zone.js/dist:zone-patch-cordova/package.json",
"//packages/zone.js/dist:zone-patch-electron.min/package.json",
"//packages/zone.js/dist:zone-patch-electron/package.json",
"//packages/zone.js/dist:zone-patch-fetch.min/package.json",
"//packages/zone.js/dist:zone-patch-fetch/package.json",
"//packages/zone.js/dist:zone-patch-jsonp.min/package.json",
"//packages/zone.js/dist:zone-patch-jsonp/package.json",
"//packages/zone.js/dist:zone-patch-message-port.min/package.json",
"//packages/zone.js/dist:zone-patch-message-port/package.json",
"//packages/zone.js/dist:zone-patch-promise-test.min/package.json",
"//packages/zone.js/dist:zone-patch-promise-test/package.json",
"//packages/zone.js/dist:zone-patch-resize-observer.min/package.json",
"//packages/zone.js/dist:zone-patch-resize-observer/package.json",
"//packages/zone.js/dist:zone-patch-rxjs.min/package.json",
"//packages/zone.js/dist:zone-patch-rxjs-fake-async.min/package.json",
"//packages/zone.js/dist:zone-patch-rxjs-fake-async/package.json",
"//packages/zone.js/dist:zone-patch-rxjs/package.json",
"//packages/zone.js/dist:zone-patch-socket-io.min/package.json",
"//packages/zone.js/dist:zone-patch-socket-io/package.json",
"//packages/zone.js/dist:zone-patch-user-media.min/package.json",
"//packages/zone.js/dist:zone-patch-user-media/package.json",
"//packages/zone.js/dist:zone-testing.min/package.json",
"//packages/zone.js/dist:zone-testing-bundle.min/package.json",
"//packages/zone.js/dist:zone-testing-bundle/package.json",
"//packages/zone.js/dist:zone-testing-node-bundle.min/package.json",
"//packages/zone.js/dist:zone-testing-node-bundle/package.json",
"//packages/zone.js/dist:zone-testing/package.json",
"//packages/zone.js/dist:zone/package.json",
"//packages/zone.js/dist:zone_externs/package.json",
],
)
zone_rollup_bundle(
bundles = ES5_BUNDLES.items(),
config_file = "//packages/zone.js:rollup-es5.config.js",
)
zone_rollup_bundle(
bundles = ES5_GLOBAL_BUNDLES.items() + ES2015_BUNDLES.items(),
config_file = "//packages/zone.js:rollup-es5_global-es2015.config.js",
)
generate_dist(
bundles = ES5_BUNDLES.items() + ES5_GLOBAL_BUNDLES.items(),
module = "es5",
)
generate_dist(
bundles = ES2015_BUNDLES.items(),
module = "",
)

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/async-test.min",
"main": "../../bundles/async-test.umd.min.js",
"fesm2015": "../../fesm2015/async-test.min.js",
"es2015": "../../fesm2015/async-test.min.js",
"module": "../../fesm2015/async-test.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/async-test",
"main": "../../bundles/async-test.umd.js",
"fesm2015": "../../fesm2015/async-test.js",
"es2015": "../../fesm2015/async-test.js",
"module": "../../fesm2015/async-test.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/fake-async-test.min",
"main": "../../bundles/fake-async-test.umd.min.js",
"fesm2015": "../../fesm2015/fake-async-test.min.js",
"es2015": "../../fesm2015/fake-async-test.min.js",
"module": "../../fesm2015/fake-async-test.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/fake-async-test",
"main": "../../bundles/fake-async-test.umd.js",
"fesm2015": "../../fesm2015/fake-async-test.js",
"es2015": "../../fesm2015/fake-async-test.js",
"module": "../../fesm2015/fake-async-test.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/jasmine-patch.min",
"main": "../../bundles/jasmine-patch.umd.min.js",
"fesm2015": "../../fesm2015/jasmine-patch.min.js",
"es2015": "../../fesm2015/jasmine-patch.min.js",
"module": "../../fesm2015/jasmine-patch.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/jasmine-patch",
"main": "../../bundles/jasmine-patch.umd.js",
"fesm2015": "../../fesm2015/jasmine-patch.js",
"es2015": "../../fesm2015/jasmine-patch.js",
"module": "../../fesm2015/jasmine-patch.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/long-stack-trace-zone.min",
"main": "../../bundles/long-stack-trace-zone.umd.min.js",
"fesm2015": "../../fesm2015/long-stack-trace-zone.min.js",
"es2015": "../../fesm2015/long-stack-trace-zone.min.js",
"module": "../../fesm2015/long-stack-trace-zone.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/long-stack-trace-zone",
"main": "../../bundles/long-stack-trace-zone.umd.js",
"fesm2015": "../../fesm2015/long-stack-trace-zone.js",
"es2015": "../../fesm2015/long-stack-trace-zone.js",
"module": "../../fesm2015/long-stack-trace-zone.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/mocha-patch.min",
"main": "../../bundles/mocha-patch.umd.min.js",
"fesm2015": "../../fesm2015/mocha-patch.min.js",
"es2015": "../../fesm2015/mocha-patch.min.js",
"module": "../../fesm2015/mocha-patch.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/mocha-patch",
"main": "../../bundles/mocha-patch.umd.js",
"fesm2015": "../../fesm2015/mocha-patch.js",
"es2015": "../../fesm2015/mocha-patch.js",
"module": "../../fesm2015/mocha-patch.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/proxy.min",
"main": "../../bundles/proxy.umd.min.js",
"fesm2015": "../../fesm2015/proxy.min.js",
"es2015": "../../fesm2015/proxy.min.js",
"module": "../../fesm2015/proxy.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/proxy",
"main": "../../bundles/proxy.umd.js",
"fesm2015": "../../fesm2015/proxy.js",
"es2015": "../../fesm2015/proxy.js",
"module": "../../fesm2015/proxy.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/sync-test.min",
"main": "../../bundles/sync-test.umd.min.js",
"fesm2015": "../../fesm2015/sync-test.min.js",
"es2015": "../../fesm2015/sync-test.min.js",
"module": "../../fesm2015/sync-test.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/sync-test",
"main": "../../bundles/sync-test.umd.js",
"fesm2015": "../../fesm2015/sync-test.js",
"es2015": "../../fesm2015/sync-test.js",
"module": "../../fesm2015/sync-test.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/task-tracking.min",
"main": "../../bundles/task-tracking.umd.min.js",
"fesm2015": "../../fesm2015/task-tracking.min.js",
"es2015": "../../fesm2015/task-tracking.min.js",
"module": "../../fesm2015/task-tracking.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/task-tracking",
"main": "../../bundles/task-tracking.umd.js",
"fesm2015": "../../fesm2015/task-tracking.js",
"es2015": "../../fesm2015/task-tracking.js",
"module": "../../fesm2015/task-tracking.js"
}

View File

@ -1,36 +0,0 @@
"""Provides the rollup and dist file generation macro."""
load("//tools:defaults.bzl", "rollup_bundle")
def zone_rollup_bundle(config_file, bundles):
for b in bundles:
rollup_bundle(
name = b[0] + "-rollup",
config_file = config_file,
entry_point = b[1] + ".ts",
silent = True,
sourcemap = "false",
deps = [
"//packages/zone.js/lib",
"@npm//rollup-plugin-commonjs",
"@npm//rollup-plugin-node-resolve",
],
)
def generate_dist(module, bundles):
for b in bundles:
native.genrule(
name = b[0] + "-dist",
srcs = [
b[0] + "-rollup." + module + "umd.js",
b[0] + "-rollup.min." + module + "umd.js",
],
outs = [
b[0] + ".js",
b[0] + ".min.js",
],
cmd = " && ".join([
"cp $(@D)/" + b[0] + "-rollup." + module + "umd.js $(@D)/" + b[0] + ".js",
"cp $(@D)/" + b[0] + "-rollup.min." + module + "umd.js $(@D)/" + b[0] + ".min.js",
]),
)

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/webapis-media-query.min",
"main": "../../bundles/webapis-media-query.umd.min.js",
"fesm2015": "../../fesm2015/webapis-media-query.min.js",
"es2015": "../../fesm2015/webapis-media-query.min.js",
"module": "../../fesm2015/webapis-media-query.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/webapis-media-query",
"main": "../../bundles/webapis-media-query.umd.js",
"fesm2015": "../../fesm2015/webapis-media-query.js",
"es2015": "../../fesm2015/webapis-media-query.js",
"module": "../../fesm2015/webapis-media-query.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/webapis-notification.min",
"main": "../../bundles/webapis-notification.umd.min.js",
"fesm2015": "../../fesm2015/webapis-notification.min.js",
"es2015": "../../fesm2015/webapis-notification.min.js",
"module": "../../fesm2015/webapis-notification.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/webapis-notification",
"main": "../../bundles/webapis-notification.umd.js",
"fesm2015": "../../fesm2015/webapis-notification.js",
"es2015": "../../fesm2015/webapis-notification.js",
"module": "../../fesm2015/webapis-notification.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/webapis-rtc-peer-connection.min",
"main": "../../bundles/webapis-rtc-peer-connection.umd.min.js",
"fesm2015": "../../fesm2015/webapis-rtc-peer-connection.min.js",
"es2015": "../../fesm2015/webapis-rtc-peer-connection.min.js",
"module": "../../fesm2015/webapis-rtc-peer-connection.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/webapis-rtc-peer-connection",
"main": "../../bundles/webapis-rtc-peer-connection.umd.js",
"fesm2015": "../../fesm2015/webapis-rtc-peer-connection.js",
"es2015": "../../fesm2015/webapis-rtc-peer-connection.js",
"module": "../../fesm2015/webapis-rtc-peer-connection.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/webapis-shadydom.min",
"main": "../../bundles/webapis-shadydom.umd.min.js",
"fesm2015": "../../fesm2015/webapis-shadydom.min.js",
"es2015": "../../fesm2015/webapis-shadydom.min.js",
"module": "../../fesm2015/webapis-shadydom.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/webapis-shadydom",
"main": "../../bundles/webapis-shadydom.umd.js",
"fesm2015": "../../fesm2015/webapis-shadydom.js",
"es2015": "../../fesm2015/webapis-shadydom.js",
"module": "../../fesm2015/webapis-shadydom.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/wtf.min",
"main": "../../bundles/wtf.umd.min.js",
"fesm2015": "../../fesm2015/wtf.min.js",
"es2015": "../../fesm2015/wtf.min.js",
"module": "../../fesm2015/wtf.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/wtf",
"main": "../../bundles/wtf.umd.js",
"fesm2015": "../../fesm2015/wtf.js",
"es2015": "../../fesm2015/wtf.js",
"module": "../../fesm2015/wtf.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-bluebird.min",
"main": "../../bundles/zone-bluebird.umd.min.js",
"fesm2015": "../../fesm2015/zone-bluebird.min.js",
"es2015": "../../fesm2015/zone-bluebird.min.js",
"module": "../../fesm2015/zone-bluebird.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-bluebird",
"main": "../../bundles/zone-bluebird.umd.js",
"fesm2015": "../../fesm2015/zone-bluebird.js",
"es2015": "../../fesm2015/zone-bluebird.js",
"module": "../../fesm2015/zone-bluebird.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-error.min",
"main": "../../bundles/zone-error.umd.min.js",
"fesm2015": "../../fesm2015/zone-error.min.js",
"es2015": "../../fesm2015/zone-error.min.js",
"module": "../../fesm2015/zone-error.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-error",
"main": "../../bundles/zone-error.umd.js",
"fesm2015": "../../fesm2015/zone-error.js",
"es2015": "../../fesm2015/zone-error.js",
"module": "../../fesm2015/zone-error.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-evergreen-testing-bundle.min",
"main": "../../fesm2015/zone-testing-bundle.min.js",
"fesm2015": "../../fesm2015/zone-testing-bundle.min.js",
"es2015": "../../fesm2015/zone-testing-bundle.min.js",
"module": "../../fesm2015/zone-testing-bundle.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-evergreen-testing-bundle",
"main": "../../fesm2015/zone-testing-bundle.js",
"fesm2015": "../../fesm2015/zone-testing-bundle.js",
"es2015": "../../fesm2015/zone-testing-bundle.js",
"module": "../../fesm2015/zone-testing-bundle.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-evergreen.min",
"main": "../../fesm2015/zone.min.js",
"fesm2015": "../../fesm2015/zone.min.js",
"es2015": "../../fesm2015/zone.min.js",
"module": "../../fesm2015/zone.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-evergreen",
"main": "../../fesm2015/zone.js",
"fesm2015": "../../fesm2015/zone.js",
"es2015": "../../fesm2015/zone.js",
"module": "../../fesm2015/zone.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-legacy.min",
"main": "../../bundles/zone-legacy.umd.min.js",
"fesm2015": "../../fesm2015/zone-legacy.min.js",
"es2015": "../../fesm2015/zone-legacy.min.js",
"module": "../../fesm2015/zone-legacy.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-legacy",
"main": "../../bundles/zone-legacy.umd.js",
"fesm2015": "../../fesm2015/zone-legacy.js",
"es2015": "../../fesm2015/zone-legacy.js",
"module": "../../fesm2015/zone-legacy.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-mix.min",
"main": "../../bundles/zone-mix.umd.min.js",
"fesm2015": "../../fesm2015/zone-mix.min.js",
"es2015": "../../fesm2015/zone-mix.min.js",
"module": "../../fesm2015/zone-mix.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-mix",
"main": "../../bundles/zone-mix.umd.js",
"fesm2015": "../../fesm2015/zone-mix.js",
"es2015": "../../fesm2015/zone-mix.js",
"module": "../../fesm2015/zone-mix.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-node.min",
"main": "../../bundles/zone-node.umd.min.js",
"fesm2015": "../../fesm2015/zone-node.min.js",
"es2015": "../../fesm2015/zone-node.min.js",
"module": "../../fesm2015/zone-node.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-node",
"main": "../../bundles/zone-node.umd.js",
"fesm2015": "../../fesm2015/zone-node.js",
"es2015": "../../fesm2015/zone-node.js",
"module": "../../fesm2015/zone-node.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-canvas.min",
"main": "../../bundles/zone-patch-canvas.umd.min.js",
"fesm2015": "../../fesm2015/zone-patch-canvas.min.js",
"es2015": "../../fesm2015/zone-patch-canvas.min.js",
"module": "../../fesm2015/zone-patch-canvas.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-canvas",
"main": "../../bundles/zone-patch-canvas.umd.js",
"fesm2015": "../../fesm2015/zone-patch-canvas.js",
"es2015": "../../fesm2015/zone-patch-canvas.js",
"module": "../../fesm2015/zone-patch-canvas.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-cordova.min",
"main": "../../bundles/zone-patch-cordova.umd.min.js",
"fesm2015": "../../fesm2015/zone-patch-cordova.min.js",
"es2015": "../../fesm2015/zone-patch-cordova.min.js",
"module": "../../fesm2015/zone-patch-cordova.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-cordova",
"main": "../../bundles/zone-patch-cordova.umd.js",
"fesm2015": "../../fesm2015/zone-patch-cordova.js",
"es2015": "../../fesm2015/zone-patch-cordova.js",
"module": "../../fesm2015/zone-patch-cordova.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-electron.min",
"main": "../../bundles/zone-patch-electron.umd.min.js",
"fesm2015": "../../fesm2015/zone-patch-electron.min.js",
"es2015": "../../fesm2015/zone-patch-electron.min.js",
"module": "../../fesm2015/zone-patch-electron.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-electron",
"main": "../../bundles/zone-patch-electron.umd.js",
"fesm2015": "../../fesm2015/zone-patch-electron.js",
"es2015": "../../fesm2015/zone-patch-electron.js",
"module": "../../fesm2015/zone-patch-electron.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-fetch.min",
"main": "../../bundles/zone-patch-fetch.umd.min.js",
"fesm2015": "../../fesm2015/zone-patch-fetch.min.js",
"es2015": "../../fesm2015/zone-patch-fetch.min.js",
"module": "../../fesm2015/zone-patch-fetch.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-fetch",
"main": "../../bundles/zone-patch-fetch.umd.js",
"fesm2015": "../../fesm2015/zone-patch-fetch.js",
"es2015": "../../fesm2015/zone-patch-fetch.js",
"module": "../../fesm2015/zone-patch-fetch.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-jsonp.min",
"main": "../../bundles/zone-patch-jsonp.umd.min.js",
"fesm2015": "../../fesm2015/zone-patch-jsonp.min.js",
"es2015": "../../fesm2015/zone-patch-jsonp.min.js",
"module": "../../fesm2015/zone-patch-jsonp.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-jsonp",
"main": "../../bundles/zone-patch-jsonp.umd.js",
"fesm2015": "../../fesm2015/zone-patch-jsonp.js",
"es2015": "../../fesm2015/zone-patch-jsonp.js",
"module": "../../fesm2015/zone-patch-jsonp.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-message-port.min",
"main": "../../bundles/zone-patch-message-port.umd.min.js",
"fesm2015": "../../fesm2015/zone-patch-message-port.min.js",
"es2015": "../../fesm2015/zone-patch-message-port.min.js",
"module": "../../fesm2015/zone-patch-message-port.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-message-port",
"main": "../../bundles/zone-patch-message-port.umd.js",
"fesm2015": "../../fesm2015/zone-patch-message-port.js",
"es2015": "../../fesm2015/zone-patch-message-port.js",
"module": "../../fesm2015/zone-patch-message-port.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-promise-test.min",
"main": "../../bundles/zone-patch-promise-test.umd.min.js",
"fesm2015": "../../fesm2015/zone-patch-promise-test.min.js",
"es2015": "../../fesm2015/zone-patch-promise-test.min.js",
"module": "../../fesm2015/zone-patch-promise-test.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-promise-test",
"main": "../../bundles/zone-patch-promise-test.umd.js",
"fesm2015": "../../fesm2015/zone-patch-promise-test.js",
"es2015": "../../fesm2015/zone-patch-promise-test.js",
"module": "../../fesm2015/zone-patch-promise-test.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-resize-observer.min",
"main": "../../bundles/zone-patch-resize-observer.umd.min.js",
"fesm2015": "../../fesm2015/zone-patch-resize-observer.min.js",
"es2015": "../../fesm2015/zone-patch-resize-observer.min.js",
"module": "../../fesm2015/zone-patch-resize-observer.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-resize-observer",
"main": "../../bundles/zone-patch-resize-observer.umd.js",
"fesm2015": "../../fesm2015/zone-patch-resize-observer.js",
"es2015": "../../fesm2015/zone-patch-resize-observer.js",
"module": "../../fesm2015/zone-patch-resize-observer.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-rxjs-fake-async.min",
"main": "../../bundles/zone-patch-rxjs-fake-async.umd.min.js",
"fesm2015": "../../fesm2015/zone-patch-rxjs-fake-async.min.js",
"es2015": "../../fesm2015/zone-patch-rxjs-fake-async.min.js",
"module": "../../fesm2015/zone-patch-rxjs-fake-async.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-rxjs-fake-async",
"main": "../../bundles/zone-patch-rxjs-fake-async.umd.js",
"fesm2015": "../../fesm2015/zone-patch-rxjs-fake-async.js",
"es2015": "../../fesm2015/zone-patch-rxjs-fake-async.js",
"module": "../../fesm2015/zone-patch-rxjs-fake-async.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-rxjs.min",
"main": "../../bundles/zone-patch-rxjs.umd.min.js",
"fesm2015": "../../fesm2015/zone-patch-rxjs.min.js",
"es2015": "../../fesm2015/zone-patch-rxjs.min.js",
"module": "../../fesm2015/zone-patch-rxjs.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-rxjs",
"main": "../../bundles/zone-patch-rxjs.umd.js",
"fesm2015": "../../fesm2015/zone-patch-rxjs.js",
"es2015": "../../fesm2015/zone-patch-rxjs.js",
"module": "../../fesm2015/zone-patch-rxjs.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-socket-io.min",
"main": "../../bundles/zone-patch-socket-io.umd.min.js",
"fesm2015": "../../fesm2015/zone-patch-socket-io.min.js",
"es2015": "../../fesm2015/zone-patch-socket-io.min.js",
"module": "../../fesm2015/zone-patch-socket-io.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-socket-io",
"main": "../../bundles/zone-patch-socket-io.umd.js",
"fesm2015": "../../fesm2015/zone-patch-socket-io.js",
"es2015": "../../fesm2015/zone-patch-socket-io.js",
"module": "../../fesm2015/zone-patch-socket-io.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-user-media.min",
"main": "../../bundles/zone-patch-user-media.umd.min.js",
"fesm2015": "../../fesm2015/zone-patch-user-media.min.js",
"es2015": "../../fesm2015/zone-patch-user-media.min.js",
"module": "../../fesm2015/zone-patch-user-media.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-patch-user-media",
"main": "../../bundles/zone-patch-user-media.umd.js",
"fesm2015": "../../fesm2015/zone-patch-user-media.js",
"es2015": "../../fesm2015/zone-patch-user-media.js",
"module": "../../fesm2015/zone-patch-user-media.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-testing-bundle.min",
"main": "../../bundles/zone-testing-bundle.umd.min.js",
"fesm2015": "../../fesm2015/zone-testing-bundle.min.js",
"es2015": "../../fesm2015/zone-testing-bundle.min.js",
"module": "../../fesm2015/zone-testing-bundle.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-testing-bundle",
"main": "../../bundles/zone-testing-bundle.umd.js",
"fesm2015": "../../fesm2015/zone-testing-bundle.js",
"es2015": "../../fesm2015/zone-testing-bundle.js",
"module": "../../fesm2015/zone-testing-bundle.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-testing-node-bundle.min",
"main": "../../bundles/zone-testing-node-bundle.umd.min.js",
"fesm2015": "../../fesm2015/zone-testing-node-bundle.min.js",
"es2015": "../../fesm2015/zone-testing-node-bundle.min.js",
"module": "../../fesm2015/zone-testing-node-bundle.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-testing-node-bundle",
"main": "../../bundles/zone-testing-node-bundle.umd.js",
"fesm2015": "../../fesm2015/zone-testing-node-bundle.js",
"es2015": "../../fesm2015/zone-testing-node-bundle.js",
"module": "../../fesm2015/zone-testing-node-bundle.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-testing.min",
"main": "../../bundles/zone-testing.umd.min.js",
"fesm2015": "../../fesm2015/zone-testing.min.js",
"es2015": "../../fesm2015/zone-testing.min.js",
"module": "../../fesm2015/zone-testing.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone-testing",
"main": "../../bundles/zone-testing.umd.js",
"fesm2015": "../../fesm2015/zone-testing.js",
"es2015": "../../fesm2015/zone-testing.js",
"module": "../../fesm2015/zone-testing.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone.min",
"main": "../../bundles/zone.umd.min.js",
"fesm2015": "../../fesm2015/zone.min.js",
"es2015": "../../fesm2015/zone.min.js",
"module": "../../fesm2015/zone.min.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone",
"main": "../../bundles/zone.umd.js",
"fesm2015": "../../fesm2015/zone.js",
"es2015": "../../fesm2015/zone.js",
"module": "../../fesm2015/zone.js"
}

View File

@ -0,0 +1,7 @@
{
"name": "zone.js/zone_externs",
"main": "../../zone_externs.js",
"fesm2015": "../../zone_externs.js",
"es2015": "../../zone_externs.js",
"module": "../../zone_externs.js"
}

View File

@ -0,0 +1,8 @@
load("//packages/zone.js:tools.bzl", "generate_dist")
load("//packages/zone.js:bundles.bzl", "BUNDLES_ENTRY_POINTS")
generate_dist(
bundles = BUNDLES_ENTRY_POINTS.items(),
output_format = "es2015",
umd = "",
)

View File

@ -30,29 +30,32 @@ interface MacroTaskOptions {
}
const OriginalDate = global.Date;
class FakeDate {
constructor() {
if (arguments.length === 0) {
const d = new OriginalDate();
d.setTime(FakeDate.now());
return d;
} else {
const args = Array.prototype.slice.call(arguments);
return new OriginalDate(...args);
}
}
static now() {
const fakeAsyncTestZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');
if (fakeAsyncTestZoneSpec) {
return fakeAsyncTestZoneSpec.getCurrentRealTime() + fakeAsyncTestZoneSpec.getCurrentTime();
}
return OriginalDate.now.apply(this, arguments);
// Since when we compile this file to `es2015`, and if we define
// this `FakeDate` as `class FakeDate`, and then set `FakeDate.prototype`
// there will be an error which is `Cannot assign to read only property 'prototype'`
// so we need to use function implementation here.
function FakeDate() {
if (arguments.length === 0) {
const d = new OriginalDate();
d.setTime(FakeDate.now());
return d;
} else {
const args = Array.prototype.slice.call(arguments);
return new OriginalDate(...args);
}
}
(FakeDate as any).UTC = OriginalDate.UTC;
(FakeDate as any).parse = OriginalDate.parse;
FakeDate.now =
function(this: unknown) {
const fakeAsyncTestZoneSpec = Zone.current.get('FakeAsyncTestZoneSpec');
if (fakeAsyncTestZoneSpec) {
return fakeAsyncTestZoneSpec.getCurrentRealTime() + fakeAsyncTestZoneSpec.getCurrentTime();
}
return OriginalDate.now.apply(this, arguments);
}
FakeDate.UTC = OriginalDate.UTC;
FakeDate.parse = OriginalDate.parse;
// keep a reference for zone patched timer function
const timers = {

View File

@ -0,0 +1,3 @@
exports_files([
"package.json",
])

View File

@ -0,0 +1,8 @@
{
"name": "zone-mix",
"description": "Zone.js for mixed environment(both browser and NodeJS) such as Electron",
"main": "../bundles/zone-mix.umd.js",
"module": "../fesm2015/zone-mix.js",
"es2015": "../fesm2015/zone-mix.js",
"fesm2015": "../fesm2015/zone-mix.js"
}

View File

@ -0,0 +1,3 @@
exports_files([
"package.json",
])

View File

@ -0,0 +1,8 @@
{
"name": "zone-node",
"description": "Zone.js for NodeJS",
"main": "../bundles/zone-node.umd.js",
"module": "../fesm2015/zone-node.js",
"es2015": "../fesm2015/zone-node.js",
"fesm2015": "../fesm2015/zone-node.js"
}

View File

@ -2,13 +2,14 @@
"name": "zone.js",
"version": "0.10.3",
"description": "Zones for JavaScript",
"main": "dist/zone-node.js",
"browser": "dist/zone.js",
"unpkg": "dist/zone.js",
"typings": "dist/zone.js.d.ts",
"main": "./bundles/zone.umd.js",
"module": "./fesm2015/zone.js",
"es2015": "./fesm2015/zone.js",
"fesm2015": "./fesm2015/zone.js",
"files": [
"lib",
"dist"
"./zone.js.d.ts",
"./zone.api.extensions.ts",
"./zone.configurations.api.ts"
],
"dependencies": {
"tslib": "^2.0.0"
@ -24,7 +25,7 @@
"mocha": "^3.1.2",
"mock-require": "3.0.3",
"promises-aplus-tests": "^2.1.2",
"typescript": "~3.4.2"
"typescript": "^3.8.3"
},
"scripts": {
"electrontest": "cd test/extra && node electron.js",

View File

@ -282,15 +282,15 @@ test_deps = [
test_entry_point = ":browser_entry_point.ts"
karma_tests = {
"browser_test": ["//packages/zone.js/dist:zone-testing-bundle.js"],
"browser_test": ["//packages/zone.js/bundles:zone-testing-bundle.umd.js"],
"browser_green_test": [
"//packages/zone.js/dist:zone-evergreen.js",
"//packages/zone.js/dist:zone-testing.js",
"//packages/zone.js/fesm2015:zone.js",
"//packages/zone.js/fesm2015:zone-testing.js",
],
"browser_legacy_test": [
"//packages/zone.js/dist:zone-legacy.js",
"//packages/zone.js/dist:zone-evergreen.js",
"//packages/zone.js/dist:zone-testing.js",
"//packages/zone.js/bundles:zone-legacy.umd.js",
"//packages/zone.js/bundles:zone.umd.js",
"//packages/zone.js/bundles:zone-testing.umd.js",
],
}
@ -309,8 +309,8 @@ karma_test(
karma_test(
name = "browser_shadydom",
bootstraps = {"browser_shadydom": [
"//packages/zone.js/dist:zone-testing-bundle.js",
"//packages/zone.js/dist:webapis-shadydom.js",
"//packages/zone.js/bundles:zone-testing-bundle.umd.js",
"//packages/zone.js/bundles:webapis-shadydom.umd.js",
]},
ci = False,
env_deps = [
@ -331,7 +331,7 @@ karma_test(
karma_test(
name = "browser_disable_wrap_uncaught_promise_rejection",
bootstraps = {"browser_disable_wrap_uncaught_promise_rejection": [
"//packages/zone.js/dist:zone-testing-bundle.js",
"//packages/zone.js/bundles:zone-testing-bundle.umd.js",
]},
ci = False,
env_deps = [

View File

@ -8,7 +8,7 @@
var domino = require('domino');
var mockRequire = require('mock-require');
var nativeTimeout = setTimeout;
require('./zone-mix');
require('./zone-mix.umd');
mockRequire('electron', {
desktopCapturer: {
getSources: function(callback) {
@ -26,7 +26,7 @@ mockRequire('electron', {
}
},
});
require('./zone-patch-electron');
require('./zone-patch-electron.umd');
var electron = require('electron');
var zone = Zone.current.fork({name: 'zone'});
zone.run(function() {

View File

@ -49,15 +49,15 @@ def karma_test(name, env_srcs, env_deps, env_entry_point, test_srcs, test_deps,
first = False
karma_test_prepare(name, env_srcs, env_deps, env_entry_point, test_srcs, test_deps, test_entry_point)
_karma_test_required_dist_files = [
"//packages/zone.js/dist:task-tracking.js",
"//packages/zone.js/dist:wtf.js",
"//packages/zone.js/dist:webapis-notification.js",
"//packages/zone.js/dist:webapis-media-query.js",
"//packages/zone.js/dist:zone-patch-canvas.js",
"//packages/zone.js/dist:zone-patch-fetch.js",
"//packages/zone.js/dist:zone-patch-resize-observer.js",
"//packages/zone.js/dist:zone-patch-message-port.js",
"//packages/zone.js/dist:zone-patch-user-media.js",
"//packages/zone.js/bundles:task-tracking.umd.js",
"//packages/zone.js/bundles:wtf.umd.js",
"//packages/zone.js/bundles:webapis-notification.umd.js",
"//packages/zone.js/bundles:webapis-media-query.umd.js",
"//packages/zone.js/bundles:zone-patch-canvas.umd.js",
"//packages/zone.js/bundles:zone-patch-fetch.umd.js",
"//packages/zone.js/bundles:zone-patch-resize-observer.umd.js",
"//packages/zone.js/bundles:zone-patch-message-port.umd.js",
"//packages/zone.js/bundles:zone-patch-user-media.umd.js",
":" + name + "_rollup.umd",
]
@ -91,7 +91,7 @@ def karma_test(name, env_srcs, env_deps, env_entry_point, test_srcs, test_deps,
bootstrap = [
":saucelabs.js",
":" + name + "_env_rollup.umd",
"//packages/zone.js/dist:zone-testing-bundle.min.js",
"//packages/zone.js/bundles:zone-testing-bundle.umd.min.js",
] + _karma_test_required_dist_files,
browsers = ["//dev-infra/browsers:chromium"],
config_file = "//:karma-js.conf.js",

View File

@ -8,6 +8,12 @@
import * as path from 'path';
import * as shx from 'shelljs';
function checkInSubFolder(subFolder: string, testFn: Function) {
shx.cd(subFolder);
testFn();
shx.cd('../');
}
describe('Zone.js npm_package', () => {
beforeEach(
() => {shx.cd(
@ -32,17 +38,11 @@ describe('Zone.js npm_package', () => {
});
it('should contain module resolution mappings', () => {
expect(shx.grep('"main":', packageJson)).toContain(`dist/zone-node.js`);
expect(shx.grep('"main":', packageJson)).toContain(`zone.umd.js`);
});
});
describe('check dist folder', () => {
beforeEach(() => {
shx.cd('./dist');
});
afterEach(() => {
shx.cd('../');
});
describe('check npm_package root folder', () => {
describe('typescript support', () => {
it('should have an zone.js.d.ts file', () => {
expect(shx.cat('zone.js.d.ts')).toContain('declare const');
@ -65,33 +65,46 @@ describe('Zone.js npm_package', () => {
describe('rxjs patch', () => {
it('should not contain rxjs source', () => {
expect(shx.cat('zone-patch-rxjs.js'))
.not.toContain('_enable_super_gross_mode_that_will_cause_bad_things');
checkInSubFolder('./bundles', () => {
expect(shx.cat('zone-patch-rxjs.umd.js'))
.not.toContain('_enable_super_gross_mode_that_will_cause_bad_things');
});
checkInSubFolder('./fesm2015', () => {
expect(shx.cat('zone-patch-rxjs.js'))
.not.toContain('_enable_super_gross_mode_that_will_cause_bad_things');
});
});
});
describe('es5', () => {
it('zone.js(es5) should not contain es6 spread code', () => {
expect(shx.cat('zone.js')).not.toContain('let value of values');
checkInSubFolder('./bundles', () => {
expect(shx.cat('zone.umd.js')).not.toContain('let value of values');
});
});
it('zone.js(es5) should not contain source map comment', () => {
expect(shx.cat('zone.js')).not.toContain('sourceMappingURL');
checkInSubFolder('./bundles', () => {
expect(shx.cat('zone.umd.js')).not.toContain('sourceMappingURL');
});
});
});
describe('es2015', () => {
it('zone-evergreen.js(es2015) should contain es6 code', () => {
expect(shx.cat('zone-evergreen.js')).toContain('let value of values');
it('zone.js(es2015) should contain es6 code', () => {
checkInSubFolder('./fesm2015', () => {
expect(shx.cat('zone.js')).toContain('let value of values');
});
});
it('zone.js(es5) should not contain source map comment', () => {
expect(shx.cat('zone-evergreen.js')).not.toContain('sourceMappingURL');
it('zone.js(es2015) should not contain source map comment', () => {
checkInSubFolder('./fesm2015', () => {
expect(shx.cat('zone.js')).not.toContain('sourceMappingURL');
});
});
});
describe('dist file list', () => {
it('should contain all files', () => {
const list = shx.ls('./').stdout.split('\n').sort().slice(1);
const expected = [
'async-test.js',
'async-test.min.js',
@ -119,15 +132,10 @@ describe('Zone.js npm_package', () => {
'webapis-shadydom.min.js',
'wtf.js',
'wtf.min.js',
'zone_externs.js',
'zone-bluebird.js',
'zone-bluebird.min.js',
'zone-error.js',
'zone-error.min.js',
'zone-evergreen.js',
'zone-evergreen.min.js',
'zone-evergreen-testing-bundle.js',
'zone-evergreen-testing-bundle.min.js',
'zone-legacy.js',
'zone-legacy.min.js',
'zone-mix.js',
@ -165,15 +173,139 @@ describe('Zone.js npm_package', () => {
'zone-testing.js',
'zone-testing.min.js',
'zone.js',
'zone.js.d.ts',
'zone.api.extensions.ts',
'zone.configurations.api.ts',
'zone.min.js',
].sort();
expect(list.length).toBe(expected.length);
for (let i = 0; i < list.length; i++) {
expect(list[i]).toEqual(expected[i]);
}
checkInSubFolder('./bundles', () => {
const list = shx.ls('./').stdout.split('\n').sort().slice(1);
expect(list.length).toBe(expected.length);
for (let i = 0; i < list.length; i++) {
if (expected[i].indexOf('.min.js') !== -1) {
expect(list[i]).toEqual(expected[i].replace('.min.js', '.umd.min.js'));
} else {
expect(list[i]).toEqual(expected[i].replace('.js', '.umd.js'));
}
}
});
checkInSubFolder('./fesm2015', () => {
const list = shx.ls('./').stdout.split('\n').sort().slice(1);
expect(list.length).toBe(expected.length);
for (let i = 0; i < list.length; i++) {
expect(list[i]).toEqual(expected[i]);
}
});
});
});
describe('backward compatible check', () => {
it('should contain all original folders in /dist', () => {
const expected = [
'async-test',
'async-test.min',
'fake-async-test',
'fake-async-test.min',
'jasmine-patch',
'jasmine-patch.min',
'long-stack-trace-zone',
'long-stack-trace-zone.min',
'mocha-patch',
'mocha-patch.min',
'proxy',
'proxy.min',
'sync-test',
'sync-test.min',
'task-tracking',
'task-tracking.min',
'webapis-media-query',
'webapis-media-query.min',
'webapis-notification',
'webapis-notification.min',
'webapis-rtc-peer-connection',
'webapis-rtc-peer-connection.min',
'webapis-shadydom',
'webapis-shadydom.min',
'wtf',
'wtf.min',
'zone-bluebird',
'zone-bluebird.min',
'zone-error',
'zone-error.min',
'zone-legacy',
'zone-legacy.min',
'zone-mix',
'zone-mix.min',
'zone-node',
'zone-node.min',
'zone-patch-canvas',
'zone-patch-canvas.min',
'zone-patch-cordova',
'zone-patch-cordova.min',
'zone-patch-electron',
'zone-patch-electron.min',
'zone-patch-fetch',
'zone-patch-fetch.min',
'zone-patch-jsonp',
'zone-patch-jsonp.min',
'zone-patch-message-port',
'zone-patch-message-port.min',
'zone-patch-promise-test',
'zone-patch-promise-test.min',
'zone-patch-resize-observer',
'zone-patch-resize-observer.min',
'zone-patch-rxjs-fake-async',
'zone-patch-rxjs-fake-async.min',
'zone-patch-rxjs',
'zone-patch-rxjs.min',
'zone-patch-socket-io',
'zone-patch-socket-io.min',
'zone-patch-user-media',
'zone-patch-user-media.min',
'zone-testing-bundle',
'zone-testing-bundle.min',
'zone-testing-node-bundle',
'zone-testing-node-bundle.min',
'zone-testing',
'zone-testing.min',
'zone',
'zone.min',
'zone_externs',
'zone-evergreen',
'zone-evergreen.min',
'zone-evergreen-testing-bundle',
'zone-evergreen-testing-bundle.min',
].sort();
checkInSubFolder('./dist', () => {
const list = shx.ls('./').stdout.split('\n').sort().slice(1);
expect(list.length).toBe(expected.length);
for (let i = 0; i < list.length; i++) {
expect(list[i]).toEqual(expected[i]);
const packageJson = shx.cat(`${list[i]}/package.json`);
if (list[i].indexOf('_externs') !== -1) {
expect(packageJson).toContain(`"name": "zone.js/${list[i]}"`);
expect(packageJson).toContain(`"main": "../../${list[i]}.js"`);
expect(packageJson).toContain(`"fesm2015": "../../${list[i]}.js"`);
expect(packageJson).toContain(`"es2015": "../../${list[i]}.js"`);
expect(packageJson).toContain(`"module": "../../${list[i]}.js"`);
continue;
}
if (list[i].indexOf('evergreen') === -1) {
const umdMinName = list[i].indexOf('.min') === -1 ?
`${list[i]}.umd` :
`${list[i].substring(0, list[i].indexOf('.min'))}.umd.min`;
expect(packageJson).toContain(`"name": "zone.js/${list[i]}"`);
expect(packageJson).toContain(`"main": "../../bundles/${umdMinName}.js"`);
expect(packageJson).toContain(`"fesm2015": "../../fesm2015/${list[i]}.js"`);
expect(packageJson).toContain(`"es2015": "../../fesm2015/${list[i]}.js"`);
expect(packageJson).toContain(`"module": "../../fesm2015/${list[i]}.js"`);
} else {
const removeEvergreen = list[i].replace('-evergreen', '');
expect(packageJson).toContain(`"name": "zone.js/${list[i]}"`);
expect(packageJson).toContain(`"main": "../../fesm2015/${removeEvergreen}.js"`);
expect(packageJson).toContain(`"fesm2015": "../../fesm2015/${removeEvergreen}.js"`);
expect(packageJson).toContain(`"es2015": "../../fesm2015/${removeEvergreen}.js"`);
expect(packageJson).toContain(`"module": "../../fesm2015/${removeEvergreen}.js"`);
}
}
});
});
});
});

View File

@ -0,0 +1,3 @@
exports_files([
"package.json",
])

View File

@ -0,0 +1,8 @@
{
"name": "zone-testing",
"description": "Testing library implemented by zone.js",
"main": "../bundles/zone-testing.umd.js",
"module": "../fesm2015/zone-testing.js",
"es2015": "../fesm2015/zone-testing.js",
"fesm2015": "../fesm2015/zone-testing.js"
}

View File

@ -0,0 +1,90 @@
"""Provides the rollup and dist file generation macro."""
load("//tools:defaults.bzl", "rollup_bundle")
def zone_rollup_bundle(module_name, entry_point, rollup_config):
config_file = ""
if rollup_config["rollup"] == "global-es2015":
config_file = "//packages/zone.js:rollup-es5_global-es2015.config.js"
if rollup_config["rollup"] == "es5":
config_file = "//packages/zone.js:rollup-es5.config.js"
rollup_bundle(
name = module_name + "-rollup",
config_file = config_file,
entry_point = entry_point + ".ts",
silent = True,
sourcemap = "false",
deps = [
"//packages/zone.js/lib",
"@npm//rollup-plugin-commonjs",
"@npm//rollup-plugin-node-resolve",
],
)
def copy_dist(module_name, module_format, output_module_name, suffix, umd):
umd_output = umd
suffix_output = suffix
if umd == "umd":
umd_output = "umd."
if suffix == "min":
suffix_output = "min."
native.genrule(
name = module_name + "." + suffix_output + "dist",
srcs = [
"//packages/zone.js:" + module_name + "-rollup." + suffix_output + module_format + "umd.js",
],
outs = [
output_module_name + "." + umd_output + suffix_output + "js",
],
visibility = ["//visibility:public"],
cmd = "cp $< $@",
)
def generate_rollup_bundle(bundles):
for b in bundles.items():
module_name = b[0]
rollup_config = b[1]
if rollup_config.get("entrypoint") != None:
entry_point = rollup_config.get("entrypoint")
zone_rollup_bundle(
module_name = module_name + "-es5",
rollup_config = rollup_config,
entry_point = entry_point,
)
zone_rollup_bundle(
module_name = module_name + "-es2015",
rollup_config = rollup_config,
entry_point = entry_point,
)
else:
zone_rollup_bundle(
module_name = module_name + "-es5",
rollup_config = rollup_config,
entry_point = rollup_config.get("es5"),
)
zone_rollup_bundle(
module_name = module_name + "-es2015",
rollup_config = rollup_config,
entry_point = rollup_config.get("es2015"),
)
def generate_dist(bundles, output_format, umd):
module_format = ""
if output_format == "es5":
module_format = "es5"
for b in bundles:
module_name = b[0]
copy_dist(
module_name = module_name + "-" + output_format,
module_format = module_format,
output_module_name = module_name,
suffix = "",
umd = umd,
)
copy_dist(
module_name = module_name + "-" + output_format,
module_format = module_format,
output_module_name = module_name,
suffix = "min.",
umd = umd,
)