Compare commits
69 Commits
Author | SHA1 | Date | |
---|---|---|---|
e1f6d15387 | |||
cbb3794931 | |||
77a5790a9d | |||
4ca401c394 | |||
3dcd5ebdbc | |||
49307f0595 | |||
762fc28fee | |||
338e58c278 | |||
7e2ed89208 | |||
56a3dcf44c | |||
501bacdcf6 | |||
c5f2979a87 | |||
fe02462b5f | |||
3000d19ad1 | |||
dcf9f05c9a | |||
ba56f3c15b | |||
865ad56e9a | |||
5cda2a041b | |||
6a484853a9 | |||
e6ac289518 | |||
4e8614bb92 | |||
9ace748d3a | |||
08c38a1f99 | |||
9aeef0afdb | |||
8aef446373 | |||
f7ee91a17c | |||
8ae0afd3f8 | |||
be82270493 | |||
4cef2c1236 | |||
26e3615e19 | |||
65f20107fe | |||
5a7bcd1862 | |||
152ea36c80 | |||
ea2adb104b | |||
19caace2ab | |||
ccc1c27461 | |||
97268b95f7 | |||
7c41abe64a | |||
991e138650 | |||
d00b421402 | |||
06ffed5141 | |||
5a15126520 | |||
9e4b2f1a4f | |||
393529d3b5 | |||
81b75590d7 | |||
151f0f4b2c | |||
f88f941008 | |||
0e17958640 | |||
e82b45c8a7 | |||
8422ef2a93 | |||
cdf586d0d2 | |||
3828c89792 | |||
0f352b6350 | |||
06bdecffb9 | |||
99ddec152b | |||
31aba96fcb | |||
facce2c9fd | |||
edaf058548 | |||
4bff2d0c8c | |||
cfc608aaf3 | |||
6d9f5fcddb | |||
b19a05c25a | |||
bd75b3b7b3 | |||
1c67b9063b | |||
9a9ae60e0e | |||
ae6fa9260a | |||
f8fa2f2a6c | |||
f3ee9a6144 | |||
d076c51455 |
@ -4,4 +4,5 @@ aio/content
|
|||||||
aio/node_modules
|
aio/node_modules
|
||||||
aio/tools/examples/shared/node_modules
|
aio/tools/examples/shared/node_modules
|
||||||
integration/bazel
|
integration/bazel
|
||||||
|
integration/bazel-schematics/demo
|
||||||
packages/bazel/node_modules
|
packages/bazel/node_modules
|
||||||
|
9
.bazelrc
9
.bazelrc
@ -145,3 +145,12 @@ build:remote --remote_accept_cached=false
|
|||||||
# Load any settings specific to the current user. Needs to be last statement in this
|
# Load any settings specific to the current user. Needs to be last statement in this
|
||||||
# config, as the user configuration should be able to overwrite flags from this file.
|
# config, as the user configuration should be able to overwrite flags from this file.
|
||||||
try-import .bazelrc.user
|
try-import .bazelrc.user
|
||||||
|
|
||||||
|
###############################
|
||||||
|
# NodeJS rules settings
|
||||||
|
# These settings are required for rules_nodejs
|
||||||
|
###############################
|
||||||
|
|
||||||
|
# Turn on managed directories feature in Bazel
|
||||||
|
# This allows us to avoid installing a second copy of node_modules
|
||||||
|
common --experimental_allow_incremental_repository_updates
|
||||||
|
1
.github/CODEOWNERS
vendored
1
.github/CODEOWNERS
vendored
@ -812,6 +812,7 @@ testing/** @angular/fw-test
|
|||||||
/aio/content/guide/releases.md @angular/fw-docs-packaging @angular/framework-global-approvers @angular/framework-global-approvers-for-docs-only-changes
|
/aio/content/guide/releases.md @angular/fw-docs-packaging @angular/framework-global-approvers @angular/framework-global-approvers-for-docs-only-changes
|
||||||
/aio/content/guide/updating.md @angular/fw-docs-packaging @angular/framework-global-approvers @angular/framework-global-approvers-for-docs-only-changes
|
/aio/content/guide/updating.md @angular/fw-docs-packaging @angular/framework-global-approvers @angular/framework-global-approvers-for-docs-only-changes
|
||||||
/aio/content/guide/workspace-config.md @angular/fw-docs-packaging @angular/framework-global-approvers @angular/framework-global-approvers-for-docs-only-changes
|
/aio/content/guide/workspace-config.md @angular/fw-docs-packaging @angular/framework-global-approvers @angular/framework-global-approvers-for-docs-only-changes
|
||||||
|
/aio/content/guide/deprecations.md @angular/fw-docs-packaging @angular/framework-global-approvers @angular/framework-global-approvers-for-docs-only-changes
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
14
CHANGELOG.md
14
CHANGELOG.md
@ -1,3 +1,17 @@
|
|||||||
|
<a name="8.0.1"></a>
|
||||||
|
## [8.0.1](https://github.com/angular/angular/compare/8.0.0...8.0.1) (2019-06-13)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **bazel:** do not modify tsconfig.json ([#30984](https://github.com/angular/angular/issues/30984)) ([49307f0](https://github.com/angular/angular/commit/49307f0))
|
||||||
|
* **bazel:** Load global stylesheet in dev and prod ([#30879](https://github.com/angular/angular/issues/30879)) ([5a7bcd1](https://github.com/angular/angular/commit/5a7bcd1))
|
||||||
|
* **common:** expose the `HttpUploadProgressEvent` interface as public API ([#30852](https://github.com/angular/angular/issues/30852)) ([4e8614b](https://github.com/angular/angular/commit/4e8614b)), closes [#30814](https://github.com/angular/angular/issues/30814)
|
||||||
|
* **core:** TypeScript related migrations should cater for BOM ([#30719](https://github.com/angular/angular/issues/30719)) ([26e3615](https://github.com/angular/angular/commit/26e3615)), closes [/github.com/angular/angular-cli/blob/master/packages/angular_devkit/schematics/src/tree/recorder.ts#L72](https://github.com//github.com/angular/angular-cli/blob/master/packages/angular_devkit/schematics/src/tree/recorder.ts/issues/L72) [#30713](https://github.com/angular/angular/issues/30713)
|
||||||
|
* **service-worker:** avoid uncaught rejection warning when registration fails ([#30876](https://github.com/angular/angular/issues/30876)) ([08c38a1](https://github.com/angular/angular/commit/08c38a1))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="8.0.0"></a>
|
<a name="8.0.0"></a>
|
||||||
# [8.0.0](https://github.com/angular/angular/compare/8.0.0-rc.5...8.0.0) (2019-05-28)
|
# [8.0.0](https://github.com/angular/angular/compare/8.0.0-rc.5...8.0.0) (2019-05-28)
|
||||||
|
|
||||||
|
@ -23,6 +23,6 @@ guidelines for [contributing][contributing] and then check out one of our issues
|
|||||||
|
|
||||||
[browserstack]: https://www.browserstack.com/automate/public-build/LzF3RzBVVGt6VWE2S0hHaC9uYllOZz09LS1BVjNTclBKV0x4eVRlcjA4QVY1M0N3PT0=--eb4ce8c8dc2c1c5b2b5352d473ee12a73ac20e06
|
[browserstack]: https://www.browserstack.com/automate/public-build/LzF3RzBVVGt6VWE2S0hHaC9uYllOZz09LS1BVjNTclBKV0x4eVRlcjA4QVY1M0N3PT0=--eb4ce8c8dc2c1c5b2b5352d473ee12a73ac20e06
|
||||||
[contributing]: https://github.com/angular/angular/blob/master/CONTRIBUTING.md
|
[contributing]: https://github.com/angular/angular/blob/master/CONTRIBUTING.md
|
||||||
[quickstart]: https://angular.io/guide/quickstart
|
[quickstart]: https://angular.io/start
|
||||||
[changelog]: https://github.com/angular/angular/blob/master/CHANGELOG.md
|
[changelog]: https://github.com/angular/angular/blob/master/CHANGELOG.md
|
||||||
[ng]: https://angular.io
|
[ng]: https://angular.io
|
||||||
|
27
WORKSPACE
27
WORKSPACE
@ -1,4 +1,7 @@
|
|||||||
workspace(name = "angular")
|
workspace(
|
||||||
|
name = "angular",
|
||||||
|
managed_directories = {"@npm": ["node_modules"]},
|
||||||
|
)
|
||||||
|
|
||||||
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
|
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
|
||||||
|
|
||||||
@ -15,16 +18,15 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
|
|||||||
# Fetch rules_nodejs so we can install our npm dependencies
|
# Fetch rules_nodejs so we can install our npm dependencies
|
||||||
http_archive(
|
http_archive(
|
||||||
name = "build_bazel_rules_nodejs",
|
name = "build_bazel_rules_nodejs",
|
||||||
sha256 = "3a3efbf223f6de733475602844ad3a8faa02abda25ab8cfe1d1ed0db134887cf",
|
sha256 = "e04a82a72146bfbca2d0575947daa60fda1878c8d3a3afe868a8ec39a6b968bb",
|
||||||
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.27.12/rules_nodejs-0.27.12.tar.gz"],
|
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.31.1/rules_nodejs-0.31.1.tar.gz"],
|
||||||
)
|
)
|
||||||
|
|
||||||
# Check the bazel version and download npm dependencies
|
# Check the bazel version and download npm dependencies
|
||||||
load("@build_bazel_rules_nodejs//:defs.bzl", "check_bazel_version", "check_rules_nodejs_version", "node_repositories", "yarn_install")
|
load("@build_bazel_rules_nodejs//:defs.bzl", "check_bazel_version", "check_rules_nodejs_version", "node_repositories", "yarn_install")
|
||||||
|
|
||||||
# Bazel version must be at least v0.21.0 because:
|
# Bazel version must be at least the following version because:
|
||||||
# - 0.21.0 Using --incompatible_strict_action_env flag fixes cache when running `yarn bazel`
|
# - 0.26.0 managed_directories feature added which is required for nodejs rules 0.30.0
|
||||||
# (see https://github.com/angular/angular/issues/27514#issuecomment-451438271)
|
|
||||||
check_bazel_version(
|
check_bazel_version(
|
||||||
message = """
|
message = """
|
||||||
You no longer need to install Bazel on your machine.
|
You no longer need to install Bazel on your machine.
|
||||||
@ -33,22 +35,23 @@ Try running `yarn bazel` instead.
|
|||||||
(If you did run that, check that you've got a fresh `yarn install`)
|
(If you did run that, check that you've got a fresh `yarn install`)
|
||||||
|
|
||||||
""",
|
""",
|
||||||
minimum_bazel_version = "0.21.0",
|
minimum_bazel_version = "0.26.0",
|
||||||
)
|
)
|
||||||
|
|
||||||
# The NodeJS rules version must be at least v0.15.3 because:
|
# The NodeJS rules version must be at least the following version because:
|
||||||
# - 0.15.2 Re-introduced the prod_only attribute on yarn_install
|
# - 0.15.2 Re-introduced the prod_only attribute on yarn_install
|
||||||
# - 0.15.3 Includes a fix for the `jasmine_node_test` rule ignoring target tags
|
# - 0.15.3 Includes a fix for the `jasmine_node_test` rule ignoring target tags
|
||||||
# - 0.16.8 Supports npm installed bazel workspaces
|
# - 0.16.8 Supports npm installed bazel workspaces
|
||||||
# - 0.26.0 Fix for data files in yarn_install and npm_install
|
# - 0.26.0 Fix for data files in yarn_install and npm_install
|
||||||
# - 0.27.12 Adds NodeModuleSources provider for transtive npm deps support
|
# - 0.27.12 Adds NodeModuleSources provider for transtive npm deps support
|
||||||
check_rules_nodejs_version("0.27.12")
|
# - 0.30.0 yarn_install now uses symlinked node_modules with new managed directories Bazel 0.26.0 feature
|
||||||
|
# - 0.31.1 entry_point attribute of nodejs_binary & rollup_bundle is now a label
|
||||||
|
check_rules_nodejs_version("0.31.1")
|
||||||
|
|
||||||
# Setup the Node.js toolchain
|
# Setup the Node.js toolchain
|
||||||
node_repositories(
|
node_repositories(
|
||||||
node_version = "10.9.0",
|
node_version = "10.9.0",
|
||||||
package_json = ["//:package.json"],
|
package_json = ["//:package.json"],
|
||||||
preserve_symlinks = True,
|
|
||||||
# yarn 1.13.0 under Bazel has a regression on Windows that causes build errors on rebuilds:
|
# yarn 1.13.0 under Bazel has a regression on Windows that causes build errors on rebuilds:
|
||||||
# ```
|
# ```
|
||||||
# ERROR: Source forest creation failed: C:/.../fyuc5c3n/execroot/angular/external (Directory not empty)
|
# ERROR: Source forest creation failed: C:/.../fyuc5c3n/execroot/angular/external (Directory not empty)
|
||||||
@ -71,6 +74,10 @@ yarn_install(
|
|||||||
package_json = "//:package.json",
|
package_json = "//:package.json",
|
||||||
# Don't install devDependencies, they are large and not used under Bazel
|
# Don't install devDependencies, they are large and not used under Bazel
|
||||||
prod_only = True,
|
prod_only = True,
|
||||||
|
# Temporarily disable node_modules symlinking until the fix for
|
||||||
|
# https://github.com/bazelbuild/bazel/issues/8487 makes it into a
|
||||||
|
# future Bazel release
|
||||||
|
symlink_node_modules = False,
|
||||||
yarn_lock = "//:yarn.lock",
|
yarn_lock = "//:yarn.lock",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ import { Component } from '@angular/core';
|
|||||||
// #enddocregion import-core-component
|
// #enddocregion import-core-component
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'my-app',
|
selector: 'app-root',
|
||||||
template: 'Welcome to Angular'
|
template: 'Welcome to Angular'
|
||||||
})
|
})
|
||||||
export class AppComponent {
|
export class AppComponent {
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-ctor',
|
selector: 'app-root',
|
||||||
template: `
|
template: `
|
||||||
<h1>{{title}} [Ctor version]</h1>
|
<h1>{{title}} [Ctor version]</h1>
|
||||||
<h2>My favorite hero is: {{myHero}}</h2>
|
<h2>My favorite hero is: {{myHero}}</h2>
|
||||||
`
|
`
|
||||||
})
|
})
|
||||||
// #docregion class
|
// #docregion class
|
||||||
export class AppCtorComponent {
|
export class AppComponent {
|
||||||
title: string;
|
title: string;
|
||||||
myHero: string;
|
myHero: string;
|
||||||
|
|
||||||
|
@ -36,14 +36,14 @@ export class AdBannerComponent implements OnInit, OnDestroy {
|
|||||||
|
|
||||||
loadComponent() {
|
loadComponent() {
|
||||||
this.currentAdIndex = (this.currentAdIndex + 1) % this.ads.length;
|
this.currentAdIndex = (this.currentAdIndex + 1) % this.ads.length;
|
||||||
let adItem = this.ads[this.currentAdIndex];
|
const adItem = this.ads[this.currentAdIndex];
|
||||||
|
|
||||||
let componentFactory = this.componentFactoryResolver.resolveComponentFactory(adItem.component);
|
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(adItem.component);
|
||||||
|
|
||||||
let viewContainerRef = this.adHost.viewContainerRef;
|
const viewContainerRef = this.adHost.viewContainerRef;
|
||||||
viewContainerRef.clear();
|
viewContainerRef.clear();
|
||||||
|
|
||||||
let componentRef = viewContainerRef.createComponent(componentFactory);
|
const componentRef = viewContainerRef.createComponent(componentFactory);
|
||||||
(<AdComponent>componentRef.instance).data = adItem.data;
|
(<AdComponent>componentRef.instance).data = adItem.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,9 @@ export class ShippingComponent {
|
|||||||
// #enddocregion props
|
// #enddocregion props
|
||||||
|
|
||||||
// #docregion inject-cart-service
|
// #docregion inject-cart-service
|
||||||
constructor(private cartService: CartService) {
|
constructor(
|
||||||
|
private cartService: CartService
|
||||||
|
) {
|
||||||
// #enddocregion inject-cart-service
|
// #enddocregion inject-cart-service
|
||||||
this.shippingCosts = this.cartService.getShippingPrices();
|
this.shippingCosts = this.cartService.getShippingPrices();
|
||||||
// #docregion inject-cart-service
|
// #docregion inject-cart-service
|
||||||
|
@ -4,7 +4,7 @@ import { Component } from '@angular/core';
|
|||||||
import { heroes } from './hero';
|
import { heroes } from './hero';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'my-app',
|
selector: 'app-root',
|
||||||
templateUrl: './app.component.html',
|
templateUrl: './app.component.html',
|
||||||
styleUrls: ['./app.component.css']
|
styleUrls: ['./app.component.css']
|
||||||
})
|
})
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<body>
|
<body>
|
||||||
<my-app>Loading...</my-apps>
|
<app-root>Loading...</app-root>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'my-app',
|
selector: 'app-root',
|
||||||
template: `<h1>Hello {{name}}</h1>`
|
template: `<h1>Hello {{name}}</h1>`
|
||||||
})
|
})
|
||||||
export class AppComponent { name = 'Angular'; }
|
export class AppComponent { name = 'Angular'; }
|
||||||
|
@ -20,9 +20,9 @@
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<!-- #docregion my-app-->
|
<!-- #docregion app-root-->
|
||||||
<my-app><!-- content managed by Angular --></my-app>
|
<app-root><!-- content managed by Angular --></app-root>
|
||||||
<!-- #enddocregion my-app-->
|
<!-- #enddocregion app-root-->
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
@ -10,7 +10,7 @@ class Hero {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'my-app',
|
selector: 'app-root',
|
||||||
template: `
|
template: `
|
||||||
<h1>{{title}}</h1>
|
<h1>{{title}}</h1>
|
||||||
<pre>{{heroes | json}}</pre>
|
<pre>{{heroes | json}}</pre>
|
||||||
|
@ -13,7 +13,7 @@ body {
|
|||||||
margin: 2em;
|
margin: 2em;
|
||||||
}
|
}
|
||||||
body, input[type="text"], button {
|
body, input[type="text"], button {
|
||||||
color: #888;
|
color: #333;
|
||||||
font-family: Cambria, Georgia;
|
font-family: Cambria, Georgia;
|
||||||
}
|
}
|
||||||
/* everywhere else */
|
/* everywhere else */
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
font-size: small;
|
font-size: small;
|
||||||
color: white;
|
color: white;
|
||||||
padding: 0.8em 0.7em 0 0.7em;
|
padding: 0.8em 0.7em 0 0.7em;
|
||||||
background-color: #607D8B;
|
background-color:#405061;
|
||||||
line-height: 1em;
|
line-height: 1em;
|
||||||
position: relative;
|
position: relative;
|
||||||
left: -1px;
|
left: -1px;
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
font-size: small;
|
font-size: small;
|
||||||
color: white;
|
color: white;
|
||||||
padding: 0.8em 0.7em 0 0.7em;
|
padding: 0.8em 0.7em 0 0.7em;
|
||||||
background-color: #607D8B;
|
background-color:#405061;
|
||||||
line-height: 1em;
|
line-height: 1em;
|
||||||
position: relative;
|
position: relative;
|
||||||
left: -1px;
|
left: -1px;
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
font-size: small;
|
font-size: small;
|
||||||
color: white;
|
color: white;
|
||||||
padding: 0.8em 0.7em 0 0.7em;
|
padding: 0.8em 0.7em 0 0.7em;
|
||||||
background-color: #607D8B;
|
background-color:#405061;
|
||||||
line-height: 1em;
|
line-height: 1em;
|
||||||
position: relative;
|
position: relative;
|
||||||
left: -1px;
|
left: -1px;
|
||||||
|
@ -30,6 +30,6 @@ button:disabled {
|
|||||||
cursor: auto;
|
cursor: auto;
|
||||||
}
|
}
|
||||||
button.clear {
|
button.clear {
|
||||||
color: #888;
|
color: #333;
|
||||||
margin-bottom: 12px;
|
margin-bottom: 12px;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
/* AppComponent's private CSS styles */
|
/* AppComponent's private CSS styles */
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
color: #999;
|
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
h2 {
|
h2 {
|
||||||
@ -18,7 +17,7 @@ nav a {
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
nav a:visited, a:link {
|
nav a:visited, a:link {
|
||||||
color: #607d8b;
|
color: #334953;
|
||||||
}
|
}
|
||||||
nav a:hover {
|
nav a:hover {
|
||||||
color: #039be5;
|
color: #039be5;
|
||||||
|
@ -34,7 +34,7 @@ h4 {
|
|||||||
color: #eee;
|
color: #eee;
|
||||||
max-height: 120px;
|
max-height: 120px;
|
||||||
min-width: 120px;
|
min-width: 120px;
|
||||||
background-color: #607d8b;
|
background-color: #3f525c;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
}
|
}
|
||||||
.module:hover {
|
.module:hover {
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.heroes a {
|
.heroes a {
|
||||||
color: #888;
|
color: #333;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
position: relative;
|
position: relative;
|
||||||
display: block;
|
display: block;
|
||||||
@ -38,7 +38,7 @@
|
|||||||
font-size: small;
|
font-size: small;
|
||||||
color: white;
|
color: white;
|
||||||
padding: 0.8em 0.7em 0 0.7em;
|
padding: 0.8em 0.7em 0 0.7em;
|
||||||
background-color: #607D8B;
|
background-color:#405061;
|
||||||
line-height: 1em;
|
line-height: 1em;
|
||||||
position: relative;
|
position: relative;
|
||||||
left: -1px;
|
left: -1px;
|
||||||
|
@ -30,6 +30,6 @@ button:disabled {
|
|||||||
cursor: auto;
|
cursor: auto;
|
||||||
}
|
}
|
||||||
button.clear {
|
button.clear {
|
||||||
color: #888;
|
color: #333;
|
||||||
margin-bottom: 12px;
|
margin-bottom: 12px;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
/* AppComponent's private CSS styles */
|
/* AppComponent's private CSS styles */
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
color: #999;
|
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
h2 {
|
h2 {
|
||||||
@ -18,7 +17,7 @@ nav a {
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
nav a:visited, a:link {
|
nav a:visited, a:link {
|
||||||
color: #607D8B;
|
color: #334953;
|
||||||
}
|
}
|
||||||
nav a:hover {
|
nav a:hover {
|
||||||
color: #039be5;
|
color: #039be5;
|
||||||
|
@ -34,7 +34,7 @@ h4 {
|
|||||||
color: #eee;
|
color: #eee;
|
||||||
max-height: 120px;
|
max-height: 120px;
|
||||||
min-width: 120px;
|
min-width: 120px;
|
||||||
background-color: #607D8B;
|
background-color: #3f525c;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
}
|
}
|
||||||
.module:hover {
|
.module:hover {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<div id="search-component">
|
<div id="search-component">
|
||||||
<h4>Hero Search</h4>
|
<h4><label for="search-box">Hero Search</label></h4>
|
||||||
|
|
||||||
<!-- #docregion input -->
|
<!-- #docregion input -->
|
||||||
<input #searchBox id="search-box" (input)="search(searchBox.value)" />
|
<input #searchBox id="search-box" (input)="search(searchBox.value)" />
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.heroes a {
|
.heroes a {
|
||||||
color: #888;
|
color: #333;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
position: relative;
|
position: relative;
|
||||||
display: block;
|
display: block;
|
||||||
@ -38,7 +38,7 @@
|
|||||||
font-size: small;
|
font-size: small;
|
||||||
color: white;
|
color: white;
|
||||||
padding: 0.8em 0.7em 0 0.7em;
|
padding: 0.8em 0.7em 0 0.7em;
|
||||||
background-color: #607D8B;
|
background-color:#405061;
|
||||||
line-height: 1em;
|
line-height: 1em;
|
||||||
position: relative;
|
position: relative;
|
||||||
left: -1px;
|
left: -1px;
|
||||||
|
@ -30,6 +30,6 @@ button:disabled {
|
|||||||
cursor: auto;
|
cursor: auto;
|
||||||
}
|
}
|
||||||
button.clear {
|
button.clear {
|
||||||
color: #888;
|
color: #333;
|
||||||
margin-bottom: 12px;
|
margin-bottom: 12px;
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,6 @@ Outputs from Bazel appear in the `dist/bin` folder.
|
|||||||
If you need to opt-out from using Bazel, you can restore the backup files:
|
If you need to opt-out from using Bazel, you can restore the backup files:
|
||||||
|
|
||||||
- `/angular.json.bak` replaces `/angular.json`
|
- `/angular.json.bak` replaces `/angular.json`
|
||||||
- `/tsconfig.json.bak` replaces `/tsconfig.json`
|
|
||||||
|
|
||||||
## Advanced configuration
|
## Advanced configuration
|
||||||
|
|
||||||
|
@ -371,24 +371,24 @@ so the <code>@Directive</code> configuration applies to components as well</p>
|
|||||||
<td><p>The provided classes are added to the element when the <code>routerLink</code> becomes the current active route.</p>
|
<td><p>The provided classes are added to the element when the <code>routerLink</code> becomes the current active route.</p>
|
||||||
</td>
|
</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td><code>class <b>CanActivate</b>Guard implements <b>CanActivate</b> {<br> canActivate(<br> route: ActivatedRouteSnapshot,<br> state: RouterStateSnapshot<br> ): Observable<boolean>|Promise<boolean>|boolean { ... }<br>}<br><br>{ path: ..., canActivate: [<b>CanActivate</b>Guard] }</code></td>
|
<td><code>class <b>CanActivate</b>Guard implements <b>CanActivate</b> {<br> canActivate(<br> route: ActivatedRouteSnapshot,<br> state: RouterStateSnapshot<br> ): Observable<boolean|UrlTree>|Promise<boolean|UrlTree>|boolean|UrlTree { ... }<br>}<br><br>{ path: ..., canActivate: [<b>CanActivate</b>Guard] }</code></td>
|
||||||
<td><p>An interface for defining a class that the router should call first to determine if it should activate this component. Should return a boolean or an Observable/Promise that resolves to a boolean.</p>
|
<td><p>An interface for defining a class that the router should call first to determine if it should activate this component. Should return a boolean|UrlTree or an Observable/Promise that resolves to a boolean|UrlTree.</p>
|
||||||
</td>
|
</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td><code>class <b>CanDeactivate</b>Guard implements <b>CanDeactivate</b><T> {<br> canDeactivate(<br> component: T,<br> route: ActivatedRouteSnapshot,<br> state: RouterStateSnapshot<br> ): Observable<boolean>|Promise<boolean>|boolean { ... }<br>}<br><br>{ path: ..., canDeactivate: [<b>CanDeactivate</b>Guard] }</code></td>
|
<td><code>class <b>CanDeactivate</b>Guard implements <b>CanDeactivate</b><T> {<br> canDeactivate(<br> component: T,<br> route: ActivatedRouteSnapshot,<br> state: RouterStateSnapshot<br> ): Observable<boolean|UrlTree>|Promise<boolean|UrlTree>|boolean|UrlTree { ... }<br>}<br><br>{ path: ..., canDeactivate: [<b>CanDeactivate</b>Guard] }</code></td>
|
||||||
<td><p>An interface for defining a class that the router should call first to determine if it should deactivate this component after a navigation. Should return a boolean or an Observable/Promise that resolves to a boolean.</p>
|
<td><p>An interface for defining a class that the router should call first to determine if it should deactivate this component after a navigation. Should return a boolean|UrlTree or an Observable/Promise that resolves to a boolean|UrlTree.</p>
|
||||||
</td>
|
</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td><code>class <b>CanActivateChild</b>Guard implements <b>CanActivateChild</b> {<br> canActivateChild(<br> route: ActivatedRouteSnapshot,<br> state: RouterStateSnapshot<br> ): Observable<boolean>|Promise<boolean>|boolean { ... }<br>}<br><br>{ path: ..., canActivateChild: [CanActivateGuard],<br> children: ... }</code></td>
|
<td><code>class <b>CanActivateChild</b>Guard implements <b>CanActivateChild</b> {<br> canActivateChild(<br> route: ActivatedRouteSnapshot,<br> state: RouterStateSnapshot<br> ): Observable<boolean|UrlTree>|Promise<boolean|UrlTree>|boolean|UrlTree { ... }<br>}<br><br>{ path: ..., canActivateChild: [CanActivateGuard],<br> children: ... }</code></td>
|
||||||
<td><p>An interface for defining a class that the router should call first to determine if it should activate the child route. Should return a boolean or an Observable/Promise that resolves to a boolean.</p>
|
<td><p>An interface for defining a class that the router should call first to determine if it should activate the child route. Should return a boolean|UrlTree or an Observable/Promise that resolves to a boolean|UrlTree.</p>
|
||||||
</td>
|
</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td><code>class <b>Resolve</b>Guard implements <b>Resolve</b><T> {<br> resolve(<br> route: ActivatedRouteSnapshot,<br> state: RouterStateSnapshot<br> ): Observable<any>|Promise<any>|any { ... }<br>}<br><br>{ path: ..., resolve: [<b>Resolve</b>Guard] }</code></td>
|
<td><code>class <b>Resolve</b>Guard implements <b>Resolve</b><T> {<br> resolve(<br> route: ActivatedRouteSnapshot,<br> state: RouterStateSnapshot<br> ): Observable<any>|Promise<any>|any { ... }<br>}<br><br>{ path: ..., resolve: [<b>Resolve</b>Guard] }</code></td>
|
||||||
<td><p>An interface for defining a class that the router should call first to resolve route data before rendering the route. Should return a value or an Observable/Promise that resolves to a value.</p>
|
<td><p>An interface for defining a class that the router should call first to resolve route data before rendering the route. Should return a value or an Observable/Promise that resolves to a value.</p>
|
||||||
</td>
|
</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td><code>class <b>CanLoad</b>Guard implements <b>CanLoad</b> {<br> canLoad(<br> route: Route<br> ): Observable<boolean>|Promise<boolean>|boolean { ... }<br>}<br><br>{ path: ..., canLoad: [<b>CanLoad</b>Guard], loadChildren: ... }</code></td>
|
<td><code>class <b>CanLoad</b>Guard implements <b>CanLoad</b> {<br> canLoad(<br> route: Route<br> ): Observable<boolean|UrlTree>|Promise<boolean|UrlTree>|boolean|UrlTree { ... }<br>}<br><br>{ path: ..., canLoad: [<b>CanLoad</b>Guard], loadChildren: ... }</code></td>
|
||||||
<td><p>An interface for defining a class that the router should call first to check if the lazy loaded module should be loaded. Should return a boolean or an Observable/Promise that resolves to a boolean.</p>
|
<td><p>An interface for defining a class that the router should call first to check if the lazy loaded module should be loaded. Should return a boolean|UrlTree or an Observable/Promise that resolves to a boolean|UrlTree.</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody></table>
|
</tbody></table>
|
||||||
|
@ -106,10 +106,11 @@ if some ancestor element has the CSS class `theme-light`.
|
|||||||
|
|
||||||
Component styles normally apply only to the HTML in the component's own template.
|
Component styles normally apply only to the HTML in the component's own template.
|
||||||
|
|
||||||
Use the `/deep/` shadow-piercing descendant combinator to force a style down through the child
|
Applying the `::ng-deep` pseudo-class to any CSS rule completely disables view-encapsulation for
|
||||||
component tree into all the child component views.
|
that rule. Any style with `::ng-deep` applied becomes a global style. In order to scope the specified style
|
||||||
The `/deep/` combinator works to any depth of nested components, and it applies to both the view
|
to the current component and all its descendants, be sure to include the `:host` selector before
|
||||||
children and content children of the component.
|
`::ng-deep`. If the `::ng-deep` combinator is used without the `:host` pseudo-class selector, the style
|
||||||
|
can bleed into other components.
|
||||||
|
|
||||||
The following example targets all `<h3>` elements, from the host element down
|
The following example targets all `<h3>` elements, from the host element down
|
||||||
through this component to all of its child elements in the DOM.
|
through this component to all of its child elements in the DOM.
|
||||||
|
@ -318,8 +318,6 @@ The need for this polyfill was removed in Angular version 8.0 ([see #14473](http
|
|||||||
|
|
||||||
In a typical Angular project, the polyfill is not used in production builds, so removing it should not impact production applications. The goal behind this removal is overall simplification of the build setup and decrease in the number of external dependencies.
|
In a typical Angular project, the polyfill is not used in production builds, so removing it should not impact production applications. The goal behind this removal is overall simplification of the build setup and decrease in the number of external dependencies.
|
||||||
|
|
||||||
We expect to remove the polyfill from most if not all CLI projects via an `ng upgrade` migration from version 8 to 9.
|
|
||||||
|
|
||||||
{@a static-query-resolution}
|
{@a static-query-resolution}
|
||||||
### `@ViewChild()` / `@ContentChild()` static resolution as the default
|
### `@ViewChild()` / `@ContentChild()` static resolution as the default
|
||||||
|
|
||||||
@ -348,13 +346,13 @@ In the following example, the two-way binding means that `optionName`
|
|||||||
should be written when the `valueChange` event fires.
|
should be written when the `valueChange` event fires.
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<option *ngFor="let optionName of options" [(value)]="optionName"></cmp>
|
<option *ngFor="let optionName of options" [(value)]="optionName"></option>
|
||||||
```
|
```
|
||||||
|
|
||||||
However, in practice, Angular simply ignores two-way bindings to template variables. Starting in version 8, attempting to write to template variables is deprecated. In a future version, we will throw to indicate that the write is not supported.
|
However, in practice, Angular simply ignores two-way bindings to template variables. Starting in version 8, attempting to write to template variables is deprecated. In a future version, we will throw to indicate that the write is not supported.
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<option *ngFor="let optionName of options" [value]="optionName"></cmp>
|
<option *ngFor="let optionName of options" [value]="optionName"></option>
|
||||||
```
|
```
|
||||||
|
|
||||||
{@a binding-to-innertext}
|
{@a binding-to-innertext}
|
||||||
@ -369,33 +367,27 @@ These two properties have subtle differences, so switching to `textContent` unde
|
|||||||
|
|
||||||
All of the `wtf*` APIs are deprecated and will be removed in a future version.
|
All of the `wtf*` APIs are deprecated and will be removed in a future version.
|
||||||
|
|
||||||
{@a platform-webworker}
|
|
||||||
### `platform-webworker`
|
|
||||||
|
|
||||||
The `@angular/platform-*` packages enable Angular to be run in different contexts. Some examples are running Angular on the server (`@angular/platform-server`), in the browser (`@angular/platform-browser`), or in a [web worker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) (`@angular/platform-webworker`).
|
|
||||||
|
|
||||||
Though web worker is useful to offload things requiring lots of processing, pushing whole apps to run in the web worker isn't a winning strategy due to many unresolved issues.
|
|
||||||
|
|
||||||
Angular CLI doesn't allow use of these APIs because the build system and bundling doesn't support them. This whole package is deprecated in Angular version 8 and will be removed in the future.
|
|
||||||
|
|
||||||
Instead, use web workers primarily for offloading CPU intensive, but functionally not critical, work needed for initial rendering (for example, in memory search, image processing, and so on).
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{@a webworker-apps}
|
{@a webworker-apps}
|
||||||
### platform-webworker Angular applications
|
### Running Angular applications in platform-webworker
|
||||||
|
|
||||||
|
The `@angular/platform-*` packages enable Angular to be run in different contexts. For examples,
|
||||||
|
`@angular/platform-server` enables Angular to be run on the server, and `@angular/platform-browser`
|
||||||
|
enables Angular to be run in a web browser.
|
||||||
|
|
||||||
platform-webworker has been around since the initial release of Angular version 2. It began as an experiment to leverage Angular's rendering architecture and try something different: to run an entire web application in a web worker.
|
`@angular/platform-webworker` was introduced in Angular version 2 as an experiment in leveraging
|
||||||
|
Angular's rendering architecture to run an entire web application in a
|
||||||
|
[web worker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API). We've learned a lot
|
||||||
|
from this experiment and have come to the conclusion that running the entire application in a web
|
||||||
|
worker is not the best strategy for most applications.
|
||||||
|
|
||||||
We've learned a lot from this experiment, and have come to the conclusion that pushing entire applications to run in a web worker is not a recipe for success for most applications. This is due to a number of unresolved issues, including:
|
Going forward, we will focus our efforts related to web workers around their primary use case of
|
||||||
|
offloading CPU-intensive, non-critical work needed for initial rendering (such as in-memory search
|
||||||
|
and image processing). Learn more in the
|
||||||
|
[guide to Using Web Workers with the Angular CLI](guide/web-worker).
|
||||||
|
|
||||||
* Poor or non-existent support for web worker APIs in web crawlers/indexers.
|
As of Angular version 8, all `platform-webworker` APIs are deprecated.
|
||||||
* Poor support in build and bundling tooling.
|
This includes both packages: `@angular/platform-webworker` and
|
||||||
|
`@angular/platform-webworker-dynamic`.
|
||||||
As a result, as of Angular version 8, we are deprecating the `platform-webworker` APIs in Angular. This consists of both NPM packages, `@angular/platform-webworker` and `@angular/platform-webworker-dynamic`.
|
|
||||||
|
|
||||||
Going forward, we will focus our efforts related to web workers around their primary use case of offloading CPU-intensive but not critical work.
|
|
||||||
|
|
||||||
{@a removed}
|
{@a removed}
|
||||||
## Removed APIs
|
## Removed APIs
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
# Angular Elements Overview
|
# Angular Elements Overview
|
||||||
|
|
||||||
_Angular elements_ are Angular components packaged as _custom elements_, a web standard for defining new HTML elements in a framework-agnostic way.
|
_Angular elements_ are Angular components packaged as _custom elements_ (also called Web Components), a web standard for defining new HTML elements in a framework-agnostic way.
|
||||||
|
|
||||||
[Custom elements](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements) are a Web Platform feature currently supported by Chrome, Firefox, Opera, and Safari, and available in other browsers through polyfills (see [Browser Support](#browser-support)).
|
[Custom elements](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements) are a Web Platform feature currently supported by Chrome, Firefox, Opera, and Safari, and available in other browsers through polyfills (see [Browser Support](#browser-support)).
|
||||||
A custom element extends HTML by allowing you to define a tag whose content is created and controlled by JavaScript code.
|
A custom element extends HTML by allowing you to define a tag whose content is created and controlled by JavaScript code.
|
||||||
The browser maintains a `CustomElementRegistry` of defined custom elements (also called Web Components), which maps an instantiable JavaScript class to an HTML tag.
|
The browser maintains a `CustomElementRegistry` of defined custom elements, which maps an instantiable JavaScript class to an HTML tag.
|
||||||
|
|
||||||
The `@angular/elements` package exports a `createCustomElement()` API that provides a bridge from Angular's component interface and change detection functionality to the built-in DOM API.
|
The `@angular/elements` package exports a `createCustomElement()` API that provides a bridge from Angular's component interface and change detection functionality to the built-in DOM API.
|
||||||
|
|
||||||
|
@ -362,11 +362,12 @@ Compare to [custom element](#custom-element).
|
|||||||
|
|
||||||
## entry point
|
## entry point
|
||||||
|
|
||||||
A JavaScript symbol that makes parts of an [npm package](guide/npm-packages) available for import by other code.
|
A JavaScript module(#module) that is intended to be imported by a user of [an
|
||||||
The Angular [scoped packages](#scoped-package) each have an entry point named `index`.
|
npm package](guide/npm-packages). An entry-point module typically re-exports
|
||||||
|
symbols from other internal modules. A package can contain multiple
|
||||||
Within Angular, use [NgModules](#ngmodule) to make public parts available for import by other NgModules.
|
entry points. For example, the `@angular/core` package has two entry-point
|
||||||
|
modules, which can be imported using the module names `@angular/core` and
|
||||||
|
`@angular/core/testing`.
|
||||||
|
|
||||||
{@a F}
|
{@a F}
|
||||||
|
|
||||||
@ -621,6 +622,19 @@ A class which is preceded by the `@Pipe{}` decorator and which defines a functio
|
|||||||
|
|
||||||
To learn more, see [Pipes](guide/pipes).
|
To learn more, see [Pipes](guide/pipes).
|
||||||
|
|
||||||
|
{@a platform}
|
||||||
|
|
||||||
|
## platform
|
||||||
|
|
||||||
|
In Angular terminology, a platform is the context in which an Angular application runs.
|
||||||
|
The most common platform for Angular applications is a web browser, but it can also be an operating system for a mobile device, or a web server.
|
||||||
|
|
||||||
|
Support for the various Angular run-time platforms is provided by the `@angular/platform-*` packages. These packages allow applications that make use of `@angular/core` and `@angular/common` to execute in different environments by providing implementation for gathering user input and rendering UIs for the given platform. Isolating platform-specific functionality allows the developer to make platform-independent use of the rest of the framework.
|
||||||
|
|
||||||
|
* When running in a web browser, [`BrowserModule`](api/platform-browser/BrowserModule) is imported from the `platform-browser` package, and supports services that simplify security and event processing, and allows applications to access browser-specific features, such as interpreting keyboard input and controlling the title of the document being displayed. All applications running in the browser use the same platform service.
|
||||||
|
|
||||||
|
* When [server-side rendering](#server-side-rendering) (SSR) is used, the [`platform-server`](api/platform-server) package provides web server implementations of the `DOM`, `XMLHttpRequest`, and other low-level features that don't rely on a browser.
|
||||||
|
|
||||||
{@a polyfill}
|
{@a polyfill}
|
||||||
|
|
||||||
## polyfill
|
## polyfill
|
||||||
|
@ -49,7 +49,7 @@ AOT compilation with Ivy is faster and should be used by default. In the `angula
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
To stop using the Ivy compiler, set `enableIvy` to `false` in `tsconfig.app.json`, or remove it completely. Also remove `"aot": true` from your default build options if you didn't have it there before.
|
To stop using the Ivy compiler, set `enableIvy` to `false` in `tsconfig.app.json`, or remove it completely. Also remove `"aot": true` from your default build options if you didn't have it there before.
|
||||||
|
|
@ -548,7 +548,7 @@ It displays the same hero data in JSON format by chaining through to the built-i
|
|||||||
|
|
||||||
|
|
||||||
The [JsonPipe](api/common/JsonPipe)
|
The [JsonPipe](api/common/JsonPipe)
|
||||||
provides an easy way to diagnosis a mysteriously failing data binding or
|
provides an easy way to diagnose a mysteriously failing data binding or
|
||||||
inspect an object for future binding.
|
inspect an object for future binding.
|
||||||
|
|
||||||
|
|
||||||
|
@ -92,8 +92,8 @@ The following table contains our current target release dates for the next two m
|
|||||||
|
|
||||||
Date | Stable Release | Compatibility
|
Date | Stable Release | Compatibility
|
||||||
---------------------- | -------------- | -------------
|
---------------------- | -------------- | -------------
|
||||||
May 2019 | 8.0.0 | ^7.0.0
|
|
||||||
October/November 2019 | 9.0.0 | ^8.0.0
|
October/November 2019 | 9.0.0 | ^8.0.0
|
||||||
|
May 2020 | 10.0.0 | ^9.0.0
|
||||||
|
|
||||||
Compatibility note: The primary goal of the backward compatibility promise is to ensure that changes in the core framework and tooling don't break the existing ecosystem of components and applications and don't put undue upgrade/migration burden on Angular application and component authors.
|
Compatibility note: The primary goal of the backward compatibility promise is to ensure that changes in the core framework and tooling don't break the existing ecosystem of components and applications and don't put undue upgrade/migration burden on Angular application and component authors.
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ The following table provides the status for Angular versions under support.
|
|||||||
|
|
||||||
Version | Status | Released | Active Ends | LTS Ends
|
Version | Status | Released | Active Ends | LTS Ends
|
||||||
------- | ------ | ------------ | ------------ | ------------
|
------- | ------ | ------------ | ------------ | ------------
|
||||||
^8.0.0 | Active | May 22, 2019 | Nov 22, 2019 | Nov 22, 2020
|
^8.0.0 | Active | May 28, 2019 | Nov 28, 2019 | Nov 28, 2020
|
||||||
^7.0.0 | LTS | Oct 18, 2018 | Apr 18, 2019 | Apr 18, 2020
|
^7.0.0 | LTS | Oct 18, 2018 | Apr 18, 2019 | Apr 18, 2020
|
||||||
^6.0.0 | LTS | May 3, 2018 | Nov 3, 2018 | Nov 3, 2019
|
^6.0.0 | LTS | May 3, 2018 | Nov 3, 2018 | Nov 3, 2019
|
||||||
|
|
||||||
|
@ -59,6 +59,13 @@ With the server running, you can point your browser at http://localhost:8080/. Y
|
|||||||
|
|
||||||
**Tip:** When testing Angular service workers, it's a good idea to use an incognito or private window in your browser to ensure the service worker doesn't end up reading from a previous leftover state, which can cause unexpected behavior.
|
**Tip:** When testing Angular service workers, it's a good idea to use an incognito or private window in your browser to ensure the service worker doesn't end up reading from a previous leftover state, which can cause unexpected behavior.
|
||||||
|
|
||||||
|
<div class="alert is-helpful">
|
||||||
|
|
||||||
|
**Note:**
|
||||||
|
If you are not using HTTPS, the service worker will only be registered when accessing the app on `localhost`.
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
### Simulating a network issue
|
### Simulating a network issue
|
||||||
|
|
||||||
To simulate a network issue, disable network interaction for your application. In Chrome:
|
To simulate a network issue, disable network interaction for your application. In Chrome:
|
||||||
|
@ -33,6 +33,10 @@ Installing the Angular service worker is as simple as including an `NgModule`. I
|
|||||||
|
|
||||||
Your application must run in a web browser that supports service workers. Currently, service workers are supported in the latest versions of Chrome, Firefox, Edge, Safari, Opera, UC Browser (Android version) and Samsung Internet. Browsers like IE and Opera Mini do not provide the support. To learn more about other browsers that are service worker ready, see the [Can I Use](https://caniuse.com/#feat=serviceworkers) page and [MDN docs](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API).
|
Your application must run in a web browser that supports service workers. Currently, service workers are supported in the latest versions of Chrome, Firefox, Edge, Safari, Opera, UC Browser (Android version) and Samsung Internet. Browsers like IE and Opera Mini do not provide the support. To learn more about other browsers that are service worker ready, see the [Can I Use](https://caniuse.com/#feat=serviceworkers) page and [MDN docs](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API).
|
||||||
|
|
||||||
|
In addition, in order for service workers to be registered, the app must be accessed over HTTPS, not HTTP. Browsers will ignore service workers on pages that are served over an insecure connection. The reason is that service workers are quite powerful, so extra care needs to be taken to ensure the service worker script has not been tampered with.
|
||||||
|
|
||||||
|
There is one exception to this rule: To make local development easier, browsers do _not_ require a secure connection when accessing an app on `localhost`.
|
||||||
|
|
||||||
## Related resources
|
## Related resources
|
||||||
|
|
||||||
For more information about service workers in general, see [Service Workers: an Introduction](https://developers.google.com/web/fundamentals/primers/service-workers/).
|
For more information about service workers in general, see [Service Workers: an Introduction](https://developers.google.com/web/fundamentals/primers/service-workers/).
|
||||||
|
@ -106,7 +106,7 @@ Many libraries include definition files in their npm packages where both the Typ
|
|||||||
can find them. Angular is one such library.
|
can find them. Angular is one such library.
|
||||||
The `node_modules/@angular/core/` folder of any Angular application contains several `d.ts` files that describe parts of Angular.
|
The `node_modules/@angular/core/` folder of any Angular application contains several `d.ts` files that describe parts of Angular.
|
||||||
|
|
||||||
**You need to do nothing to get *typings* files for library packages that include `d.ts` files.
|
**You don't need to do anything to get *typings* files for library packages that include `d.ts` files.
|
||||||
Angular packages include them already.**
|
Angular packages include them already.**
|
||||||
|
|
||||||
### lib.d.ts
|
### lib.d.ts
|
||||||
|
@ -1177,7 +1177,7 @@ Finally, you should add some npm scripts in `package.json` to compile the TypeSc
|
|||||||
JavaScript (based on the `tsconfig.json` configuration file):
|
JavaScript (based on the `tsconfig.json` configuration file):
|
||||||
|
|
||||||
<code-example format="">
|
<code-example format="">
|
||||||
"script": {
|
"scripts": {
|
||||||
"tsc": "tsc",
|
"tsc": "tsc",
|
||||||
"tsc:w": "tsc -w",
|
"tsc:w": "tsc -w",
|
||||||
...
|
...
|
||||||
|
@ -15,8 +15,7 @@ include the following information:
|
|||||||
- For Schematics commands (add, generate, new and update), a list of whitelisted flags.
|
- For Schematics commands (add, generate, new and update), a list of whitelisted flags.
|
||||||
- For build commands (build, serve), the number and size of bundles (initial and lazy),
|
- For build commands (build, serve), the number and size of bundles (initial and lazy),
|
||||||
compilation units, the time it took to build and rebuild, and basic Angular-specific
|
compilation units, the time it took to build and rebuild, and basic Angular-specific
|
||||||
API usage. *This data is collected only if usage analytics gathering is enabled for
|
API usage.
|
||||||
the project.*
|
|
||||||
- Error code of exceptions and crash data. No stack trace is collected.
|
- Error code of exceptions and crash data. No stack trace is collected.
|
||||||
|
|
||||||
Only Angular owned and developed schematics and builders are reported. Third-party schematics and
|
Only Angular owned and developed schematics and builders are reported. Third-party schematics and
|
||||||
@ -26,9 +25,6 @@ builders do not send data to the Angular Team.
|
|||||||
When installing the Angular CLI or upgrading an existing version, you are prompted to allow global
|
When installing the Angular CLI or upgrading an existing version, you are prompted to allow global
|
||||||
collection of usage statistics. If you say no or skip the prompt, no data is collected.
|
collection of usage statistics. If you say no or skip the prompt, no data is collected.
|
||||||
|
|
||||||
The first time a command affecting the project is run, you are prompted to allow collection of data
|
|
||||||
related to the project. If you say no or skip the prompt, no data is collected for that project.
|
|
||||||
|
|
||||||
Starting with version 8, we added the `analytics` command to the CLI. You can change your opt-in
|
Starting with version 8, we added the `analytics` command to the CLI. You can change your opt-in
|
||||||
decision at any time using this command.
|
decision at any time using this command.
|
||||||
|
|
||||||
@ -38,9 +34,6 @@ To disable analytics gathering, run the following command:
|
|||||||
```bash
|
```bash
|
||||||
# Disable all usage analytics.
|
# Disable all usage analytics.
|
||||||
ng analytics off
|
ng analytics off
|
||||||
|
|
||||||
# Disable project-specific usage analytics.
|
|
||||||
ng analytics project off
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Enabling usage analytics
|
### Enabling usage analytics
|
||||||
@ -49,9 +42,6 @@ To enable usage analytics, run the following command:
|
|||||||
```bash
|
```bash
|
||||||
# Enable all usage analytics.
|
# Enable all usage analytics.
|
||||||
ng analytics on
|
ng analytics on
|
||||||
|
|
||||||
# Enable project-specific usage analytics.
|
|
||||||
ng analytics project on
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Prompting
|
### Prompting
|
||||||
@ -60,7 +50,4 @@ To prompt the user again about usage analytics, run the following command:
|
|||||||
```bash
|
```bash
|
||||||
# Prompt for all usage analytics.
|
# Prompt for all usage analytics.
|
||||||
ng analytics prompt
|
ng analytics prompt
|
||||||
|
|
||||||
# Prompt for project-specific usage analytics.
|
|
||||||
ng analytics project prompt
|
|
||||||
```
|
```
|
||||||
|
@ -28,6 +28,11 @@
|
|||||||
"rev": true,
|
"rev": true,
|
||||||
"title": "Angular Subreddit",
|
"title": "Angular Subreddit",
|
||||||
"url": "https://www.reddit.com/r/Angular2/"
|
"url": "https://www.reddit.com/r/Angular2/"
|
||||||
|
},
|
||||||
|
"angular-devto" : {
|
||||||
|
"url": "https://dev.to/t/angular",
|
||||||
|
"rev": true,
|
||||||
|
"title": "Read and share content and chat about Angular on DEV Community."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -788,7 +788,7 @@
|
|||||||
{
|
{
|
||||||
"url": "events",
|
"url": "events",
|
||||||
"title": "Events",
|
"title": "Events",
|
||||||
"tooltip": "Post issues and suggestions on github."
|
"tooltip": "Angular events around the world."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "http://www.meetup.com/topics/angularjs/",
|
"url": "http://www.meetup.com/topics/angularjs/",
|
||||||
@ -831,21 +831,25 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"docVersions": [
|
"docVersions": [
|
||||||
|
{
|
||||||
|
"title": "v7",
|
||||||
|
"url": "https://v7.angular.io/"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"title": "v6",
|
"title": "v6",
|
||||||
"url": "https://v6.angular.io"
|
"url": "https://v6.angular.io/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "v5",
|
"title": "v5",
|
||||||
"url": "https://v5.angular.io"
|
"url": "https://v5.angular.io/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "v4",
|
"title": "v4",
|
||||||
"url": "https://v4.angular.io"
|
"url": "https://v4.angular.io/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "v2",
|
"title": "v2",
|
||||||
"url": "https://v2.angular.io"
|
"url": "https://v2.angular.io/"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ Users can click on a product name from the list to see details in a new view, wi
|
|||||||
In this section, you'll create the shopping cart. You'll:
|
In this section, you'll create the shopping cart. You'll:
|
||||||
* Update the product details page to include a "Buy" button, which adds the current product to a list of products managed by a cart service.
|
* Update the product details page to include a "Buy" button, which adds the current product to a list of products managed by a cart service.
|
||||||
* Add a cart component, which displays the items you added to your cart.
|
* Add a cart component, which displays the items you added to your cart.
|
||||||
* Add a shipping component, which retrieves shipping prices for the items in the cart by using Angular's HttpClient to retrieve shipping data from a `.json` file.
|
* Add a shipping component, which retrieves shipping prices for the items in the cart by using Angular's `HttpClient` to retrieve shipping data from a `.json` file.
|
||||||
|
|
||||||
{@a services}
|
{@a services}
|
||||||
## Services
|
## Services
|
||||||
@ -34,7 +34,7 @@ Later, in the [Forms](start/forms "Getting Started: Forms") part of this tutoria
|
|||||||
|
|
||||||
1. Generate a cart service.
|
1. Generate a cart service.
|
||||||
|
|
||||||
1. Right click on the `app` folder, choose `Angular Generator`, and choose `**Service**`. Name the new service `cart`.
|
1. Right click on the `app` folder, choose `Angular Generator`, and choose `Service`. Name the new service `cart`.
|
||||||
|
|
||||||
<code-example header="src/app/cart.service.ts" path="getting-started/src/app/cart.service.1.ts"></code-example>
|
<code-example header="src/app/cart.service.ts" path="getting-started/src/app/cart.service.1.ts"></code-example>
|
||||||
|
|
||||||
@ -238,7 +238,7 @@ In this section, you'll use the HTTP client to retrieve shipping prices from an
|
|||||||
|
|
||||||
### Predefined shipping data
|
### Predefined shipping data
|
||||||
|
|
||||||
For the purpose of this Getting Started, we have provided shipping data in `assets/shipping.json`.
|
For the purpose of this Getting Started guide, we have provided shipping data in `assets/shipping.json`.
|
||||||
You'll use this data to add shipping prices for items in the cart.
|
You'll use this data to add shipping prices for items in the cart.
|
||||||
|
|
||||||
<code-example header="src/assets/shipping.json" path="getting-started/src/assets/shipping.json">
|
<code-example header="src/assets/shipping.json" path="getting-started/src/assets/shipping.json">
|
||||||
@ -306,7 +306,7 @@ Here you'll define the `get()` method that will be used.
|
|||||||
|
|
||||||
<div class="alert is-helpful">
|
<div class="alert is-helpful">
|
||||||
|
|
||||||
Learn more: See the [HttpClient guide](guide/http "HttpClient guide") for more information about Angular's HttpClient.
|
Learn more: See the [HttpClient guide](guide/http "HttpClient guide") for more information about Angular's `HttpClient`.
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ StackBlitz projects are public by default, allowing you to share your Angular ap
|
|||||||
|
|
||||||
To build your application locally or for production, you will need to download the source code from your StackBlitz project. Click the `Download Project` icon in the left menu across from `Project` to download your files.
|
To build your application locally or for production, you will need to download the source code from your StackBlitz project. Click the `Download Project` icon in the left menu across from `Project` to download your files.
|
||||||
|
|
||||||
Once you have the source code downloaded and unzipped, use the [Angular Console](https://angularconsole.com "Angular Console web site") to serve the application, or you install Node and have the Angular CLI installed.
|
Once you have the source code downloaded and unzipped, use the [Angular Console](https://angularconsole.com "Angular Console web site") to serve the application, or you install `Node.js` and have the Angular CLI installed.
|
||||||
|
|
||||||
From the terminal, install the Angular CLI globally with:
|
From the terminal, install the Angular CLI globally with:
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ This will produce the files that you need to deploy.
|
|||||||
|
|
||||||
#### Hosting the built project
|
#### Hosting the built project
|
||||||
|
|
||||||
The files in the `dist/my-project-name` folder are static and can be hosted on any web server capable of serving files (node, Java, .NET) or any backend (Firebase, Google Cloud, App Engine, others).
|
The files in the `dist/my-project-name` folder are static and can be hosted on any web server capable of serving files (`Node.js`, Java, .NET) or any backend (Firebase, Google Cloud, App Engine, others).
|
||||||
|
|
||||||
### Hosting an Angular app on Firebase
|
### Hosting an Angular app on Firebase
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ You don't need to install anything: you'll build the app using the [StackBlitz](
|
|||||||
<header>New to web development?</header>
|
<header>New to web development?</header>
|
||||||
|
|
||||||
|
|
||||||
You'll find many resources to complement the Angular docs. Mozilla's MDN docs include both [HTML](https://developer.mozilla.org/en-US/docs/Learn/HTML "Learning HTML: Guides and tutorials") and [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript "JavaScript") introductions. [TypeScript's docs](https://www.typescriptlang.org/docs/home.html "TypeScript documentation") include a 5-minute tutorial. Various online course platforms, such as [Udemy](http://www.udemy.com "Udemy online courses") and [Codeacademy](https://www.codecademy.com/ "Codeacademy online courses"), also cover web development basics.
|
You'll find many resources to complement the Angular docs. Mozilla's MDN docs include both [HTML](https://developer.mozilla.org/en-US/docs/Learn/HTML "Learning HTML: Guides and tutorials") and [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript "JavaScript") introductions. [TypeScript's docs](https://www.typescriptlang.org/docs/home.html "TypeScript documentation") include a 5-minute tutorial. Various online course platforms, such as [Udemy](http://www.udemy.com "Udemy online courses") and [Codecademy](https://www.codecademy.com/ "Codeacademy online courses"), also cover web development basics.
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -69,7 +69,9 @@ In this section, you'll learn about template syntax by enhancing the "Products"
|
|||||||
`*ngFor` causes the `<div>` to be repeated for each product in the list.
|
`*ngFor` causes the `<div>` to be repeated for each product in the list.
|
||||||
|
|
||||||
<div class="alert is-helpful">
|
<div class="alert is-helpful">
|
||||||
`*ngFor` is a "structural directive". Structural directives shape or reshape the DOM's structure, typically by adding, removing, and manipulating the elements to which they are attached. Any directive with an * is a structural directive.
|
|
||||||
|
`*ngFor` is a "structural directive". Structural directives shape or reshape the DOM's structure, typically by adding, removing, and manipulating the elements to which they are attached. Any directive with an `*` is a structural directive.
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
1. To display the names of the products, use the interpolation syntax {{ }}. Interpolation renders a property's value as text. Inside the `<div>`, add an `<h3>` heading to display the interpolation of the product's name property:
|
1. To display the names of the products, use the interpolation syntax {{ }}. Interpolation renders a property's value as text. Inside the `<div>`, add an `<h3>` heading to display the interpolation of the product's name property:
|
||||||
@ -131,9 +133,9 @@ The app now has a product list and sharing feature.
|
|||||||
In the process, you've learned to use five common features of Angular's template syntax:
|
In the process, you've learned to use five common features of Angular's template syntax:
|
||||||
* `*ngFor`
|
* `*ngFor`
|
||||||
* `*ngIf`
|
* `*ngIf`
|
||||||
* Interpolation {{ }}
|
* Interpolation `{{ }}`
|
||||||
* Property binding [ ]
|
* Property binding `[ ]`
|
||||||
* Event binding ( )
|
* Event binding `( )`
|
||||||
|
|
||||||
|
|
||||||
<div class="alert is-helpful">
|
<div class="alert is-helpful">
|
||||||
|
@ -56,8 +56,24 @@ Install the *In-memory Web API* package from _npm_
|
|||||||
npm install angular-in-memory-web-api --save
|
npm install angular-in-memory-web-api --save
|
||||||
</code-example>
|
</code-example>
|
||||||
|
|
||||||
Import the `HttpClientInMemoryWebApiModule` and the `InMemoryDataService` class,
|
|
||||||
which you will create in a moment.
|
The class `src/app/in-memory-data.service.ts` is generated by the following command:
|
||||||
|
|
||||||
|
<code-example language="sh" class="code-shell">
|
||||||
|
ng generate service InMemoryData
|
||||||
|
</code-example>
|
||||||
|
|
||||||
|
This class has the following content:
|
||||||
|
|
||||||
|
<code-example path="toh-pt6/src/app/in-memory-data.service.ts" region="init" header="src/app/in-memory-data.service.ts" linenums="false"></code-example>
|
||||||
|
|
||||||
|
This file replaces `mock-heroes.ts`, which is now safe to delete.
|
||||||
|
|
||||||
|
When your server is ready, detach the *In-memory Web API*, and the app's requests will go through to the server.
|
||||||
|
|
||||||
|
Now back to the `HttpClient` story.
|
||||||
|
|
||||||
|
Import the `HttpClientInMemoryWebApiModule` and the `InMemoryDataService` class.
|
||||||
|
|
||||||
<code-example
|
<code-example
|
||||||
path="toh-pt6/src/app/app.module.ts"
|
path="toh-pt6/src/app/app.module.ts"
|
||||||
@ -77,22 +93,6 @@ _after importing the `HttpClientModule`_,
|
|||||||
The `forRoot()` configuration method takes an `InMemoryDataService` class
|
The `forRoot()` configuration method takes an `InMemoryDataService` class
|
||||||
that primes the in-memory database.
|
that primes the in-memory database.
|
||||||
|
|
||||||
The class `src/app/in-memory-data.service.ts` is generated by the following command:
|
|
||||||
|
|
||||||
<code-example language="sh" class="code-shell">
|
|
||||||
ng generate service InMemoryData
|
|
||||||
</code-example>
|
|
||||||
|
|
||||||
This class has the following content:
|
|
||||||
|
|
||||||
<code-example path="toh-pt6/src/app/in-memory-data.service.ts" region="init" header="src/app/in-memory-data.service.ts" linenums="false"></code-example>
|
|
||||||
|
|
||||||
This file replaces `mock-heroes.ts`, which is now safe to delete.
|
|
||||||
|
|
||||||
When your server is ready, detach the *In-memory Web API*, and the app's requests will go through to the server.
|
|
||||||
|
|
||||||
Now back to the `HttpClient` story.
|
|
||||||
|
|
||||||
{@a import-heroes}
|
{@a import-heroes}
|
||||||
## Heroes and HTTP
|
## Heroes and HTTP
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
"build-local": "yarn ~~build",
|
"build-local": "yarn ~~build",
|
||||||
"prebuild-with-ivy": "yarn setup-local && node scripts/switch-to-ivy",
|
"prebuild-with-ivy": "yarn setup-local && node scripts/switch-to-ivy",
|
||||||
"build-with-ivy": "yarn ~~build",
|
"build-with-ivy": "yarn ~~build",
|
||||||
"extract-cli-command-docs": "node tools/transforms/cli-docs-package/extract-cli-commands.js 9a3d36c98",
|
"extract-cli-command-docs": "node tools/transforms/cli-docs-package/extract-cli-commands.js 7da10691d",
|
||||||
"lint": "yarn check-env && yarn docs-lint && ng lint && yarn example-lint && yarn tools-lint",
|
"lint": "yarn check-env && yarn docs-lint && ng lint && yarn example-lint && yarn tools-lint",
|
||||||
"test": "yarn check-env && ng test",
|
"test": "yarn check-env && ng test",
|
||||||
"pree2e": "yarn check-env && yarn update-webdriver",
|
"pree2e": "yarn check-env && yarn update-webdriver",
|
||||||
@ -76,28 +76,28 @@
|
|||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "^8.0.0-rc.2",
|
"@angular/animations": "^8.1.0-next.1",
|
||||||
"@angular/cdk": "8.0.0-rc.0",
|
"@angular/cdk": "8.0.0",
|
||||||
"@angular/common": "^8.0.0-rc.2",
|
"@angular/common": "^8.1.0-next.1",
|
||||||
"@angular/core": "^8.0.0-rc.2",
|
"@angular/core": "^8.1.0-next.1",
|
||||||
"@angular/elements": "^8.0.0-rc.2",
|
"@angular/elements": "^8.1.0-next.1",
|
||||||
"@angular/forms": "^8.0.0-rc.2",
|
"@angular/forms": "^8.1.0-next.1",
|
||||||
"@angular/material": "8.0.0-rc.0",
|
"@angular/material": "8.0.0",
|
||||||
"@angular/platform-browser": "^8.0.0-rc.2",
|
"@angular/platform-browser": "^8.1.0-next.1",
|
||||||
"@angular/platform-browser-dynamic": "^8.0.0-rc.2",
|
"@angular/platform-browser-dynamic": "^8.1.0-next.1",
|
||||||
"@angular/router": "^8.0.0-rc.2",
|
"@angular/router": "^8.1.0-next.1",
|
||||||
"@angular/service-worker": "^8.0.0-rc.2",
|
"@angular/service-worker": "^8.1.0-next.1",
|
||||||
"@types/lunr": "^2.3.2",
|
"@types/lunr": "^2.3.2",
|
||||||
"@webcomponents/custom-elements": "^1.2.0",
|
"@webcomponents/custom-elements": "^1.2.0",
|
||||||
"rxjs": "^6.5.1",
|
"rxjs": "^6.5.2",
|
||||||
"zone.js": "^0.9.1"
|
"zone.js": "^0.9.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular-devkit/build-angular": "0.800.0-rc.2",
|
"@angular-devkit/build-angular": "0.800.2",
|
||||||
"@angular/cli": "8.0.0-rc.2",
|
"@angular/cli": "8.0.2",
|
||||||
"@angular/compiler": "^8.0.0-rc.2",
|
"@angular/compiler": "^8.1.0-next.1",
|
||||||
"@angular/compiler-cli": "^8.0.0-rc.2",
|
"@angular/compiler-cli": "^8.1.0-next.1",
|
||||||
"@angular/language-service": "^8.0.0-rc.2",
|
"@angular/language-service": "^8.1.0-next.1",
|
||||||
"@types/jasmine": "^2.5.52",
|
"@types/jasmine": "^2.5.52",
|
||||||
"@types/jasminewd2": "^2.0.4",
|
"@types/jasminewd2": "^2.0.4",
|
||||||
"@types/node": "~6.0.60",
|
"@types/node": "~6.0.60",
|
||||||
|
@ -2,12 +2,12 @@
|
|||||||
"aio": {
|
"aio": {
|
||||||
"master": {
|
"master": {
|
||||||
"uncompressed": {
|
"uncompressed": {
|
||||||
"runtime-es5": 2980,
|
"runtime-es5": 3005,
|
||||||
"runtime-es2015": 2986,
|
"runtime-es2015": 3011,
|
||||||
"main-es5": 504760,
|
"main-es5": 511054,
|
||||||
"main-es2015": 443497,
|
"main-es2015": 450560,
|
||||||
"polyfills-es5": 128751,
|
"polyfills-es5": 129161,
|
||||||
"polyfills-es2015": 53147
|
"polyfills-es2015": 53295
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,8 +13,6 @@ const ROOT_DIR = resolve(__dirname, '..');
|
|||||||
const NG_JSON = join(ROOT_DIR, 'angular.json');
|
const NG_JSON = join(ROOT_DIR, 'angular.json');
|
||||||
const NG_COMPILER_OPTS = {
|
const NG_COMPILER_OPTS = {
|
||||||
angularCompilerOptions: {
|
angularCompilerOptions: {
|
||||||
// Related Jira issue: FW-737
|
|
||||||
allowEmptyCodegenFiles: true,
|
|
||||||
enableIvy: true,
|
enableIvy: true,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -7,11 +7,12 @@ import { MatProgressBar } from '@angular/material/progress-bar';
|
|||||||
import { MatSidenav } from '@angular/material/sidenav';
|
import { MatSidenav } from '@angular/material/sidenav';
|
||||||
import { By } from '@angular/platform-browser';
|
import { By } from '@angular/platform-browser';
|
||||||
|
|
||||||
import { of, timer } from 'rxjs';
|
import { Subject, of, timer } from 'rxjs';
|
||||||
import { first, mapTo } from 'rxjs/operators';
|
import { first, mapTo } from 'rxjs/operators';
|
||||||
|
|
||||||
import { AppComponent } from './app.component';
|
import { AppComponent } from './app.component';
|
||||||
import { AppModule } from './app.module';
|
import { AppModule } from './app.module';
|
||||||
|
import { CurrentNodes } from 'app/navigation/navigation.model';
|
||||||
import { DocumentService } from 'app/documents/document.service';
|
import { DocumentService } from 'app/documents/document.service';
|
||||||
import { DocViewerComponent } from 'app/layout/doc-viewer/doc-viewer.component';
|
import { DocViewerComponent } from 'app/layout/doc-viewer/doc-viewer.component';
|
||||||
import { Deployment } from 'app/shared/deployment.service';
|
import { Deployment } from 'app/shared/deployment.service';
|
||||||
@ -22,7 +23,7 @@ import { Logger } from 'app/shared/logger.service';
|
|||||||
import { MockLocationService } from 'testing/location.service';
|
import { MockLocationService } from 'testing/location.service';
|
||||||
import { MockLogger } from 'testing/logger.service';
|
import { MockLogger } from 'testing/logger.service';
|
||||||
import { MockSearchService } from 'testing/search.service';
|
import { MockSearchService } from 'testing/search.service';
|
||||||
import { NavigationNode } from 'app/navigation/navigation.service';
|
import { NavigationNode, NavigationService } from 'app/navigation/navigation.service';
|
||||||
import { ScrollService } from 'app/shared/scroll.service';
|
import { ScrollService } from 'app/shared/scroll.service';
|
||||||
import { SearchBoxComponent } from 'app/search/search-box/search-box.component';
|
import { SearchBoxComponent } from 'app/search/search-box/search-box.component';
|
||||||
import { SearchResultsComponent } from 'app/shared/search-results/search-results.component';
|
import { SearchResultsComponent } from 'app/shared/search-results/search-results.component';
|
||||||
@ -809,106 +810,43 @@ describe('AppComponent', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('archive redirection', () => {
|
describe('archive redirection', () => {
|
||||||
it('should redirect to `docs` if deployment mode is `archive` and not at a docs page', () => {
|
const redirectionPerMode: {[mode: string]: boolean} = {
|
||||||
createTestingModule('', 'archive');
|
archive: true,
|
||||||
initializeTest(false);
|
next: false,
|
||||||
expect(TestBed.get(LocationService).replace).toHaveBeenCalledWith('docs');
|
stable: false,
|
||||||
|
};
|
||||||
|
|
||||||
createTestingModule('resources', 'archive');
|
Object.keys(redirectionPerMode).forEach(mode => {
|
||||||
initializeTest(false);
|
const doRedirect = redirectionPerMode[mode];
|
||||||
expect(TestBed.get(LocationService).replace).toHaveBeenCalledWith('docs');
|
const description =
|
||||||
|
`should ${doRedirect ? '' : 'not '}redirect to 'docs' if deployment mode is '${mode}' ` +
|
||||||
|
'and at a marketing page';
|
||||||
|
const verifyNoRedirection = () => expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
||||||
|
const verifyRedirection = () => expect(TestBed.get(LocationService).replace).toHaveBeenCalledWith('docs');
|
||||||
|
const verifyPossibleRedirection = doRedirect ? verifyRedirection : verifyNoRedirection;
|
||||||
|
|
||||||
createTestingModule('guide/aot-compiler', 'archive');
|
it(description, () => {
|
||||||
initializeTest(false);
|
createTestingModule('', mode);
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('tutorial', 'archive');
|
const navService = TestBed.get(NavigationService) as NavigationService;
|
||||||
initializeTest(false);
|
const testCurrentNodes = navService.currentNodes = new Subject<CurrentNodes>();
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('tutorial/toh-pt1', 'archive');
|
|
||||||
initializeTest(false);
|
initializeTest(false);
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('docs', 'archive');
|
testCurrentNodes.next({SideNav: {url: 'foo', view: 'SideNav', nodes: []}});
|
||||||
initializeTest(false);
|
verifyNoRedirection();
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('api', 'archive');
|
testCurrentNodes.next({NoSideNav: {url: 'bar', view: 'SideNav', nodes: []}});
|
||||||
initializeTest(false);
|
verifyPossibleRedirection();
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('api/core/getPlatform', 'archive');
|
locationService.replace.calls.reset();
|
||||||
initializeTest(false);
|
testCurrentNodes.next({});
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
verifyPossibleRedirection();
|
||||||
|
|
||||||
|
locationService.replace.calls.reset();
|
||||||
|
testCurrentNodes.next({SideNav: {url: 'baz', view: 'SideNav', nodes: []}});
|
||||||
|
verifyNoRedirection();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not redirect if deployment mode is `next`', () => {
|
|
||||||
createTestingModule('', 'next');
|
|
||||||
initializeTest(false);
|
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('resources', 'next');
|
|
||||||
initializeTest(false);
|
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('guide/aot-compiler', 'next');
|
|
||||||
initializeTest(false);
|
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('tutorial', 'next');
|
|
||||||
initializeTest(false);
|
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('tutorial/toh-pt1', 'next');
|
|
||||||
initializeTest(false);
|
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('docs', 'next');
|
|
||||||
initializeTest(false);
|
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('api', 'next');
|
|
||||||
initializeTest(false);
|
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('api/core/getPlatform', 'next');
|
|
||||||
initializeTest(false);
|
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not redirect to `docs` if deployment mode is `stable`', () => {
|
|
||||||
createTestingModule('', 'stable');
|
|
||||||
initializeTest(false);
|
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('resources', 'stable');
|
|
||||||
initializeTest(false);
|
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('guide/aot-compiler', 'stable');
|
|
||||||
initializeTest(false);
|
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('tutorial', 'stable');
|
|
||||||
initializeTest(false);
|
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('tutorial/toh-pt1', 'stable');
|
|
||||||
initializeTest(false);
|
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('docs', 'stable');
|
|
||||||
initializeTest(false);
|
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('api', 'stable');
|
|
||||||
initializeTest(false);
|
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
createTestingModule('api/core/getPlatform', 'stable');
|
|
||||||
initializeTest(false);
|
|
||||||
expect(TestBed.get(LocationService).replace).not.toHaveBeenCalled();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -120,11 +120,6 @@ export class AppComponent implements OnInit {
|
|||||||
this.documentService.currentDocument.subscribe(doc => this.currentDocument = doc);
|
this.documentService.currentDocument.subscribe(doc => this.currentDocument = doc);
|
||||||
|
|
||||||
this.locationService.currentPath.subscribe(path => {
|
this.locationService.currentPath.subscribe(path => {
|
||||||
// Redirect to docs if we are in archive mode and are not hitting a docs page
|
|
||||||
// (i.e. we have arrived at a marketing page)
|
|
||||||
if (this.deployment.mode === 'archive' && !/^(docs$|api|guide|tutorial)/.test(path)) {
|
|
||||||
this.locationService.replace('docs');
|
|
||||||
}
|
|
||||||
if (path === this.currentPath) {
|
if (path === this.currentPath) {
|
||||||
// scroll only if on same page (most likely a change to the hash)
|
// scroll only if on same page (most likely a change to the hash)
|
||||||
this.scrollService.scroll();
|
this.scrollService.scroll();
|
||||||
@ -138,7 +133,15 @@ export class AppComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
this.navigationService.currentNodes.subscribe(currentNodes => this.currentNodes = currentNodes);
|
this.navigationService.currentNodes.subscribe(currentNodes => {
|
||||||
|
this.currentNodes = currentNodes;
|
||||||
|
|
||||||
|
// Redirect to docs if we are in archive mode and are not hitting a docs page
|
||||||
|
// (i.e. we have arrived at a marketing page)
|
||||||
|
if (this.deployment.mode === 'archive' && !currentNodes[sideNavView]) {
|
||||||
|
this.locationService.replace('docs');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// Compute the version picker list from the current version and the versions in the navigation map
|
// Compute the version picker list from the current version and the versions in the navigation map
|
||||||
combineLatest(
|
combineLatest(
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import { NgModule, NgModuleFactoryLoader, SystemJsNgModuleLoader } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
import { ROUTES} from '@angular/router';
|
import { ROUTES} from '@angular/router';
|
||||||
import { ElementsLoader } from './elements-loader';
|
import { ElementsLoader } from './elements-loader';
|
||||||
import {
|
import {
|
||||||
ELEMENT_MODULE_PATHS,
|
ELEMENT_MODULE_LOAD_CALLBACKS,
|
||||||
ELEMENT_MODULE_PATHS_AS_ROUTES,
|
ELEMENT_MODULE_LOAD_CALLBACKS_AS_ROUTES,
|
||||||
ELEMENT_MODULE_PATHS_TOKEN
|
ELEMENT_MODULE_LOAD_CALLBACKS_TOKEN
|
||||||
} from './element-registry';
|
} from './element-registry';
|
||||||
import { LazyCustomElementComponent } from './lazy-custom-element.component';
|
import { LazyCustomElementComponent } from './lazy-custom-element.component';
|
||||||
|
|
||||||
@ -13,13 +13,12 @@ import { LazyCustomElementComponent } from './lazy-custom-element.component';
|
|||||||
exports: [ LazyCustomElementComponent ],
|
exports: [ LazyCustomElementComponent ],
|
||||||
providers: [
|
providers: [
|
||||||
ElementsLoader,
|
ElementsLoader,
|
||||||
{ provide: NgModuleFactoryLoader, useClass: SystemJsNgModuleLoader },
|
{ provide: ELEMENT_MODULE_LOAD_CALLBACKS_TOKEN, useValue: ELEMENT_MODULE_LOAD_CALLBACKS },
|
||||||
{ provide: ELEMENT_MODULE_PATHS_TOKEN, useValue: ELEMENT_MODULE_PATHS },
|
|
||||||
|
|
||||||
// Providing these routes as a signal to the build system that these modules should be
|
// Providing these routes as a signal to the build system that these modules should be
|
||||||
// registered as lazy-loadable.
|
// registered as lazy-loadable.
|
||||||
// TODO(andrewjs): Provide first-class support for providing this.
|
// TODO(andrewjs): Provide first-class support for providing this.
|
||||||
{ provide: ROUTES, useValue: ELEMENT_MODULE_PATHS_AS_ROUTES, multi: true },
|
{ provide: ROUTES, useValue: ELEMENT_MODULE_LOAD_CALLBACKS_AS_ROUTES, multi: true },
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class CustomElementsModule { }
|
export class CustomElementsModule { }
|
||||||
|
@ -1,44 +1,45 @@
|
|||||||
import { InjectionToken, Type } from '@angular/core';
|
import { InjectionToken, Type } from '@angular/core';
|
||||||
|
import { LoadChildrenCallback } from '@angular/router';
|
||||||
|
|
||||||
// Modules containing custom elements must be set up as lazy-loaded routes (loadChildren)
|
// Modules containing custom elements must be set up as lazy-loaded routes (loadChildren)
|
||||||
// TODO(andrewjs): This is a hack, Angular should have first-class support for preparing a module
|
// TODO(andrewjs): This is a hack, Angular should have first-class support for preparing a module
|
||||||
// that contains custom elements.
|
// that contains custom elements.
|
||||||
export const ELEMENT_MODULE_PATHS_AS_ROUTES = [
|
export const ELEMENT_MODULE_LOAD_CALLBACKS_AS_ROUTES = [
|
||||||
{
|
{
|
||||||
selector: 'aio-announcement-bar',
|
selector: 'aio-announcement-bar',
|
||||||
loadChildren: './announcement-bar/announcement-bar.module#AnnouncementBarModule'
|
loadChildren: () => import('./announcement-bar/announcement-bar.module').then(mod => mod.AnnouncementBarModule)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
selector: 'aio-api-list',
|
selector: 'aio-api-list',
|
||||||
loadChildren: './api/api-list.module#ApiListModule'
|
loadChildren: () => import('./api/api-list.module').then(mod => mod.ApiListModule)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
selector: 'aio-contributor-list',
|
selector: 'aio-contributor-list',
|
||||||
loadChildren: './contributor/contributor-list.module#ContributorListModule'
|
loadChildren: () => import('./contributor/contributor-list.module').then(mod => mod.ContributorListModule)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
selector: 'aio-file-not-found-search',
|
selector: 'aio-file-not-found-search',
|
||||||
loadChildren: './search/file-not-found-search.module#FileNotFoundSearchModule'
|
loadChildren: () => import('./search/file-not-found-search.module').then(mod => mod.FileNotFoundSearchModule)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
selector: 'aio-resource-list',
|
selector: 'aio-resource-list',
|
||||||
loadChildren: './resource/resource-list.module#ResourceListModule'
|
loadChildren: () => import('./resource/resource-list.module').then(mod => mod.ResourceListModule)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
selector: 'aio-toc',
|
selector: 'aio-toc',
|
||||||
loadChildren: './toc/toc.module#TocModule'
|
loadChildren: () => import('./toc/toc.module').then(mod => mod.TocModule)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
selector: 'code-example',
|
selector: 'code-example',
|
||||||
loadChildren: './code/code-example.module#CodeExampleModule'
|
loadChildren: () => import('./code/code-example.module').then(mod => mod.CodeExampleModule)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
selector: 'code-tabs',
|
selector: 'code-tabs',
|
||||||
loadChildren: './code/code-tabs.module#CodeTabsModule'
|
loadChildren: () => import('./code/code-tabs.module').then(mod => mod.CodeTabsModule)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
selector: 'live-example',
|
selector: 'live-example',
|
||||||
loadChildren: './live-example/live-example.module#LiveExampleModule'
|
loadChildren: () => import('./live-example/live-example.module').then(mod => mod.LiveExampleModule)
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -51,10 +52,10 @@ export interface WithCustomElementComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Injection token to provide the element path modules. */
|
/** Injection token to provide the element path modules. */
|
||||||
export const ELEMENT_MODULE_PATHS_TOKEN = new InjectionToken('aio/elements-map');
|
export const ELEMENT_MODULE_LOAD_CALLBACKS_TOKEN = new InjectionToken<Map<string, LoadChildrenCallback>>('aio/elements-map');
|
||||||
|
|
||||||
/** Map of possible custom element selectors to their lazy-loadable module paths. */
|
/** Map of possible custom element selectors to their lazy-loadable module paths. */
|
||||||
export const ELEMENT_MODULE_PATHS = new Map<string, string>();
|
export const ELEMENT_MODULE_LOAD_CALLBACKS = new Map<string, LoadChildrenCallback>();
|
||||||
ELEMENT_MODULE_PATHS_AS_ROUTES.forEach(route => {
|
ELEMENT_MODULE_LOAD_CALLBACKS_AS_ROUTES.forEach(route => {
|
||||||
ELEMENT_MODULE_PATHS.set(route.selector, route.loadChildren);
|
ELEMENT_MODULE_LOAD_CALLBACKS.set(route.selector, route.loadChildren);
|
||||||
});
|
});
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
import {
|
import {
|
||||||
|
Compiler,
|
||||||
ComponentFactory,
|
ComponentFactory,
|
||||||
ComponentFactoryResolver, ComponentRef, Injector, NgModuleFactory, NgModuleFactoryLoader,
|
ComponentFactoryResolver, ComponentRef, Injector, NgModuleFactory,
|
||||||
NgModuleRef,
|
NgModuleRef,
|
||||||
Type
|
Type,
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { TestBed, fakeAsync, flushMicrotasks } from '@angular/core/testing';
|
import { TestBed, fakeAsync, flushMicrotasks } from '@angular/core/testing';
|
||||||
|
|
||||||
import { ElementsLoader } from './elements-loader';
|
import { ElementsLoader } from './elements-loader';
|
||||||
import { ELEMENT_MODULE_PATHS_TOKEN, WithCustomElementComponent } from './element-registry';
|
import { ELEMENT_MODULE_LOAD_CALLBACKS_TOKEN, WithCustomElementComponent } from './element-registry';
|
||||||
|
|
||||||
|
|
||||||
interface Deferred {
|
interface Deferred {
|
||||||
@ -17,20 +18,25 @@ interface Deferred {
|
|||||||
|
|
||||||
describe('ElementsLoader', () => {
|
describe('ElementsLoader', () => {
|
||||||
let elementsLoader: ElementsLoader;
|
let elementsLoader: ElementsLoader;
|
||||||
|
let compiler: Compiler;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
const injector = TestBed.configureTestingModule({
|
const injector = TestBed.configureTestingModule({
|
||||||
providers: [
|
providers: [
|
||||||
ElementsLoader,
|
ElementsLoader,
|
||||||
{ provide: NgModuleFactoryLoader, useClass: FakeModuleFactoryLoader },
|
{
|
||||||
{ provide: ELEMENT_MODULE_PATHS_TOKEN, useValue: new Map([
|
provide: ELEMENT_MODULE_LOAD_CALLBACKS_TOKEN, useValue: new Map<
|
||||||
['element-a-selector', 'element-a-module-path'],
|
string, () => Promise<NgModuleFactory<WithCustomElementComponent> | Type<WithCustomElementComponent>>
|
||||||
['element-b-selector', 'element-b-module-path']
|
>([
|
||||||
|
['element-a-selector', () => Promise.resolve(new FakeModuleFactory('element-a-module'))],
|
||||||
|
['element-b-selector', () => Promise.resolve(new FakeModuleFactory('element-b-module'))],
|
||||||
|
['element-c-selector', () => Promise.resolve(FakeCustomElementModule)]
|
||||||
])},
|
])},
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
elementsLoader = injector.get(ElementsLoader);
|
elementsLoader = injector.get(ElementsLoader);
|
||||||
|
compiler = injector.get(Compiler);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('loadContainedCustomElements()', () => {
|
describe('loadContainedCustomElements()', () => {
|
||||||
@ -148,7 +154,7 @@ describe('ElementsLoader', () => {
|
|||||||
|
|
||||||
// Verify the right component was loaded/registered.
|
// Verify the right component was loaded/registered.
|
||||||
const Ctor = definedSpy.calls.argsFor(0)[1];
|
const Ctor = definedSpy.calls.argsFor(0)[1];
|
||||||
expect(Ctor.observedAttributes).toEqual(['element-a-module-path']);
|
expect(Ctor.observedAttributes).toEqual(['element-a-module']);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
it('should wait until the element is defined', fakeAsync(() => {
|
it('should wait until the element is defined', fakeAsync(() => {
|
||||||
@ -222,6 +228,20 @@ describe('ElementsLoader', () => {
|
|||||||
expect(definedSpy).toHaveBeenCalledTimes(1);
|
expect(definedSpy).toHaveBeenCalledTimes(1);
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
it('should be able to load and register an element after compiling its NgModule', fakeAsync(() => {
|
||||||
|
const compilerSpy = spyOn(compiler, 'compileModuleAsync')
|
||||||
|
.and.returnValue(Promise.resolve(new FakeModuleFactory('element-c-module')));
|
||||||
|
|
||||||
|
elementsLoader.loadCustomElement('element-c-selector');
|
||||||
|
flushMicrotasks();
|
||||||
|
|
||||||
|
expect(definedSpy).toHaveBeenCalledTimes(1);
|
||||||
|
expect(definedSpy).toHaveBeenCalledWith('element-c-selector', jasmine.any(Function));
|
||||||
|
|
||||||
|
expect(compilerSpy).toHaveBeenCalledTimes(1);
|
||||||
|
expect(compilerSpy).toHaveBeenCalledWith(FakeCustomElementModule);
|
||||||
|
}));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -282,13 +302,6 @@ class FakeModuleFactory extends NgModuleFactory<any> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class FakeModuleFactoryLoader extends NgModuleFactoryLoader {
|
|
||||||
load(modulePath: string): Promise<NgModuleFactory<any>> {
|
|
||||||
const fakeModuleFactory = new FakeModuleFactory(modulePath);
|
|
||||||
return Promise.resolve(fakeModuleFactory);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function returnPromisesFromSpy(spy: jasmine.Spy): Deferred[] {
|
function returnPromisesFromSpy(spy: jasmine.Spy): Deferred[] {
|
||||||
const deferreds: Deferred[] = [];
|
const deferreds: Deferred[] = [];
|
||||||
spy.and.callFake(() => new Promise((resolve, reject) => deferreds.push({resolve, reject})));
|
spy.and.callFake(() => new Promise((resolve, reject) => deferreds.push({resolve, reject})));
|
||||||
|
@ -1,24 +1,27 @@
|
|||||||
import {
|
import {
|
||||||
|
Compiler,
|
||||||
Inject,
|
Inject,
|
||||||
Injectable,
|
Injectable,
|
||||||
NgModuleFactoryLoader,
|
NgModuleFactory,
|
||||||
NgModuleRef,
|
NgModuleRef,
|
||||||
|
Type,
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { ELEMENT_MODULE_PATHS_TOKEN } from './element-registry';
|
import { ELEMENT_MODULE_LOAD_CALLBACKS_TOKEN, WithCustomElementComponent } from './element-registry';
|
||||||
import { from, Observable, of } from 'rxjs';
|
import { from, Observable, of } from 'rxjs';
|
||||||
import { createCustomElement } from '@angular/elements';
|
import { createCustomElement } from '@angular/elements';
|
||||||
|
import { LoadChildrenCallback } from '@angular/router';
|
||||||
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ElementsLoader {
|
export class ElementsLoader {
|
||||||
/** Map of unregistered custom elements and their respective module paths to load. */
|
/** Map of unregistered custom elements and their respective module paths to load. */
|
||||||
private elementsToLoad: Map<string, string>;
|
private elementsToLoad: Map<string, LoadChildrenCallback>;
|
||||||
/** Map of custom elements that are in the process of being loaded and registered. */
|
/** Map of custom elements that are in the process of being loaded and registered. */
|
||||||
private elementsLoading = new Map<string, Promise<void>>();
|
private elementsLoading = new Map<string, Promise<void>>();
|
||||||
|
|
||||||
constructor(private moduleFactoryLoader: NgModuleFactoryLoader,
|
constructor(private moduleRef: NgModuleRef<any>,
|
||||||
private moduleRef: NgModuleRef<any>,
|
@Inject(ELEMENT_MODULE_LOAD_CALLBACKS_TOKEN) elementModulePaths: Map<string, LoadChildrenCallback>,
|
||||||
@Inject(ELEMENT_MODULE_PATHS_TOKEN) elementModulePaths: Map<string, string>) {
|
private compiler: Compiler) {
|
||||||
this.elementsToLoad = new Map(elementModulePaths);
|
this.elementsToLoad = new Map(elementModulePaths);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,9 +50,23 @@ export class ElementsLoader {
|
|||||||
|
|
||||||
if (this.elementsToLoad.has(selector)) {
|
if (this.elementsToLoad.has(selector)) {
|
||||||
// Load and register the custom element (for the first time).
|
// Load and register the custom element (for the first time).
|
||||||
const modulePath = this.elementsToLoad.get(selector)!;
|
const modulePathLoader = this.elementsToLoad.get(selector)!;
|
||||||
const loadedAndRegistered = this.moduleFactoryLoader
|
const loadedAndRegistered =
|
||||||
.load(modulePath)
|
(modulePathLoader() as Promise<NgModuleFactory<WithCustomElementComponent> | Type<WithCustomElementComponent>>)
|
||||||
|
.then(elementModuleOrFactory => {
|
||||||
|
/**
|
||||||
|
* With View Engine, the NgModule factory is created and provided when loaded.
|
||||||
|
* With Ivy, only the NgModule class is provided loaded and must be compiled.
|
||||||
|
* This uses the same mechanism as the deprecated `SystemJsNgModuleLoader` in
|
||||||
|
* in `packages/core/src/linker/system_js_ng_module_factory_loader.ts`
|
||||||
|
* to pass on the NgModuleFactory, or compile the NgModule and return its NgModuleFactory.
|
||||||
|
*/
|
||||||
|
if (elementModuleOrFactory instanceof NgModuleFactory) {
|
||||||
|
return elementModuleOrFactory;
|
||||||
|
} else {
|
||||||
|
return this.compiler.compileModuleAsync(elementModuleOrFactory);
|
||||||
|
}
|
||||||
|
})
|
||||||
.then(elementModuleFactory => {
|
.then(elementModuleFactory => {
|
||||||
const elementModuleRef = elementModuleFactory.create(this.moduleRef.injector);
|
const elementModuleRef = elementModuleFactory.create(this.moduleRef.injector);
|
||||||
const injector = elementModuleRef.injector;
|
const injector = elementModuleRef.injector;
|
||||||
|
@ -7,6 +7,10 @@ body {
|
|||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6 {
|
||||||
|
color: $deepgray;
|
||||||
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
@ -54,7 +58,11 @@ h6 {
|
|||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2, h3, h4, h5, h6 {
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
a {
|
a {
|
||||||
font-size: inherit;
|
font-size: inherit;
|
||||||
}
|
}
|
||||||
@ -68,13 +76,20 @@ h2, h3, h4, h5, h6 {
|
|||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
p, ol, ul, ol, li, input, a {
|
p,
|
||||||
|
ol,
|
||||||
|
ul,
|
||||||
|
ol,
|
||||||
|
li,
|
||||||
|
input,
|
||||||
|
a {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
letter-spacing: 0.30px;
|
letter-spacing: 0.3px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
|
color: $darkgray;
|
||||||
& > em {
|
& > em {
|
||||||
letter-spacing: 0.30px;
|
letter-spacing: 0.3px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,14 +102,27 @@ p + ul {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ol {
|
ol {
|
||||||
li, p {
|
li,
|
||||||
|
p {
|
||||||
margin: 4px 0;
|
margin: 4px 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
li p {
|
ol ol {
|
||||||
|
list-style-type: lower-alpha;
|
||||||
|
|
||||||
|
ol {
|
||||||
|
list-style-type: lower-roman;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
padding-bottom: 8px;
|
||||||
|
|
||||||
|
p {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@ -103,7 +131,7 @@ a {
|
|||||||
.app-toolbar a {
|
.app-toolbar a {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: white;
|
color: $white;
|
||||||
font-family: $main-font;
|
font-family: $main-font;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
padding: 21px 0;
|
padding: 21px 0;
|
||||||
@ -129,9 +157,10 @@ table tbody th {
|
|||||||
td {
|
td {
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
padding: 8px 30px;
|
padding: 8px 30px;
|
||||||
letter-spacing: 0.30px;
|
letter-spacing: 0.3px;
|
||||||
|
|
||||||
> p, ul {
|
> p,
|
||||||
|
ul {
|
||||||
&:first-child {
|
&:first-child {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ aio-shell.page-docs {
|
|||||||
|
|
||||||
.sidenav-content {
|
.sidenav-content {
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
padding: 80px 3rem 1rem;
|
padding: 80px 3rem 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 600px) {
|
@media (max-width: 600px) {
|
||||||
|
@ -5,12 +5,15 @@ footer {
|
|||||||
padding: 48px;
|
padding: 48px;
|
||||||
z-index: 0;
|
z-index: 0;
|
||||||
background-color: $blue;
|
background-color: $blue;
|
||||||
color: $offwhite;
|
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
|
|
||||||
aio-footer {
|
aio-footer {
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 0;
|
z-index: 0;
|
||||||
|
|
||||||
|
& > * {
|
||||||
|
color: $white;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-block {
|
.footer-block {
|
||||||
@ -19,8 +22,7 @@ footer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: $offwhite;
|
color: $white;
|
||||||
font-weight: 300;
|
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
z-index: 20;
|
z-index: 20;
|
||||||
position: relative;
|
position: relative;
|
||||||
@ -39,6 +41,7 @@ footer {
|
|||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
margin: 0 0 16px;
|
margin: 0 0 16px;
|
||||||
|
color: $white;
|
||||||
}
|
}
|
||||||
p {
|
p {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
@ -2,8 +2,9 @@ html, body {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body,
|
||||||
background-color: $offwhite;
|
.content {
|
||||||
|
background-color: $white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.clearfix {
|
.clearfix {
|
||||||
|
@ -42,7 +42,7 @@ section#intro {
|
|||||||
height: 480px;
|
height: 480px;
|
||||||
margin: 0 auto -32px;
|
margin: 0 auto -32px;
|
||||||
padding: 48px 0 0;
|
padding: 48px 0 0;
|
||||||
color: white;
|
color: $white;
|
||||||
|
|
||||||
@media (max-width: 780px) {
|
@media (max-width: 780px) {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@ -426,7 +426,7 @@ div[layout=row]{
|
|||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
color: white;
|
color: $white;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
-webkit-margin-before: 0;
|
-webkit-margin-before: 0;
|
||||||
-webkit-margin-after: 0;
|
-webkit-margin-after: 0;
|
||||||
|
@ -28,7 +28,7 @@ mat-sidenav.mat-sidenav.sidenav {
|
|||||||
left: 0;
|
left: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
min-width: 260px;
|
min-width: 260px;
|
||||||
background-color: $offwhite;
|
background-color: $white;
|
||||||
box-shadow: 6px 0 6px rgba(0,0,0,0.10);
|
box-shadow: 6px 0 6px rgba(0,0,0,0.10);
|
||||||
|
|
||||||
&.collapsed {
|
&.collapsed {
|
||||||
@ -48,6 +48,11 @@ mat-sidenav-container.sidenav-container {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mat-sidenav-container.sidenav-container.mat-drawer-container.mat-sidenav-container,
|
||||||
|
mat-sidenav-container .sidenav-content {
|
||||||
|
background-color: $white;
|
||||||
|
}
|
||||||
|
|
||||||
mat-sidenav-container div.mat-sidenav-content {
|
mat-sidenav-container div.mat-sidenav-content {
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
@ -180,7 +180,7 @@ aio-search-box.search-container {
|
|||||||
color: $darkgray;
|
color: $darkgray;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 100px;
|
border-radius: 100px;
|
||||||
background-color: $offwhite;
|
background-color: $white;
|
||||||
padding: 5px 16px;
|
padding: 5px 16px;
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
width: 180px;
|
width: 180px;
|
||||||
|
@ -94,7 +94,7 @@ a.filter-button {
|
|||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: $blue;
|
background-color: $blue;
|
||||||
color: white;
|
color: $white;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,6 +20,10 @@
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
> *:not(:first-child) {
|
||||||
|
padding: 16px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
&.is-critical {
|
&.is-critical {
|
||||||
border-color: $brightred;
|
border-color: $brightred;
|
||||||
background: rgba($brightred, 0.05);
|
background: rgba($brightred, 0.05);
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
|
|
||||||
section {
|
section {
|
||||||
color: $darkgray;
|
color: $deepgray;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
@ -5,7 +5,6 @@ code-example, code-tabs {
|
|||||||
|
|
||||||
code-example {
|
code-example {
|
||||||
|
|
||||||
|
|
||||||
&:not(.no-box) {
|
&:not(.no-box) {
|
||||||
background-color: rgba($backgroundgray, 0.2);
|
background-color: rgba($backgroundgray, 0.2);
|
||||||
border: 0.5px solid $lightgray;
|
border: 0.5px solid $lightgray;
|
||||||
@ -38,6 +37,10 @@ code-example, code-tabs {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
code-tabs {
|
||||||
|
margin: 16px 0;
|
||||||
|
}
|
||||||
|
|
||||||
// TERMINAL / SHELL TEXT STYLES
|
// TERMINAL / SHELL TEXT STYLES
|
||||||
|
|
||||||
code-example.code-shell, code-example[language=sh], code-example[language=bash] {
|
code-example.code-shell, code-example[language=sh], code-example[language=bash] {
|
||||||
@ -151,6 +154,7 @@ ol.linenums {
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
font-family: $main-font;
|
font-family: $main-font;
|
||||||
color: #B3B6B7;
|
color: #B3B6B7;
|
||||||
|
|
||||||
li {
|
li {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-family: $code-font;
|
font-family: $code-font;
|
||||||
|
@ -22,7 +22,7 @@ aio-contributor-list {
|
|||||||
a {
|
a {
|
||||||
&.selected {
|
&.selected {
|
||||||
background-color: $blue;
|
background-color: $blue;
|
||||||
color: white;
|
color: $white;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -188,7 +188,7 @@ aio-contributor {
|
|||||||
line-height: 18px;
|
line-height: 18px;
|
||||||
margin: 8px 16px;
|
margin: 8px 16px;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
overflow: scroll;
|
overflow-y: auto;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
.filetree {
|
.filetree {
|
||||||
background: $offwhite;
|
background: $white;
|
||||||
border: 4px solid $lightgray;
|
border: 4px solid $lightgray;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
margin: 0 0 24px 0;
|
margin: 0 0 24px 0;
|
||||||
|
@ -32,15 +32,30 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
figure {
|
figure {
|
||||||
border-radius: 4px;
|
margin: 0;
|
||||||
|
margin-top: 14px;
|
||||||
|
margin-bottom: 14px;
|
||||||
|
border-radius: 1px;
|
||||||
background: $white;
|
background: $white;
|
||||||
padding: 20px;
|
border: 1px solid $lightgray;
|
||||||
|
padding: 32px;
|
||||||
|
box-sizing: border-box;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
box-shadow: 2px 2px 5px 0 rgba(0, 0, 0, .2);
|
box-shadow: 2px 2px 5px 0 rgba(0, 0, 0, .2);
|
||||||
margin: 0 0 14px 0;
|
margin: 16px 0;
|
||||||
|
|
||||||
img {
|
&.lightbox {
|
||||||
|
background-color: $lightboxgray;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.card {
|
||||||
|
box-shadow: 0 2px 2px rgba(10, 16, 20, 0.24), 0 0 2px rgba(10, 16, 20, 0.12);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
padding: 8px;
|
||||||
|
background-color: $white;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ label.raised, .api-header label {
|
|||||||
padding: 4px 16px;
|
padding: 4px 16px;
|
||||||
display: inline;
|
display: inline;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: white;
|
color: $white;
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
|
@ -2,7 +2,7 @@ table {
|
|||||||
margin: 24px 0px;
|
margin: 24px 0px;
|
||||||
box-shadow: 0 2px 2px rgba($black, 0.24), 0 0 2px rgba($black, 0.12);
|
box-shadow: 0 2px 2px rgba($black, 0.24), 0 0 2px rgba($black, 0.12);
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
background: $offwhite;
|
background: $white;
|
||||||
|
|
||||||
&.is-full-width {
|
&.is-full-width {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
@ -18,9 +18,11 @@ $white: #FFFFFF;
|
|||||||
$offwhite: #FAFAFA;
|
$offwhite: #FAFAFA;
|
||||||
$backgroundgray: #F1F1F1;
|
$backgroundgray: #F1F1F1;
|
||||||
$lightgray: #DBDBDB;
|
$lightgray: #DBDBDB;
|
||||||
|
$lightboxgray: #EBEBEB;
|
||||||
$mist: #ECEFF1;
|
$mist: #ECEFF1;
|
||||||
$mediumgray: #6e6e6e;
|
$mediumgray: #6E6E6E;
|
||||||
$darkgray: #333;
|
$darkgray: #444444;
|
||||||
|
$deepgray: #333333;
|
||||||
$black: #0A1014;
|
$black: #0A1014;
|
||||||
$orange: #FF9800;
|
$orange: #FF9800;
|
||||||
$darkorange: #940;
|
$darkorange: #940;
|
||||||
|
@ -12,14 +12,14 @@
|
|||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "^8.0.0-rc",
|
"@angular/animations": "^8.0.0",
|
||||||
"@angular/common": "^8.0.0-rc",
|
"@angular/common": "^8.0.0",
|
||||||
"@angular/compiler": "^8.0.0-rc",
|
"@angular/compiler": "^8.0.0",
|
||||||
"@angular/core": "^8.0.0-rc",
|
"@angular/core": "^8.0.0",
|
||||||
"@angular/forms": "^8.0.0-rc",
|
"@angular/forms": "^8.0.0",
|
||||||
"@angular/platform-browser": "^8.0.0-rc",
|
"@angular/platform-browser": "^8.0.0",
|
||||||
"@angular/platform-browser-dynamic": "^8.0.0-rc",
|
"@angular/platform-browser-dynamic": "^8.0.0",
|
||||||
"@angular/router": "^8.0.0-rc",
|
"@angular/router": "^8.0.0",
|
||||||
"angular-in-memory-web-api": "^0.8.0",
|
"angular-in-memory-web-api": "^0.8.0",
|
||||||
"core-js": "^2.5.4",
|
"core-js": "^2.5.4",
|
||||||
"rxjs": "^6.5.1",
|
"rxjs": "^6.5.1",
|
||||||
@ -28,10 +28,10 @@
|
|||||||
"zone.js": "~0.9.1"
|
"zone.js": "~0.9.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular-devkit/build-angular": "^0.800.0-rc",
|
"@angular-devkit/build-angular": "^0.800.0",
|
||||||
"@angular/cli": "^8.0.0-rc",
|
"@angular/cli": "^8.0.0",
|
||||||
"@angular/compiler-cli": "^8.0.0-rc",
|
"@angular/compiler-cli": "^8.0.0",
|
||||||
"@angular/language-service": "^8.0.0-rc",
|
"@angular/language-service": "^8.0.0",
|
||||||
"@types/jasmine": "~3.3.8",
|
"@types/jasmine": "~3.3.8",
|
||||||
"@types/jasminewd2": "~2.0.3",
|
"@types/jasminewd2": "~2.0.3",
|
||||||
"@types/node": "~8.9.4",
|
"@types/node": "~8.9.4",
|
||||||
|
@ -13,7 +13,7 @@ body {
|
|||||||
margin: 2em;
|
margin: 2em;
|
||||||
}
|
}
|
||||||
body, input[text], button {
|
body, input[text], button {
|
||||||
color: #888;
|
color: #333;
|
||||||
font-family: Cambria, Georgia;
|
font-family: Cambria, Georgia;
|
||||||
}
|
}
|
||||||
a {
|
a {
|
||||||
|
@ -15,14 +15,14 @@
|
|||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "^8.0.0-rc",
|
"@angular/animations": "^8.0.0",
|
||||||
"@angular/common": "^8.0.0-rc",
|
"@angular/common": "^8.0.0",
|
||||||
"@angular/compiler": "^8.0.0-rc",
|
"@angular/compiler": "^8.0.0",
|
||||||
"@angular/core": "^8.0.0-rc",
|
"@angular/core": "^8.0.0",
|
||||||
"@angular/forms": "^8.0.0-rc",
|
"@angular/forms": "^8.0.0",
|
||||||
"@angular/platform-browser": "^8.0.0-rc",
|
"@angular/platform-browser": "^8.0.0",
|
||||||
"@angular/platform-browser-dynamic": "^8.0.0-rc",
|
"@angular/platform-browser-dynamic": "^8.0.0",
|
||||||
"@angular/router": "^8.0.0-rc",
|
"@angular/router": "^8.0.0",
|
||||||
"angular-in-memory-web-api": "^0.8.0",
|
"angular-in-memory-web-api": "^0.8.0",
|
||||||
"core-js": "^2.5.4",
|
"core-js": "^2.5.4",
|
||||||
"rxjs": "^6.5.1",
|
"rxjs": "^6.5.1",
|
||||||
@ -30,10 +30,10 @@
|
|||||||
"zone.js": "~0.9.1"
|
"zone.js": "~0.9.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular-devkit/build-angular": "^0.800.0-rc",
|
"@angular-devkit/build-angular": "^0.800.0",
|
||||||
"@angular/cli": "^8.0.0-rc",
|
"@angular/cli": "^8.0.0",
|
||||||
"@angular/compiler-cli": "^8.0.0-rc",
|
"@angular/compiler-cli": "^8.0.0",
|
||||||
"@angular/language-service": "^8.0.0-rc",
|
"@angular/language-service": "^8.0.0",
|
||||||
"@types/jasmine": "~3.3.8",
|
"@types/jasmine": "~3.3.8",
|
||||||
"@types/jasminewd2": "~2.0.3",
|
"@types/jasminewd2": "~2.0.3",
|
||||||
"@types/node": "~8.9.4",
|
"@types/node": "~8.9.4",
|
||||||
|
@ -12,15 +12,15 @@
|
|||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "^8.0.0-rc",
|
"@angular/animations": "^8.0.0",
|
||||||
"@angular/common": "^8.0.0-rc",
|
"@angular/common": "^8.0.0",
|
||||||
"@angular/compiler": "^8.0.0-rc",
|
"@angular/compiler": "^8.0.0",
|
||||||
"@angular/core": "^8.0.0-rc",
|
"@angular/core": "^8.0.0",
|
||||||
"@angular/forms": "^8.0.0-rc",
|
"@angular/forms": "^8.0.0",
|
||||||
"@angular/platform-browser": "^8.0.0-rc",
|
"@angular/platform-browser": "^8.0.0",
|
||||||
"@angular/platform-browser-dynamic": "^8.0.0-rc",
|
"@angular/platform-browser-dynamic": "^8.0.0",
|
||||||
"@angular/router": "^8.0.0-rc",
|
"@angular/router": "^8.0.0",
|
||||||
"@angular/service-worker": "^8.0.0-rc",
|
"@angular/service-worker": "^8.0.0",
|
||||||
"angular-in-memory-web-api": "^0.8.0",
|
"angular-in-memory-web-api": "^0.8.0",
|
||||||
"core-js": "^2.5.4",
|
"core-js": "^2.5.4",
|
||||||
"rxjs": "^6.5.1",
|
"rxjs": "^6.5.1",
|
||||||
@ -28,10 +28,10 @@
|
|||||||
"zone.js": "~0.9.1"
|
"zone.js": "~0.9.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular-devkit/build-angular": "^0.800.0-rc",
|
"@angular-devkit/build-angular": "^0.800.0",
|
||||||
"@angular/cli": "^8.0.0-rc",
|
"@angular/cli": "^8.0.0",
|
||||||
"@angular/compiler-cli": "^8.0.0-rc",
|
"@angular/compiler-cli": "^8.0.0",
|
||||||
"@angular/language-service": "^8.0.0-rc",
|
"@angular/language-service": "^8.0.0",
|
||||||
"@types/jasmine": "~3.3.8",
|
"@types/jasmine": "~3.3.8",
|
||||||
"@types/jasminewd2": "~2.0.3",
|
"@types/jasminewd2": "~2.0.3",
|
||||||
"@types/node": "~8.9.4",
|
"@types/node": "~8.9.4",
|
||||||
|
@ -16,18 +16,17 @@
|
|||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "^8.0.0-rc",
|
"@angular/animations": "^8.0.0",
|
||||||
"@angular/common": "^8.0.0-rc",
|
"@angular/common": "^8.0.0",
|
||||||
"@angular/compiler": "^8.0.0-rc",
|
"@angular/compiler": "^8.0.0",
|
||||||
"@angular/core": "^8.0.0-rc",
|
"@angular/core": "^8.0.0",
|
||||||
"@angular/forms": "^8.0.0-rc",
|
"@angular/forms": "^8.0.0",
|
||||||
"@angular/http": "^8.0.0-rc",
|
"@angular/platform-browser": "^8.0.0",
|
||||||
"@angular/platform-browser": "^8.0.0-rc",
|
"@angular/platform-browser-dynamic": "^8.0.0",
|
||||||
"@angular/platform-browser-dynamic": "^8.0.0-rc",
|
"@angular/router": "^8.0.0",
|
||||||
"@angular/router": "^8.0.0-rc",
|
"@nguniversal/common": "^8.0.0-rc.1",
|
||||||
"@nguniversal/common": "^8.0.0-rc",
|
"@nguniversal/express-engine": "^8.0.0-rc.1",
|
||||||
"@nguniversal/express-engine": "^8.0.0-rc",
|
"@nguniversal/module-map-ngfactory-loader": "^8.0.0-rc.1",
|
||||||
"@nguniversal/module-map-ngfactory-loader": "^8.0.0-rc",
|
|
||||||
"angular-in-memory-web-api": "^0.8.0",
|
"angular-in-memory-web-api": "^0.8.0",
|
||||||
"core-js": "^2.5.4",
|
"core-js": "^2.5.4",
|
||||||
"rxjs": "^6.5.1",
|
"rxjs": "^6.5.1",
|
||||||
@ -35,11 +34,11 @@
|
|||||||
"zone.js": "~0.9.1"
|
"zone.js": "~0.9.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular-devkit/build-angular": "^0.800.0-rc",
|
"@angular-devkit/build-angular": "^0.800.0",
|
||||||
"@angular/cli": "^8.0.0-rc",
|
"@angular/cli": "^8.0.0",
|
||||||
"@angular/compiler-cli": "^8.0.0-rc",
|
"@angular/compiler-cli": "^8.0.0",
|
||||||
"@angular/language-service": "^8.0.0-rc",
|
"@angular/language-service": "^8.0.0",
|
||||||
"@angular/platform-server": "^8.0.0-rc",
|
"@angular/platform-server": "^8.0.0",
|
||||||
"@types/jasmine": "~3.3.8",
|
"@types/jasmine": "~3.3.8",
|
||||||
"@types/jasminewd2": "~2.0.3",
|
"@types/jasminewd2": "~2.0.3",
|
||||||
"@types/node": "~8.9.4",
|
"@types/node": "~8.9.4",
|
||||||
|
@ -18,20 +18,20 @@
|
|||||||
"author": "",
|
"author": "",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "8.0.0-rc.2",
|
"@angular/animations": "^8.0.0",
|
||||||
"@angular/common": "8.0.0-rc.2",
|
"@angular/common": "^8.0.0",
|
||||||
"@angular/compiler": "8.0.0-rc.2",
|
"@angular/compiler": "^8.0.0",
|
||||||
"@angular/core": "8.0.0-rc.2",
|
"@angular/core": "^8.0.0",
|
||||||
"@angular/elements": "8.0.0-rc.2",
|
"@angular/elements": "^8.0.0",
|
||||||
"@angular/forms": "8.0.0-rc.2",
|
"@angular/forms": "^8.0.0",
|
||||||
"@angular/platform-browser": "8.0.0-rc.2",
|
"@angular/platform-browser": "^8.0.0",
|
||||||
"@angular/platform-browser-dynamic": "8.0.0-rc.2",
|
"@angular/platform-browser-dynamic": "^8.0.0",
|
||||||
"@angular/router": "8.0.0-rc.2",
|
"@angular/router": "^8.0.0",
|
||||||
"@angular/service-worker": "8.0.0-rc.2",
|
"@angular/service-worker": "^8.0.0",
|
||||||
"@angular/upgrade": "8.0.0-rc.2",
|
"@angular/upgrade": "^8.0.0",
|
||||||
"@nguniversal/common": "8.0.0-rc.0",
|
"@nguniversal/common": "^8.0.0-rc.1",
|
||||||
"@nguniversal/express-engine": "8.0.0-rc.0",
|
"@nguniversal/express-engine": "^8.0.0-rc.1",
|
||||||
"@nguniversal/module-map-ngfactory-loader": "^8.0.0-rc.0",
|
"@nguniversal/module-map-ngfactory-loader": "^8.0.0-rc.1",
|
||||||
"angular-in-memory-web-api": "github:brandonroberts/in-memory-web-api-bazel#50a34d8",
|
"angular-in-memory-web-api": "github:brandonroberts/in-memory-web-api-bazel#50a34d8",
|
||||||
"core-js": "^2.5.4",
|
"core-js": "^2.5.4",
|
||||||
"express": "^4.14.1",
|
"express": "^4.14.1",
|
||||||
@ -42,11 +42,11 @@
|
|||||||
"zone.js": "~0.9.1"
|
"zone.js": "~0.9.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular-devkit/build-angular": "0.800.0-rc.3",
|
"@angular-devkit/build-angular": "0.800.0",
|
||||||
"@angular/cli": "8.0.0-rc.3",
|
"@angular/cli": "^8.0.0",
|
||||||
"@angular/compiler-cli": "8.0.0-rc.2",
|
"@angular/compiler-cli": "^8.0.0",
|
||||||
"@angular/language-service": "8.0.0-rc.2",
|
"@angular/language-service": "^8.0.0",
|
||||||
"@angular/platform-server": "8.0.0-rc.2",
|
"@angular/platform-server": "^8.0.0",
|
||||||
"@types/angular": "^1.6.47",
|
"@types/angular": "^1.6.47",
|
||||||
"@types/angular-animate": "^1.5.10",
|
"@types/angular-animate": "^1.5.10",
|
||||||
"@types/angular-mocks": "^1.6.0",
|
"@types/angular-mocks": "^1.6.0",
|
||||||
|
@ -2,24 +2,24 @@
|
|||||||
# yarn lockfile v1
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
"@angular-devkit/architect@0.800.0-rc.3":
|
"@angular-devkit/architect@0.800.0":
|
||||||
version "0.800.0-rc.3"
|
version "0.800.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.800.0-rc.3.tgz#71043979d63bbf45d5b1cfd3d0d6feaee6399388"
|
resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.800.0.tgz#2f2ce1178b12b0c0fde455d00def60104b9cd08e"
|
||||||
integrity sha512-nX3sIDj7J3y5R6Hzsf052tfs5Fx+QE3KBv7u1prfaqVX9i5EnBJZeHAbwmBFPLUlhgrqp0azwwD4L2RHpPuicA==
|
integrity sha512-haXTS9EDaJfKyYiFylK2hObJH5DVGhX3OEn3OC7XUVlfKV3GRmC6NKXPjnxcN0wWP5zIV1c4xuB2N64mcxSnaA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@angular-devkit/core" "8.0.0-rc.3"
|
"@angular-devkit/core" "8.0.0"
|
||||||
rxjs "6.4.0"
|
rxjs "6.4.0"
|
||||||
|
|
||||||
"@angular-devkit/build-angular@0.800.0-rc.3":
|
"@angular-devkit/build-angular@0.800.0":
|
||||||
version "0.800.0-rc.3"
|
version "0.800.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.800.0-rc.3.tgz#e71b2362d66d5dbd6f13766481abbb1b160939f0"
|
resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.800.0.tgz#6be1a0268daeadc7f07a73f1a1ec2759e4a0965b"
|
||||||
integrity sha512-MlKd3nMYixXgH7DgS+eO2zBzOA/GHSuEslycH2aAmLmTRYpnLaICTMenJWB2WRkndhaYlY7SEDV2nY4jQPal0g==
|
integrity sha512-JO9oT1VMhjuXF+OwLMBTMdRrS0jC2zIThO9UZYpE8oTtkL+17ra+5SN/fFg+2L7rx4kLUWDzcZGaVp9yTptXxw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@angular-devkit/architect" "0.800.0-rc.3"
|
"@angular-devkit/architect" "0.800.0"
|
||||||
"@angular-devkit/build-optimizer" "0.800.0-rc.3"
|
"@angular-devkit/build-optimizer" "0.800.0"
|
||||||
"@angular-devkit/build-webpack" "0.800.0-rc.3"
|
"@angular-devkit/build-webpack" "0.800.0"
|
||||||
"@angular-devkit/core" "8.0.0-rc.3"
|
"@angular-devkit/core" "8.0.0"
|
||||||
"@ngtools/webpack" "8.0.0-rc.3"
|
"@ngtools/webpack" "8.0.0"
|
||||||
ajv "6.10.0"
|
ajv "6.10.0"
|
||||||
autoprefixer "9.5.1"
|
autoprefixer "9.5.1"
|
||||||
browserslist "4.5.5"
|
browserslist "4.5.5"
|
||||||
@ -65,30 +65,30 @@
|
|||||||
webpack-subresource-integrity "1.1.0-rc.6"
|
webpack-subresource-integrity "1.1.0-rc.6"
|
||||||
worker-plugin "3.1.0"
|
worker-plugin "3.1.0"
|
||||||
|
|
||||||
"@angular-devkit/build-optimizer@0.800.0-rc.3":
|
"@angular-devkit/build-optimizer@0.800.0":
|
||||||
version "0.800.0-rc.3"
|
version "0.800.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.800.0-rc.3.tgz#d320cea2c07f373dd618f75d0dd60a29e5d5f578"
|
resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.800.0.tgz#c2c8d5966801e243bf25d47b704b5b4de7cbdb3f"
|
||||||
integrity sha512-pCKssuGq/YX6AyG8od8t781PbpQhJl3bH8trKYRuTkfNnrErN13Ebl1WMngu0cs4BnVsreUnI6x9ZZv8YxD4Ng==
|
integrity sha512-Cex/BynswHw+pvhiAwHlW51PFerGoa6J+wR93Te/4yIiCrX6KzWy6/v0RO5eY+iuebAr5QZDezcofB0Eg5yjiA==
|
||||||
dependencies:
|
dependencies:
|
||||||
loader-utils "1.2.3"
|
loader-utils "1.2.3"
|
||||||
source-map "0.5.6"
|
source-map "0.5.6"
|
||||||
typescript "3.4.4"
|
typescript "3.4.4"
|
||||||
webpack-sources "1.3.0"
|
webpack-sources "1.3.0"
|
||||||
|
|
||||||
"@angular-devkit/build-webpack@0.800.0-rc.3":
|
"@angular-devkit/build-webpack@0.800.0":
|
||||||
version "0.800.0-rc.3"
|
version "0.800.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.800.0-rc.3.tgz#b35eb5ba98f7744737be884e1e38d4e707bb9dc7"
|
resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.800.0.tgz#304702b5cfcd6f4e4a578e9b9daccd8d9085eb2a"
|
||||||
integrity sha512-h4gCBu6wENyetAxHCGT09UGXUTM+4doWLAo7n/MjEylZEfOX82xo6ylQUPzCEEiSJ6wHd+Zvcsl98ftbRPa7KA==
|
integrity sha512-7lPbO1u6MMqU9G7kKWiELdFDqQGLuuiK6muqmO+nct8o1m5XpJ33HHfkxpF+nrt1qjKE1ZVCerAu0fNeaTyK0g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@angular-devkit/architect" "0.800.0-rc.3"
|
"@angular-devkit/architect" "0.800.0"
|
||||||
"@angular-devkit/core" "8.0.0-rc.3"
|
"@angular-devkit/core" "8.0.0"
|
||||||
rxjs "6.4.0"
|
rxjs "6.4.0"
|
||||||
webpack-merge "4.2.1"
|
webpack-merge "4.2.1"
|
||||||
|
|
||||||
"@angular-devkit/core@8.0.0-rc.3":
|
"@angular-devkit/core@8.0.0":
|
||||||
version "8.0.0-rc.3"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-8.0.0-rc.3.tgz#a5e10e941d8a046abda9046e816d45694703c695"
|
resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-8.0.0.tgz#a0ca65d8d0f928db9288316b1f3346d21f722213"
|
||||||
integrity sha512-5PmX42/XOzPSqhIZBtXyozBN01Qpagj3YO0+ToKPDY+veGEUonPhz1jBiJ639NBldlGW1BBdQczpGZNg3uJj9A==
|
integrity sha512-wYf4zzpYj5Y673DG8iteK0GsDDuXBKN/TOXm4lUwmXcz8QHTD+BfR6qA5TBDqlMGpU7CP1/0vgbv2px17CDETQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
ajv "6.10.0"
|
ajv "6.10.0"
|
||||||
fast-json-stable-stringify "2.0.0"
|
fast-json-stable-stringify "2.0.0"
|
||||||
@ -96,31 +96,31 @@
|
|||||||
rxjs "6.4.0"
|
rxjs "6.4.0"
|
||||||
source-map "0.7.3"
|
source-map "0.7.3"
|
||||||
|
|
||||||
"@angular-devkit/schematics@8.0.0-rc.3":
|
"@angular-devkit/schematics@8.0.0":
|
||||||
version "8.0.0-rc.3"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-8.0.0-rc.3.tgz#754db2735863393066a7dd88915b5b594ccde4b8"
|
resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-8.0.0.tgz#53d14646c6286b0397417990fc83e3e9a6ecf233"
|
||||||
integrity sha512-u08GNDCRbm4fYYilmnT27Pp6QW/FxD7W9bpUH8Kp4i6r0f4uBuYQiQT1x6celTwj8Bh1fQqCq/kM/lAG0dd5Zg==
|
integrity sha512-IXJOs/DkDqNbfG76sNNY5ePZ37rjkMUopmtvhN6/U1hQFwTpGa9N0bCHFphcKraXeS6Jfox5XwFEStc/1xyhfw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@angular-devkit/core" "8.0.0-rc.3"
|
"@angular-devkit/core" "8.0.0"
|
||||||
rxjs "6.4.0"
|
rxjs "6.4.0"
|
||||||
|
|
||||||
"@angular/animations@8.0.0-rc.2":
|
"@angular/animations@^8.0.0":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-8.0.0-rc.2.tgz#aef2683aba35498fe26253bf8f461a1658864e49"
|
resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-8.0.0.tgz#6286094babdb3879f7aefcd73aa31772469e50b4"
|
||||||
integrity sha512-XTT7Eif6Km6MSbLr6qlCmx8vjRgx/Hp5Hv1WnnPtRFt8XeidYGGYIq2si3CxQ2xBjEO3OpNbPqtYvZKH1yuBdA==
|
integrity sha512-hggSRi83rmocLwzrKZtmFcqPdivKSJqp2yiYaiNmJ2yQWJ1JW/Lurypv9H347RWxmwCCwC2kV8embTGbOXIFDQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/cli@8.0.0-rc.3":
|
"@angular/cli@^8.0.0":
|
||||||
version "8.0.0-rc.3"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-8.0.0-rc.3.tgz#88f030c3ed682717ea318210f4460e9fdc4a9799"
|
resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-8.0.0.tgz#0f65f60e8714b7b99f9425b862221e818959b0ac"
|
||||||
integrity sha512-yY72F9wnsvrtgSkmNA1KIyx6eTRUkLaOcpyfzSPNiIHxWCy8pZvA6TbY49bBNFUatV677RuyMS0XVjww0viVxw==
|
integrity sha512-F7zdAazejA94WKXULLWs0cj76/LkGx2Jb+yGE7QWx3jkp5j18KI3jTU+h9UOtxk0zgV4oSy9AQpJQVZFPZPQFA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@angular-devkit/architect" "0.800.0-rc.3"
|
"@angular-devkit/architect" "0.800.0"
|
||||||
"@angular-devkit/core" "8.0.0-rc.3"
|
"@angular-devkit/core" "8.0.0"
|
||||||
"@angular-devkit/schematics" "8.0.0-rc.3"
|
"@angular-devkit/schematics" "8.0.0"
|
||||||
"@schematics/angular" "8.0.0-rc.3"
|
"@schematics/angular" "8.0.0"
|
||||||
"@schematics/update" "0.800.0-rc.3"
|
"@schematics/update" "0.800.0"
|
||||||
"@yarnpkg/lockfile" "1.1.0"
|
"@yarnpkg/lockfile" "1.1.0"
|
||||||
debug "^4.1.1"
|
debug "^4.1.1"
|
||||||
ini "1.3.5"
|
ini "1.3.5"
|
||||||
@ -128,22 +128,23 @@
|
|||||||
npm-package-arg "6.1.0"
|
npm-package-arg "6.1.0"
|
||||||
open "6.2.0"
|
open "6.2.0"
|
||||||
pacote "9.5.0"
|
pacote "9.5.0"
|
||||||
|
read-package-tree "5.2.2"
|
||||||
semver "6.0.0"
|
semver "6.0.0"
|
||||||
symbol-observable "1.2.0"
|
symbol-observable "1.2.0"
|
||||||
universal-analytics "^0.4.20"
|
universal-analytics "^0.4.20"
|
||||||
uuid "^3.3.2"
|
uuid "^3.3.2"
|
||||||
|
|
||||||
"@angular/common@8.0.0-rc.2":
|
"@angular/common@^8.0.0":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/common/-/common-8.0.0-rc.2.tgz#77b2da22cb11bf2039799d56ec2fb7c4f51a1374"
|
resolved "https://registry.yarnpkg.com/@angular/common/-/common-8.0.0.tgz#700aeda9be8af96692fce0ea6bf6157f7c874c0e"
|
||||||
integrity sha512-/MUZhebMAkAwV8jkimBONN2eOQ2/5qO54ZvPypyy2tEHk69JRNLFjREaR+VU8yGlS/1MU6jTYxyfRW2c8ggLzA==
|
integrity sha512-iOAJZ0+1zTRHnHE/5G30+4Q66W1pfZkSkxZIXvgijZ+wtuNloYdWNy/IdZ/m7ayBI7A6FsYEhyMUoWz2HVEJNw==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/compiler-cli@8.0.0-rc.2":
|
"@angular/compiler-cli@^8.0.0":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-8.0.0-rc.2.tgz#a3ef74f3e4ea448ccf1387c18c32fc664b67b2e1"
|
resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-8.0.0.tgz#b53ebb5accc34a68bf7a63d16130ca7c568f8a51"
|
||||||
integrity sha512-lLhedaTQ08/i4aysCPpTYbAP0/8T5/EHE79FByp/7XxqRuQxcXkFJujQT1Q/KReKa0gA9JEYD4I1eBJpNYyMLQ==
|
integrity sha512-Z0U0Ih8A7V3J1gq7AXnXbrGAD2ERmz7JbREJJRHDWiUNxIqGQiV3Odo1V8FL5n/cKvLwSYM2Ubvk10gb0+3njA==
|
||||||
dependencies:
|
dependencies:
|
||||||
canonical-path "1.0.0"
|
canonical-path "1.0.0"
|
||||||
chokidar "^2.1.1"
|
chokidar "^2.1.1"
|
||||||
@ -157,80 +158,80 @@
|
|||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
yargs "13.1.0"
|
yargs "13.1.0"
|
||||||
|
|
||||||
"@angular/compiler@8.0.0-rc.2":
|
"@angular/compiler@^8.0.0":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-8.0.0-rc.2.tgz#8395c20d2d7e93c6941a45b039e03ae7a6277797"
|
resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-8.0.0.tgz#302c987737e1473db3a113ff70fbbb315aa41b58"
|
||||||
integrity sha512-/NR0EN6wjit2mfgOhWirOjKp+s7lO1QSKhzK3TjYCda1L7Pijo29s3BGMWUSPCRno8zNH5o7Q0mWCC55MBGB4w==
|
integrity sha512-4rKsVFMNykF83tPL1VE1+j9kZ3cWHUsLOAB/VqmF64EcR/GsbjKog2v23rSso5kqUtPiVq/FWGYllW6qMdxtJA==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/core@8.0.0-rc.2":
|
"@angular/core@^8.0.0":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/core/-/core-8.0.0-rc.2.tgz#800fd49bbc176f7ee064375b726503c5e6c8387c"
|
resolved "https://registry.yarnpkg.com/@angular/core/-/core-8.0.0.tgz#bf7a582b818e9181d830219907470e2b865ba32f"
|
||||||
integrity sha512-ImXzoQk8U3IiL75dJWnO/aIGfaExgiqDc6GJYgQ8PvB7ZUkdUOj/a+jd6asMvE52VZJkof5XShhdonTScPcdUA==
|
integrity sha512-mrkP1PTzqCmZGLYll+TDyawLXHzi+FcRPqSuRxCmDMthUUE93SLXT2yISDkx9aMPtFKgFr6KfrIkKuCz16BP/g==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/elements@8.0.0-rc.2":
|
"@angular/elements@^8.0.0":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/elements/-/elements-8.0.0-rc.2.tgz#84ca2aadff66bfcd3c8042492a0c6b87a6a749fa"
|
resolved "https://registry.yarnpkg.com/@angular/elements/-/elements-8.0.0.tgz#7d25f95ba6854adb7361f106701cb1280394867f"
|
||||||
integrity sha512-7KVPDSGXo33WD+ZQHjmvSXyBa6az6MHIQo3I+wRKUB9pBZNqMa2Dcb7FQp7fq3tQTEpOW6fO52ozxAZ/ybozxA==
|
integrity sha512-vDs/O/9RNpmXaGJjmtFZ6MNFr2rqfB2qgq8tDcYkY7bAF11ulfwI2OXsI2vFnf4/qBlstdwXTmI5zar+ZU6MGA==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/forms@8.0.0-rc.2":
|
"@angular/forms@^8.0.0":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-8.0.0-rc.2.tgz#f4db4653470b74cd55508aa83da761309a1d341d"
|
resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-8.0.0.tgz#6d636c4f83004290e1a5732a05e87148aaf6ed64"
|
||||||
integrity sha512-rjjGNVaxwOayuZCpsG8V13RK/h7S6v5ItzG6Ai1agO/em4/riNhEP3+BvxM4Rs1v4AfGOd+LhOeLt5qptj0JKA==
|
integrity sha512-T6XdG3mALWzvnrN3fA1hAmfwvraiF1SPMWNXgPk2riuMf8CFdoro+tQZ4eo1islHrTTw5QzmqN8JJALfhAG6bg==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/language-service@8.0.0-rc.2":
|
"@angular/language-service@^8.0.0":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-8.0.0-rc.2.tgz#5b8fd13b7cd9e7cc1c097f92749f05e72b1c7e47"
|
resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-8.0.0.tgz#1ee4ce5003897cad53597da28f4c94fe30519bfb"
|
||||||
integrity sha512-PXsntGd053iiM9lJPo7jmjhd5dp6AxugEC4WDTXimZ3vK2Hzv53CnKuVTUGcTWjwazbKAEyG0jiUl4VXptwTAA==
|
integrity sha512-vGk14oWroEo6ycO4cooznx57nn2sASmCQ/sdE8UVwySUKl940TsVzijgaGqapTepFof9sMqN77y2G15eRKQeAQ==
|
||||||
|
|
||||||
"@angular/platform-browser-dynamic@8.0.0-rc.2":
|
"@angular/platform-browser-dynamic@^8.0.0":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.0.0-rc.2.tgz#86e8e227f19aa9c6ef4439623ce6cf7f2b0cd3b1"
|
resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.0.0.tgz#c15f394579ff44f3752033de58edc1afa5065d59"
|
||||||
integrity sha512-c4QXgAikQx25AOnNiQUOe/yNJunR95rfTJ5yApcNU76eeCMG9KLFNGGQTg+PmcxZ6UMcw9zp2Tck9vjSb2BZYg==
|
integrity sha512-dx7W7JoSFbsveexjZ/BPlsXbMDLWVLmRCo7IqLvibMrTbdpaaOCNJIXJk1X+f7JJrQ7SwlZaVkoLCMoDWw6fmA==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/platform-browser@8.0.0-rc.2":
|
"@angular/platform-browser@^8.0.0":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-8.0.0-rc.2.tgz#b40fa05fd32422be499ab3986bc3031374f7c5bc"
|
resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-8.0.0.tgz#fc7c55a0483e67e5606e499c129fda60ae8d4363"
|
||||||
integrity sha512-ErzIDckIqic9rmqMFk4scRX+lo7AWifOP+IOCot1KGPdQ7+CP/h/neJ9fiIzYTSDYUm5xk5i+2aW+2SWRJYQdA==
|
integrity sha512-fTD+pTMbq+On9Uv3VXiei2lfuX7GX31dngm/Y4yWTFeW6eXy0+7kkfflzpLOb0hykCZvcXzarqCuEBBYNLrrOg==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/platform-server@8.0.0-rc.2":
|
"@angular/platform-server@^8.0.0":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-8.0.0-rc.2.tgz#3f583f4e4fd393218b9e14ab68b179279e9aa86d"
|
resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-8.0.0.tgz#87e80acba6b09955046dc0a9da7cd6b2e005061a"
|
||||||
integrity sha512-5MVHNrazIw/WJ7ODah8kUY3AwXvw2HGscUUCW+sfkzJ7QqkWet7B1EExVEp708g/kooqyl92hjbFzTScXv4OCA==
|
integrity sha512-pA6m1okOfyy2qH5A6jUxrhx6z7eAG+ne7IM+j/6JUBDjp4KO9BC84aa/xfpZq5dsskl8E8II9c4hUKocMyeRjA==
|
||||||
dependencies:
|
dependencies:
|
||||||
domino "^2.1.2"
|
domino "^2.1.2"
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
xhr2 "^0.1.4"
|
xhr2 "^0.1.4"
|
||||||
|
|
||||||
"@angular/router@8.0.0-rc.2":
|
"@angular/router@^8.0.0":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/router/-/router-8.0.0-rc.2.tgz#e0e4636f56fc08760863486f45f203bb9b00543e"
|
resolved "https://registry.yarnpkg.com/@angular/router/-/router-8.0.0.tgz#26094fd473e17441b0ae8af4883ec1b4ea3ad569"
|
||||||
integrity sha512-7NnRdEykm0FJf/SHjUWz3cgGDtW5KM2gKm8it8V8azr3vIiMRYyqhDqCKkhutjt7C+yKNotB5M7Da9uYf0n/xQ==
|
integrity sha512-DGUTb8qpndE5m716xh00GxuC8o7qamlqbUruGB+SQD6ynU7s5yLGxtKffxqb1BT63+YewpsVxc2Koruvb1qjDw==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/service-worker@8.0.0-rc.2":
|
"@angular/service-worker@^8.0.0":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-8.0.0-rc.2.tgz#e73374fe4ccd8c15790f007832a5e60576ed85d9"
|
resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-8.0.0.tgz#5cb55bc39b29e318f5d72c1223a966c088f18568"
|
||||||
integrity sha512-uudl7+P9Xov9naoW7Ruv0rvvp+jYWe3P3OOpRul8X6tTYarKnorj3F44Y5GoNO5Xxjp0psPSD558rXrrIBt98w==
|
integrity sha512-MrR6Xb0X0+qO+bbdGasg7+xEvH7rPhgLpDn9FF/RwMMzj4qQmeJw9uRSJe9xMR6n0gNS7+cH8RptivOanY1QjQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/upgrade@8.0.0-rc.2":
|
"@angular/upgrade@^8.0.0":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/upgrade/-/upgrade-8.0.0-rc.2.tgz#b95187a355afc3814bcb7d23d1af428047745850"
|
resolved "https://registry.yarnpkg.com/@angular/upgrade/-/upgrade-8.0.0.tgz#7a756815c553350ba4cd64a0275ac6fc14286898"
|
||||||
integrity sha512-I89l3PlrCRDDJyETbDs3BkUuLcjcLsITp4zI0SnriyYPHqKxaaC2QjCpJ/CYdk8LAuiQBIv9M/tK3o6Ow1d9qQ==
|
integrity sha512-HRL99P13Mql3/kyrX/XUHqA8fdXC6QAmEnbcatAyCq6BGjJ047z1EFv/A6LHXXN5GFAgziyQbEqw3CnhjUeRVw==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
@ -312,47 +313,47 @@
|
|||||||
lodash "^4.17.10"
|
lodash "^4.17.10"
|
||||||
to-fast-properties "^2.0.0"
|
to-fast-properties "^2.0.0"
|
||||||
|
|
||||||
"@ngtools/webpack@8.0.0-rc.3":
|
"@ngtools/webpack@8.0.0":
|
||||||
version "8.0.0-rc.3"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-8.0.0-rc.3.tgz#9bbc52ecec8edf54e41f94935b9f4a05cb29d71c"
|
resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-8.0.0.tgz#1a842f14b80f5430358374d0150659cb029a0198"
|
||||||
integrity sha512-XD2S0t1MhvXTJ3mksIgiSqFeUkXlWcN0hVQVjAxrUIthNI87asirYtcPryDDz+zmrhLM0f2HGJ8cU9bZgmyQ0Q==
|
integrity sha512-IbljboxtAde95VbxpmCLzVMA9SrPPCFsBsDu2bmCjRGRSjnMVbXNPFm3fel4AxjT+St650w8RLJ4h6Fb+AV/Aw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@angular-devkit/core" "8.0.0-rc.3"
|
"@angular-devkit/core" "8.0.0"
|
||||||
enhanced-resolve "4.1.0"
|
enhanced-resolve "4.1.0"
|
||||||
rxjs "6.4.0"
|
rxjs "6.4.0"
|
||||||
tree-kill "1.2.1"
|
tree-kill "1.2.1"
|
||||||
webpack-sources "1.3.0"
|
webpack-sources "1.3.0"
|
||||||
|
|
||||||
"@nguniversal/common@8.0.0-rc.0":
|
"@nguniversal/common@^8.0.0-rc.1":
|
||||||
version "8.0.0-rc.0"
|
version "8.0.0-rc.1"
|
||||||
resolved "https://registry.yarnpkg.com/@nguniversal/common/-/common-8.0.0-rc.0.tgz#92ea2dbe02a72c0c20b9be9172f4c329f0492ed4"
|
resolved "https://registry.yarnpkg.com/@nguniversal/common/-/common-8.0.0-rc.1.tgz#21072437251765864d74add678b3a3540c4611aa"
|
||||||
integrity sha512-i9DnPuQC2bixU1p7wBl1Cb9DJGy+o4YVMrunRWUqqwVXx/7TjMQDVQV4J9Cy1uUCJ1mQ2TkmM41BRAiBJbCojQ==
|
integrity sha512-J/oNhuWFroB1JAWrXgRHFCdbYQ/XTWJxyUOi7pUaWfdF+kudjKFEVc2TARBmPSGEizHxkTIkysVHT817/L3lXQ==
|
||||||
|
|
||||||
"@nguniversal/express-engine@8.0.0-rc.0":
|
"@nguniversal/express-engine@^8.0.0-rc.1":
|
||||||
version "8.0.0-rc.0"
|
version "8.0.0-rc.1"
|
||||||
resolved "https://registry.yarnpkg.com/@nguniversal/express-engine/-/express-engine-8.0.0-rc.0.tgz#ecf86f8cb433e28a29af3cf6a01cc6b6dc00e32c"
|
resolved "https://registry.yarnpkg.com/@nguniversal/express-engine/-/express-engine-8.0.0-rc.1.tgz#95f05b6fdac036f0deda7813e8ee08fa4b4edfd2"
|
||||||
integrity sha512-iSDeu5TwNw7KjQQu5N+UUa4ie04gpa0LpBFPkci9ZRGgaiRbwV4Z/qNmHe2MWI7o4k6xaZddDKC5ixGZ7Lo1Cw==
|
integrity sha512-WGJZTxkCMgDHK3UQHi6h7AL9Us7Vroz+pAS60lKJ0oNUCxoJ9S+i4jXfb6rtR5DtOTBqUy8O8fQ0U0HZOhhoWA==
|
||||||
|
|
||||||
"@nguniversal/module-map-ngfactory-loader@^8.0.0-rc.0":
|
"@nguniversal/module-map-ngfactory-loader@^8.0.0-rc.1":
|
||||||
version "8.0.0-rc.0"
|
version "8.0.0-rc.1"
|
||||||
resolved "https://registry.yarnpkg.com/@nguniversal/module-map-ngfactory-loader/-/module-map-ngfactory-loader-8.0.0-rc.0.tgz#888d9c3ec5498acc4c6357eac7bcdcd436007558"
|
resolved "https://registry.yarnpkg.com/@nguniversal/module-map-ngfactory-loader/-/module-map-ngfactory-loader-8.0.0-rc.1.tgz#ca82a170fe72057b2379a55147580803c951319e"
|
||||||
integrity sha512-Z9WbOr3XcNeLNeg7P3VBKVJN2yEM9zYlr+Nvdxhw28k1xJa0gH42G35jb9mETgbWVqOq0njT5++fouhdzEwaOQ==
|
integrity sha512-dPac8uahg4XHSvrXP0/XkU/LaFhAHJ8N9h93ttXfrEXNMukarOmbyKzAuX9DVjcE6+lll1UCZtsEweRvQBZPbw==
|
||||||
|
|
||||||
"@schematics/angular@8.0.0-rc.3":
|
"@schematics/angular@8.0.0":
|
||||||
version "8.0.0-rc.3"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-8.0.0-rc.3.tgz#26f253e882173a78858e999409e64844b7030ddd"
|
resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-8.0.0.tgz#47954888fb8acbc3600235db7a46229c47fe5d9c"
|
||||||
integrity sha512-IuunKeNof7QL7aj3X56lS5KP28asmN18G9js2m/XTpyIKOX053kGppwWfBULmDnGMd4UR1+XU/xmIFQUq7vurQ==
|
integrity sha512-c/cFpe+u7Xh4xX3/kn9BSRY4YhdO0OsDbRK0pGLDJFFs5JGvwoURtNXn4/4dVlsj3PWyNhxK0Ljl3dyw3NQBHA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@angular-devkit/core" "8.0.0-rc.3"
|
"@angular-devkit/core" "8.0.0"
|
||||||
"@angular-devkit/schematics" "8.0.0-rc.3"
|
"@angular-devkit/schematics" "8.0.0"
|
||||||
|
|
||||||
"@schematics/update@0.800.0-rc.3":
|
"@schematics/update@0.800.0":
|
||||||
version "0.800.0-rc.3"
|
version "0.800.0"
|
||||||
resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.800.0-rc.3.tgz#2cd33c21ed2ef82320f43ae3701945737f994e1a"
|
resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.800.0.tgz#dddf09764f1917a1f42fea61af2520b196cdbfd0"
|
||||||
integrity sha512-H7beN0qLdqNX9WbgvBVwVN/WwXhmbBaZEDkclzMz8RivjBwX08ZA5HbDvwPU7oU5pYT2hpdaYpNuZFHxfz5EFg==
|
integrity sha512-StheH+k4GCaHqmtDsHLSFmxu8SCDJVhZTXpz2zFAVaVXDh/ABS2Dt7I7SmEMGkUHcPA+u83sbZVBIacw2QfybQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@angular-devkit/core" "8.0.0-rc.3"
|
"@angular-devkit/core" "8.0.0"
|
||||||
"@angular-devkit/schematics" "8.0.0-rc.3"
|
"@angular-devkit/schematics" "8.0.0"
|
||||||
"@yarnpkg/lockfile" "1.1.0"
|
"@yarnpkg/lockfile" "1.1.0"
|
||||||
ini "1.3.5"
|
ini "1.3.5"
|
||||||
pacote "9.5.0"
|
pacote "9.5.0"
|
||||||
@ -942,7 +943,7 @@ arrify@^1.0.0, arrify@^1.0.1:
|
|||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
|
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
|
||||||
|
|
||||||
asap@~2.0.3:
|
asap@^2.0.0, asap@~2.0.3:
|
||||||
version "2.0.6"
|
version "2.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
|
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
|
||||||
|
|
||||||
@ -2236,6 +2237,11 @@ debug@^4.1.0, debug@^4.1.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ms "^2.1.1"
|
ms "^2.1.1"
|
||||||
|
|
||||||
|
debuglog@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
|
||||||
|
integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
|
||||||
|
|
||||||
decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.2.0:
|
decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
|
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
|
||||||
@ -2371,6 +2377,14 @@ dev-ip@^1.0.1:
|
|||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0"
|
resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0"
|
||||||
|
|
||||||
|
dezalgo@^1.0.0:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456"
|
||||||
|
integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=
|
||||||
|
dependencies:
|
||||||
|
asap "^2.0.0"
|
||||||
|
wrappy "1"
|
||||||
|
|
||||||
di@^0.0.1:
|
di@^0.0.1:
|
||||||
version "0.0.1"
|
version "0.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c"
|
resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c"
|
||||||
@ -5244,6 +5258,16 @@ nopt@^4.0.1:
|
|||||||
abbrev "1"
|
abbrev "1"
|
||||||
osenv "^0.1.4"
|
osenv "^0.1.4"
|
||||||
|
|
||||||
|
normalize-package-data@^2.0.0:
|
||||||
|
version "2.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
|
||||||
|
integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
|
||||||
|
dependencies:
|
||||||
|
hosted-git-info "^2.1.4"
|
||||||
|
resolve "^1.10.0"
|
||||||
|
semver "2 || 3 || 4 || 5"
|
||||||
|
validate-npm-package-license "^3.0.1"
|
||||||
|
|
||||||
normalize-package-data@^2.3.2:
|
normalize-package-data@^2.3.2:
|
||||||
version "2.4.0"
|
version "2.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
|
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
|
||||||
@ -6145,6 +6169,29 @@ read-cache@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
pify "^2.3.0"
|
pify "^2.3.0"
|
||||||
|
|
||||||
|
read-package-json@^2.0.0:
|
||||||
|
version "2.0.13"
|
||||||
|
resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.13.tgz#2e82ebd9f613baa6d2ebe3aa72cefe3f68e41f4a"
|
||||||
|
integrity sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg==
|
||||||
|
dependencies:
|
||||||
|
glob "^7.1.1"
|
||||||
|
json-parse-better-errors "^1.0.1"
|
||||||
|
normalize-package-data "^2.0.0"
|
||||||
|
slash "^1.0.0"
|
||||||
|
optionalDependencies:
|
||||||
|
graceful-fs "^4.1.2"
|
||||||
|
|
||||||
|
read-package-tree@5.2.2:
|
||||||
|
version "5.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.2.2.tgz#4b6a0ef2d943c1ea36a578214c9a7f6b7424f7a8"
|
||||||
|
integrity sha512-rW3XWUUkhdKmN2JKB4FL563YAgtINifso5KShykufR03nJ5loGFlkUMe1g/yxmqX073SoYYTsgXu7XdDinKZuA==
|
||||||
|
dependencies:
|
||||||
|
debuglog "^1.0.1"
|
||||||
|
dezalgo "^1.0.0"
|
||||||
|
once "^1.3.0"
|
||||||
|
read-package-json "^2.0.0"
|
||||||
|
readdir-scoped-modules "^1.0.0"
|
||||||
|
|
||||||
read-pkg-up@^1.0.1:
|
read-pkg-up@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
|
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
|
||||||
@ -6192,6 +6239,16 @@ readable-stream@~2.0.6:
|
|||||||
string_decoder "~0.10.x"
|
string_decoder "~0.10.x"
|
||||||
util-deprecate "~1.0.1"
|
util-deprecate "~1.0.1"
|
||||||
|
|
||||||
|
readdir-scoped-modules@^1.0.0:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747"
|
||||||
|
integrity sha1-n6+jfShr5dksuuve4DDcm19AZ0c=
|
||||||
|
dependencies:
|
||||||
|
debuglog "^1.0.1"
|
||||||
|
dezalgo "^1.0.0"
|
||||||
|
graceful-fs "^4.1.2"
|
||||||
|
once "^1.3.0"
|
||||||
|
|
||||||
readdirp@^2.0.0:
|
readdirp@^2.0.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
|
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
|
||||||
|
@ -221,9 +221,7 @@ class StackblitzBuilder {
|
|||||||
|
|
||||||
_encodeBase64(file) {
|
_encodeBase64(file) {
|
||||||
// read binary data
|
// read binary data
|
||||||
var bitmap = fs.readFileSync(file);
|
return fs.readFileSync(file, { encoding: 'base64' });
|
||||||
// convert binary data to base64 encoded string
|
|
||||||
return Buffer(bitmap).toString('base64');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_existsSync(filename) {
|
_existsSync(filename) {
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
const {resolve} = require('canonical-path');
|
const {resolve} = require('canonical-path');
|
||||||
|
const semver = require('semver');
|
||||||
const Package = require('dgeni').Package;
|
const Package = require('dgeni').Package;
|
||||||
const basePackage = require('../angular-base-package');
|
const basePackage = require('../angular-base-package');
|
||||||
const contentPackage = require('../content-package');
|
const contentPackage = require('../content-package');
|
||||||
@ -8,7 +9,8 @@ const CLI_SOURCE_PATH = resolve(CLI_SOURCE_ROOT, 'node_modules/@angular/cli');
|
|||||||
const CLI_SOURCE_HELP_PATH = resolve(CLI_SOURCE_PATH, 'help');
|
const CLI_SOURCE_HELP_PATH = resolve(CLI_SOURCE_PATH, 'help');
|
||||||
|
|
||||||
// Define the dgeni package for generating the docs
|
// Define the dgeni package for generating the docs
|
||||||
module.exports = new Package('cli-docs', [basePackage, contentPackage])
|
module.exports =
|
||||||
|
new Package('cli-docs', [basePackage, contentPackage])
|
||||||
|
|
||||||
// Register the services and file readers
|
// Register the services and file readers
|
||||||
.factory(require('./readers/cli-command'))
|
.factory(require('./readers/cli-command'))
|
||||||
@ -39,7 +41,8 @@ module.exports = new Package('cli-docs', [basePackage, contentPackage])
|
|||||||
// Where to find the templates for the CLI doc rendering
|
// Where to find the templates for the CLI doc rendering
|
||||||
templateFinder.templateFolders.unshift(resolve(TEMPLATES_PATH, 'cli'));
|
templateFinder.templateFolders.unshift(resolve(TEMPLATES_PATH, 'cli'));
|
||||||
// Add in templating filters and tags
|
// Add in templating filters and tags
|
||||||
templateEngine.filters = templateEngine.filters.concat(getInjectables(requireFolder(__dirname, './rendering')));
|
templateEngine.filters = templateEngine.filters.concat(
|
||||||
|
getInjectables(requireFolder(__dirname, './rendering')));
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@ -47,13 +50,10 @@ module.exports = new Package('cli-docs', [basePackage, contentPackage])
|
|||||||
|
|
||||||
const cliPackage = require(resolve(CLI_SOURCE_PATH, 'package.json'));
|
const cliPackage = require(resolve(CLI_SOURCE_PATH, 'package.json'));
|
||||||
const repoUrlParts = cliPackage.repository.url.replace(/\.git$/, '').split('/');
|
const repoUrlParts = cliPackage.repository.url.replace(/\.git$/, '').split('/');
|
||||||
const version = `v${cliPackage.version}`;
|
const version = `v${semver.clean(cliPackage.version)}`;
|
||||||
const repo = repoUrlParts.pop();
|
const repo = repoUrlParts.pop();
|
||||||
const owner = repoUrlParts.pop();
|
const owner = repoUrlParts.pop();
|
||||||
const cliVersionInfo = {
|
const cliVersionInfo = {gitRepoInfo: {owner, repo}, currentVersion: {raw: version}};
|
||||||
gitRepoInfo: { owner, repo },
|
|
||||||
currentVersion: { raw: version }
|
|
||||||
};
|
|
||||||
|
|
||||||
// Add the cli version data to the renderer, for use in things like github links
|
// Add the cli version data to the renderer, for use in things like github links
|
||||||
renderDocsProcessor.extraData.cliVersionInfo = cliVersionInfo;
|
renderDocsProcessor.extraData.cliVersionInfo = cliVersionInfo;
|
||||||
@ -61,6 +61,8 @@ module.exports = new Package('cli-docs', [basePackage, contentPackage])
|
|||||||
|
|
||||||
|
|
||||||
.config(function(convertToJsonProcessor, postProcessHtml) {
|
.config(function(convertToJsonProcessor, postProcessHtml) {
|
||||||
convertToJsonProcessor.docTypes = convertToJsonProcessor.docTypes.concat(['cli-command', 'cli-overview']);
|
convertToJsonProcessor.docTypes =
|
||||||
postProcessHtml.docTypes = postProcessHtml.docTypes.concat(['cli-command', 'cli-overview']);
|
convertToJsonProcessor.docTypes.concat(['cli-command', 'cli-overview']);
|
||||||
|
postProcessHtml.docTypes =
|
||||||
|
postProcessHtml.docTypes.concat(['cli-command', 'cli-overview']);
|
||||||
});
|
});
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
* }
|
* }
|
||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
module.exports = function cliCommandFileReader(log) {
|
module.exports = function cliCommandFileReader() {
|
||||||
const json5 = require('json5');
|
const json5 = require('json5');
|
||||||
return {
|
return {
|
||||||
name: 'cliCommandFileReader',
|
name: 'cliCommandFileReader',
|
||||||
@ -26,22 +26,61 @@ module.exports = function cliCommandFileReader(log) {
|
|||||||
docType: 'cli-command',
|
docType: 'cli-command',
|
||||||
id: `cli-${doc.name}`,
|
id: `cli-${doc.name}`,
|
||||||
commandAliases: doc.aliases || [],
|
commandAliases: doc.aliases || [],
|
||||||
aliases: computeAliases(doc),
|
aliases: computeAliases(doc), path,
|
||||||
path,
|
|
||||||
outputPath: `${path}.json`,
|
outputPath: `${path}.json`,
|
||||||
breadCrumbs: [
|
breadCrumbs: [
|
||||||
{text: 'CLI', path: 'cli'},
|
{text: 'CLI', path: 'cli'},
|
||||||
{text: name, path},
|
{text: name, path},
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
if (doc.longDescription) {
|
||||||
|
doc.longDescriptionDoc = createLongDescriptionDoc(fileInfo);
|
||||||
|
}
|
||||||
return [result];
|
return [result];
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
log.warn(`Failed to read cli command file: "${fileInfo.relativePath}" - ${e.message}`);
|
throw new Error(
|
||||||
|
`Failed to read cli command file: "${fileInfo.relativePath}" - ${e.message}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
function computeAliases(doc) {
|
function computeAliases(doc) {
|
||||||
return [doc.name].concat(doc.aliases || []).map(alias => `cli-${alias}`);
|
return [doc.name].concat(doc.aliases || []).map(alias => `cli-${alias}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Synthesize a doc for the CLI command long description, which is used to generate links
|
||||||
|
* for viewing and editing the long description in GitHub.
|
||||||
|
*
|
||||||
|
* The long description is stored in a markdown file that is referenced from the original
|
||||||
|
* schema file for the command, via the `$longDescription` field. The field is a relative path
|
||||||
|
* to the markdown file from the schema file.
|
||||||
|
*
|
||||||
|
* This function tries to retrieve that original schema based on the file path of the help JSON
|
||||||
|
* file, which was passed to the `cliCommandFileReader.getDocs()` method.
|
||||||
|
*/
|
||||||
|
function createLongDescriptionDoc(fileInfo) {
|
||||||
|
const path = require('canonical-path');
|
||||||
|
const fs = require('fs');
|
||||||
|
const json5 = require('json5');
|
||||||
|
|
||||||
|
const schemaJsonPath = path.resolve(fileInfo.basePath, '../commands', fileInfo.relativePath);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const schemaJson = fs.readFileSync(schemaJsonPath);
|
||||||
|
const schema = json5.parse(schemaJson);
|
||||||
|
if (schema.$longDescription) {
|
||||||
|
return {
|
||||||
|
docType: 'content',
|
||||||
|
startingLine: 0,
|
||||||
|
fileInfo: {
|
||||||
|
realProjectRelativePath:
|
||||||
|
path.join(path.dirname(fileInfo.realProjectRelativePath), schema.$longDescription)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
throw new Error(
|
||||||
|
`Unable to read CLI "$longDescription" info from the schema: "${schemaJsonPath}" - ${e.message}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@ -40,7 +40,12 @@ const content = `
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const fileInfo = {content, baseName: 'add'};
|
const fileInfo = {
|
||||||
|
content,
|
||||||
|
baseName: 'add',
|
||||||
|
relativePath: 'add.json',
|
||||||
|
basePath: __dirname + '/mocks/help',
|
||||||
|
};
|
||||||
|
|
||||||
describe('cli-command reader', () => {
|
describe('cli-command reader', () => {
|
||||||
describe('getDocs', () => {
|
describe('getDocs', () => {
|
||||||
@ -89,7 +94,9 @@ describe('cli-command reader', () => {
|
|||||||
|
|
||||||
it('should extract the long description', () => {
|
it('should extract the long description', () => {
|
||||||
const docs = reader.getDocs(fileInfo);
|
const docs = reader.getDocs(fileInfo);
|
||||||
expect(docs[0].longDescription).toEqual('Add support for a library in your project, for example adding `@angular/pwa` which would configure\nyour project for PWA support.\n');
|
expect(docs[0].longDescription)
|
||||||
|
.toEqual(
|
||||||
|
'Add support for a library in your project, for example adding `@angular/pwa` which would configure\nyour project for PWA support.\n');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should extract the command type', () => {
|
it('should extract the command type', () => {
|
||||||
@ -115,5 +122,14 @@ describe('cli-command reader', () => {
|
|||||||
jasmine.objectContaining({name: 'helpJson'}),
|
jasmine.objectContaining({name: 'helpJson'}),
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should extract file info for the long description', () => {
|
||||||
|
const [doc] = reader.getDocs(fileInfo);
|
||||||
|
expect(doc.longDescriptionDoc).toEqual({
|
||||||
|
docType: 'content',
|
||||||
|
startingLine: 0,
|
||||||
|
fileInfo: {realProjectRelativePath: 'packages/angular/cli/commands/add-long.md'}
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"$longDescription": "./add-long.md"
|
||||||
|
}
|
@ -14,7 +14,10 @@
|
|||||||
{$ cli.renderSyntax(doc) $}
|
{$ cli.renderSyntax(doc) $}
|
||||||
|
|
||||||
{% if doc.longDescription.length %}
|
{% if doc.longDescription.length %}
|
||||||
<h2 class="no-anchor">Description</h2>
|
<h2 class="no-anchor">
|
||||||
|
{$ github.githubLinks(doc.longDescriptionDoc, cliVersionInfo) $}
|
||||||
|
Description
|
||||||
|
</h2>
|
||||||
{$ doc.longDescription | marked $}
|
{$ doc.longDescription | marked $}
|
||||||
{% endif%}
|
{% endif%}
|
||||||
|
|
||||||
|
289
aio/yarn.lock
289
aio/yarn.lock
@ -2,24 +2,24 @@
|
|||||||
# yarn lockfile v1
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
"@angular-devkit/architect@0.800.0-rc.2":
|
"@angular-devkit/architect@0.800.2":
|
||||||
version "0.800.0-rc.2"
|
version "0.800.2"
|
||||||
resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.800.0-rc.2.tgz#4096016fa6df93acbf02be648554631939aa87c0"
|
resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.800.2.tgz#0924864e57d1e56bddeae257c8779a2662c34e69"
|
||||||
integrity sha512-JU/x3UvUW+uVuF0tNkVTRtAvGfbKDXLFI3lm7i40qmts5z1zeQlPjrz+DRTe7msevoVu7DMQTJ7vlbyHUjZOFw==
|
integrity sha512-251GOQwI3254AtnGWZoHmjOMFcz7h6M3fPmRHpYuuhRPIwZnQCKaszYI7gaP9zR7uArLUwsuPo+YYz8lb6Giwg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@angular-devkit/core" "8.0.0-rc.2"
|
"@angular-devkit/core" "8.0.2"
|
||||||
rxjs "6.4.0"
|
rxjs "6.4.0"
|
||||||
|
|
||||||
"@angular-devkit/build-angular@0.800.0-rc.2":
|
"@angular-devkit/build-angular@0.800.2":
|
||||||
version "0.800.0-rc.2"
|
version "0.800.2"
|
||||||
resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.800.0-rc.2.tgz#df78a27a58813bc442629f8500e1f3d4fd72c519"
|
resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.800.2.tgz#712f106f50fb8301816e4417493e98e1e12eb296"
|
||||||
integrity sha512-E6P3CO4IUEyCezrBuNwMZ+H/Rg+0R/FH3/TyWiivY5D3bLGvRFJbQE5ZQkVWbd1i1woxvHdqkjgco9hpOko2XQ==
|
integrity sha512-RlYPEp5FVKosgzWhbI7llM3lGIxAYuCwEPloeUL4XaDasNe2zmLNUlYDVTrF7GpZRoAgiIejmT0HvvKfEuZNZQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@angular-devkit/architect" "0.800.0-rc.2"
|
"@angular-devkit/architect" "0.800.2"
|
||||||
"@angular-devkit/build-optimizer" "0.800.0-rc.2"
|
"@angular-devkit/build-optimizer" "0.800.2"
|
||||||
"@angular-devkit/build-webpack" "0.800.0-rc.2"
|
"@angular-devkit/build-webpack" "0.800.2"
|
||||||
"@angular-devkit/core" "8.0.0-rc.2"
|
"@angular-devkit/core" "8.0.2"
|
||||||
"@ngtools/webpack" "8.0.0-rc.2"
|
"@ngtools/webpack" "8.0.2"
|
||||||
ajv "6.10.0"
|
ajv "6.10.0"
|
||||||
autoprefixer "9.5.1"
|
autoprefixer "9.5.1"
|
||||||
browserslist "4.5.5"
|
browserslist "4.5.5"
|
||||||
@ -65,30 +65,30 @@
|
|||||||
webpack-subresource-integrity "1.1.0-rc.6"
|
webpack-subresource-integrity "1.1.0-rc.6"
|
||||||
worker-plugin "3.1.0"
|
worker-plugin "3.1.0"
|
||||||
|
|
||||||
"@angular-devkit/build-optimizer@0.800.0-rc.2":
|
"@angular-devkit/build-optimizer@0.800.2":
|
||||||
version "0.800.0-rc.2"
|
version "0.800.2"
|
||||||
resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.800.0-rc.2.tgz#d56cdc127699ad25eb817caf97336d239600f5cb"
|
resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.800.2.tgz#4223b2ac8c2a4c05682d1f3cb0417b4630b4a943"
|
||||||
integrity sha512-YKTFlAfD4JZk1h4lZDA4HVPPIq1JB5Dxg/Icn2GvcuUws6wVcXUflMTIpBgIMF2j07fMIYPqSAcSBd+UsBJBvA==
|
integrity sha512-A/lX7Fjfeh5PspGURV8fJeOsrIYM/7why7mC6v78zdxaErd4S18wUXJDfndjx3qiKyuq76Uu4cQcS7XfClpb8Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
loader-utils "1.2.3"
|
loader-utils "1.2.3"
|
||||||
source-map "0.5.6"
|
source-map "0.5.6"
|
||||||
typescript "3.4.4"
|
typescript "3.4.4"
|
||||||
webpack-sources "1.3.0"
|
webpack-sources "1.3.0"
|
||||||
|
|
||||||
"@angular-devkit/build-webpack@0.800.0-rc.2":
|
"@angular-devkit/build-webpack@0.800.2":
|
||||||
version "0.800.0-rc.2"
|
version "0.800.2"
|
||||||
resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.800.0-rc.2.tgz#c08218f54381157744a3166c0d94b1db180ba063"
|
resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.800.2.tgz#af90ea503eece948390bce154a53df9d7c566539"
|
||||||
integrity sha512-t+/5WqgcsvgPIFGE48I+UWJPDpkQ6E+dKH6RuXec94VBJEv1pC9FJdoi6s/CqEzzPiZsWxJzrWI4dpPAn1eWuA==
|
integrity sha512-Bd/sazcriUTFQCGFDyUkjXSmpn8hRLIyLIXBLAn+5coH4Y4xNy8PXt+hnr6ffwu92h/WnyxKIJi44+5aoUBURA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@angular-devkit/architect" "0.800.0-rc.2"
|
"@angular-devkit/architect" "0.800.2"
|
||||||
"@angular-devkit/core" "8.0.0-rc.2"
|
"@angular-devkit/core" "8.0.2"
|
||||||
rxjs "6.4.0"
|
rxjs "6.4.0"
|
||||||
webpack-merge "4.2.1"
|
webpack-merge "4.2.1"
|
||||||
|
|
||||||
"@angular-devkit/core@8.0.0-rc.2":
|
"@angular-devkit/core@8.0.2":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-8.0.0-rc.2.tgz#e596a44da215713cdef5405f1477e70626e5d68c"
|
resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-8.0.2.tgz#22b017b38b4d6127ab2e39a27990fd7962d3844a"
|
||||||
integrity sha512-hfkQ1QaA0ZIquTNQYJiK0OhdSzdxWY1SJr20JwSBHezAvhN4sJHRBRN9RxGLWdL1d4Z4rUB4KEIvx0cMMk6Ueg==
|
integrity sha512-S2OPYe6Qu7qTS8Q2lzf4qNjXdbN/J2YVnd3wGauMI8Tih5tY/NzUW3h5ds09nRcjsdBDuT0qgf3IMlCZWIABvQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
ajv "6.10.0"
|
ajv "6.10.0"
|
||||||
fast-json-stable-stringify "2.0.0"
|
fast-json-stable-stringify "2.0.0"
|
||||||
@ -96,40 +96,40 @@
|
|||||||
rxjs "6.4.0"
|
rxjs "6.4.0"
|
||||||
source-map "0.7.3"
|
source-map "0.7.3"
|
||||||
|
|
||||||
"@angular-devkit/schematics@8.0.0-rc.2":
|
"@angular-devkit/schematics@8.0.2":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-8.0.0-rc.2.tgz#f4490b1277cdba9622227b178128c76f54e7eca1"
|
resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-8.0.2.tgz#854a4366c7dc7462bebd10c24e808b5c9f65b6e2"
|
||||||
integrity sha512-VuXCRE/PmQWMHaaBbbOq7f2M6/DeKnYUyqG2xpBJaSP+rX7j08gd6RGzkn6V81C6jxt0Q3WkXnQfj5ZQuFnF5w==
|
integrity sha512-v+g0MOPADJJ5QNNmojCyh2sw1GOzadlbHPdTFqZOm77b2Bi79dRm+yuYMuY6a2nUt7DIcioLRcOFwV8UctajRg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@angular-devkit/core" "8.0.0-rc.2"
|
"@angular-devkit/core" "8.0.2"
|
||||||
rxjs "6.4.0"
|
rxjs "6.4.0"
|
||||||
|
|
||||||
"@angular/animations@^8.0.0-rc.2":
|
"@angular/animations@^8.1.0-next.1":
|
||||||
version "8.0.0-rc.2"
|
version "8.1.0-next.1"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-8.0.0-rc.2.tgz#aef2683aba35498fe26253bf8f461a1658864e49"
|
resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-8.1.0-next.1.tgz#6c79ac16b7da239b7823259994d2b379d883dd68"
|
||||||
integrity sha512-XTT7Eif6Km6MSbLr6qlCmx8vjRgx/Hp5Hv1WnnPtRFt8XeidYGGYIq2si3CxQ2xBjEO3OpNbPqtYvZKH1yuBdA==
|
integrity sha512-drwdK7ARU41hGj6JebO7gF0MeeNz3qSMoPs8zRqjC3sfWZ4Jp9eNlfTf1b86gd6w9GMeOna/JjwxUeNEmxdLBw==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/cdk@8.0.0-rc.0":
|
"@angular/cdk@8.0.0":
|
||||||
version "8.0.0-rc.0"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-8.0.0-rc.0.tgz#64731574ddcf6912b079e03efab95464ce17acee"
|
resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-8.0.0.tgz#34ca95e71d71780b29b5ba07318c88c4577bdc25"
|
||||||
integrity sha512-fa0AFR/v4t4rVFUwqpfRnzRhzyoReYcssjR6fQ4WMMxbhRHNZSJaPxvnykMOZsh7oQy0d6Dy4kENO6nXZptR9g==
|
integrity sha512-2vsRWEHNARe0iRmqgzvM67gwfRy+aKvdef4Qu9L+ndSsTrrZT3tSgG8SMn1v9SfBHnx5G8mo4d1AMquXG69AuQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.7.1"
|
tslib "^1.7.1"
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
parse5 "^5.0.0"
|
parse5 "^5.0.0"
|
||||||
|
|
||||||
"@angular/cli@8.0.0-rc.2":
|
"@angular/cli@8.0.2":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-8.0.0-rc.2.tgz#fda3c42c3682a53168be67c0624db04144c0aa9c"
|
resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-8.0.2.tgz#b64c044342f0af2ed7e78e51c54087693407a47b"
|
||||||
integrity sha512-Aj5JJKa6JxNU3U9InvveIhU8gg6ZA1UvvKHHzX87FsUQhHzm7XIfwC5JrYGDE4c9ErIE40J3we7Hcsv2AjzkTw==
|
integrity sha512-xXSCwTKonC6nMqKPDlEFhXjKBu85jVB+KYo2tLU+RKtgFeIF/hTaUWQTvWXRwRsQAfBhB1cwe0oijdljOItTgw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@angular-devkit/architect" "0.800.0-rc.2"
|
"@angular-devkit/architect" "0.800.2"
|
||||||
"@angular-devkit/core" "8.0.0-rc.2"
|
"@angular-devkit/core" "8.0.2"
|
||||||
"@angular-devkit/schematics" "8.0.0-rc.2"
|
"@angular-devkit/schematics" "8.0.2"
|
||||||
"@schematics/angular" "8.0.0-rc.2"
|
"@schematics/angular" "8.0.2"
|
||||||
"@schematics/update" "0.800.0-rc.2"
|
"@schematics/update" "0.800.2"
|
||||||
"@yarnpkg/lockfile" "1.1.0"
|
"@yarnpkg/lockfile" "1.1.0"
|
||||||
debug "^4.1.1"
|
debug "^4.1.1"
|
||||||
ini "1.3.5"
|
ini "1.3.5"
|
||||||
@ -137,22 +137,23 @@
|
|||||||
npm-package-arg "6.1.0"
|
npm-package-arg "6.1.0"
|
||||||
open "6.2.0"
|
open "6.2.0"
|
||||||
pacote "9.5.0"
|
pacote "9.5.0"
|
||||||
|
read-package-tree "5.2.2"
|
||||||
semver "6.0.0"
|
semver "6.0.0"
|
||||||
symbol-observable "1.2.0"
|
symbol-observable "1.2.0"
|
||||||
universal-analytics "^0.4.20"
|
universal-analytics "^0.4.20"
|
||||||
uuid "^3.3.2"
|
uuid "^3.3.2"
|
||||||
|
|
||||||
"@angular/common@^8.0.0-rc.2":
|
"@angular/common@^8.1.0-next.1":
|
||||||
version "8.0.0-rc.2"
|
version "8.1.0-next.1"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/common/-/common-8.0.0-rc.2.tgz#77b2da22cb11bf2039799d56ec2fb7c4f51a1374"
|
resolved "https://registry.yarnpkg.com/@angular/common/-/common-8.1.0-next.1.tgz#2b6674ad46c13d0e24fedb6f239d338448ca72b0"
|
||||||
integrity sha512-/MUZhebMAkAwV8jkimBONN2eOQ2/5qO54ZvPypyy2tEHk69JRNLFjREaR+VU8yGlS/1MU6jTYxyfRW2c8ggLzA==
|
integrity sha512-sHzv1QIt2g6stXVqIiHpR2yk8goA3nek1FohUWz4H9mE24Knb4qSNvn25wztYdH5n5WPY+jyHyhWrqoXtrPvuQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/compiler-cli@^8.0.0-rc.2":
|
"@angular/compiler-cli@^8.1.0-next.1":
|
||||||
version "8.0.0-rc.2"
|
version "8.1.0-next.1"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-8.0.0-rc.2.tgz#a3ef74f3e4ea448ccf1387c18c32fc664b67b2e1"
|
resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-8.1.0-next.1.tgz#27047724d40a40b172497a0ebc40846a16bc481b"
|
||||||
integrity sha512-lLhedaTQ08/i4aysCPpTYbAP0/8T5/EHE79FByp/7XxqRuQxcXkFJujQT1Q/KReKa0gA9JEYD4I1eBJpNYyMLQ==
|
integrity sha512-pJ5s5cEh/cXasMwUzJLwypoSaDzmAV6tfOKhm3bN6dfSh1bS8jliElIwxgPkqlUv9zo4Io/RZD4KgvwBzD7WSw==
|
||||||
dependencies:
|
dependencies:
|
||||||
canonical-path "1.0.0"
|
canonical-path "1.0.0"
|
||||||
chokidar "^2.1.1"
|
chokidar "^2.1.1"
|
||||||
@ -166,71 +167,71 @@
|
|||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
yargs "13.1.0"
|
yargs "13.1.0"
|
||||||
|
|
||||||
"@angular/compiler@^8.0.0-rc.2":
|
"@angular/compiler@^8.1.0-next.1":
|
||||||
version "8.0.0-rc.2"
|
version "8.1.0-next.1"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-8.0.0-rc.2.tgz#8395c20d2d7e93c6941a45b039e03ae7a6277797"
|
resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-8.1.0-next.1.tgz#e0dadb973b15497d9afccccd1e56ae36c3a32014"
|
||||||
integrity sha512-/NR0EN6wjit2mfgOhWirOjKp+s7lO1QSKhzK3TjYCda1L7Pijo29s3BGMWUSPCRno8zNH5o7Q0mWCC55MBGB4w==
|
integrity sha512-3Qh4cSEPX3C2c+J9xea0CNnoy/UqtCqHzVuslfCdTRrgdCYx2xxcHvmwZHccDyTCTW8bX7C4jjr0Gf1w1lANlg==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/core@^8.0.0-rc.2":
|
"@angular/core@^8.1.0-next.1":
|
||||||
version "8.0.0-rc.2"
|
version "8.1.0-next.1"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/core/-/core-8.0.0-rc.2.tgz#800fd49bbc176f7ee064375b726503c5e6c8387c"
|
resolved "https://registry.yarnpkg.com/@angular/core/-/core-8.1.0-next.1.tgz#ff8c51089a46e5fdaaa77bb65efb1b07aee47d68"
|
||||||
integrity sha512-ImXzoQk8U3IiL75dJWnO/aIGfaExgiqDc6GJYgQ8PvB7ZUkdUOj/a+jd6asMvE52VZJkof5XShhdonTScPcdUA==
|
integrity sha512-i26/UkfTOd+nZuPbUOgGHGSWwl1fghUlLwQHvDqtdMC2VANQOjEyQZrcNHP+N7ZumVdcfxDAisFOMWgnwFzVcw==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/elements@^8.0.0-rc.2":
|
"@angular/elements@^8.1.0-next.1":
|
||||||
version "8.0.0-rc.2"
|
version "8.1.0-next.1"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/elements/-/elements-8.0.0-rc.2.tgz#84ca2aadff66bfcd3c8042492a0c6b87a6a749fa"
|
resolved "https://registry.yarnpkg.com/@angular/elements/-/elements-8.1.0-next.1.tgz#dbe64cc671bf94cafbad4225905f287cdb37ea01"
|
||||||
integrity sha512-7KVPDSGXo33WD+ZQHjmvSXyBa6az6MHIQo3I+wRKUB9pBZNqMa2Dcb7FQp7fq3tQTEpOW6fO52ozxAZ/ybozxA==
|
integrity sha512-exxENgFIgUlKJcCrj0LyiAYPUhu5wNk5XfRCVXxoNIGXgsMtrKGXX5HYrZyRtKJhCwyvkuLg7IjdBzD9KoThrw==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/forms@^8.0.0-rc.2":
|
"@angular/forms@^8.1.0-next.1":
|
||||||
version "8.0.0-rc.2"
|
version "8.1.0-next.1"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-8.0.0-rc.2.tgz#f4db4653470b74cd55508aa83da761309a1d341d"
|
resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-8.1.0-next.1.tgz#5cfee3f7e9ad8add06fe25419b06c8a7f8b9f72d"
|
||||||
integrity sha512-rjjGNVaxwOayuZCpsG8V13RK/h7S6v5ItzG6Ai1agO/em4/riNhEP3+BvxM4Rs1v4AfGOd+LhOeLt5qptj0JKA==
|
integrity sha512-NRiiV06FoMXU99eKv8poKEp1+VQntZnD8ADv4Z9YcU6XhngO09c0K/jmHABGh6oym+GtF2gRocTZ65a2FeUeDw==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/language-service@^8.0.0-rc.2":
|
"@angular/language-service@^8.1.0-next.1":
|
||||||
version "8.0.0-rc.2"
|
version "8.1.0-next.1"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-8.0.0-rc.2.tgz#5b8fd13b7cd9e7cc1c097f92749f05e72b1c7e47"
|
resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-8.1.0-next.1.tgz#35b72dd320b46abe631f209759e5c939d8b2b725"
|
||||||
integrity sha512-PXsntGd053iiM9lJPo7jmjhd5dp6AxugEC4WDTXimZ3vK2Hzv53CnKuVTUGcTWjwazbKAEyG0jiUl4VXptwTAA==
|
integrity sha512-LlpStVhf4GEazD6/6i8DftNndEkrBoTxd6Bi5kFHrDmJB+cT5evVZHomXJcwHjZx31gpcLAot6lr7WCRkmbD0g==
|
||||||
|
|
||||||
"@angular/material@8.0.0-rc.0":
|
"@angular/material@8.0.0":
|
||||||
version "8.0.0-rc.0"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/material/-/material-8.0.0-rc.0.tgz#c5170f9617abba3176e991a1e197e1efa0bff95a"
|
resolved "https://registry.yarnpkg.com/@angular/material/-/material-8.0.0.tgz#21dd15c318d1e29eb4d1a2dd888ddb027897eb49"
|
||||||
integrity sha512-8J+oPHxcoDJnZUE+j5eYDR5FS/zN7RHljK2FtjiG2wsGGRiomnMLQBoFCQL55P1sgqWz3l4vKgi5GuwA65pADQ==
|
integrity sha512-c7O7GhZd46xF2WB6T/YPam5lJkTgQLdIS53IqwZIFhL427+SEfPvejVzRnVfZCI3NdrKiWt/5VsvtQZwWzlGvw==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.7.1"
|
tslib "^1.7.1"
|
||||||
|
|
||||||
"@angular/platform-browser-dynamic@^8.0.0-rc.2":
|
"@angular/platform-browser-dynamic@^8.1.0-next.1":
|
||||||
version "8.0.0-rc.2"
|
version "8.1.0-next.1"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.0.0-rc.2.tgz#86e8e227f19aa9c6ef4439623ce6cf7f2b0cd3b1"
|
resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.1.0-next.1.tgz#6e927d97583ec2bb9a9803c0f5003ef41fc39d9e"
|
||||||
integrity sha512-c4QXgAikQx25AOnNiQUOe/yNJunR95rfTJ5yApcNU76eeCMG9KLFNGGQTg+PmcxZ6UMcw9zp2Tck9vjSb2BZYg==
|
integrity sha512-BDeLlzpg7T2nv3Y6ywQAW+cBAgbSQUku7W1p71vFGqE8p4c79HmKbykGSR1/n7Sez8LV+N1LpliCrNQEgGtBaA==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/platform-browser@^8.0.0-rc.2":
|
"@angular/platform-browser@^8.1.0-next.1":
|
||||||
version "8.0.0-rc.2"
|
version "8.1.0-next.1"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-8.0.0-rc.2.tgz#b40fa05fd32422be499ab3986bc3031374f7c5bc"
|
resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-8.1.0-next.1.tgz#0cf2b04437d190687d7efbaa6b7e9be5f5a076e2"
|
||||||
integrity sha512-ErzIDckIqic9rmqMFk4scRX+lo7AWifOP+IOCot1KGPdQ7+CP/h/neJ9fiIzYTSDYUm5xk5i+2aW+2SWRJYQdA==
|
integrity sha512-EkDgr1wWW2eAd542k46JKb9jIr50M5eiq49QjDVmnjXCS1WNIyiW1TxTpyOiDNz8nK0jHYTzEw+PWEyvmwJV8Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/router@^8.0.0-rc.2":
|
"@angular/router@^8.1.0-next.1":
|
||||||
version "8.0.0-rc.2"
|
version "8.1.0-next.1"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/router/-/router-8.0.0-rc.2.tgz#e0e4636f56fc08760863486f45f203bb9b00543e"
|
resolved "https://registry.yarnpkg.com/@angular/router/-/router-8.1.0-next.1.tgz#b957531748e153ddafb666fd8cd68546a7508e54"
|
||||||
integrity sha512-7NnRdEykm0FJf/SHjUWz3cgGDtW5KM2gKm8it8V8azr3vIiMRYyqhDqCKkhutjt7C+yKNotB5M7Da9uYf0n/xQ==
|
integrity sha512-balgDD3IlsnWs+WWuSAQn3oXULbh44oklqBQgDAl8CX94ki0jDCeVFob57cCflqRx7WjtxB053X9keg6EA2YtA==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@angular/service-worker@^8.0.0-rc.2":
|
"@angular/service-worker@^8.1.0-next.1":
|
||||||
version "8.0.0-rc.2"
|
version "8.1.0-next.1"
|
||||||
resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-8.0.0-rc.2.tgz#e73374fe4ccd8c15790f007832a5e60576ed85d9"
|
resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-8.1.0-next.1.tgz#bf00349b1993a6ecda07b9c08920b16aae176950"
|
||||||
integrity sha512-uudl7+P9Xov9naoW7Ruv0rvvp+jYWe3P3OOpRul8X6tTYarKnorj3F44Y5GoNO5Xxjp0psPSD558rXrrIBt98w==
|
integrity sha512-lctU2Dq96ovsFU/e7vIKUUvg+k5H2w+RHOx8ARlgraCU3T5fYyriQvZ9GH7y86fkAFtSrQ6MX0+pnY5dFUUZ1Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
@ -316,32 +317,32 @@
|
|||||||
through2 "^2.0.0"
|
through2 "^2.0.0"
|
||||||
xdg-basedir "^3.0.0"
|
xdg-basedir "^3.0.0"
|
||||||
|
|
||||||
"@ngtools/webpack@8.0.0-rc.2":
|
"@ngtools/webpack@8.0.2":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-8.0.0-rc.2.tgz#d8321a89b2c14fcb627d3d5e326b4125b283f08c"
|
resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-8.0.2.tgz#d60167b514b531ed6ae308b4911739dd102e41c7"
|
||||||
integrity sha512-0pXtkvbwp53z+BgQwBllyIHjMM082phkM8hFwlEHCbYeWkSRBqDld7HgzXBEwpBe+4MKjtWF2xXbDp/4BdTjOQ==
|
integrity sha512-5P0FHF4p5H/G9xGjOG9meDViXcdW3RPdJa2nX1gGpii3/dhFhmU4pxjKn1Bfs4x+PB9FQQvhSvGIBLNf+B4y5Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@angular-devkit/core" "8.0.0-rc.2"
|
"@angular-devkit/core" "8.0.2"
|
||||||
enhanced-resolve "4.1.0"
|
enhanced-resolve "4.1.0"
|
||||||
rxjs "6.4.0"
|
rxjs "6.4.0"
|
||||||
tree-kill "1.2.1"
|
tree-kill "1.2.1"
|
||||||
webpack-sources "1.3.0"
|
webpack-sources "1.3.0"
|
||||||
|
|
||||||
"@schematics/angular@8.0.0-rc.2":
|
"@schematics/angular@8.0.2":
|
||||||
version "8.0.0-rc.2"
|
version "8.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-8.0.0-rc.2.tgz#94bc9bb68d75e07142a37f4881c287063d460df2"
|
resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-8.0.2.tgz#80d2a4d55f89b0f843f64d38f588ccca4fdf4de2"
|
||||||
integrity sha512-sBIUz2xEBZJxXAiIsJEaTI7G8r1Mc0aI0tNnw0vQLF6sMSaVKJssN2gYg5dmceDXohJtcgdc3hN1xPL6ZpvsdA==
|
integrity sha512-mN9qsoBVpbY1Q7BP8WaiHsyDv+kl5WrIHw/9OASLrGZcoVY7+oj2CfznVq0XRwvVjDtm6ZFor5ruxLF9dQUOSw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@angular-devkit/core" "8.0.0-rc.2"
|
"@angular-devkit/core" "8.0.2"
|
||||||
"@angular-devkit/schematics" "8.0.0-rc.2"
|
"@angular-devkit/schematics" "8.0.2"
|
||||||
|
|
||||||
"@schematics/update@0.800.0-rc.2":
|
"@schematics/update@0.800.2":
|
||||||
version "0.800.0-rc.2"
|
version "0.800.2"
|
||||||
resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.800.0-rc.2.tgz#4ea24343c32f47ee7c2f2404fb67a50331dc8b1a"
|
resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.800.2.tgz#48d23bf60f2870f0887946165cad42c243c4faac"
|
||||||
integrity sha512-oWnxEoscVHfzz0mEvfqwe7hRw4fzsYOmnZEVVLAb62lZQdPQHitflBITI+ubrPmHSgILHoBAWqOYlkuEKVXVAg==
|
integrity sha512-HPjbzr/LfFLdMzi6zMQK8mPyLw+nt+m7OQsdoeOkFgHkHVfHrKQWcOGt4A0D6keDJ6K2g7W5CsqFR6/GMac7Mg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@angular-devkit/core" "8.0.0-rc.2"
|
"@angular-devkit/core" "8.0.2"
|
||||||
"@angular-devkit/schematics" "8.0.0-rc.2"
|
"@angular-devkit/schematics" "8.0.2"
|
||||||
"@yarnpkg/lockfile" "1.1.0"
|
"@yarnpkg/lockfile" "1.1.0"
|
||||||
ini "1.3.5"
|
ini "1.3.5"
|
||||||
pacote "9.5.0"
|
pacote "9.5.0"
|
||||||
@ -1026,7 +1027,7 @@ as-array@^2.0.0:
|
|||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/as-array/-/as-array-2.0.0.tgz#4f04805d87f8fce8e511bc2108f8e5e3a287d547"
|
resolved "https://registry.yarnpkg.com/as-array/-/as-array-2.0.0.tgz#4f04805d87f8fce8e511bc2108f8e5e3a287d547"
|
||||||
|
|
||||||
asap@^2.0.3, asap@~2.0.3:
|
asap@^2.0.0, asap@^2.0.3, asap@~2.0.3:
|
||||||
version "2.0.6"
|
version "2.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
|
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
|
||||||
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
|
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
|
||||||
@ -2700,6 +2701,11 @@ debug@^3.0.0, debug@^3.1.0, debug@^3.2.5, debug@^3.2.6:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ms "^2.1.1"
|
ms "^2.1.1"
|
||||||
|
|
||||||
|
debuglog@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
|
||||||
|
integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
|
||||||
|
|
||||||
decamelize@^1.1.1, decamelize@^1.2.0:
|
decamelize@^1.1.1, decamelize@^1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
|
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
|
||||||
@ -2872,6 +2878,14 @@ detect-node@^2.0.4:
|
|||||||
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
|
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
|
||||||
integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==
|
integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==
|
||||||
|
|
||||||
|
dezalgo@^1.0.0:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456"
|
||||||
|
integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=
|
||||||
|
dependencies:
|
||||||
|
asap "^2.0.0"
|
||||||
|
wrappy "1"
|
||||||
|
|
||||||
dgeni-packages@^0.27.1:
|
dgeni-packages@^0.27.1:
|
||||||
version "0.27.2"
|
version "0.27.2"
|
||||||
resolved "https://registry.yarnpkg.com/dgeni-packages/-/dgeni-packages-0.27.2.tgz#ca1b40147a56668db2f4a2f09a374c6355f45cfa"
|
resolved "https://registry.yarnpkg.com/dgeni-packages/-/dgeni-packages-0.27.2.tgz#ca1b40147a56668db2f4a2f09a374c6355f45cfa"
|
||||||
@ -7077,7 +7091,7 @@ nopt@^4.0.1:
|
|||||||
abbrev "1"
|
abbrev "1"
|
||||||
osenv "^0.1.4"
|
osenv "^0.1.4"
|
||||||
|
|
||||||
normalize-package-data@^2.3.2:
|
normalize-package-data@^2.0.0, normalize-package-data@^2.3.2:
|
||||||
version "2.5.0"
|
version "2.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
|
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
|
||||||
integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
|
integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
|
||||||
@ -8261,6 +8275,29 @@ read-cache@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
pify "^2.3.0"
|
pify "^2.3.0"
|
||||||
|
|
||||||
|
read-package-json@^2.0.0:
|
||||||
|
version "2.0.13"
|
||||||
|
resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.13.tgz#2e82ebd9f613baa6d2ebe3aa72cefe3f68e41f4a"
|
||||||
|
integrity sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg==
|
||||||
|
dependencies:
|
||||||
|
glob "^7.1.1"
|
||||||
|
json-parse-better-errors "^1.0.1"
|
||||||
|
normalize-package-data "^2.0.0"
|
||||||
|
slash "^1.0.0"
|
||||||
|
optionalDependencies:
|
||||||
|
graceful-fs "^4.1.2"
|
||||||
|
|
||||||
|
read-package-tree@5.2.2:
|
||||||
|
version "5.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.2.2.tgz#4b6a0ef2d943c1ea36a578214c9a7f6b7424f7a8"
|
||||||
|
integrity sha512-rW3XWUUkhdKmN2JKB4FL563YAgtINifso5KShykufR03nJ5loGFlkUMe1g/yxmqX073SoYYTsgXu7XdDinKZuA==
|
||||||
|
dependencies:
|
||||||
|
debuglog "^1.0.1"
|
||||||
|
dezalgo "^1.0.0"
|
||||||
|
once "^1.3.0"
|
||||||
|
read-package-json "^2.0.0"
|
||||||
|
readdir-scoped-modules "^1.0.0"
|
||||||
|
|
||||||
read-pkg-up@^1.0.1:
|
read-pkg-up@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
|
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
|
||||||
@ -8363,6 +8400,16 @@ readable-stream@~2.0.0:
|
|||||||
string_decoder "~0.10.x"
|
string_decoder "~0.10.x"
|
||||||
util-deprecate "~1.0.1"
|
util-deprecate "~1.0.1"
|
||||||
|
|
||||||
|
readdir-scoped-modules@^1.0.0:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747"
|
||||||
|
integrity sha1-n6+jfShr5dksuuve4DDcm19AZ0c=
|
||||||
|
dependencies:
|
||||||
|
debuglog "^1.0.1"
|
||||||
|
dezalgo "^1.0.0"
|
||||||
|
graceful-fs "^4.1.2"
|
||||||
|
once "^1.3.0"
|
||||||
|
|
||||||
readdirp@^2.0.0, readdirp@^2.2.1:
|
readdirp@^2.0.0, readdirp@^2.2.1:
|
||||||
version "2.2.1"
|
version "2.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
|
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
|
||||||
@ -8835,10 +8882,10 @@ rxjs@6.4.0, rxjs@^6.4.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
rxjs@^6.5.1:
|
rxjs@^6.5.2:
|
||||||
version "6.5.1"
|
version "6.5.2"
|
||||||
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.1.tgz#f7a005a9386361921b8524f38f54cbf80e5d08f4"
|
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7"
|
||||||
integrity sha512-y0j31WJc83wPu31vS1VlAFW5JGrnGC+j+TtGAa1fRQphy48+fDYiDmX8tjGloToEsMkxnouOg/1IzXGKkJnZMg==
|
integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
|
@ -27,7 +27,6 @@ function testBazel() {
|
|||||||
ng new demo --collection=@angular/bazel --routing --skip-git --skip-install --style=scss
|
ng new demo --collection=@angular/bazel --routing --skip-git --skip-install --style=scss
|
||||||
cd demo
|
cd demo
|
||||||
installLocalPackages
|
installLocalPackages
|
||||||
yarn webdriver-manager update --gecko=false --standalone=false ${CI_CHROMEDRIVER_VERSION_ARG:---versions.chrome 2.45}
|
|
||||||
ng generate component widget --style=css
|
ng generate component widget --style=css
|
||||||
ng build
|
ng build
|
||||||
ng test
|
ng test
|
||||||
@ -42,8 +41,8 @@ function testBazel() {
|
|||||||
function testNonBazel() {
|
function testNonBazel() {
|
||||||
# Replace angular.json that uses Bazel builder with the default generated by CLI
|
# Replace angular.json that uses Bazel builder with the default generated by CLI
|
||||||
mv ./angular.json.bak ./angular.json
|
mv ./angular.json.bak ./angular.json
|
||||||
mv ./tsconfig.json.bak ./tsconfig.json
|
|
||||||
rm -rf dist src/main.dev.ts src/main.prod.ts
|
rm -rf dist src/main.dev.ts src/main.prod.ts
|
||||||
|
yarn webdriver-manager update --gecko=false --standalone=false ${CI_CHROMEDRIVER_VERSION_ARG:---versions.chrome 2.45}
|
||||||
ng build --progress=false
|
ng build --progress=false
|
||||||
ng test --progress=false --watch=false
|
ng test --progress=false --watch=false
|
||||||
ng e2e --configuration=production --webdriver-update=false
|
ng e2e --configuration=production --webdriver-update=false
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
rxjs "6.4.0"
|
rxjs "6.4.0"
|
||||||
|
|
||||||
"@angular/bazel@file:../../dist/packages-dist/bazel":
|
"@angular/bazel@file:../../dist/packages-dist/bazel":
|
||||||
version "8.0.0-beta.13"
|
version "0.0.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@angular-devkit/architect" "^0.800.0-beta.15"
|
"@angular-devkit/architect" "^0.800.0-beta.15"
|
||||||
"@angular-devkit/core" "^8.0.0-beta.15"
|
"@angular-devkit/core" "^8.0.0-beta.15"
|
||||||
@ -40,7 +40,7 @@
|
|||||||
"@types/node" "6.0.84"
|
"@types/node" "6.0.84"
|
||||||
semver "^5.6.0"
|
semver "^5.6.0"
|
||||||
shelljs "0.8.2"
|
shelljs "0.8.2"
|
||||||
tsickle "0.34.3"
|
tsickle "^0.35.0"
|
||||||
|
|
||||||
"@angular/cli@file:../../node_modules/@angular/cli":
|
"@angular/cli@file:../../node_modules/@angular/cli":
|
||||||
version "8.0.0-beta.15"
|
version "8.0.0-beta.15"
|
||||||
@ -62,27 +62,27 @@
|
|||||||
universal-analytics "^0.4.20"
|
universal-analytics "^0.4.20"
|
||||||
uuid "^3.3.2"
|
uuid "^3.3.2"
|
||||||
|
|
||||||
"@bazel/bazel-darwin_x64@0.24.0":
|
"@bazel/bazel-darwin_x64@0.26.1":
|
||||||
version "0.24.0"
|
version "0.26.1"
|
||||||
resolved "https://registry.yarnpkg.com/@bazel/bazel-darwin_x64/-/bazel-darwin_x64-0.24.0.tgz#828ef298d8d542961df388f17b0244f4f4302a74"
|
resolved "https://registry.yarnpkg.com/@bazel/bazel-darwin_x64/-/bazel-darwin_x64-0.26.1.tgz#1b5c69b635e5c2a8c3090fa5f6bcb45735f06045"
|
||||||
integrity sha512-xly44vkcD/fauUb7Lm5Lme4qhEZdkuuyBKSVQUHPbYAGDdbj/W8dupI3bZREkJAgG/WrRU+WXUemMj4U8ZcLcw==
|
integrity sha512-9VjrR+ce+iS9xS1lgeAo1RAPXlxCvez/r3smN1lP4s4YNF0s5LAT0cevIl6Zz2nwyEha/6JvY3v6Euemy36F0w==
|
||||||
|
|
||||||
"@bazel/bazel-linux_x64@0.24.0":
|
"@bazel/bazel-linux_x64@0.26.1":
|
||||||
version "0.24.0"
|
version "0.26.1"
|
||||||
resolved "https://registry.yarnpkg.com/@bazel/bazel-linux_x64/-/bazel-linux_x64-0.24.0.tgz#9ef2e7266833ad2221fe4af4ceb6763d2897e3ff"
|
resolved "https://registry.yarnpkg.com/@bazel/bazel-linux_x64/-/bazel-linux_x64-0.26.1.tgz#04dd194bdcd6b9d45bd865a9a60c280d0d600251"
|
||||||
integrity sha512-p5ylPLWnJZDGbaIFBrtD/tp3Su5rMdzeeNJKU24XyiWQTHVZ3OD3I2Fb0ILCgfBjY8AlA7EtCtOI4hYnAuIOtg==
|
integrity sha512-oZooDxI1C4p7o18zx2Uns2cK/NN2hgF2YSBKH0aVDPAAxQA85h+g124CWDEbsghOdRMSBM0Hd0SSeIqwZcqLSw==
|
||||||
|
|
||||||
"@bazel/bazel-win32_x64@0.24.0":
|
"@bazel/bazel-win32_x64@0.26.1":
|
||||||
version "0.24.0"
|
version "0.26.1"
|
||||||
resolved "https://registry.yarnpkg.com/@bazel/bazel-win32_x64/-/bazel-win32_x64-0.24.0.tgz#02d83113a6c6ed99795a3e41bff5631aa141638d"
|
resolved "https://registry.yarnpkg.com/@bazel/bazel-win32_x64/-/bazel-win32_x64-0.26.1.tgz#9351f07313173b1f98006da8131c94db7aa7c506"
|
||||||
integrity sha512-/bcSEx+GoV/q7H4WM0jazfxTcurSiIIePhRv+d05mxRDcaWwhCO8KzmmZRWH1abW6npvq5tLkbSQi7G7nUBhgg==
|
integrity sha512-0FkOo8+bxw13X2m6ALhXX2241gG9ZXgcLu0E/IbCWy/TmOB5bR0Z73CslszWbXIldVYnANuhFmnkxIa745Du5Q==
|
||||||
|
|
||||||
"@bazel/bazel@file:../../node_modules/@bazel/bazel":
|
"@bazel/bazel@file:../../node_modules/@bazel/bazel":
|
||||||
version "0.24.0"
|
version "0.26.1"
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
"@bazel/bazel-darwin_x64" "0.24.0"
|
"@bazel/bazel-darwin_x64" "0.26.1"
|
||||||
"@bazel/bazel-linux_x64" "0.24.0"
|
"@bazel/bazel-linux_x64" "0.26.1"
|
||||||
"@bazel/bazel-win32_x64" "0.24.0"
|
"@bazel/bazel-win32_x64" "0.26.1"
|
||||||
|
|
||||||
"@microsoft/api-extractor@^7.0.21":
|
"@microsoft/api-extractor@^7.0.21":
|
||||||
version "7.0.22"
|
version "7.0.22"
|
||||||
@ -1610,10 +1610,10 @@ tough-cookie@~2.4.3:
|
|||||||
psl "^1.1.24"
|
psl "^1.1.24"
|
||||||
punycode "^1.4.1"
|
punycode "^1.4.1"
|
||||||
|
|
||||||
tsickle@0.34.3:
|
tsickle@^0.35.0:
|
||||||
version "0.34.3"
|
version "0.35.0"
|
||||||
resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.34.3.tgz#8085067a26d7bff466ddadb2eba18849b49159b8"
|
resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.35.0.tgz#59235df45937c0ec5d072c616c26d2d97fba54b9"
|
||||||
integrity sha512-mb1v3nsr6rYaZky22xj0d6qv4ogAR40Bc6r37jwWOg3bEIO/ZppEFZiEADs/NNVLcWTPgmNmPZgaX5CfAH6oXA==
|
integrity sha512-irsZLX4293YUl9TuwNC5Fy020eLSc4bC3LfKnxnx1oq5wmZD9zSP8qvNNTiwRmf2/rxH+58JINcTARDjuvn+oQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
minimist "^1.2.0"
|
minimist "^1.2.0"
|
||||||
mkdirp "^0.5.1"
|
mkdirp "^0.5.1"
|
||||||
|
1
integration/bazel/.bazelignore
Normal file
1
integration/bazel/.bazelignore
Normal file
@ -0,0 +1 @@
|
|||||||
|
node_modules
|
@ -16,3 +16,7 @@ build --define=compile=legacy
|
|||||||
|
|
||||||
# Don't create symlinks
|
# Don't create symlinks
|
||||||
build --symlink_prefix=/
|
build --symlink_prefix=/
|
||||||
|
|
||||||
|
# Turn on managed directories feature in Bazel
|
||||||
|
# This allows us to avoid installing a second copy of node_modules
|
||||||
|
common --experimental_allow_incremental_repository_updates
|
||||||
|
@ -1,28 +1,30 @@
|
|||||||
workspace(name = "bazel_integration_test")
|
workspace(
|
||||||
|
name = "bazel_integration_test",
|
||||||
|
managed_directories = {"@npm": ["node_modules"]},
|
||||||
|
)
|
||||||
|
|
||||||
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
|
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
|
||||||
|
|
||||||
# Fetch rules_nodejs so we can install our npm dependencies
|
# Fetch rules_nodejs so we can install our npm dependencies
|
||||||
http_archive(
|
http_archive(
|
||||||
name = "build_bazel_rules_nodejs",
|
name = "build_bazel_rules_nodejs",
|
||||||
sha256 = "3a3efbf223f6de733475602844ad3a8faa02abda25ab8cfe1d1ed0db134887cf",
|
sha256 = "e04a82a72146bfbca2d0575947daa60fda1878c8d3a3afe868a8ec39a6b968bb",
|
||||||
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.27.12/rules_nodejs-0.27.12.tar.gz"],
|
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.31.1/rules_nodejs-0.31.1.tar.gz"],
|
||||||
)
|
)
|
||||||
|
|
||||||
# Fetch sass rules for compiling sass files
|
# Fetch sass rules for compiling sass files
|
||||||
|
# TODO: change back to upstream release after https://github.com/bazelbuild/rules_sass/pull/87 merged and released
|
||||||
http_archive(
|
http_archive(
|
||||||
name = "io_bazel_rules_sass",
|
name = "io_bazel_rules_sass",
|
||||||
sha256 = "dbe9fb97d5a7833b2a733eebc78c9c1e3880f676ac8af16e58ccf2139cbcad03",
|
strip_prefix = "rules_sass-9862dfc96a4a1f66fe171ef5e043b29853e8445b",
|
||||||
strip_prefix = "rules_sass-1.11.0",
|
url = "https://github.com/manekinekko/rules_sass/archive/9862dfc96a4a1f66fe171ef5e043b29853e8445b.zip",
|
||||||
url = "https://github.com/bazelbuild/rules_sass/archive/1.11.0.zip",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Check the bazel version and download npm dependencies
|
# Check the bazel version and download npm dependencies
|
||||||
load("@build_bazel_rules_nodejs//:defs.bzl", "check_bazel_version", "node_repositories", "yarn_install")
|
load("@build_bazel_rules_nodejs//:defs.bzl", "check_bazel_version", "node_repositories", "yarn_install")
|
||||||
|
|
||||||
# Bazel version must be at least v0.21.0 because:
|
# Bazel version must be at least the following version because:
|
||||||
# - 0.21.0 Using --incompatible_strict_action_env flag fixes cache when running `yarn bazel`
|
# - 0.26.0 managed_directories feature added which is required for nodejs rules 0.30.0
|
||||||
# (see https://github.com/angular/angular/issues/27514#issuecomment-451438271)
|
|
||||||
check_bazel_version(
|
check_bazel_version(
|
||||||
message = """
|
message = """
|
||||||
You no longer need to install Bazel on your machine.
|
You no longer need to install Bazel on your machine.
|
||||||
@ -31,7 +33,7 @@ Try running `yarn bazel` instead.
|
|||||||
(If you did run that, check that you've got a fresh `yarn install`)
|
(If you did run that, check that you've got a fresh `yarn install`)
|
||||||
|
|
||||||
""",
|
""",
|
||||||
minimum_bazel_version = "0.21.0",
|
minimum_bazel_version = "0.26.0",
|
||||||
)
|
)
|
||||||
|
|
||||||
# Setup the Node.js toolchain
|
# Setup the Node.js toolchain
|
||||||
@ -43,12 +45,8 @@ node_repositories(
|
|||||||
# Install our npm dependencies into @npm
|
# Install our npm dependencies into @npm
|
||||||
yarn_install(
|
yarn_install(
|
||||||
name = "npm",
|
name = "npm",
|
||||||
data = [
|
package_json = "//:package.json",
|
||||||
# Needed because this tsconfig file is used in the "postinstall" script.
|
yarn_lock = "//:yarn.lock",
|
||||||
"//:angular-metadata.tsconfig.json",
|
|
||||||
],
|
|
||||||
package_json = "//src:package.json",
|
|
||||||
yarn_lock = "//src:yarn.lock",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Install all bazel dependencies of our npm packages
|
# Install all bazel dependencies of our npm packages
|
||||||
|
@ -4,14 +4,32 @@
|
|||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@angular/animations": "file:../../dist/packages-dist/animations",
|
||||||
|
"@angular/common": "file:../../dist/packages-dist/common",
|
||||||
|
"@angular/core": "file:../../dist/packages-dist/core",
|
||||||
|
"@angular/platform-browser": "file:../../dist/packages-dist/platform-browser",
|
||||||
|
"@angular/platform-browser-dynamic": "file:../../dist/packages-dist/platform-browser-dynamic",
|
||||||
|
"@angular/router": "file:../../dist/packages-dist/router",
|
||||||
|
"reflect-metadata": "0.1.12",
|
||||||
|
"rxjs": "6.4.0",
|
||||||
|
"tslib": "1.9.3",
|
||||||
|
"zone.js": "0.9.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@bazel/bazel": "file:../../node_modules/@bazel/bazel"
|
"@angular/bazel": "file:../../dist/packages-dist/bazel",
|
||||||
|
"@angular/compiler": "file:../../dist/packages-dist/compiler",
|
||||||
|
"@angular/compiler-cli": "file:../../dist/packages-dist/compiler-cli",
|
||||||
|
"@bazel/bazel": "file:../../node_modules/@bazel/bazel",
|
||||||
|
"@bazel/karma": "0.30.1",
|
||||||
|
"@bazel/typescript": "0.30.1",
|
||||||
|
"@types/jasmine": "2.8.8",
|
||||||
|
"@types/source-map": "0.5.1",
|
||||||
|
"protractor": "5.1.2",
|
||||||
|
"typescript": "3.4.2"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"//": "deps are listed in src/package.json which is used by yarn_install",
|
"test": "bazel build ... --noshow_progress && bazel test ...",
|
||||||
"//": "this package.json file is only here so that `yarn test` can be called by /integration/run_tests.sh",
|
"postinstall": "ngc -p ./angular-metadata.tsconfig.json",
|
||||||
"pretest": "./pretest.sh",
|
"//": "TODO(gregmagolan): figure out how to keep dependencies here up to date with the root package.json"
|
||||||
"test": "bazel build ... --noshow_progress && bazel test ..."
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,20 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -eux -o pipefail
|
|
||||||
# -e: exits if a command fails
|
|
||||||
# -u: errors if an variable is referenced before being set
|
|
||||||
# -x: shows the commands that get run
|
|
||||||
# -o pipefail: causes a pipeline to produce a failure return code if any command errors
|
|
||||||
|
|
||||||
# sedi makes `sed -i` work on both OSX & Linux
|
|
||||||
# See https://stackoverflow.com/questions/2320564/i-need-my-sed-i-command-for-in-place-editing-to-work-with-both-gnu-sed-and-bsd
|
|
||||||
sedi () {
|
|
||||||
case $(uname) in
|
|
||||||
Darwin*) sedi=('-i' '') ;;
|
|
||||||
*) sedi='-i' ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
sed "${sedi[@]}" "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
sedi "s#packages-dist:#file://$PWD/../../dist/packages-dist/#" src/package.json
|
|
@ -47,7 +47,7 @@ ts_devserver(
|
|||||||
|
|
||||||
rollup_bundle(
|
rollup_bundle(
|
||||||
name = "bundle",
|
name = "bundle",
|
||||||
entry_point = "src/main",
|
entry_point = ":main.ts",
|
||||||
deps = [
|
deps = [
|
||||||
"//src",
|
"//src",
|
||||||
# TODO(kyliau): These are not necessary. Bundle compiles fine without
|
# TODO(kyliau): These are not necessary. Bundle compiles fine without
|
||||||
|
@ -25,7 +25,7 @@ ng_module(
|
|||||||
|
|
||||||
ng_package(
|
ng_package(
|
||||||
name = "npm_package",
|
name = "npm_package",
|
||||||
entry_point = "src/hello-world/index.js",
|
entry_point = ":index.ts",
|
||||||
deps = [":hello-world"],
|
deps = [":hello-world"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "angular-bazel",
|
|
||||||
"description": "example and integration test for building Angular apps with Bazel",
|
|
||||||
"version": "0.0.0",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@angular/animations": "packages-dist:animations",
|
|
||||||
"@angular/common": "packages-dist:common",
|
|
||||||
"@angular/core": "packages-dist:core",
|
|
||||||
"@angular/platform-browser": "packages-dist:platform-browser",
|
|
||||||
"@angular/platform-browser-dynamic": "packages-dist:platform-browser-dynamic",
|
|
||||||
"@angular/router": "packages-dist:router",
|
|
||||||
"reflect-metadata": "0.1.12",
|
|
||||||
"rxjs": "6.4.0",
|
|
||||||
"tslib": "1.9.3",
|
|
||||||
"zone.js": "0.9.1"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@angular/bazel": "packages-dist:bazel",
|
|
||||||
"@angular/compiler": "packages-dist:compiler",
|
|
||||||
"@angular/compiler-cli": "packages-dist:compiler-cli",
|
|
||||||
"@bazel/karma": "0.27.12",
|
|
||||||
"@bazel/typescript": "0.27.12",
|
|
||||||
"@types/jasmine": "2.8.8",
|
|
||||||
"@types/source-map": "0.5.1",
|
|
||||||
"protractor": "5.1.2",
|
|
||||||
"typescript": "3.4.2"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"postinstall": "ngc -p ./angular-metadata.tsconfig.json",
|
|
||||||
"//": "TODO(gregmagolan): figure out how to keep dependencies here up to date with the root package.json"
|
|
||||||
}
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user