diff --git a/apps/webapp/ngsw-config.json b/apps/webapp/ngsw-config.json index 52bbd3ef9..bd673f1ed 100644 --- a/apps/webapp/ngsw-config.json +++ b/apps/webapp/ngsw-config.json @@ -12,8 +12,7 @@ "/*.js" ], "urls": [ - "https://cdnjs.cloudflare.com/ajax/libs/trianglify/1.2.0/trianglify.min.js", - "https://www.google-analytics.com/analytics.js" + "https://cdnjs.cloudflare.com/ajax/libs/trianglify/1.2.0/trianglify.min.js" ] } }, { @@ -59,12 +58,14 @@ { "name": "keycloak", "urls": [ - "https://myroute-is360.a3c1.starter-us-west-1.openshiftapps.com/auth/realms/is360/**" + "https://myroute-is360.a3c1.starter-us-west-1.openshiftapps.com/auth/realms/is360/.well-known/openid-configuration", + "https://myroute-is360.a3c1.starter-us-west-1.openshiftapps.com/auth/realms/is360/protocol/openid-connect/certs", + "https://myroute-is360.a3c1.starter-us-west-1.openshiftapps.com/auth/realms/is360/protocol/openid-connect/login-status-iframe.html" ], "cacheConfig": { "strategy": "performance", "maxSize": 100, - "maxAge": "90d" + "maxAge": "30d" } } ] diff --git a/apps/webapp/src/app/app.module.ts b/apps/webapp/src/app/app.module.ts index 8ed2f9eec..3a7a2ea20 100644 --- a/apps/webapp/src/app/app.module.ts +++ b/apps/webapp/src/app/app.module.ts @@ -38,6 +38,7 @@ export class MyHammerConfig extends HammerGestureConfig { initialNavigation: 'enabled', preloadingStrategy: PreloadAllModules, // TODO: PreloadSelectedModulesList paramsInheritanceStrategy: 'always', + // enableTracing: true, // enable to debug routing during development // onSameUrlNavigation: 'reload' }, ), diff --git a/libs/auth/src/lib/auth.state.ts b/libs/auth/src/lib/auth.state.ts index 586b07e76..e03898126 100644 --- a/libs/auth/src/lib/auth.state.ts +++ b/libs/auth/src/lib/auth.state.ts @@ -1,3 +1,4 @@ +import { NgZone } from '@angular/core'; import { Action, Select, Selector, State, StateContext } from '@ngxs/store'; import { Login, @@ -30,7 +31,7 @@ export interface AuthStateModel { }, }) export class AuthState { - constructor(private authService: AuthService, private oauthService: OAuthService, private router: Router) {} + constructor(private authService: AuthService, private oauthService: OAuthService, private router: Router, private zone: NgZone) {} @Selector() static isLoggedIn(state: AuthStateModel) { @@ -54,7 +55,9 @@ export class AuthState { profile: payload, }); this.authService.startAutoRefreshToken(); - this.router.navigate(['/dashboard']); + if (getState().authMode === AuthMode.PasswordFlow) { + this.zone.run(() => this.router.navigate(['/dashboard'])); + } } @Action([LogoutSuccess, LoginCanceled]) @@ -65,7 +68,7 @@ export class AuthState { authMode: getState().authMode, }); this.authService.stopAutoRefreshToken(); - this.router.navigate(['/home']); + this.zone.run(() => this.router.navigate(['/home'])); } @Action(AuthModeChanged) diff --git a/libs/auth/src/lib/oauth.config.ts b/libs/auth/src/lib/oauth.config.ts index 55eef2ace..a25530bf6 100644 --- a/libs/auth/src/lib/oauth.config.ts +++ b/libs/auth/src/lib/oauth.config.ts @@ -35,7 +35,7 @@ export const authConfigImplicit: AuthConfig = { sessionChecksEnabled: true, useIdTokenHintForSilentRefresh: true, // FIXME: use it for debugging only. - timeoutFactor: environment.production ? 0.75 : 0.01, + timeoutFactor: environment.production ? 0.75 : 0.1, }; export const authConfigPassword: AuthConfig = { diff --git a/libs/core/src/lib/services/service-worker.service.ts b/libs/core/src/lib/services/service-worker.service.ts index bf0a16ab1..e5c5a02aa 100644 --- a/libs/core/src/lib/services/service-worker.service.ts +++ b/libs/core/src/lib/services/service-worker.service.ts @@ -16,7 +16,7 @@ export class ServiceWorkerService { this.swUpdate.available.subscribe(event => { // update available: ask the user to reload const snackBarRef = this.snackBar - .open('Newer version of the app is available1', 'Refresh'); + .open('Newer version of the app is available', 'Refresh'); snackBarRef.onAction().subscribe(() => { window.location.reload(true); diff --git a/libs/notifications/src/index.ts b/libs/notifications/src/index.ts index 9dc3be07b..c1012e149 100644 --- a/libs/notifications/src/index.ts +++ b/libs/notifications/src/index.ts @@ -1,2 +1,3 @@ export * from './lib/notifications.module'; export * from './lib/notifications.actions'; +export * from './lib/notifications.service'; diff --git a/libs/notifications/src/lib/notifications.module.ts b/libs/notifications/src/lib/notifications.module.ts index 825ea6e5d..f2a6d65ce 100644 --- a/libs/notifications/src/lib/notifications.module.ts +++ b/libs/notifications/src/lib/notifications.module.ts @@ -8,7 +8,6 @@ import { NotificationsService } from './notifications.service'; @NgModule({ imports: [SharedModule, NgxsModule.forFeature([NotificationsState])], declarations: [NotificationsComponent], - providers: [NotificationsService], exports: [NotificationsComponent], }) export class NotificationsModule {} diff --git a/libs/notifications/src/lib/notifications.service.ts b/libs/notifications/src/lib/notifications.service.ts index eddcc7fae..f0f7344c9 100644 --- a/libs/notifications/src/lib/notifications.service.ts +++ b/libs/notifications/src/lib/notifications.service.ts @@ -7,7 +7,9 @@ import { Observable } from 'rxjs'; import { catchError, finalize, map, retry } from 'rxjs/operators'; import { BrowserFeatureKey, FeatureService } from '@ngx-starter-kit/core'; -@Injectable() +@Injectable({ + providedIn: 'root', +}) export class NotificationsService extends EntityService { public apiBaseUrl = environment.API_BASE_URL; readonly entityPath = 'notifications'; diff --git a/package-lock.json b/package-lock.json index 18473db6d..60e00564f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,16 +15,16 @@ } }, "@angular-devkit/build-angular": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.10.4.tgz", - "integrity": "sha512-dMM7wyZ6mLt27kKaqjnXWv38m+J0bURJncZ8XVOK6qivwEsCTxbWoiDAkx8Rv5Rt1FU1a8zjSG2I47a+HLz4EA==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.10.5.tgz", + "integrity": "sha512-I32FrMnYO5XU33ifOwhefO0tVCD+xHcTcAIprv5MFbSl3sGXI/CVsh9DGjWfyHlUaMlLUOpHQ+VcgeFGTcCVpA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.10.4", - "@angular-devkit/build-optimizer": "0.10.4", - "@angular-devkit/build-webpack": "0.10.4", - "@angular-devkit/core": "7.0.4", - "@ngtools/webpack": "7.0.4", + "@angular-devkit/architect": "0.10.5", + "@angular-devkit/build-optimizer": "0.10.5", + "@angular-devkit/build-webpack": "0.10.5", + "@angular-devkit/core": "7.0.5", + "@ngtools/webpack": "7.0.5", "ajv": "6.5.3", "autoprefixer": "9.1.5", "circular-dependency-plugin": "5.0.2", @@ -70,30 +70,30 @@ }, "dependencies": { "@angular-devkit/architect": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.10.4.tgz", - "integrity": "sha512-GuWSZfzxdEeAOnSOs7g3oUYaRv9qmEKynCQaLroqRWRCki5YrCa2PsoxN3kLyqyRlQAM2abVs3SnZn+Imj5eaQ==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.10.5.tgz", + "integrity": "sha512-QMR09kIWD8YR9VgNQZXMGASV1UbAtygSdXokBj3njNtTif7xdb+bxo6VQBRqjpB8ZZGtUsE+LdJ4LeKafRnzRQ==", "dev": true, "requires": { - "@angular-devkit/core": "7.0.4", + "@angular-devkit/core": "7.0.5", "rxjs": "6.3.3" } }, "@angular-devkit/build-webpack": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.10.4.tgz", - "integrity": "sha512-tp926by+Q+2lBucLmxsqpcj30zfEXTTqd07WhgyQhUZHOvCIt0N5fW9AeA6wdwYqjNVaZEU3BJxqv5rhwP1tVQ==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.10.5.tgz", + "integrity": "sha512-RNhuz/1s6wGVau+dRcQAUbbrt1pexyW8nT/X+uzNd0r/zhOrAPj6ET51Xdkv2V6zaH8frXyPZK9JZL/JrDJsUA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.10.4", - "@angular-devkit/core": "7.0.4", + "@angular-devkit/architect": "0.10.5", + "@angular-devkit/core": "7.0.5", "rxjs": "6.3.3" } }, "@angular-devkit/core": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.4.tgz", - "integrity": "sha512-LzMXoUPLFAPJUCcTeaYrJZNao0otH15RtrpMRTOcgR9TqnnptQqIiRty4T2xQnl4ud33yHOVZ5FoANwDq1rQvQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.5.tgz", + "integrity": "sha512-QaORf9NCnwlHEuMs45Vb/KBf5eO2m+hIdNdIK0MnTaK9SrvhQhg0AFjo2KCPtOjI9eCcvsDz/O7W28CHJrG1iA==", "dev": true, "requires": { "ajv": "6.5.3", @@ -118,31 +118,31 @@ } }, "@angular-devkit/build-ng-packagr": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-ng-packagr/-/build-ng-packagr-0.10.4.tgz", - "integrity": "sha512-+vKUDFsZ/kGzD9Dc0nFMzvKs9PUS1DQY0RQGdQHA4DdgGL+TMgat1oeG+v6tQhS+ur2eYmRjAKdguCIMCQXwxg==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-ng-packagr/-/build-ng-packagr-0.10.5.tgz", + "integrity": "sha512-0ZOiQIUP2dxNNFIgeVnrRVpd2eTTEaOUrrY3oKPIgv4r0PZ2IKZTs3cIC2xE73d/rLXknIevPEe8fw0dgJ2rrg==", "dev": true, "requires": { - "@angular-devkit/architect": "0.10.4", - "@angular-devkit/core": "7.0.4", + "@angular-devkit/architect": "0.10.5", + "@angular-devkit/core": "7.0.5", "rxjs": "6.3.3", "semver": "5.5.1" }, "dependencies": { "@angular-devkit/architect": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.10.4.tgz", - "integrity": "sha512-GuWSZfzxdEeAOnSOs7g3oUYaRv9qmEKynCQaLroqRWRCki5YrCa2PsoxN3kLyqyRlQAM2abVs3SnZn+Imj5eaQ==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.10.5.tgz", + "integrity": "sha512-QMR09kIWD8YR9VgNQZXMGASV1UbAtygSdXokBj3njNtTif7xdb+bxo6VQBRqjpB8ZZGtUsE+LdJ4LeKafRnzRQ==", "dev": true, "requires": { - "@angular-devkit/core": "7.0.4", + "@angular-devkit/core": "7.0.5", "rxjs": "6.3.3" } }, "@angular-devkit/core": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.4.tgz", - "integrity": "sha512-LzMXoUPLFAPJUCcTeaYrJZNao0otH15RtrpMRTOcgR9TqnnptQqIiRty4T2xQnl4ud33yHOVZ5FoANwDq1rQvQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.5.tgz", + "integrity": "sha512-QaORf9NCnwlHEuMs45Vb/KBf5eO2m+hIdNdIK0MnTaK9SrvhQhg0AFjo2KCPtOjI9eCcvsDz/O7W28CHJrG1iA==", "dev": true, "requires": { "ajv": "6.5.3", @@ -161,14 +161,14 @@ } }, "@angular-devkit/build-optimizer": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.10.4.tgz", - "integrity": "sha512-vnXQjpPW2ZFyvwLd2HLWz8JDgpagnF7f8IDHKH6s38r0TP4DTqEAwAfLmOMuz/mjO8l4BMEOFVFVxad/eCRNeA==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.10.5.tgz", + "integrity": "sha512-jhiD/ct7ngzNjT0yNUTT4TUjRzH9ZXdMm3Z4wbTFtKhXfr3bZgvLGKEoq0pIGlnlWq7lrGb8Doue4xcbRKTgmw==", "dev": true, "requires": { "loader-utils": "1.1.0", "source-map": "0.5.6", - "typescript": "3.1.3", + "typescript": "3.1.6", "webpack-sources": "1.2.0" }, "dependencies": { @@ -177,12 +177,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", "dev": true - }, - "typescript": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.3.tgz", - "integrity": "sha512-+81MUSyX+BaSo+u2RbozuQk/UWx6hfG0a5gHu4ANEM4sU96XbuIyAB+rWBW1u70c6a5QuZfuYICn3s2UjuHUpA==", - "dev": true } } }, @@ -211,18 +205,18 @@ } }, "@angular-devkit/schematics": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-7.0.4.tgz", - "integrity": "sha512-KUsqNKScv+VPNKiumMFn0hvU//+iBgz3j6by1Gjz2OuiGewyFo3PYqXLJuIeNdDU9cwLjmMc97i3Lji9Nc8QNw==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-7.0.5.tgz", + "integrity": "sha512-mWtPfBtObXXw5IWnMuOXBLn/Bv2lPxdmSqrCX9chTmxLXlFuv5e6HkzJfuF4BxjRUMaA+OW1qhnsHRJSI+p6sQ==", "requires": { - "@angular-devkit/core": "7.0.4", + "@angular-devkit/core": "7.0.5", "rxjs": "6.3.3" }, "dependencies": { "@angular-devkit/core": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.4.tgz", - "integrity": "sha512-LzMXoUPLFAPJUCcTeaYrJZNao0otH15RtrpMRTOcgR9TqnnptQqIiRty4T2xQnl4ud33yHOVZ5FoANwDq1rQvQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.5.tgz", + "integrity": "sha512-QaORf9NCnwlHEuMs45Vb/KBf5eO2m+hIdNdIK0MnTaK9SrvhQhg0AFjo2KCPtOjI9eCcvsDz/O7W28CHJrG1iA==", "requires": { "ajv": "6.5.3", "chokidar": "2.0.4", @@ -251,16 +245,16 @@ } }, "@angular/cli": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-7.0.4.tgz", - "integrity": "sha512-Fo4XfVp1V/CrP99j+WoV7YA54CyDF8d8GSK9OJJDYk2cBAYgbWu6+EjfhSdXar21cyUoLFG9+OyWUJUNUL7hAg==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-7.0.5.tgz", + "integrity": "sha512-qGFDuO9VQAq+pEPgIyeEdTVa8m2xNYOyvgwp0Z4E51BMBsvzEufT0Vj/U/HuD6a162EOBW1N+Aprpie+swe+MQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.10.4", - "@angular-devkit/core": "7.0.4", - "@angular-devkit/schematics": "7.0.4", - "@schematics/angular": "7.0.4", - "@schematics/update": "0.10.4", + "@angular-devkit/architect": "0.10.5", + "@angular-devkit/core": "7.0.5", + "@angular-devkit/schematics": "7.0.5", + "@schematics/angular": "7.0.5", + "@schematics/update": "0.10.5", "inquirer": "6.2.0", "opn": "5.3.0", "rxjs": "6.3.3", @@ -269,19 +263,19 @@ }, "dependencies": { "@angular-devkit/architect": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.10.4.tgz", - "integrity": "sha512-GuWSZfzxdEeAOnSOs7g3oUYaRv9qmEKynCQaLroqRWRCki5YrCa2PsoxN3kLyqyRlQAM2abVs3SnZn+Imj5eaQ==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.10.5.tgz", + "integrity": "sha512-QMR09kIWD8YR9VgNQZXMGASV1UbAtygSdXokBj3njNtTif7xdb+bxo6VQBRqjpB8ZZGtUsE+LdJ4LeKafRnzRQ==", "dev": true, "requires": { - "@angular-devkit/core": "7.0.4", + "@angular-devkit/core": "7.0.5", "rxjs": "6.3.3" } }, "@angular-devkit/core": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.4.tgz", - "integrity": "sha512-LzMXoUPLFAPJUCcTeaYrJZNao0otH15RtrpMRTOcgR9TqnnptQqIiRty4T2xQnl4ud33yHOVZ5FoANwDq1rQvQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.5.tgz", + "integrity": "sha512-QaORf9NCnwlHEuMs45Vb/KBf5eO2m+hIdNdIK0MnTaK9SrvhQhg0AFjo2KCPtOjI9eCcvsDz/O7W28CHJrG1iA==", "dev": true, "requires": { "ajv": "6.5.3", @@ -292,24 +286,24 @@ } }, "@angular-devkit/schematics": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-7.0.4.tgz", - "integrity": "sha512-KUsqNKScv+VPNKiumMFn0hvU//+iBgz3j6by1Gjz2OuiGewyFo3PYqXLJuIeNdDU9cwLjmMc97i3Lji9Nc8QNw==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-7.0.5.tgz", + "integrity": "sha512-mWtPfBtObXXw5IWnMuOXBLn/Bv2lPxdmSqrCX9chTmxLXlFuv5e6HkzJfuF4BxjRUMaA+OW1qhnsHRJSI+p6sQ==", "dev": true, "requires": { - "@angular-devkit/core": "7.0.4", + "@angular-devkit/core": "7.0.5", "rxjs": "6.3.3" } }, "@schematics/angular": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-7.0.4.tgz", - "integrity": "sha512-OIUnOmst5dkxJtC4YBDFy/8WmNQpPHytO18yRt6QywUrtewTyL+b4CNImAfk6Rpqk+Ww/7UUIQRAmSeHtD/izg==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-7.0.5.tgz", + "integrity": "sha512-a8oWALnxs4+QwapeeBZfVBq1YEs5bdgmErBecCHioonhHidoBZX0GjJWQOH/TN8qA8HenNDf7b07WN7sRAVC1Q==", "dev": true, "requires": { - "@angular-devkit/core": "7.0.4", - "@angular-devkit/schematics": "7.0.4", - "typescript": "3.1.3" + "@angular-devkit/core": "7.0.5", + "@angular-devkit/schematics": "7.0.5", + "typescript": "3.1.6" } }, "semver": { @@ -317,12 +311,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", "dev": true - }, - "typescript": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.3.tgz", - "integrity": "sha512-+81MUSyX+BaSo+u2RbozuQk/UWx6hfG0a5gHu4ANEM4sU96XbuIyAB+rWBW1u70c6a5QuZfuYICn3s2UjuHUpA==", - "dev": true } } }, @@ -694,21 +682,21 @@ } }, "@angular/pwa": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@angular/pwa/-/pwa-0.10.4.tgz", - "integrity": "sha512-jbe/NjSw8k2NANgdiXHkjuGf5TamJs2n7DWS1uc5xy1fswLbV3PuZFa3e+ELcYrumL2yNaG24gh2vRsDOchLng==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@angular/pwa/-/pwa-0.10.5.tgz", + "integrity": "sha512-GFEtSkW7CDEX7G7cybVRDRWj0ZBOImFJ+uyx5/hqnaYM68nrgOMr4tKOqciyU5KYm8cexvjrCB5lrB2z0DFcbg==", "requires": { - "@angular-devkit/core": "7.0.4", - "@angular-devkit/schematics": "7.0.4", - "@schematics/angular": "7.0.4", + "@angular-devkit/core": "7.0.5", + "@angular-devkit/schematics": "7.0.5", + "@schematics/angular": "7.0.5", "parse5-html-rewriting-stream": "5.1.0", "rxjs": "6.3.3" }, "dependencies": { "@angular-devkit/core": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.4.tgz", - "integrity": "sha512-LzMXoUPLFAPJUCcTeaYrJZNao0otH15RtrpMRTOcgR9TqnnptQqIiRty4T2xQnl4ud33yHOVZ5FoANwDq1rQvQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.5.tgz", + "integrity": "sha512-QaORf9NCnwlHEuMs45Vb/KBf5eO2m+hIdNdIK0MnTaK9SrvhQhg0AFjo2KCPtOjI9eCcvsDz/O7W28CHJrG1iA==", "requires": { "ajv": "6.5.3", "chokidar": "2.0.4", @@ -1551,12 +1539,12 @@ "dev": true }, "@ngtools/webpack": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-7.0.4.tgz", - "integrity": "sha512-hnysOG286kpz0lwmTaAdGDhxiBFPEwHzVl5IGE/5yZnnzZxmKfXbqJQzpoWxZROsPUxMY76UAy4BWHc3lRpO/Q==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-7.0.5.tgz", + "integrity": "sha512-KARXUp1SCg6TNGHaXOITiOfbGBJAd7gkdo0OKWF77ARqWb/pSN4rwFV4kxm0CB2kkmJ40JQCQG+TiltX+3Jnqg==", "dev": true, "requires": { - "@angular-devkit/core": "7.0.4", + "@angular-devkit/core": "7.0.5", "enhanced-resolve": "4.1.0", "rxjs": "6.3.3", "tree-kill": "1.2.0", @@ -1564,9 +1552,9 @@ }, "dependencies": { "@angular-devkit/core": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.4.tgz", - "integrity": "sha512-LzMXoUPLFAPJUCcTeaYrJZNao0otH15RtrpMRTOcgR9TqnnptQqIiRty4T2xQnl4ud33yHOVZ5FoANwDq1rQvQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.5.tgz", + "integrity": "sha512-QaORf9NCnwlHEuMs45Vb/KBf5eO2m+hIdNdIK0MnTaK9SrvhQhg0AFjo2KCPtOjI9eCcvsDz/O7W28CHJrG1iA==", "dev": true, "requires": { "ajv": "6.5.3", @@ -1944,19 +1932,19 @@ } }, "@schematics/angular": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-7.0.4.tgz", - "integrity": "sha512-OIUnOmst5dkxJtC4YBDFy/8WmNQpPHytO18yRt6QywUrtewTyL+b4CNImAfk6Rpqk+Ww/7UUIQRAmSeHtD/izg==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-7.0.5.tgz", + "integrity": "sha512-a8oWALnxs4+QwapeeBZfVBq1YEs5bdgmErBecCHioonhHidoBZX0GjJWQOH/TN8qA8HenNDf7b07WN7sRAVC1Q==", "requires": { - "@angular-devkit/core": "7.0.4", - "@angular-devkit/schematics": "7.0.4", - "typescript": "3.1.3" + "@angular-devkit/core": "7.0.5", + "@angular-devkit/schematics": "7.0.5", + "typescript": "3.1.6" }, "dependencies": { "@angular-devkit/core": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.4.tgz", - "integrity": "sha512-LzMXoUPLFAPJUCcTeaYrJZNao0otH15RtrpMRTOcgR9TqnnptQqIiRty4T2xQnl4ud33yHOVZ5FoANwDq1rQvQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.5.tgz", + "integrity": "sha512-QaORf9NCnwlHEuMs45Vb/KBf5eO2m+hIdNdIK0MnTaK9SrvhQhg0AFjo2KCPtOjI9eCcvsDz/O7W28CHJrG1iA==", "requires": { "ajv": "6.5.3", "chokidar": "2.0.4", @@ -1964,22 +1952,17 @@ "rxjs": "6.3.3", "source-map": "0.7.3" } - }, - "typescript": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.3.tgz", - "integrity": "sha512-+81MUSyX+BaSo+u2RbozuQk/UWx6hfG0a5gHu4ANEM4sU96XbuIyAB+rWBW1u70c6a5QuZfuYICn3s2UjuHUpA==" } } }, "@schematics/update": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.10.4.tgz", - "integrity": "sha512-0fdiZq2DRopAquc4XOpTFGJaAXtinl9kUgeUfX/sHBcbjKqCyArdEgA7wYfJAXMGuSyZatAOGVougwNRBIjcDQ==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.10.5.tgz", + "integrity": "sha512-eFpDq+iI5DfCC3HGYtJtCZhk+rEoCAyrxnta3rQeZZbi7Lqg+aA4PZxFIpnI3omqxof+I0EdpwUquAaNcJR5fA==", "dev": true, "requires": { - "@angular-devkit/core": "7.0.4", - "@angular-devkit/schematics": "7.0.4", + "@angular-devkit/core": "7.0.5", + "@angular-devkit/schematics": "7.0.5", "npm-registry-client": "8.6.0", "rxjs": "6.3.3", "semver": "5.5.1", @@ -1987,9 +1970,9 @@ }, "dependencies": { "@angular-devkit/core": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.4.tgz", - "integrity": "sha512-LzMXoUPLFAPJUCcTeaYrJZNao0otH15RtrpMRTOcgR9TqnnptQqIiRty4T2xQnl4ud33yHOVZ5FoANwDq1rQvQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.5.tgz", + "integrity": "sha512-QaORf9NCnwlHEuMs45Vb/KBf5eO2m+hIdNdIK0MnTaK9SrvhQhg0AFjo2KCPtOjI9eCcvsDz/O7W28CHJrG1iA==", "dev": true, "requires": { "ajv": "6.5.3", @@ -2000,12 +1983,12 @@ } }, "@angular-devkit/schematics": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-7.0.4.tgz", - "integrity": "sha512-KUsqNKScv+VPNKiumMFn0hvU//+iBgz3j6by1Gjz2OuiGewyFo3PYqXLJuIeNdDU9cwLjmMc97i3Lji9Nc8QNw==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-7.0.5.tgz", + "integrity": "sha512-mWtPfBtObXXw5IWnMuOXBLn/Bv2lPxdmSqrCX9chTmxLXlFuv5e6HkzJfuF4BxjRUMaA+OW1qhnsHRJSI+p6sQ==", "dev": true, "requires": { - "@angular-devkit/core": "7.0.4", + "@angular-devkit/core": "7.0.5", "rxjs": "6.3.3" } }, @@ -2852,9 +2835,9 @@ "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==" }, "@types/node": { - "version": "10.12.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.3.tgz", - "integrity": "sha512-sfGmOtSMSbQ/AKG8V9xD1gmjquC9awIIZ/Kj309pHb2n3bcRAcGMQv5nJ6gCXZVsneGE4+ve8DXKRCsrg3TFzg==" + "version": "10.12.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.4.tgz", + "integrity": "sha512-0aFZiYCvoxyKP/Mg6PvqBb2UtWGIPf63r6rOAvRBrgyJOfanbL60yUH2U4FSpg+Yn6FW+JVYWtzn6hLTy745Fg==" }, "@types/nodemailer": { "version": "4.6.5", @@ -10819,7 +10802,7 @@ }, "handle-thing": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "resolved": "http://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", "dev": true }, @@ -21750,9 +21733,9 @@ } }, "rxjs-tslint-rules": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/rxjs-tslint-rules/-/rxjs-tslint-rules-4.10.1.tgz", - "integrity": "sha512-GED5I+Aakgh8lgf4wbfMktDfi8EXwIbbceUBu/iY+cBTgiO9skZY524tAb6JvnFPZnAbYvyi19t0iAMnSlZCCw==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/rxjs-tslint-rules/-/rxjs-tslint-rules-4.11.0.tgz", + "integrity": "sha512-db6M2YXcFydih7dLHcPgI73iYkui5QoZXLkKgpuZrs9WRS03JCbESwed4XeL3ZsOaS/JftqfLC6Q2RcOHxBs7w==", "dev": true, "requires": { "@phenomnomnominal/tsquery": "^3.0.0", @@ -22996,9 +22979,9 @@ } }, "spdy-transport": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", - "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.1.tgz", + "integrity": "sha512-q7D8c148escoB3Z7ySCASadkegMmUZW8Wb/Q1u0/XBgDKMO880rLQDj8Twiew/tYi7ghemKUi/whSYOwE17f5Q==", "dev": true, "requires": { "debug": "^2.6.8", @@ -23547,9 +23530,9 @@ } }, "terser": { - "version": "3.10.8", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.10.8.tgz", - "integrity": "sha512-GQJHWJ/vbx0EgRk+lBMONMmKaT+ifeo/XgT/hi3KpzEEFOERVyFuJSVXH8grcmJjiqKY35ds8rBCxvABUeyyuQ==", + "version": "3.10.11", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.10.11.tgz", + "integrity": "sha512-iruZ7j14oBbRYJC5cP0/vTU7YOWjN+J1ZskEGoF78tFzXdkK2hbCL/3TRZN8XB+MuvFhvOHMp7WkOCBO4VEL5g==", "dev": true, "requires": { "commander": "~2.17.1", @@ -23588,9 +23571,9 @@ }, "dependencies": { "cacache": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.2.0.tgz", - "integrity": "sha512-IFWl6lfK6wSeYCHUXh+N1lY72UDrpyrYQJNIVQf48paDuWbv5RbAtJYf/4gUQFObTCHZwdZ5sI8Iw7nqwP6nlQ==", + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.1.tgz", + "integrity": "sha512-2PEw4cRRDu+iQvBTTuttQifacYjLPhET+SYO/gEFMy8uhi+jlJREDAjSF5FWSdV/Aw5h18caHA7vMTw2c+wDzA==", "dev": true, "requires": { "bluebird": "^3.5.1", @@ -24916,9 +24899,9 @@ "dev": true }, "tsutils": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.3.1.tgz", - "integrity": "sha512-reuFQ3/EoMy70YvBPrxe9p7LvA4dCQnvMn+LV8Tv2NKkLCKRHgfB4qFTA9NtWlyYSldTu1dukuquQ3o0mLvsPw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.4.0.tgz", + "integrity": "sha512-lJOYR+rsCnso8k7C/D1IVSgOmJS9Ds8U4P2H7CxBtTf1w227Zg2nk+Fod8AsUzu3msg8AjZVsNBJb5QgCZsBjQ==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -25359,9 +25342,9 @@ "dev": true }, "url-parse": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz", - "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", + "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", "dev": true, "requires": { "querystringify": "^2.0.0", diff --git a/package.json b/package.json index d192949da..097a20c06 100644 --- a/package.json +++ b/package.json @@ -121,7 +121,7 @@ "@angular/material-moment-adapter": "^7.0.3", "@angular/platform-browser": "^7.0.3", "@angular/platform-browser-dynamic": "^7.0.3", - "@angular/pwa": "0.10.4", + "@angular/pwa": "0.10.5", "@angular/router": "^7.0.3", "@angular/service-worker": "^7.0.3", "@fortawesome/angular-fontawesome": "^0.3.0", @@ -187,9 +187,9 @@ "zone.js": "^0.8.26" }, "devDependencies": { - "@angular-devkit/build-angular": "0.10.4", - "@angular-devkit/build-ng-packagr": "0.10.4", - "@angular/cli": "^7.0.4", + "@angular-devkit/build-angular": "0.10.5", + "@angular-devkit/build-ng-packagr": "0.10.5", + "@angular/cli": "^7.0.5", "@angular/compiler-cli": "^7.0.3", "@angular/http": "^7.0.3", "@angular/language-service": "^7.0.3", @@ -208,7 +208,7 @@ "@types/hammerjs": "^2.0.36", "@types/helmet": "^0.0.42", "@types/jest": "^23.3.9", - "@types/node": "^10.12.3", + "@types/node": "^10.12.4", "@types/nodemailer": "^4.6.5", "@types/passport": "0.4.7", "@types/passport-jwt": "^3.0.1", @@ -230,7 +230,7 @@ "nodemon": "^1.18.6", "prettier": "^1.15.1", "rimraf": "^2.6.2", - "rxjs-tslint-rules": "^4.10.1", + "rxjs-tslint-rules": "^4.11.0", "semantic-release": "^15.10.8", "supertest": "^3.3.0", "testcafe": "^0.23.1", diff --git a/stories/faq.md b/stories/awesome.md similarity index 98% rename from stories/faq.md rename to stories/awesome.md index 8570e1492..a2ab74671 100644 --- a/stories/faq.md +++ b/stories/awesome.md @@ -1,5 +1,6 @@ -HOW TO -====== +Awesome +======= +A curated list of awesome Angular resources * How do I use this template projects? > Add your own app along with `default` app and use shared modules in `libs`. @@ -77,6 +78,9 @@ type `ng.profiler.timeChangeDetection();` in console. * How to preload modules? > Read Angular Router: [Preloading Modules](https://vsavkin.com/angular-router-preloading-modules-ba3c75e424cb) +* How to debug router? +> `{ enableTracing: true }` +> Read [debugging router](https://dzone.com/articles/note-to-self-debugging-angular-4-routing) * How to use new `providedIn` Dependency Injection? > Read Total Guide To Angular 6+ Dependency Injection — : [providedIn vs providers: []](https://medium.com/@tomastrajan/total-guide-to-angular-6-dependency-injection-providedin-vs-providers-85b7a347b59f)