ngx-histaff-alpha 2.0.1 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/app/http-interceptors/auth-interceptor.mjs +10 -6
- package/esm2022/lib/app/http-interceptors/base-url-interceptor.mjs +14 -5
- package/esm2022/lib/app/http-interceptors/token-interceptor.mjs +22 -20
- package/esm2022/lib/app/interfaces/IStatisticAuthData.mjs +2 -0
- package/esm2022/lib/app/interfaces/IStatisticSysUser.mjs +2 -0
- package/esm2022/lib/app/libraries/d3/core-statistic-widget/core-statistic-widget.component.mjs +135 -22
- package/esm2022/lib/app/services/app-config.service.mjs +1 -1
- package/esm2022/lib/app/services/app-initialization.service.mjs +3 -2
- package/esm2022/lib/app/services/common-http-request.service.mjs +19 -1
- package/esm2022/lib/app/services/statistic-auth.service.mjs +49 -0
- package/esm2022/lib/app/services/statistic.service.mjs +24 -0
- package/esm2022/public-api.mjs +5 -1
- package/fesm2022/ngx-histaff-alpha.mjs +258 -49
- package/fesm2022/ngx-histaff-alpha.mjs.map +1 -1
- package/lib/app/http-interceptors/auth-interceptor.d.ts +4 -2
- package/lib/app/http-interceptors/base-url-interceptor.d.ts +1 -0
- package/lib/app/http-interceptors/token-interceptor.d.ts +4 -2
- package/lib/app/interfaces/IStatisticAuthData.d.ts +9 -0
- package/lib/app/interfaces/IStatisticSysUser.d.ts +15 -0
- package/lib/app/libraries/d3/core-statistic-widget/core-statistic-widget.component.d.ts +5 -2
- package/lib/app/services/app-config.service.d.ts +1 -1
- package/lib/app/services/common-http-request.service.d.ts +2 -0
- package/lib/app/services/statistic-auth.service.d.ts +21 -0
- package/lib/app/services/statistic.service.d.ts +11 -0
- package/package.json +1 -1
- package/public-api.d.ts +4 -0
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
+
import { InterceptorStatisticHeader } from './base-url-interceptor';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
import * as i1 from "../services/auth.service";
|
|
5
|
+
import * as i2 from "../services/statistic-auth.service";
|
|
4
6
|
export class AuthInterceptor {
|
|
5
|
-
constructor(
|
|
6
|
-
this.
|
|
7
|
+
constructor(authService, statisticAuthService) {
|
|
8
|
+
this.authService = authService;
|
|
9
|
+
this.statisticAuthService = statisticAuthService;
|
|
7
10
|
}
|
|
8
11
|
intercept(req, next) {
|
|
12
|
+
const isStatistic = req.headers.has(InterceptorStatisticHeader);
|
|
9
13
|
// Get the auth token from the service.
|
|
10
|
-
const authToken = this.
|
|
14
|
+
const authToken = isStatistic ? this.statisticAuthService.getAuthorizationToken() : this.authService.getAuthorizationToken();
|
|
11
15
|
if (authToken === undefined) {
|
|
12
16
|
return next.handle(req);
|
|
13
17
|
}
|
|
@@ -19,7 +23,7 @@ export class AuthInterceptor {
|
|
|
19
23
|
// send cloned request with header to the next handler.
|
|
20
24
|
return next.handle(authReq);
|
|
21
25
|
}
|
|
22
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AuthInterceptor, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AuthInterceptor, deps: [{ token: i1.AuthService }, { token: i2.StatisticAuthService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
23
27
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AuthInterceptor, providedIn: 'root' }); }
|
|
24
28
|
}
|
|
25
29
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AuthInterceptor, decorators: [{
|
|
@@ -27,5 +31,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
27
31
|
args: [{
|
|
28
32
|
providedIn: 'root'
|
|
29
33
|
}]
|
|
30
|
-
}], ctorParameters: () => [{ type: i1.AuthService }] });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
}], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.StatisticAuthService }] });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2h0dHAtaW50ZXJjZXB0b3JzL2F1dGgtaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0zQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQU1wRSxNQUFNLE9BQU8sZUFBZTtJQUV4QixZQUNZLFdBQXdCLEVBQ3hCLG9CQUEwQztRQUQxQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO0lBQ2xELENBQUM7SUFFTCxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUU5QyxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBRWhFLHVDQUF1QztRQUN2QyxNQUFNLFNBQVMsR0FBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFOUgsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMzQjtRQUVELDBEQUEwRDtRQUMxRCxrREFBa0Q7UUFDbEQsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUN0QixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDbkUsQ0FBQyxDQUFDO1FBRUgsdURBQXVEO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDOzhHQTFCUSxlQUFlO2tIQUFmLGVBQWUsY0FGWixNQUFNOzsyRkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEh0dHBJbnRlcmNlcHRvciwgSHR0cEhhbmRsZXIsIEh0dHBSZXF1ZXN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbnRlcmNlcHRvclN0YXRpc3RpY0hlYWRlciB9IGZyb20gJy4vYmFzZS11cmwtaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBTdGF0aXN0aWNBdXRoU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0YXRpc3RpYy1hdXRoLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRoSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgc3RhdGlzdGljQXV0aFNlcnZpY2U6IFN0YXRpc3RpY0F1dGhTZXJ2aWNlXHJcbiAgICApIHsgfVxyXG5cclxuICAgIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XHJcblxyXG4gICAgICAgIGNvbnN0IGlzU3RhdGlzdGljID0gcmVxLmhlYWRlcnMuaGFzKEludGVyY2VwdG9yU3RhdGlzdGljSGVhZGVyKTtcclxuXHJcbiAgICAgICAgLy8gR2V0IHRoZSBhdXRoIHRva2VuIGZyb20gdGhlIHNlcnZpY2UuXHJcbiAgICAgICAgY29uc3QgYXV0aFRva2VuID0gIGlzU3RhdGlzdGljID8gdGhpcy5zdGF0aXN0aWNBdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSA6IHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCk7XHJcblxyXG4gICAgICAgIGlmIChhdXRoVG9rZW4gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENsb25lIHRoZSByZXF1ZXN0IGFuZCByZXBsYWNlIHRoZSBvcmlnaW5hbCBoZWFkZXJzIHdpdGhcclxuICAgICAgICAvLyBjbG9uZWQgaGVhZGVycywgdXBkYXRlZCB3aXRoIHRoZSBhdXRob3JpemF0aW9uLlxyXG4gICAgICAgIGNvbnN0IGF1dGhSZXEgPSByZXEuY2xvbmUoe1xyXG4gICAgICAgICAgICBoZWFkZXJzOiByZXEuaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmVhcmVyICcgKyBhdXRoVG9rZW4pXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIHNlbmQgY2xvbmVkIHJlcXVlc3Qgd2l0aCBoZWFkZXIgdG8gdGhlIG5leHQgaGFuZGxlci5cclxuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUoYXV0aFJlcSk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -2,6 +2,7 @@ import { Injectable } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "../services/app-config.service";
|
|
4
4
|
export const InterceptorSkipHeader = 'X-Skip-Interceptor';
|
|
5
|
+
export const InterceptorStatisticHeader = 'X-Statistic-Interceptor';
|
|
5
6
|
export class BaseUrlInterceptor {
|
|
6
7
|
constructor(appConfigService) {
|
|
7
8
|
this.appConfigService = appConfigService;
|
|
@@ -14,10 +15,18 @@ export class BaseUrlInterceptor {
|
|
|
14
15
|
if (!this.appConfigService.BASE_URL) {
|
|
15
16
|
console.error("THE APP LAYPOUT had started rendering before appConfigService.BASE_URL reachs a truely value. Please check AppInitializationService initializing$.next method carefully!!!");
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
if (req.headers.has(InterceptorStatisticHeader)) {
|
|
19
|
+
const addBaseUrlReq = req.clone({
|
|
20
|
+
url: this.appConfigService.BASE_URL_FOR_STATISTIC + req.url
|
|
21
|
+
});
|
|
22
|
+
return next.handle(addBaseUrlReq);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
const addBaseUrlReq = req.clone({
|
|
26
|
+
url: this.appConfigService.BASE_URL + req.url
|
|
27
|
+
});
|
|
28
|
+
return next.handle(addBaseUrlReq);
|
|
29
|
+
}
|
|
21
30
|
}
|
|
22
31
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: BaseUrlInterceptor, deps: [{ token: i1.AppConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
23
32
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: BaseUrlInterceptor, providedIn: 'root' }); }
|
|
@@ -28,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
28
37
|
providedIn: 'root'
|
|
29
38
|
}]
|
|
30
39
|
}], ctorParameters: () => [{ type: i1.AppConfigService }] });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS11cmwtaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9odHRwLWludGVyY2VwdG9ycy9iYXNlLXVybC1pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPM0MsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsb0JBQW9CLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcseUJBQXlCLENBQUM7QUFLcEUsTUFBTSxPQUFPLGtCQUFrQjtJQUUzQixZQUNZLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBRTFDLENBQUM7SUFFTCxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUU5QyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLEVBQUU7WUFDeEMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUMxRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM5QztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFO1lBQ2pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsNEtBQTRLLENBQUMsQ0FBQTtTQUM5TDtRQUVELElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsRUFBRTtZQUM3QyxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUM1QixHQUFHLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixHQUFHLEdBQUcsQ0FBQyxHQUFHO2FBQzlELENBQUMsQ0FBQztZQUNILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNyQzthQUFNO1lBQ0gsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDNUIsR0FBRyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLEdBQUc7YUFDaEQsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQzs4R0E3QlEsa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FGZixNQUFNOzsyRkFFVCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgSHR0cEludGVyY2VwdG9yLCBIdHRwSGFuZGxlciwgSHR0cFJlcXVlc3RcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBjb25zdCBJbnRlcmNlcHRvclNraXBIZWFkZXIgPSAnWC1Ta2lwLUludGVyY2VwdG9yJztcclxuZXhwb3J0IGNvbnN0IEludGVyY2VwdG9yU3RhdGlzdGljSGVhZGVyID0gJ1gtU3RhdGlzdGljLUludGVyY2VwdG9yJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZVVybEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UsXHJcblxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xyXG5cclxuICAgICAgICBpZiAocmVxLmhlYWRlcnMuaGFzKEludGVyY2VwdG9yU2tpcEhlYWRlcikpIHtcclxuICAgICAgICAgICAgY29uc3QgaGVhZGVycyA9IHJlcS5oZWFkZXJzLmRlbGV0ZShJbnRlcmNlcHRvclNraXBIZWFkZXIpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxLmNsb25lKHsgaGVhZGVycyB9KSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuYXBwQ29uZmlnU2VydmljZS5CQVNFX1VSTCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVEhFIEFQUCBMQVlQT1VUIGhhZCBzdGFydGVkIHJlbmRlcmluZyBiZWZvcmUgYXBwQ29uZmlnU2VydmljZS5CQVNFX1VSTCByZWFjaHMgYSB0cnVlbHkgdmFsdWUuIFBsZWFzZSBjaGVjayBBcHBJbml0aWFsaXphdGlvblNlcnZpY2UgaW5pdGlhbGl6aW5nJC5uZXh0IG1ldGhvZCBjYXJlZnVsbHkhISFcIilcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXEuaGVhZGVycy5oYXMoSW50ZXJjZXB0b3JTdGF0aXN0aWNIZWFkZXIpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFkZEJhc2VVcmxSZXEgPSByZXEuY2xvbmUoe1xyXG4gICAgICAgICAgICAgICAgdXJsOiB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQkFTRV9VUkxfRk9SX1NUQVRJU1RJQyArIHJlcS51cmxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShhZGRCYXNlVXJsUmVxKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBhZGRCYXNlVXJsUmVxID0gcmVxLmNsb25lKHtcclxuICAgICAgICAgICAgICAgIHVybDogdGhpcy5hcHBDb25maWdTZXJ2aWNlLkJBU0VfVVJMICsgcmVxLnVybFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKGFkZEJhc2VVcmxSZXEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
|
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Tannv: This code is based on the original blog post of Alexandru Bereghici
|
|
3
|
-
https://itnext.io/angular-tutorial-implement-refresh-token-with-httpinterceptor-bfa27b966f57
|
|
4
|
-
*/
|
|
5
1
|
import { filter, finalize, switchMap, tap, take } from 'rxjs/operators';
|
|
6
2
|
import { Injectable } from '@angular/core';
|
|
7
3
|
import { BehaviorSubject, throwError, catchError } from 'rxjs';
|
|
4
|
+
import { InterceptorStatisticHeader } from "./base-url-interceptor";
|
|
8
5
|
import { HttpResponse } from '@angular/common/http';
|
|
9
6
|
import * as i0 from "@angular/core";
|
|
10
7
|
import * as i1 from "../services/auth.service";
|
|
11
|
-
import * as i2 from "../services/
|
|
12
|
-
import * as i3 from "
|
|
8
|
+
import * as i2 from "../services/statistic-auth.service";
|
|
9
|
+
import * as i3 from "../services/app-initialization.service";
|
|
10
|
+
import * as i4 from "@angular/router";
|
|
13
11
|
export class TokenInterceptor {
|
|
14
12
|
addAuthenticationToken(request) {
|
|
15
|
-
|
|
16
|
-
const
|
|
13
|
+
const isStatistic = request.headers.has(InterceptorStatisticHeader);
|
|
14
|
+
const authService = isStatistic ? this.statisticAuthService : this.auth;
|
|
15
|
+
const accessToken = authService.getAuthorizationToken();
|
|
17
16
|
// If access token is null this means that user is not logged in
|
|
18
17
|
// And we return the original request
|
|
19
18
|
if (!accessToken) {
|
|
@@ -24,8 +23,9 @@ export class TokenInterceptor {
|
|
|
24
23
|
headers: request.headers.set('Authorization', 'Bearer ' + accessToken)
|
|
25
24
|
});
|
|
26
25
|
}
|
|
27
|
-
constructor(
|
|
28
|
-
this.
|
|
26
|
+
constructor(auth, statisticAuthService, appInitializationService, router) {
|
|
27
|
+
this.auth = auth;
|
|
28
|
+
this.statisticAuthService = statisticAuthService;
|
|
29
29
|
this.appInitializationService = appInitializationService;
|
|
30
30
|
this.router = router;
|
|
31
31
|
this.refreshTokenInProgress = false;
|
|
@@ -34,6 +34,8 @@ export class TokenInterceptor {
|
|
|
34
34
|
this.refreshTokenSubject = new BehaviorSubject(null);
|
|
35
35
|
}
|
|
36
36
|
intercept(req, next) {
|
|
37
|
+
const isStatistic = req.headers.has(InterceptorStatisticHeader);
|
|
38
|
+
const authService = isStatistic ? this.statisticAuthService : this.auth;
|
|
37
39
|
if (req.url === undefined) {
|
|
38
40
|
return next.handle(req);
|
|
39
41
|
}
|
|
@@ -74,9 +76,9 @@ export class TokenInterceptor {
|
|
|
74
76
|
if (req.url.toUpperCase().includes('REFRESH_TOKEN') ||
|
|
75
77
|
req.url.toUpperCase().includes('REFRESHTOKEN')) {
|
|
76
78
|
this.appInitializationService.initializing$.next(false);
|
|
77
|
-
|
|
79
|
+
authService.userLogout().subscribe(x => {
|
|
78
80
|
if (x.ok && x.status === 200) {
|
|
79
|
-
|
|
81
|
+
authService.postLogout();
|
|
80
82
|
}
|
|
81
83
|
});
|
|
82
84
|
}
|
|
@@ -108,7 +110,7 @@ export class TokenInterceptor {
|
|
|
108
110
|
this.refreshTokenSubject.next(null);
|
|
109
111
|
// Call auth.refreshAccessToken
|
|
110
112
|
// (this is an Observable that will be returned)
|
|
111
|
-
const refreshTokenReq =
|
|
113
|
+
const refreshTokenReq = authService.tryRestoreSession();
|
|
112
114
|
return refreshTokenReq.pipe(
|
|
113
115
|
/*
|
|
114
116
|
The main difference between switchMap and other flattening operators is the cancelling effect. On each emission the previous inner observable (the result of the function you supplied) is cancelled and the new observable is subscribed. You can remember this by the phrase switch to a new observable.
|
|
@@ -116,8 +118,8 @@ export class TokenInterceptor {
|
|
|
116
118
|
switchMap((response) => {
|
|
117
119
|
let token = '';
|
|
118
120
|
if (response.ok && response.status === 200) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
+
authService.data$.next(response.body);
|
|
122
|
+
authService.authenticated$.next(true);
|
|
121
123
|
token = response.body.jwtToken;
|
|
122
124
|
}
|
|
123
125
|
// When the call to refreshToken completes
|
|
@@ -131,9 +133,9 @@ export class TokenInterceptor {
|
|
|
131
133
|
this.refreshTokenInProgress = false;
|
|
132
134
|
console.log("refreshTokenReq catchError", err);
|
|
133
135
|
debugger;
|
|
134
|
-
|
|
136
|
+
authService.userLogout().subscribe(x => {
|
|
135
137
|
if (x.ok && x.status === 200) {
|
|
136
|
-
|
|
138
|
+
authService.postLogout();
|
|
137
139
|
}
|
|
138
140
|
});
|
|
139
141
|
return throwError(() => new Error(err));
|
|
@@ -143,10 +145,10 @@ export class TokenInterceptor {
|
|
|
143
145
|
// Log when response observable either completes or errors
|
|
144
146
|
finalize(() => { }));
|
|
145
147
|
}
|
|
146
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: TokenInterceptor, deps: [{ token: i1.AuthService }, { token: i2.
|
|
148
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: TokenInterceptor, deps: [{ token: i1.AuthService }, { token: i2.StatisticAuthService }, { token: i3.AppInitializationService }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
147
149
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: TokenInterceptor }); }
|
|
148
150
|
}
|
|
149
151
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: TokenInterceptor, decorators: [{
|
|
150
152
|
type: Injectable
|
|
151
|
-
}], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4taW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9odHRwLWludGVyY2VwdG9ycy90b2tlbi1pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0VBR0U7QUFFRixPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLGVBQWUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTzNFLE9BQU8sRUFDd0MsWUFBWSxFQUMxRCxNQUFNLHNCQUFzQixDQUFDOzs7OztBQUc5QixNQUFNLE9BQU8sZ0JBQWdCO0lBRXpCLHNCQUFzQixDQUFDLE9BQXlCO1FBQzVDLHNDQUFzQztRQUN0QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFN0QsZ0VBQWdFO1FBQ2hFLHFDQUFxQztRQUNyQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2QsT0FBTyxPQUFPLENBQUM7U0FDbEI7UUFFRCxrRUFBa0U7UUFDbEUsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ2pCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsU0FBUyxHQUFHLFdBQVcsQ0FBQztTQUN6RSxDQUFDLENBQUM7SUFDUCxDQUFDO0lBU0QsWUFDWSxXQUF3QixFQUN4Qix3QkFBa0QsRUFDbEQsTUFBYztRQUZkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsV0FBTSxHQUFOLE1BQU0sQ0FB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IjpbIi8qXHJcblRhbm52OiBUaGlzIGNvZGUgaXMgYmFzZWQgb24gdGhlIG9yaWdpbmFsIGJsb2cgcG9zdCBvZiBBbGV4YW5kcnUgQmVyZWdoaWNpXHJcbmh0dHBzOi8vaXRuZXh0LmlvL2FuZ3VsYXItdHV0b3JpYWwtaW1wbGVtZW50LXJlZnJlc2gtdG9rZW4td2l0aC1odHRwaW50ZXJjZXB0b3ItYmZhMjdiOTY2ZjU3XHJcbiovXHJcblxyXG5pbXBvcnQgeyBmaWx0ZXIsIGZpbmFsaXplLCBzd2l0Y2hNYXAsIHRhcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIHRocm93RXJyb3IsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBJbml0aWFsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcHAtaW5pdGlhbGl6YXRpb24uc2VydmljZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgSHR0cEludGVyY2VwdG9yLCBIdHRwSGFuZGxlciwgSHR0cFJlcXVlc3QsIEh0dHBSZXNwb25zZVxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRva2VuSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xyXG5cclxuICAgIGFkZEF1dGhlbnRpY2F0aW9uVG9rZW4ocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55Pik6IEh0dHBSZXF1ZXN0PGFueT4ge1xyXG4gICAgICAgIC8vIEdldCBhY2Nlc3MgdG9rZW4gZnJvbSBMb2NhbCBTdG9yYWdlXHJcbiAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpO1xyXG5cclxuICAgICAgICAvLyBJZiBhY2Nlc3MgdG9rZW4gaXMgbnVsbCB0aGlzIG1lYW5zIHRoYXQgdXNlciBpcyBub3QgbG9nZ2VkIGluXHJcbiAgICAgICAgLy8gQW5kIHdlIHJldHVybiB0aGUgb3JpZ2luYWwgcmVxdWVzdFxyXG4gICAgICAgIGlmICghYWNjZXNzVG9rZW4pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3Q7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBXZSBjbG9uZSB0aGUgcmVxdWVzdCwgYmVjYXVzZSB0aGUgb3JpZ2luYWwgcmVxdWVzdCBpcyBpbW11dGFibGVcclxuICAgICAgICByZXR1cm4gcmVxdWVzdC5jbG9uZSh7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmVhcmVyICcgKyBhY2Nlc3NUb2tlbilcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlZnJlc2hUb2tlbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgIC8vIFJlZnJlc2ggVG9rZW4gU3ViamVjdCB0cmFja3MgdGhlIGN1cnJlbnQgdG9rZW4sIFxyXG4gICAgLy8gb3IgaXMgbnVsbCBpZiBubyB0b2tlbiBpcyBjdXJyZW50bHkgYXZhaWxhYmxlIChlLmcuIHJlZnJlc2ggcGVuZGluZykuXHJcbiAgICBwcml2YXRlIHJlZnJlc2hUb2tlblN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KFxyXG4gICAgICAgIG51bGxcclxuICAgICk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBhcHBJbml0aWFsaXphdGlvblNlcnZpY2U6IEFwcEluaXRpYWxpemF0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuXHJcbiAgICAgICAgaWYgKHJlcS51cmwgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXEudXJsLmluY2x1ZGVzKFwiYXBwLmNvbmZpZy5qc29uXCIpKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYXBwLmNvbmZpZy5qc29uIGV4Y2x1ZGVkXCIpXHJcbiAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogV0hZPz8/XHJcbiAgICAgICAgaWYgKHJlcS51cmwuaW5jbHVkZXMoXCJHZW5lcmF0ZVRlbXBsYXRlXCIpKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGVUZW1wbGF0ZSBleGNsdWRlZFwiKVxyXG4gICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlcS51cmwuaW5jbHVkZXMoXCJFeHBvcnRDb3JlUGFnZUxpc3RHcmlkVG9FeGNlbFwiKSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkV4cG9ydENvcmVQYWdlTGlzdEdyaWRUb0V4Y2VsIGV4Y2x1ZGVkXCIpXHJcbiAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAqL1xyXG5cclxuICAgICAgICBsZXQgb2s6IHN0cmluZztcclxuICAgICAgICAvLyBleHRlbmQgc2VydmVyIHJlc3BvbnNlIG9ic2VydmFibGUgd2l0aCBsb2dnaW5nXHJcbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YXAoe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFN1Y2NlZWRzIHdoZW4gdGhlcmUgaXMgYSByZXNwb25zZTsgaWdub3JlIG90aGVyIGV2ZW50c1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHQ6IGV2ZW50ID0+IChvayA9IGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlID8gJ3N1Y2NlZWRlZCcgOiAnJyksXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+IHsgfSAvLyB3ZSBkbyBub3QgaW1wbGVtZW50IHRoZSBsb2dpYyBoZXJlXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIC8vIEJ1dCBoZXJlOlxyXG4gICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9uIGZhaWxlZDsgZXJyb3IgaXMgYW4gSHR0cEVycm9yUmVzcG9uc2VcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJUb2tlbkludGVyY2VwdG9yIEVycm9yOiBcIiwgcmVxLCByZXNwb25zZSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byByZWZyZXNoIHRva2VuIGZvciBzb21lIHJlcXVlc3RzIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGxpa2UgbG9naW4gb3IgcmVmcmVzaCB0b2tlbiBpdHNlbGZcclxuICAgICAgICAgICAgICAgICAgICAvLyBTbyB3ZSB2ZXJpZnkgdXJsIGFuZCB3ZSB0aHJvdyBhbiBlcnJvciBpZiBpdCdzIHRoZSBjYXNlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXEudXJsLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMoJ0xPR0lOJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxLnVybC50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKCdSRUZSRVNIX1RPS0VOJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxLnVybC50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKCdSRUZSRVNIVE9LRU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBkbyBhbm90aGVyIGNoZWNrIHRvIHNlZSBpZiByZWZyZXNoIHRva2VuIGZhaWxlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBsb2dvdXQgdXNlciBhbmQgdG8gcmVkaXJlY3QgaXQgdG8gbG9naW4gcGFnZVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxLnVybC50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKCdSRUZSRVNIX1RPS0VOJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcS51cmwudG9VcHBlckNhc2UoKS5pbmNsdWRlcygnUkVGUkVTSFRPS0VOJylcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBJbml0aWFsaXphdGlvblNlcnZpY2UuaW5pdGlhbGl6aW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UudXNlckxvZ291dCgpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UucG9zdExvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgZXJyb3Igc3RhdHVzIGlzIGRpZmZlcmVudCB0aGFuIDQwMSBcclxuICAgICAgICAgICAgICAgICAgICAvLyB3ZSB3YW50IHRvIHNraXAgcmVmcmVzaCB0b2tlblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFNvIHdlIGNoZWNrIHRoYXQgYW5kIHRocm93IHRoZSBlcnJvciBpZiBpdCdzIHRoZSBjYXNlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gNDAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihyZXNwb25zZS5lcnJvcikpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVmcmVzaFRva2VuSW5Qcm9ncmVzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiByZWZyZXNoVG9rZW5JblByb2dyZXNzIGlzIHRydWUsIHdlIHdpbGwgd2FpdCB1bnRpbCByZWZyZXNoVG9rZW5TdWJqZWN0IGhhcyBhIG5vbi1udWxsIHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOKAkyB3aGljaCBtZWFucyB0aGUgbmV3IHRva2VuIGlzIHJlYWR5IGFuZCB3ZSBjYW4gcmV0cnkgdGhlIHJlcXVlc3QgYWdhaW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuU3ViamVjdC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmlsdGVyOiBFbWl0IHZhbHVlcyB0aGF0IHBhc3MgdGhlIHByb3ZpZGVkIGNvbmRpdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQgIT09IG51bGwpLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIHN3aXRjaE1hcCBhbmQgb3RoZXIgZmxhdHRlbmluZyBvcGVyYXRvcnMgaXMgdGhlIGNhbmNlbGxpbmcgZWZmZWN0LiBPbiBlYWNoIGVtaXNzaW9uIHRoZSBwcmV2aW91cyBpbm5lciBvYnNlcnZhYmxlICh0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiB5b3Ugc3VwcGxpZWQpIGlzIGNhbmNlbGxlZCBhbmQgdGhlIG5ldyBvYnNlcnZhYmxlIGlzIHN1YnNjcmliZWQuIFlvdSBjYW4gcmVtZW1iZXIgdGhpcyBieSB0aGUgcGhyYXNlIHN3aXRjaCB0byBhIG5ldyBvYnNlcnZhYmxlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiBuZXh0LmhhbmRsZSh0aGlzLmFkZEF1dGhlbnRpY2F0aW9uVG9rZW4ocmVxKSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlc3BvbnNlLmVycm9yPy5tZXNzYWdlPy50b1VwcGVyQ2FzZSgpIHx8IHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5JblByb2dyZXNzID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgcmVmcmVzaFRva2VuU3ViamVjdCB0byBudWxsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyB0aGF0IHN1YnNlcXVlbnQgQVBJIGNhbGxzIHdpbGwgd2FpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB1bnRpbCB0aGUgbmV3IHRva2VuIGhhcyBiZWVuIHJldHJpZXZlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QubmV4dChudWxsKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbGwgYXV0aC5yZWZyZXNoQWNjZXNzVG9rZW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHRoaXMgaXMgYW4gT2JzZXJ2YWJsZSB0aGF0IHdpbGwgYmUgcmV0dXJuZWQpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZyZXNoVG9rZW5SZXEgPSB0aGlzLmF1dGhTZXJ2aWNlLnRyeVJlc3RvcmVTZXNzaW9uKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVmcmVzaFRva2VuUmVxLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIHN3aXRjaE1hcCBhbmQgb3RoZXIgZmxhdHRlbmluZyBvcGVyYXRvcnMgaXMgdGhlIGNhbmNlbGxpbmcgZWZmZWN0LiBPbiBlYWNoIGVtaXNzaW9uIHRoZSBwcmV2aW91cyBpbm5lciBvYnNlcnZhYmxlICh0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiB5b3Ugc3VwcGxpZWQpIGlzIGNhbmNlbGxlZCBhbmQgdGhlIG5ldyBvYnNlcnZhYmxlIGlzIHN1YnNjcmliZWQuIFlvdSBjYW4gcmVtZW1iZXIgdGhpcyBieSB0aGUgcGhyYXNlIHN3aXRjaCB0byBhIG5ldyBvYnNlcnZhYmxlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0b2tlbiA9ICcnO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uub2sgJiYgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5kYXRhJC5uZXh0KHJlc3BvbnNlLmJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZWQkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gcmVzcG9uc2UuYm9keS5qd3RUb2tlbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGNhbGwgdG8gcmVmcmVzaFRva2VuIGNvbXBsZXRlcyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSByZXNldCB0aGUgcmVmcmVzaFRva2VuSW5Qcm9ncmVzcyB0byBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciB0aGUgbmV4dCB0aW1lIHRoZSB0b2tlbiBuZWVkcyB0byBiZSByZWZyZXNoZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QubmV4dCh0b2tlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3UmVxID0gdGhpcy5hZGRBdXRoZW50aWNhdGlvblRva2VuKHJlcSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKG5ld1JlcSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5JblByb2dyZXNzID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwicmVmcmVzaFRva2VuUmVxIGNhdGNoRXJyb3JcIiwgZXJyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS51c2VyTG9nb3V0KCkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnBvc3RMb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihlcnIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIC8vIExvZyB3aGVuIHJlc3BvbnNlIG9ic2VydmFibGUgZWl0aGVyIGNvbXBsZXRlcyBvciBlcnJvcnNcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHsgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbn0iXX0=
|
|
153
|
+
}], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.StatisticAuthService }, { type: i3.AppInitializationService }, { type: i4.Router }] });
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4taW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9odHRwLWludGVyY2VwdG9ycy90b2tlbi1pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLGVBQWUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTTNFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3BFLE9BQU8sRUFDd0MsWUFBWSxFQUMxRCxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7QUFHOUIsTUFBTSxPQUFPLGdCQUFnQjtJQUV6QixzQkFBc0IsQ0FBQyxPQUF5QjtRQUU1QyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRXhFLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRXhELGdFQUFnRTtRQUNoRSxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNkLE9BQU8sT0FBTyxDQUFDO1NBQ2xCO1FBRUQsa0VBQWtFO1FBQ2xFLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNqQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxF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LFVBQVUsRUFBRSxDQUFDO3lCQUM1QjtvQkFDTCxDQUFDLENBQUMsQ0FBQTtvQkFFRixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDLENBQUMsQ0FDTCxDQUFBO2FBQ0o7UUFDTCxDQUFDLENBQUM7UUFDRiwwREFBMEQ7UUFDMUQsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUN0QixDQUFDO0lBQ1YsQ0FBQzs4R0FwTFEsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXIsIGZpbmFsaXplLCBzd2l0Y2hNYXAsIHRhcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIHRocm93RXJyb3IsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBJbml0aWFsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcHAtaW5pdGlhbGl6YXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEludGVyY2VwdG9yU3RhdGlzdGljSGVhZGVyIH0gZnJvbSBcIi4vYmFzZS11cmwtaW50ZXJjZXB0b3JcIjtcclxuaW1wb3J0IHsgU3RhdGlzdGljQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zdGF0aXN0aWMtYXV0aC5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBIdHRwSW50ZXJjZXB0b3IsIEh0dHBIYW5kbGVyLCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVG9rZW5JbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcblxyXG4gICAgYWRkQXV0aGVudGljYXRpb25Ub2tlbihyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KTogSHR0cFJlcXVlc3Q8YW55PiB7XHJcblxyXG4gICAgICAgIGNvbnN0IGlzU3RhdGlzdGljID0gcmVxdWVzdC5oZWFkZXJzLmhhcyhJbnRlcmNlcHRvclN0YXRpc3RpY0hlYWRlcik7XHJcbiAgICAgICAgY29uc3QgYXV0aFNlcnZpY2UgPSBpc1N0YXRpc3RpYyA/IHRoaXMuc3RhdGlzdGljQXV0aFNlcnZpY2UgOiB0aGlzLmF1dGg7XHJcblxyXG4gICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCk7XHJcblxyXG4gICAgICAgIC8vIElmIGFjY2VzcyB0b2tlbiBpcyBudWxsIHRoaXMgbWVhbnMgdGhhdCB1c2VyIGlzIG5vdCBsb2dnZWQgaW5cclxuICAgICAgICAvLyBBbmQgd2UgcmV0dXJuIHRoZSBvcmlnaW5hbCByZXF1ZXN0XHJcbiAgICAgICAgaWYgKCFhY2Nlc3NUb2tlbikge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFdlIGNsb25lIHRoZSByZXF1ZXN0LCBiZWNhdXNlIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGlzIGltbXV0YWJsZVxyXG4gICAgICAgIHJldHVybiByZXF1ZXN0LmNsb25lKHtcclxuICAgICAgICAgICAgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsICdCZWFyZXIgJyArIGFjY2Vzc1Rva2VuKVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVmcmVzaFRva2VuSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgLy8gUmVmcmVzaCBUb2tlbiBTdWJqZWN0IHRyYWNrcyB0aGUgY3VycmVudCB0b2tlbiwgXHJcbiAgICAvLyBvciBpcyBudWxsIGlmIG5vIHRva2VuIGlzIGN1cnJlbnRseSBhdmFpbGFibGUgKGUuZy4gcmVmcmVzaCBwZW5kaW5nKS5cclxuICAgIHByaXZhdGUgcmVmcmVzaFRva2VuU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oXHJcbiAgICAgICAgbnVsbFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGF1dGg6IEF1dGhTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgc3RhdGlzdGljQXV0aFNlcnZpY2U6IFN0YXRpc3RpY0F1dGhTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgYXBwSW5pdGlhbGl6YXRpb25TZXJ2aWNlOiBBcHBJbml0aWFsaXphdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcblxyXG4gICAgICAgIGNvbnN0IGlzU3RhdGlzdGljID0gcmVxLmhlYWRlcnMuaGFzKEludGVyY2VwdG9yU3RhdGlzdGljSGVhZGVyKTtcclxuICAgICAgICBjb25zdCBhdXRoU2VydmljZSA9IGlzU3RhdGlzdGljID8gdGhpcy5zdGF0aXN0aWNBdXRoU2VydmljZSA6IHRoaXMuYXV0aDtcclxuXHJcblxyXG4gICAgICAgIGlmIChyZXEudXJsID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVxLnVybC5pbmNsdWRlcyhcImFwcC5jb25maWcuanNvblwiKSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImFwcC5jb25maWcuanNvbiBleGNsdWRlZFwiKVxyXG4gICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFdIWT8/P1xyXG4gICAgICAgIGlmIChyZXEudXJsLmluY2x1ZGVzKFwiR2VuZXJhdGVUZW1wbGF0ZVwiKSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRlVGVtcGxhdGUgZXhjbHVkZWRcIilcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXEudXJsLmluY2x1ZGVzKFwiRXhwb3J0Q29yZVBhZ2VMaXN0R3JpZFRvRXhjZWxcIikpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJFeHBvcnRDb3JlUGFnZUxpc3RHcmlkVG9FeGNlbCBleGNsdWRlZFwiKVxyXG4gICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgKi9cclxuXHJcbiAgICAgICAgbGV0IG9rOiBzdHJpbmc7XHJcbiAgICAgICAgLy8gZXh0ZW5kIHNlcnZlciByZXNwb25zZSBvYnNlcnZhYmxlIHdpdGggbG9nZ2luZ1xyXG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFwKHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBTdWNjZWVkcyB3aGVuIHRoZXJlIGlzIGEgcmVzcG9uc2U7IGlnbm9yZSBvdGhlciBldmVudHNcclxuICAgICAgICAgICAgICAgICAgICBuZXh0OiBldmVudCA9PiAob2sgPSBldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSA/ICdzdWNjZWVkZWQnIDogJycpLFxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7IH0gLy8gd2UgZG8gbm90IGltcGxlbWVudCB0aGUgbG9naWMgaGVyZVxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAvLyBCdXQgaGVyZTpcclxuICAgICAgICAgICAgICAgIC8vIE9wZXJhdGlvbiBmYWlsZWQ7IGVycm9yIGlzIGFuIEh0dHBFcnJvclJlc3BvbnNlXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChyZXNwb25zZTogYW55KSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVG9rZW5JbnRlcmNlcHRvciBFcnJvcjogXCIsIHJlcSwgcmVzcG9uc2UpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcmVmcmVzaCB0b2tlbiBmb3Igc29tZSByZXF1ZXN0cyBcclxuICAgICAgICAgICAgICAgICAgICAvLyBsaWtlIGxvZ2luIG9yIHJlZnJlc2ggdG9rZW4gaXRzZWxmXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gU28gd2UgdmVyaWZ5IHVybCBhbmQgd2UgdGhyb3cgYW4gZXJyb3IgaWYgaXQncyB0aGUgY2FzZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxLnVybC50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKCdMT0dJTicpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcS51cmwudG9VcHBlckNhc2UoKS5pbmNsdWRlcygnUkVGUkVTSF9UT0tFTicpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcS51cmwudG9VcHBlckNhc2UoKS5pbmNsdWRlcygnUkVGUkVTSFRPS0VOJylcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gYW5vdGhlciBjaGVjayB0byBzZWUgaWYgcmVmcmVzaCB0b2tlbiBmYWlsZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8gbG9nb3V0IHVzZXIgYW5kIHRvIHJlZGlyZWN0IGl0IHRvIGxvZ2luIHBhZ2VcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcS51cmwudG9VcHBlckNhc2UoKS5pbmNsdWRlcygnUkVGUkVTSF9UT0tFTicpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXEudXJsLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMoJ1JFRlJFU0hUT0tFTicpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwSW5pdGlhbGl6YXRpb25TZXJ2aWNlLmluaXRpYWxpemluZyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRoU2VydmljZS51c2VyTG9nb3V0KCkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aFNlcnZpY2UucG9zdExvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgZXJyb3Igc3RhdHVzIGlzIGRpZmZlcmVudCB0aGFuIDQwMSBcclxuICAgICAgICAgICAgICAgICAgICAvLyB3ZSB3YW50IHRvIHNraXAgcmVmcmVzaCB0b2tlblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFNvIHdlIGNoZWNrIHRoYXQgYW5kIHRocm93IHRoZSBlcnJvciBpZiBpdCdzIHRoZSBjYXNlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gNDAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihyZXNwb25zZS5lcnJvcikpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVmcmVzaFRva2VuSW5Qcm9ncmVzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiByZWZyZXNoVG9rZW5JblByb2dyZXNzIGlzIHRydWUsIHdlIHdpbGwgd2FpdCB1bnRpbCByZWZyZXNoVG9rZW5TdWJqZWN0IGhhcyBhIG5vbi1udWxsIHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOKAkyB3aGljaCBtZWFucyB0aGUgbmV3IHRva2VuIGlzIHJlYWR5IGFuZCB3ZSBjYW4gcmV0cnkgdGhlIHJlcXVlc3QgYWdhaW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuU3ViamVjdC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmlsdGVyOiBFbWl0IHZhbHVlcyB0aGF0IHBhc3MgdGhlIHByb3ZpZGVkIGNvbmRpdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQgIT09IG51bGwpLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIHN3aXRjaE1hcCBhbmQgb3RoZXIgZmxhdHRlbmluZyBvcGVyYXRvcnMgaXMgdGhlIGNhbmNlbGxpbmcgZWZmZWN0LiBPbiBlYWNoIGVtaXNzaW9uIHRoZSBwcmV2aW91cyBpbm5lciBvYnNlcnZhYmxlICh0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiB5b3Ugc3VwcGxpZWQpIGlzIGNhbmNlbGxlZCBhbmQgdGhlIG5ldyBvYnNlcnZhYmxlIGlzIHN1YnNjcmliZWQuIFlvdSBjYW4gcmVtZW1iZXIgdGhpcyBieSB0aGUgcGhyYXNlIHN3aXRjaCB0byBhIG5ldyBvYnNlcnZhYmxlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiBuZXh0LmhhbmRsZSh0aGlzLmFkZEF1dGhlbnRpY2F0aW9uVG9rZW4ocmVxKSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlc3BvbnNlLmVycm9yPy5tZXNzYWdlPy50b1VwcGVyQ2FzZSgpIHx8IHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5JblByb2dyZXNzID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgcmVmcmVzaFRva2VuU3ViamVjdCB0byBudWxsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyB0aGF0IHN1YnNlcXVlbnQgQVBJIGNhbGxzIHdpbGwgd2FpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB1bnRpbCB0aGUgbmV3IHRva2VuIGhhcyBiZWVuIHJldHJpZXZlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QubmV4dChudWxsKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbGwgYXV0aC5yZWZyZXNoQWNjZXNzVG9rZW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHRoaXMgaXMgYW4gT2JzZXJ2YWJsZSB0aGF0IHdpbGwgYmUgcmV0dXJuZWQpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZyZXNoVG9rZW5SZXEgPSBhdXRoU2VydmljZS50cnlSZXN0b3JlU2Vzc2lvbigpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlZnJlc2hUb2tlblJlcS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtYWluIGRpZmZlcmVuY2UgYmV0d2VlbiBzd2l0Y2hNYXAgYW5kIG90aGVyIGZsYXR0ZW5pbmcgb3BlcmF0b3JzIGlzIHRoZSBjYW5jZWxsaW5nIGVmZmVjdC4gT24gZWFjaCBlbWlzc2lvbiB0aGUgcHJldmlvdXMgaW5uZXIgb2JzZXJ2YWJsZSAodGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24geW91IHN1cHBsaWVkKSBpcyBjYW5jZWxsZWQgYW5kIHRoZSBuZXcgb2JzZXJ2YWJsZSBpcyBzdWJzY3JpYmVkLiBZb3UgY2FuIHJlbWVtYmVyIHRoaXMgYnkgdGhlIHBocmFzZSBzd2l0Y2ggdG8gYSBuZXcgb2JzZXJ2YWJsZS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdG9rZW4gPSAnJztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLm9rICYmIHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhTZXJ2aWNlLmRhdGEkLm5leHQocmVzcG9uc2UuYm9keSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZWQkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gcmVzcG9uc2UuYm9keS5qd3RUb2tlbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGNhbGwgdG8gcmVmcmVzaFRva2VuIGNvbXBsZXRlcyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSByZXNldCB0aGUgcmVmcmVzaFRva2VuSW5Qcm9ncmVzcyB0byBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciB0aGUgbmV4dCB0aW1lIHRoZSB0b2tlbiBuZWVkcyB0byBiZSByZWZyZXNoZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QubmV4dCh0b2tlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3UmVxID0gdGhpcy5hZGRBdXRoZW50aWNhdGlvblRva2VuKHJlcSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKG5ld1JlcSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5JblByb2dyZXNzID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwicmVmcmVzaFRva2VuUmVxIGNhdGNoRXJyb3JcIiwgZXJyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aFNlcnZpY2UudXNlckxvZ291dCgpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aFNlcnZpY2UucG9zdExvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGVycikpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgLy8gTG9nIHdoZW4gcmVzcG9uc2Ugb2JzZXJ2YWJsZSBlaXRoZXIgY29tcGxldGVzIG9yIGVycm9yc1xyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4geyB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxufSJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVN0YXRpc3RpY0F1dGhEYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvaW50ZXJmYWNlcy9JU3RhdGlzdGljQXV0aERhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElTdGF0aXN0aWNTeXNVc2VyIH0gZnJvbSBcIi4vSVN0YXRpc3RpY1N5c1VzZXJcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVN0YXRpc3RpY0F1dGhEYXRhIHtcclxuICAgIHVzZXI6IElTdGF0aXN0aWNTeXNVc2VyLFxyXG4gICAgYWNjZXNzVG9rZW46IHN0cmluZyxcclxuICAgIGV4cGlyZXM6IERhdGUsXHJcbiAgICByZWZyZXNoVG9rZW46IHsgdG9rZW46IHN0cmluZyB9XHJcbn0iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVN0YXRpc3RpY1N5c1VzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9pbnRlcmZhY2VzL0lTdGF0aXN0aWNTeXNVc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElTdGF0aXN0aWNTeXNVc2VyIHtcclxuICAgIGlkOiBzdHJpbmcsXHJcbiAgICB0ZW5hbnRJZDogbnVtYmVyLFxyXG4gICAgdXNlcm5hbWU6IHN0cmluZyxcclxuICAgIGVtYWlsOiBzdHJpbmcsXHJcbiAgICBmdWxsbmFtZTogc3RyaW5nLFxyXG4gICAgYXZhdGFyOiBzdHJpbmcsXHJcbiAgICBpc1Jvb3Q/OiBib29sZWFuLFxyXG4gICAgaXNBZG1pbj86IGJvb2xlYW4sXHJcbiAgICBpc0xvY2tlZD86IGJvb2xlYW4sXHJcbiAgICB3ZWJhcHBBbGxvd2VkPzogYm9vbGVhbixcclxuICAgIHBvcnRhbEFsbG93ZWQ/OiBib29sZWFuLFxyXG4gICAgbW9iaWxlQWxsb3dlZD86IGJvb2xlYW4sXHJcbiAgICBpc0ZpcnN0TG9naW4/OiBib29sZWFuLFxyXG59Il19
|