zek 17.3.88 → 17.3.92
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/services/auth-guard.service.mjs +2 -2
- package/esm2022/lib/services/auth.service.mjs +54 -38
- package/esm2022/lib/services/web.api.mjs +16 -10
- package/fesm2022/zek.mjs +67 -46
- package/fesm2022/zek.mjs.map +1 -1
- package/lib/services/auth.service.d.ts +14 -5
- package/package.json +1 -1
|
@@ -4,10 +4,10 @@ import { AuthService } from './auth.service';
|
|
|
4
4
|
export const zekAuthGuard = (route, state) => {
|
|
5
5
|
const auth = inject(AuthService);
|
|
6
6
|
const router = inject(Router);
|
|
7
|
-
if (!auth.isAuthenticated
|
|
7
|
+
if (!auth.isAuthenticated) {
|
|
8
8
|
router.navigate(['/login'], { queryParams: { returnUrl: state.url } });
|
|
9
9
|
return false;
|
|
10
10
|
}
|
|
11
11
|
return auth.hasDataPermission(route.data);
|
|
12
12
|
};
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvc2VydmljZXMvYXV0aC1ndWFyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUErQyxNQUFNLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFFckcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBa0IsQ0FBQyxLQUE2QixFQUFFLEtBQTBCLEVBQUUsRUFBRTtJQUNyRyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTlCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkUsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyU3RhdGVTbmFwc2hvdCwgUm91dGVyLCBDYW5BY3RpdmF0ZUZuIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCB6ZWtBdXRoR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSA9PiB7XHJcbiAgICBjb25zdCBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcclxuICAgIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5cclxuICAgIGlmICghYXV0aC5pc0F1dGhlbnRpY2F0ZWQpIHtcclxuICAgICAgICByb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSwgeyBxdWVyeVBhcmFtczogeyByZXR1cm5Vcmw6IHN0YXRlLnVybCB9IH0pO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYXV0aC5oYXNEYXRhUGVybWlzc2lvbihyb3V0ZS5kYXRhKTtcclxufSJdfQ==
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Injectable, } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject, Subject } from 'rxjs';
|
|
3
|
-
import {
|
|
3
|
+
import { DateHelper, ObjectHelper, StorageHelper } from '../utils';
|
|
4
4
|
import { BitwiseHelper } from '../utils/bitwise-helper';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class AuthService {
|
|
7
7
|
constructor() {
|
|
8
8
|
this._isInitialized = false;
|
|
9
|
-
this.
|
|
9
|
+
this._auth = false;
|
|
10
10
|
this._user = null;
|
|
11
11
|
}
|
|
12
12
|
static { this.USER_KEY = 'user'; }
|
|
@@ -14,20 +14,27 @@ export class AuthService {
|
|
|
14
14
|
get user() {
|
|
15
15
|
if (!this._isInitialized) {
|
|
16
16
|
const user = StorageHelper.get(AuthService.USER_KEY);
|
|
17
|
-
|
|
18
|
-
user.id = ObjectHelper.isDefined(user.id) ? Convert.parseNumber(user.id) : user.id;
|
|
19
|
-
user.expired = ObjectHelper.isDefined(user.expired) ? DateHelper.parseDate(user.expired) : user.expired;
|
|
20
|
-
user.refreshTokenTime = ObjectHelper.isDefined(user.refreshTokenTime) ? DateHelper.parseDate(user.refreshTokenTime) : user.refreshTokenTime;
|
|
21
|
-
if (Array.isArray(user.roles)) {
|
|
22
|
-
user.roles = user.roles.map(function (e) { return e ? e.toUpperCase() : e; });
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
this._user = user;
|
|
26
|
-
this._isInitialized = true;
|
|
27
|
-
this._starRefreshTokenTimer();
|
|
17
|
+
this._init(user);
|
|
28
18
|
}
|
|
29
19
|
return this._user;
|
|
30
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Inits user (parses fields and starts refresh token timer if needed)
|
|
23
|
+
* @param user user from json or storage
|
|
24
|
+
*/
|
|
25
|
+
_init(user) {
|
|
26
|
+
if (user) {
|
|
27
|
+
//convert string to specified types
|
|
28
|
+
user.expired = ObjectHelper.isDefined(user.expired) ? DateHelper.parseDate(user.expired) : user.expired;
|
|
29
|
+
user.refreshTokenTime = ObjectHelper.isDefined(user.refreshTokenTime) ? DateHelper.parseDate(user.refreshTokenTime) : user.refreshTokenTime;
|
|
30
|
+
if (Array.isArray(user.roles)) {
|
|
31
|
+
user.roles = user.roles.map(function (e) { return e ? e.toUpperCase() : e; });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
this._user = user;
|
|
35
|
+
this._isInitialized = true;
|
|
36
|
+
this._starRefreshTokenTimer();
|
|
37
|
+
}
|
|
31
38
|
_starRefreshTokenTimer() {
|
|
32
39
|
this._stopRefreshTokenTimer();
|
|
33
40
|
const user = this._user;
|
|
@@ -55,15 +62,24 @@ export class AuthService {
|
|
|
55
62
|
this._onRefreshTokenSubject.next();
|
|
56
63
|
}
|
|
57
64
|
}
|
|
58
|
-
|
|
59
|
-
const expired = this.getExpired()
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
65
|
+
get _isAuthenticated() {
|
|
66
|
+
const expired = this.getExpired();
|
|
67
|
+
return new Date() < expired;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Dynamic property. gets auth user and checks expired;
|
|
71
|
+
*/
|
|
72
|
+
get isAuthenticated() {
|
|
73
|
+
const newValue = this._isAuthenticated;
|
|
74
|
+
if (this._auth !== newValue) {
|
|
75
|
+
this._auth = newValue;
|
|
64
76
|
//if user is signed in and expired we need to logout (remove from localStorage)
|
|
65
77
|
if (!newValue) {
|
|
66
|
-
this.logout();
|
|
78
|
+
this.logout(); //this executes emitOnSignedIn so we don't need here execute emitOnSignedIn
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
//this line need if you already logged in and refresh page. (System will init user from storage and verify)
|
|
82
|
+
this.emitOnSignedIn();
|
|
67
83
|
}
|
|
68
84
|
return newValue;
|
|
69
85
|
}
|
|
@@ -71,7 +87,7 @@ export class AuthService {
|
|
|
71
87
|
}
|
|
72
88
|
emitOnSignedIn() {
|
|
73
89
|
if (this._onSignedInSubject) {
|
|
74
|
-
this._onSignedInSubject.next(this.
|
|
90
|
+
this._onSignedInSubject.next(this._auth);
|
|
75
91
|
}
|
|
76
92
|
}
|
|
77
93
|
get onSignedIn() {
|
|
@@ -92,29 +108,29 @@ export class AuthService {
|
|
|
92
108
|
throw new Error("onRefreshTokenObservable is undefined");
|
|
93
109
|
return this._onRefreshTokenObservable;
|
|
94
110
|
}
|
|
95
|
-
|
|
111
|
+
_login(user) {
|
|
96
112
|
StorageHelper.set(AuthService.USER_KEY, user);
|
|
97
|
-
this._user = null;
|
|
98
113
|
this._isInitialized = false; //user get method will init user
|
|
99
|
-
this.
|
|
114
|
+
this._init(user);
|
|
115
|
+
this._auth = ObjectHelper.isDefined(user);
|
|
116
|
+
this.emitOnSignedIn();
|
|
117
|
+
}
|
|
118
|
+
login(user) {
|
|
119
|
+
this._login(user);
|
|
100
120
|
}
|
|
101
121
|
logout() {
|
|
102
|
-
this.
|
|
122
|
+
this._login(null);
|
|
103
123
|
}
|
|
104
124
|
getExpired() {
|
|
105
|
-
|
|
106
|
-
if (user) {
|
|
107
|
-
return user.expired;
|
|
108
|
-
}
|
|
109
|
-
return null;
|
|
110
|
-
}
|
|
111
|
-
getRefreshTokenExpired() {
|
|
112
|
-
const user = this.user;
|
|
113
|
-
if (user) {
|
|
114
|
-
return user.refreshTokenTime;
|
|
115
|
-
}
|
|
116
|
-
return null;
|
|
125
|
+
return this.user?.expired ?? new Date(0); // if getExpired is null return min JS date;
|
|
117
126
|
}
|
|
127
|
+
// protected getRefreshTokenExpired(): Date | null | undefined {
|
|
128
|
+
// const user = this.user;
|
|
129
|
+
// if (user) {
|
|
130
|
+
// return user.refreshTokenTime;
|
|
131
|
+
// }
|
|
132
|
+
// return null;
|
|
133
|
+
// }
|
|
118
134
|
// isInRole(allowedRoles: string[]): boolean {
|
|
119
135
|
// if (!allowedRoles || allowedRoles.length === 0) {
|
|
120
136
|
// return true;
|
|
@@ -190,4 +206,4 @@ export class AuthService {
|
|
|
190
206
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: AuthService, decorators: [{
|
|
191
207
|
type: Injectable
|
|
192
208
|
}] });
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvc2VydmljZXMvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEdBQUcsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBR3hELE1BQU0sT0FBTyxXQUFXO0lBRHhCO1FBRVksbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixVQUFLLEdBQXFCLElBQUksQ0FBQztLQXFPMUM7YUFuT1UsYUFBUSxHQUFHLE1BQU0sQUFBVCxDQUFVO0lBQ3pCLGVBQWU7SUFFZixJQUFJLElBQUk7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JELElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLEVBQUUsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ25GLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVB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QUFDO2FBQU0sQ0FBQztZQUNKLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzFDLE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekIsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLEtBQUs7b0JBQ0wsT0FBTyxJQUFJLENBQUM7WUFDcEIsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBR0QsaUJBQWlCLENBQUMsSUFBUztRQUN2Qix1REFBdUQ7UUFDdkQsbUNBQW1DO1FBQ25DLDhDQUE4QztRQUU5QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRW5DLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFckQsb0NBQW9DO1FBQ3BDLE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7OEdBdk9RLFdBQVc7a0hBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBLZXlQYWlyLCBMb2dpblRva2VuLCBMb2dpblVzZXIgfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBDb252ZXJ0LCBEYXRlSGVscGVyLCBPYmplY3RIZWxwZXIsIFN0b3JhZ2VIZWxwZXIgfSBmcm9tICcuLi91dGlscyc7XHJcbmltcG9ydCB7IEJpdHdpc2VIZWxwZXIgfSBmcm9tICcuLi91dGlscy9iaXR3aXNlLWhlbHBlcic7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XHJcbiAgICBwcml2YXRlIF9pc0luaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIF9vbGRWYWx1ZSA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfdXNlcjogTG9naW5Vc2VyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgc3RhdGljIFVTRVJfS0VZID0gJ3VzZXInO1xyXG4gICAgLy8gYWNjZXNzX3Rva2VuXHJcblxyXG4gICAgZ2V0IHVzZXIoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0luaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZXIgPSBTdG9yYWdlSGVscGVyLmdldChBdXRoU2VydmljZS5VU0VSX0tFWSk7XHJcbiAgICAgICAgICAgIGlmICh1c2VyKSB7XHJcbiAgICAgICAgICAgICAgICB1c2VyLmlkID0gT2JqZWN0SGVscGVyLmlzRGVmaW5lZCh1c2VyLmlkKSA/IENvbnZlcnQucGFyc2VOdW1iZXIodXNlci5pZCkgOiB1c2VyLmlkO1xyXG4gICAgICAgICAgICAgICAgdXNlci5leHBpcmVkID0gT2JqZWN0SGVscGVyLmlzRGVmaW5lZCh1c2VyLmV4cGlyZWQpID8gRGF0ZUhlbHBlci5wYXJzZURhdGUodXNlci5leHBpcmVkKSA6IHVzZXIuZXhwaXJlZDtcclxuICAgICAgICAgICAgICAgIHVzZXIucmVmcmVzaFRva2VuVGltZSA9IE9iamVjdEhlbHBlci5pc0RlZmluZWQodXNlci5yZWZyZXNoVG9rZW5UaW1lKSA/IERhdGVIZWxwZXIucGFyc2VEYXRlKHVzZXIucmVmcmVzaFRva2VuVGltZSkgOiB1c2VyLnJlZnJlc2hUb2tlblRpbWU7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodXNlci5yb2xlcykpIHtcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLnJvbGVzID0gdXNlci5yb2xlcy5tYXAoZnVuY3Rpb24gKGU6IGFueSkgeyByZXR1cm4gZSA/IGUudG9VcHBlckNhc2UoKSA6IGU7IH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX3VzZXIgPSB1c2VyO1xyXG4gICAgICAgICAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5fc3RhclJlZnJlc2hUb2tlblRpbWVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIF90aW1lcklkOiBhbnk7XHJcbiAgICBwcml2YXRlIF9zdGFyUmVmcmVzaFRva2VuVGltZXIoKSB7XHJcbiAgICAgICAgdGhpcy5fc3RvcFJlZnJlc2hUb2tlblRpbWVyKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLl91c2VyO1xyXG4gICAgICAgIGlmICh1c2VyICYmIHVzZXIucmVmcmVzaFRva2VuVGltZSkge1xyXG4gICAgICAgICAgICBsZXQgdGltZW91dCA9IHVzZXIucmVmcmVzaFRva2VuVGltZS5nZXRUaW1lKCkgLSBEYXRlLm5vdygpOy8vIC0gKDYwICogMTAwMCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGltZW91dCA8IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZW1pdE9uUmVmcmVzaFRva2VuKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG1pblJlZnJlc2hUaW1lID0gNjBfMDAwLy8xIG1pbjtcclxuICAgICAgICAgICAgaWYgKHRpbWVvdXQgPCBtaW5SZWZyZXNoVGltZSkge1xyXG4gICAgICAgICAgICAgICAgdGltZW91dCA9IG1pblJlZnJlc2hUaW1lO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl90aW1lcklkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0T25SZWZyZXNoVG9rZW4oKTtcclxuICAgICAgICAgICAgfSwgdGltZW91dCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfc3RvcFJlZnJlc2hUb2tlblRpbWVyKCkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5fdGltZXJJZCA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl90aW1lcklkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbWl0T25SZWZyZXNoVG9rZW4oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX29uUmVmcmVzaFRva2VuU3ViamVjdCkge1xyXG4gICAgICAgICAgICB0aGlzLl9vblJlZnJlc2hUb2tlblN1YmplY3QubmV4dCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgaXNBdXRoZW50aWNhdGVkKCkge1xyXG4gICAgICAgIGNvbnN0IGV4cGlyZWQgPSB0aGlzLmdldEV4cGlyZWQoKSB8fCBuZXcgRGF0ZSgwKTsvLyBpZiBnZXRFeHBpcmVkIGlzIG51bGwgcmV0dXJuIG1pbiBKUyBkYXRlXHJcblxyXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gbmV3IERhdGUoKSA8IGV4cGlyZWQ7XHJcbiAgICAgICAgaWYgKHRoaXMuX29sZFZhbHVlICE9PSBuZXdWYWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9vbGRWYWx1ZSA9IG5ld1ZhbHVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5lbWl0T25TaWduZWRJbigpO1xyXG5cclxuICAgICAgICAgICAgLy9pZiB1c2VyIGlzIHNpZ25lZCBpbiBhbmQgZXhwaXJlZCB3ZSBuZWVkIHRvIGxvZ291dCAocmVtb3ZlIGZyb20gbG9jYWxTdG9yYWdlKVxyXG4gICAgICAgICAgICBpZiAoIW5ld1ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBuZXdWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ld1ZhbHVlO1xyXG4gICAgfVxyXG4gICAgZW1pdE9uU2lnbmVkSW4oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX29uU2lnbmVkSW5TdWJqZWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX29uU2lnbmVkSW5TdWJqZWN0Lm5leHQodGhpcy5fb2xkVmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9vblNpZ25lZEluU3ViamVjdD86IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjsvL0JlaGF2aW9yU3ViamVjdCBpcyBmb3IgaW5pdGlhbCBmaXJ0IHZhbHVlID0gZmFsc2VcclxuICAgIHByaXZhdGUgX29uU2lnbmVkSW5PYnNlcnZhYmxlPzogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICAgIGdldCBvblNpZ25lZEluKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGlmICghdGhpcy5fb25TaWduZWRJblN1YmplY3QpIHtcclxuICAgICAgICAgICAgdGhpcy5fb25TaWduZWRJblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5fb25TaWduZWRJbk9ic2VydmFibGUgPSB0aGlzLl9vblNpZ25lZEluU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5fb25TaWduZWRJbk9ic2VydmFibGUpXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIl9vbkV4ZWN1dGVPYnNlcnZhYmxlIGlzIHVuZGVmaW5lZFwiKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uU2lnbmVkSW5PYnNlcnZhYmxlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIF9vblJlZnJlc2hUb2tlblN1YmplY3Q/OiBTdWJqZWN0PHZvaWQ+O1xyXG4gICAgcHJpdmF0ZSBfb25SZWZyZXNoVG9rZW5PYnNlcnZhYmxlPzogT2JzZXJ2YWJsZTx2b2lkPjtcclxuICAgIGdldCBvblJlZnJlc2hUb2tlbigpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgICAgICBpZiAoIXRoaXMuX29uUmVmcmVzaFRva2VuU3ViamVjdCkge1xyXG4gICAgICAgICAgICB0aGlzLl9vblJlZnJlc2hUb2tlblN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgICAgICAgICB0aGlzLl9vblJlZnJlc2hUb2tlbk9ic2VydmFibGUgPSB0aGlzLl9vblJlZnJlc2hUb2tlblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX29uUmVmcmVzaFRva2VuT2JzZXJ2YWJsZSlcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwib25SZWZyZXNoVG9rZW5PYnNlcnZhYmxlIGlzIHVuZGVmaW5lZFwiKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uUmVmcmVzaFRva2VuT2JzZXJ2YWJsZTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIGxvZ2luKHVzZXI6IExvZ2luVG9rZW4gfCBMb2dpblVzZXIgfCBudWxsKSB7XHJcbiAgICAgICAgU3RvcmFnZUhlbHBlci5zZXQoQXV0aFNlcnZpY2UuVVNFUl9LRVksIHVzZXIpO1xyXG4gICAgICAgIHRoaXMuX3VzZXIgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTsvL3VzZXIgZ2V0IG1ldGhvZCB3aWxsIGluaXQgdXNlclxyXG4gICAgICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkKCk7Ly90aGlzIG1ldGhvZCBuZWVkIHRvIGV4ZWN1dGUgc3ViamVjdC5uZXh0KCk7ICAgICAgICBcclxuICAgIH1cclxuICAgIGxvZ291dCgpIHtcclxuICAgICAgICB0aGlzLmxvZ2luKG51bGwpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgcHJvdGVjdGVkIGdldEV4cGlyZWQoKTogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVzZXI7XHJcbiAgICAgICAgaWYgKHVzZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVzZXIuZXhwaXJlZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRSZWZyZXNoVG9rZW5FeHBpcmVkKCk6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy51c2VyO1xyXG4gICAgICAgIGlmICh1c2VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1c2VyLnJlZnJlc2hUb2tlblRpbWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gaXNJblJvbGUoYWxsb3dlZFJvbGVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xyXG4gICAgLy8gICAgIGlmICghYWxsb3dlZFJvbGVzIHx8IGFsbG93ZWRSb2xlcy5sZW5ndGggPT09IDApIHtcclxuICAgIC8vICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAvLyAgICAgfVxyXG5cclxuICAgIC8vICAgICBjb25zdCB0bXAgPSB0aGlzLmdldFVzZXIoKTtcclxuICAgIC8vICAgICBjb25zdCByb2xlcyA9IHRtcCA/IHRtcC5yb2xlcyA6IG51bGw7XHJcbiAgICAvLyAgICAgaWYgKCFyb2xlcyB8fCByb2xlcy5sZW5ndGggPT09IDApIHtcclxuICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgLy8gICAgIH1cclxuXHJcbiAgICAvLyAgICAgbGV0IGlzSW5Sb2xlID0gYWxsb3dlZFJvbGVzLnNvbWUocm9sZSA9PiByb2xlcy5pbmRleE9mKHJvbGUpICE9PSAtMSk7XHJcbiAgICAvLyAgICAgcmV0dXJuIGlzSW5Sb2xlO1xyXG4gICAgLy8gfVxyXG5cclxuXHJcbiAgICBoYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24/OiBLZXlQYWlyPG51bWJlciwgbnVtYmVyPiB8IG51bWJlciB8IG51bGwpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXBlcm1pc3Npb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQga2V5ID0gMDtcclxuICAgICAgICBsZXQgdmFsdWU6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBwZXJtaXNzaW9uID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgcGVybWlzc2lvbiA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAga2V5ID0gK3Blcm1pc3Npb247XHJcbiAgICAgICAgfS8vIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGVybWlzc2lvbikpIHtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHBlcm1pc3Npb24gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIGlmICghcGVybWlzc2lvbi5rZXkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIGtleSA9IHBlcm1pc3Npb24ua2V5O1xyXG4gICAgICAgICAgICB2YWx1ZSA9IHBlcm1pc3Npb24udmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5oYXNQZXJtaXNzaW9ucyhba2V5XSwgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBoYXNQZXJtaXNzaW9ucyhwZXJtaXNzaW9ucz86IEFycmF5PG51bWJlcj4sIHZhbHVlPzogbnVtYmVyIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghcGVybWlzc2lvbnMgfHwgcGVybWlzc2lvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMudXNlcjtcclxuICAgICAgICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyID8gdXNlci5wZXJtaXNzaW9ucyA6IG51bGw7XHJcbiAgICAgICAgaWYgKCF1c2VyUGVybWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGVybWlzc2lvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBwZXJtaXNzaW9uc1tpXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gdXNlclBlcm1pc3Npb25zW3BdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzUGVybWlzc2lvbiA9IEJpdHdpc2VIZWxwZXIuaGFzRmxhZyhmb3VuZCwgdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNQZXJtaXNzaW9uKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGVybWlzc2lvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBwZXJtaXNzaW9uc1tpXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gdXNlclBlcm1pc3Npb25zW3BdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGhhc0RhdGFQZXJtaXNzaW9uKGRhdGE6IGFueSkge1xyXG4gICAgICAgIC8vaWYgKGRhdGEgPT09IHVuZGVmaW5lZCB8fCBkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAvLyBjb25zdCBhbGxvd2VkUm9sZXMgPSBkYXRhLnJvbGVzO1xyXG4gICAgICAgIC8vIGxldCBpc0luUm9sZSA9IHRoaXMuaXNJblJvbGUoYWxsb3dlZFJvbGVzKTtcclxuXHJcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbiA9IGRhdGEucGVybWlzc2lvbjtcclxuXHJcbiAgICAgICAgY29uc3QgaGFzUGVybWlzc2lvbiA9IHRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKTtcclxuXHJcbiAgICAgICAgLy8gcmV0dXJuIGlzSW5Sb2xlICYmIGhhc1Blcm1pc3Npb247XHJcbiAgICAgICAgcmV0dXJuIGhhc1Blcm1pc3Npb247XHJcbiAgICB9XHJcbn0iXX0=
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvc2VydmljZXMvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEdBQUcsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUQsT0FBTyxFQUFXLFVBQVUsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFHeEQsTUFBTSxPQUFPLFdBQVc7SUFEeEI7UUFFWSxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsVUFBSyxHQUFxQixJQUFJLENBQUM7S0FtUDFDO2FBalBVLGFBQVEsR0FBRyxNQUFNLEFBQVQsQ0FBVTtJQUN6QixlQUFlO0lBRWYsSUFBSSxJQUFJO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLEtBQUssQ0FBQyxJQUFTO1FBQ25CLElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxtQ0FBbUM7WUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FB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Q0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzFDLE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekIsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLEtBQUs7b0JBQ0wsT0FBTyxJQUFJLENBQUM7WUFDcEIsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBR0QsaUJBQWlCLENBQUMsSUFBUztRQUN2Qix1REFBdUQ7UUFDdkQsbUNBQW1DO1FBQ25DLDhDQUE4QztRQUU5QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRW5DLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFckQsb0NBQW9DO1FBQ3BDLE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7OEdBclBRLFdBQVc7a0hBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBLZXlQYWlyLCBMb2dpblRva2VuLCBMb2dpblVzZXIgfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBDb252ZXJ0LCBEYXRlSGVscGVyLCBPYmplY3RIZWxwZXIsIFN0b3JhZ2VIZWxwZXIgfSBmcm9tICcuLi91dGlscyc7XHJcbmltcG9ydCB7IEJpdHdpc2VIZWxwZXIgfSBmcm9tICcuLi91dGlscy9iaXR3aXNlLWhlbHBlcic7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XHJcbiAgICBwcml2YXRlIF9pc0luaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIF9hdXRoID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIF91c2VyOiBMb2dpblVzZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBzdGF0aWMgVVNFUl9LRVkgPSAndXNlcic7XHJcbiAgICAvLyBhY2Nlc3NfdG9rZW5cclxuXHJcbiAgICBnZXQgdXNlcigpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2lzSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgdXNlciA9IFN0b3JhZ2VIZWxwZXIuZ2V0KEF1dGhTZXJ2aWNlLlVTRVJfS0VZKTtcclxuICAgICAgICAgICAgdGhpcy5faW5pdCh1c2VyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0cyB1c2VyIChwYXJzZXMgZmllbGRzIGFuZCBzdGFydHMgcmVmcmVzaCB0b2tlbiB0aW1lciBpZiBuZWVkZWQpXHJcbiAgICAgKiBAcGFyYW0gdXNlciB1c2VyIGZyb20ganNvbiBvciBzdG9yYWdlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2luaXQodXNlcjogYW55KSB7XHJcbiAgICAgICAgaWYgKHVzZXIpIHtcclxuICAgICAgICAgICAgLy9jb252ZXJ0IHN0cmluZyB0byBzcGVjaWZpZWQgdHlwZXNcclxuICAgICAgICAgICAgdXNlci5leHBpcmVkID0gT2JqZWN0SGVscGVyLmlzRGVmaW5lZCh1c2VyLmV4cGlyZWQpID8gRGF0ZUhlbHBlci5wYXJzZURhdGUodXNlci5leHBpcmVkKSA6IHVzZXIuZXhwaXJlZDtcclxuICAgICAgICAgICAgdXNlci5yZWZyZXNoVG9rZW5UaW1lID0gT2JqZWN0SGVscGVyLmlzRGVmaW5lZCh1c2VyLnJlZnJlc2hUb2tlblRpbWUpID8gRGF0ZUhlbHBlci5wYXJzZURhdGUodXNlci5yZWZyZXNoVG9rZW5UaW1lKSA6IHVzZXIucmVmcmVzaFRva2VuVGltZTtcclxuXHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHVzZXIucm9sZXMpKSB7XHJcbiAgICAgICAgICAgICAgICB1c2VyLnJvbGVzID0gdXNlci5yb2xlcy5tYXAoZnVuY3Rpb24gKGU6IGFueSkgeyByZXR1cm4gZSA/IGUudG9VcHBlckNhc2UoKSA6IGU7IH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3VzZXIgPSB1c2VyO1xyXG4gICAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX3N0YXJSZWZyZXNoVG9rZW5UaW1lcigpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3RpbWVySWQ6IGFueTtcclxuICAgIHByaXZhdGUgX3N0YXJSZWZyZXNoVG9rZW5UaW1lcigpIHtcclxuICAgICAgICB0aGlzLl9zdG9wUmVmcmVzaFRva2VuVGltZXIoKTtcclxuXHJcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuX3VzZXI7XHJcbiAgICAgICAgaWYgKHVzZXIgJiYgdXNlci5yZWZyZXNoVG9rZW5UaW1lKSB7XHJcbiAgICAgICAgICAgIGxldCB0aW1lb3V0ID0gdXNlci5yZWZyZXNoVG9rZW5UaW1lLmdldFRpbWUoKSAtIERhdGUubm93KCk7Ly8gLSAoNjAgKiAxMDAwKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aW1lb3V0IDwgMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0T25SZWZyZXNoVG9rZW4oKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgbWluUmVmcmVzaFRpbWUgPSA2MF8wMDAvLzEgbWluO1xyXG4gICAgICAgICAgICBpZiAodGltZW91dCA8IG1pblJlZnJlc2hUaW1lKSB7XHJcbiAgICAgICAgICAgICAgICB0aW1lb3V0ID0gbWluUmVmcmVzaFRpbWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3RpbWVySWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRPblJlZnJlc2hUb2tlbigpO1xyXG4gICAgICAgICAgICB9LCB0aW1lb3V0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9zdG9wUmVmcmVzaFRva2VuVGltZXIoKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl90aW1lcklkID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuX3RpbWVySWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVtaXRPblJlZnJlc2hUb2tlbigpIHtcclxuICAgICAgICBpZiAodGhpcy5fb25SZWZyZXNoVG9rZW5TdWJqZWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX29uUmVmcmVzaFRva2VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIGdldCBfaXNBdXRoZW50aWNhdGVkKCkge1xyXG4gICAgICAgIGNvbnN0IGV4cGlyZWQgPSB0aGlzLmdldEV4cGlyZWQoKVxyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpIDwgZXhwaXJlZDtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogRHluYW1pYyBwcm9wZXJ0eS4gZ2V0cyBhdXRoIHVzZXIgYW5kIGNoZWNrcyBleHBpcmVkO1xyXG4gICAgICovXHJcbiAgICBnZXQgaXNBdXRoZW50aWNhdGVkKCkge1xyXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5faXNBdXRoZW50aWNhdGVkO1xyXG4gICAgICAgIGlmICh0aGlzLl9hdXRoICE9PSBuZXdWYWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9hdXRoID0gbmV3VmFsdWU7XHJcblxyXG5cclxuICAgICAgICAgICAgLy9pZiB1c2VyIGlzIHNpZ25lZCBpbiBhbmQgZXhwaXJlZCB3ZSBuZWVkIHRvIGxvZ291dCAocmVtb3ZlIGZyb20gbG9jYWxTdG9yYWdlKVxyXG4gICAgICAgICAgICBpZiAoIW5ld1ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ291dCgpOy8vdGhpcyBleGVjdXRlcyBlbWl0T25TaWduZWRJbiBzbyB3ZSBkb24ndCBuZWVkIGhlcmUgZXhlY3V0ZSBlbWl0T25TaWduZWRJblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy90aGlzIGxpbmUgbmVlZCBpZiB5b3UgYWxyZWFkeSBsb2dnZWQgaW4gYW5kIHJlZnJlc2ggcGFnZS4gKFN5c3RlbSB3aWxsIGluaXQgdXNlciBmcm9tIHN0b3JhZ2UgYW5kIHZlcmlmeSlcclxuICAgICAgICAgICAgICAgIHRoaXMuZW1pdE9uU2lnbmVkSW4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXdWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBlbWl0T25TaWduZWRJbigpIHtcclxuICAgICAgICBpZiAodGhpcy5fb25TaWduZWRJblN1YmplY3QpIHtcclxuICAgICAgICAgICAgdGhpcy5fb25TaWduZWRJblN1YmplY3QubmV4dCh0aGlzLl9hdXRoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfb25TaWduZWRJblN1YmplY3Q/OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47Ly9CZWhhdmlvclN1YmplY3QgaXMgZm9yIGluaXRpYWwgZmlydCB2YWx1ZSA9IGZhbHNlXHJcbiAgICBwcml2YXRlIF9vblNpZ25lZEluT2JzZXJ2YWJsZT86IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICBnZXQgb25TaWduZWRJbigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICBpZiAoIXRoaXMuX29uU2lnbmVkSW5TdWJqZWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX29uU2lnbmVkSW5TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX29uU2lnbmVkSW5PYnNlcnZhYmxlID0gdGhpcy5fb25TaWduZWRJblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX29uU2lnbmVkSW5PYnNlcnZhYmxlKVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJfb25FeGVjdXRlT2JzZXJ2YWJsZSBpcyB1bmRlZmluZWRcIik7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9vblNpZ25lZEluT2JzZXJ2YWJsZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfb25SZWZyZXNoVG9rZW5TdWJqZWN0PzogU3ViamVjdDx2b2lkPjtcclxuICAgIHByaXZhdGUgX29uUmVmcmVzaFRva2VuT2JzZXJ2YWJsZT86IE9ic2VydmFibGU8dm9pZD47XHJcbiAgICBnZXQgb25SZWZyZXNoVG9rZW4oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9vblJlZnJlc2hUb2tlblN1YmplY3QpIHtcclxuICAgICAgICAgICAgdGhpcy5fb25SZWZyZXNoVG9rZW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgICAgICAgICAgdGhpcy5fb25SZWZyZXNoVG9rZW5PYnNlcnZhYmxlID0gdGhpcy5fb25SZWZyZXNoVG9rZW5TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9vblJlZnJlc2hUb2tlbk9ic2VydmFibGUpXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIm9uUmVmcmVzaFRva2VuT2JzZXJ2YWJsZSBpcyB1bmRlZmluZWRcIik7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9vblJlZnJlc2hUb2tlbk9ic2VydmFibGU7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBwcml2YXRlIF9sb2dpbih1c2VyOiBhbnkpIHtcclxuICAgICAgICBTdG9yYWdlSGVscGVyLnNldChBdXRoU2VydmljZS5VU0VSX0tFWSwgdXNlcik7XHJcbiAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IGZhbHNlOy8vdXNlciBnZXQgbWV0aG9kIHdpbGwgaW5pdCB1c2VyXHJcbiAgICAgICAgdGhpcy5faW5pdCh1c2VyKTtcclxuICAgICAgICB0aGlzLl9hdXRoID0gT2JqZWN0SGVscGVyLmlzRGVmaW5lZCh1c2VyKTtcclxuICAgICAgICB0aGlzLmVtaXRPblNpZ25lZEluKCk7XHJcbiAgICB9XHJcbiAgICBsb2dpbih1c2VyOiBMb2dpblRva2VuIHwgTG9naW5Vc2VyKSB7XHJcbiAgICAgICAgdGhpcy5fbG9naW4odXNlcik7XHJcbiAgICB9XHJcbiAgICBsb2dvdXQoKSB7XHJcbiAgICAgICAgdGhpcy5fbG9naW4obnVsbCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRFeHBpcmVkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVzZXI/LmV4cGlyZWQgPz8gbmV3IERhdGUoMCk7Ly8gaWYgZ2V0RXhwaXJlZCBpcyBudWxsIHJldHVybiBtaW4gSlMgZGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBwcm90ZWN0ZWQgZ2V0UmVmcmVzaFRva2VuRXhwaXJlZCgpOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XHJcbiAgICAvLyAgICAgY29uc3QgdXNlciA9IHRoaXMudXNlcjtcclxuICAgIC8vICAgICBpZiAodXNlcikge1xyXG4gICAgLy8gICAgICAgICByZXR1cm4gdXNlci5yZWZyZXNoVG9rZW5UaW1lO1xyXG4gICAgLy8gICAgIH1cclxuXHJcbiAgICAvLyAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAvLyB9XHJcblxyXG5cclxuICAgIC8vIGlzSW5Sb2xlKGFsbG93ZWRSb2xlczogc3RyaW5nW10pOiBib29sZWFuIHtcclxuICAgIC8vICAgICBpZiAoIWFsbG93ZWRSb2xlcyB8fCBhbGxvd2VkUm9sZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgLy8gICAgIH1cclxuXHJcbiAgICAvLyAgICAgY29uc3QgdG1wID0gdGhpcy5nZXRVc2VyKCk7XHJcbiAgICAvLyAgICAgY29uc3Qgcm9sZXMgPSB0bXAgPyB0bXAucm9sZXMgOiBudWxsO1xyXG4gICAgLy8gICAgIGlmICghcm9sZXMgfHwgcm9sZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIC8vICAgICB9XHJcblxyXG4gICAgLy8gICAgIGxldCBpc0luUm9sZSA9IGFsbG93ZWRSb2xlcy5zb21lKHJvbGUgPT4gcm9sZXMuaW5kZXhPZihyb2xlKSAhPT0gLTEpO1xyXG4gICAgLy8gICAgIHJldHVybiBpc0luUm9sZTtcclxuICAgIC8vIH1cclxuXHJcblxyXG4gICAgaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uPzogS2V5UGFpcjxudW1iZXIsIG51bWJlcj4gfCBudW1iZXIgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFwZXJtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGtleSA9IDA7XHJcbiAgICAgICAgbGV0IHZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICh0eXBlb2YgcGVybWlzc2lvbiA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHBlcm1pc3Npb24gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGtleSA9ICtwZXJtaXNzaW9uO1xyXG4gICAgICAgIH0vLyBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBlcm1pc3Npb24pKSB7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBwZXJtaXNzaW9uID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICBpZiAoIXBlcm1pc3Npb24ua2V5KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgICAgICBrZXkgPSBwZXJtaXNzaW9uLmtleTtcclxuICAgICAgICAgICAgdmFsdWUgPSBwZXJtaXNzaW9uLnZhbHVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzUGVybWlzc2lvbnMoW2tleV0sIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaGFzUGVybWlzc2lvbnMocGVybWlzc2lvbnM/OiBBcnJheTxudW1iZXI+LCB2YWx1ZT86IG51bWJlciB8IG51bGwpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXBlcm1pc3Npb25zIHx8IHBlcm1pc3Npb25zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVzZXI7XHJcbiAgICAgICAgY29uc3QgdXNlclBlcm1pc3Npb25zID0gdXNlciA/IHVzZXIucGVybWlzc2lvbnMgOiBudWxsO1xyXG4gICAgICAgIGlmICghdXNlclBlcm1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBlcm1pc3Npb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwID0gcGVybWlzc2lvbnNbaV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZCA9IHVzZXJQZXJtaXNzaW9uc1twXTtcclxuICAgICAgICAgICAgICAgIGlmIChmb3VuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1Blcm1pc3Npb24gPSBCaXR3aXNlSGVscGVyLmhhc0ZsYWcoZm91bmQsIHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzUGVybWlzc2lvbilcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBlcm1pc3Npb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwID0gcGVybWlzc2lvbnNbaV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZCA9IHVzZXJQZXJtaXNzaW9uc1twXTtcclxuICAgICAgICAgICAgICAgIGlmIChmb3VuZClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBoYXNEYXRhUGVybWlzc2lvbihkYXRhOiBhbnkpIHtcclxuICAgICAgICAvL2lmIChkYXRhID09PSB1bmRlZmluZWQgfHwgZGF0YSA9PT0gbnVsbCkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgLy8gY29uc3QgYWxsb3dlZFJvbGVzID0gZGF0YS5yb2xlcztcclxuICAgICAgICAvLyBsZXQgaXNJblJvbGUgPSB0aGlzLmlzSW5Sb2xlKGFsbG93ZWRSb2xlcyk7XHJcblxyXG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb24gPSBkYXRhLnBlcm1pc3Npb247XHJcblxyXG4gICAgICAgIGNvbnN0IGhhc1Blcm1pc3Npb24gPSB0aGlzLmhhc1Blcm1pc3Npb24ocGVybWlzc2lvbik7XHJcblxyXG4gICAgICAgIC8vIHJldHVybiBpc0luUm9sZSAmJiBoYXNQZXJtaXNzaW9uO1xyXG4gICAgICAgIHJldHVybiBoYXNQZXJtaXNzaW9uO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Injectable, Inject } from '@angular/core';
|
|
2
2
|
import { HttpHeaders, HttpParams /*, HttpErrorResponse*/ } from '@angular/common/http';
|
|
3
3
|
import { API_BASE_URL } from '../tokens';
|
|
4
|
+
import { UrlHelper } from '../utils';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@angular/common/http";
|
|
6
7
|
import * as i2 from "./auth.service";
|
|
@@ -11,7 +12,8 @@ export class WebApiClient {
|
|
|
11
12
|
this.baseUrl = baseUrl;
|
|
12
13
|
}
|
|
13
14
|
get(url, params) {
|
|
14
|
-
|
|
15
|
+
const combinedUrl = UrlHelper.combine(this.baseUrl, url);
|
|
16
|
+
return this.http.get(combinedUrl, { headers: this.getHeaders(), params: this.toHttpParams(params) });
|
|
15
17
|
/*.catch(catchError(this.handleError(url)))
|
|
16
18
|
.do((res: Response) => {
|
|
17
19
|
// Handle success, maybe display notification
|
|
@@ -24,16 +26,20 @@ export class WebApiClient {
|
|
|
24
26
|
*/
|
|
25
27
|
}
|
|
26
28
|
getString(url, params) {
|
|
27
|
-
|
|
29
|
+
const combinedUrl = UrlHelper.combine(this.baseUrl, url);
|
|
30
|
+
return this.http.get(combinedUrl, { headers: this.getHeaders(), responseType: 'text', params: this.toHttpParams(params) });
|
|
28
31
|
}
|
|
29
32
|
getBytes(url, params) {
|
|
30
|
-
|
|
33
|
+
const combinedUrl = UrlHelper.combine(this.baseUrl, url);
|
|
34
|
+
return this.http.get(combinedUrl, { headers: this.getHeaders(), responseType: 'arraybuffer', params: this.toHttpParams(params) });
|
|
31
35
|
}
|
|
32
36
|
getBlob(url, params) {
|
|
33
|
-
|
|
37
|
+
const combinedUrl = UrlHelper.combine(this.baseUrl, url);
|
|
38
|
+
return this.http.get(combinedUrl, { headers: this.getHeaders(), responseType: 'blob', params: this.toHttpParams(params) });
|
|
34
39
|
}
|
|
35
40
|
postBlob(url, body) {
|
|
36
|
-
|
|
41
|
+
const combinedUrl = UrlHelper.combine(this.baseUrl, url);
|
|
42
|
+
return this.http.post(combinedUrl, body, { headers: this.getHeaders(), responseType: 'blob' });
|
|
37
43
|
}
|
|
38
44
|
toHttpParams(obj) {
|
|
39
45
|
if (!obj)
|
|
@@ -76,26 +82,26 @@ export class WebApiClient {
|
|
|
76
82
|
// return undefined;
|
|
77
83
|
//}
|
|
78
84
|
post(url, body) {
|
|
79
|
-
return this.http.post(this.baseUrl
|
|
85
|
+
return this.http.post(UrlHelper.combine(this.baseUrl, url), body, { headers: this.getHeaders(body) });
|
|
80
86
|
//.pipe(
|
|
81
87
|
//catchError(this.handleError(url))
|
|
82
88
|
//);
|
|
83
89
|
}
|
|
84
90
|
put(url, body) {
|
|
85
|
-
return this.http.put(this.baseUrl
|
|
91
|
+
return this.http.put(UrlHelper.combine(this.baseUrl, url), body, { headers: this.getHeaders(body) });
|
|
86
92
|
//.pipe(
|
|
87
93
|
//catchError(this.handleError(url))
|
|
88
94
|
//);
|
|
89
95
|
}
|
|
90
96
|
delete(url, body) {
|
|
91
|
-
return this.http.request('delete', this.baseUrl
|
|
97
|
+
return this.http.request('delete', UrlHelper.combine(this.baseUrl, url), { body, headers: this.getHeaders(body) });
|
|
92
98
|
//return this.http.delete(environment.url + url, { headers: this.getHeaders() });
|
|
93
99
|
//.pipe(
|
|
94
100
|
//catchError(this.handleError(url))
|
|
95
101
|
//);
|
|
96
102
|
}
|
|
97
103
|
patch(url, body) {
|
|
98
|
-
return this.http.patch(this.baseUrl
|
|
104
|
+
return this.http.patch(UrlHelper.combine(this.baseUrl, url), body, { headers: this.getHeaders(body) });
|
|
99
105
|
}
|
|
100
106
|
getHeaders(body) {
|
|
101
107
|
let httpHeaders = new HttpHeaders();
|
|
@@ -130,4 +136,4 @@ export class CustomHttpParamEncoder {
|
|
|
130
136
|
return decodeURIComponent(value);
|
|
131
137
|
}
|
|
132
138
|
}
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLmFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL3NlcnZpY2VzL3dlYi5hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLENBQUEsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVNsRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7O0FBT3pDLE1BQU0sT0FBTyxZQUFZO0lBQ3JCLFlBQ3VCLElBQWdCLEVBQ2hCLElBQWlCLEVBQ0csT0FBZTtRQUZuQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDRyxZQUFPLEdBQVAsT0FBTyxDQUFRO0lBQzFELENBQUM7SUFFRCxHQUFHLENBQVUsR0FBVyxFQUFFLE1BQVk7UUFDbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBSSxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9HOzs7Ozs7Ozs7TUFTRjtJQUNGLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBVyxFQUFFLE1BQWU7UUFDbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEksQ0FB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QUFLLENBQUMsQ0FBQztRQUMxRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDOzhHQXBIUSxZQUFZLHVFQUlULFlBQVk7a0hBSmYsWUFBWTs7MkZBQVosWUFBWTtrQkFEeEIsVUFBVTs7MEJBS0YsTUFBTTsyQkFBQyxZQUFZOztBQW9JNUIsTUFBTSxPQUFPLHNCQUFzQjtJQUMvQixTQUFTLENBQUMsR0FBVztRQUNqQixPQUFPLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxXQUFXLENBQUMsS0FBYTtRQUNyQixPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxTQUFTLENBQUMsR0FBVztRQUNqQixPQUFPLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxXQUFXLENBQUMsS0FBYTtRQUNyQixPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcy8qLCBIdHRwRXJyb3JSZXNwb25zZSovIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbi8vaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzL29ic2VydmFibGUvb2YnO1xyXG4vL2ltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcclxuLy9pbXBvcnQgeyBkZWxldGVOdWxsUHJvcGVydGllcyB9IGZyb20gJy4uL3V0aWxzJztcclxuLy9pbXBvcnQgeyBIdHRwRXJyb3JIYW5kbGVyLCBIYW5kbGVFcnJvciB9IGZyb20gJy4vaHR0cC1lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwUGFyYW1ldGVyQ29kZWMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEFQSV9CQVNFX1VSTCB9IGZyb20gJy4uL3Rva2Vucyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdlYkFwaUNvbmZpZyB7XHJcbiAgICBiYXNlVXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFdlYkFwaUNsaWVudCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXV0aDogQXV0aFNlcnZpY2UsXHJcbiAgICAgICAgQEluamVjdChBUElfQkFTRV9VUkwpIHByaXZhdGUgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nKSB7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0PFQgPSBhbnk+KHVybDogc3RyaW5nLCBwYXJhbXM/OiBhbnkpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPih0aGlzLmJhc2VVcmwgKyB1cmwsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksIHBhcmFtczogdGhpcy50b0h0dHBQYXJhbXMocGFyYW1zKSB9KTtcclxuICAgICAgICAvKi5jYXRjaChjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IodXJsKSkpXHJcbiAgICAgICAgLmRvKChyZXM6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIEhhbmRsZSBzdWNjZXNzLCBtYXliZSBkaXNwbGF5IG5vdGlmaWNhdGlvblxyXG4gICAgICAgIH0sIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIC8vIEhhbmRsZSBlcnJvcnNcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcclxuICAgICAgICAgICAgLy8gUmVxdWVzdCBjb21wbGV0ZWRcclxuICAgICAgICB9KTtcclxuICAgICovXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3RyaW5nKHVybDogc3RyaW5nLCBwYXJhbXM/OiBvYmplY3QpOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmJhc2VVcmwgKyB1cmwsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnLCBwYXJhbXM6IHRoaXMudG9IdHRwUGFyYW1zKHBhcmFtcykgfSk7XHJcbiAgICB9XHJcbiAgICBnZXRCeXRlcyh1cmw6IHN0cmluZywgcGFyYW1zPzogYW55KTogT2JzZXJ2YWJsZTxBcnJheUJ1ZmZlcj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuYmFzZVVybCArIHVybCwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSwgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLCBwYXJhbXM6IHRoaXMudG9IdHRwUGFyYW1zKHBhcmFtcykgfSk7XHJcbiAgICB9XHJcbiAgICBnZXRCbG9iKHVybDogc3RyaW5nLCBwYXJhbXM/OiBhbnkpOiBPYnNlcnZhYmxlPEJsb2I+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmJhc2VVcmwgKyB1cmwsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksIHJlc3BvbnNlVHlwZTogJ2Jsb2InLCBwYXJhbXM6IHRoaXMudG9IdHRwUGFyYW1zKHBhcmFtcykgfSk7XHJcbiAgICB9XHJcbiAgICBwb3N0QmxvYih1cmw6IHN0cmluZywgYm9keTogYW55KTogT2JzZXJ2YWJsZTxCbG9iPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuYmFzZVVybCArIHVybCwgYm9keSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSwgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByb3RlY3RlZCB0b0h0dHBQYXJhbXMob2JqOiBhbnkpIHtcclxuICAgICAgICBpZiAoIW9iailcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHsgZW5jb2RlcjogbmV3IEN1c3RvbUh0dHBQYXJhbUVuY29kZXIoKSB9KTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvYmopKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gb2JqW2tleV07XHJcblxyXG4gICAgICAgICAgICBpZiAoZmllbGQgPT09IHVuZGVmaW5lZCB8fCBmaWVsZCA9PT0gbnVsbCB8fCAodHlwZW9mIGZpZWxkID09PSAnc3RyaW5nJyAmJiBmaWVsZC5sZW5ndGggPT09IDApKVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZpZWxkO1xyXG4gICAgICAgICAgICAvLyBpZiAodHlwZW9mIGZpZWxkID09PSAnc3RyaW5nJyAmJiBmaWVsZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIC8vICAgICB2YWx1ZSA9IGZpZWxkLnJlcGxhY2UoL1xcKy9naSwgJyUyQicpO1xyXG4gICAgICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKGtleSwgdmFsdWUpO1xyXG4gICAgICAgICAgICAvLyBpZiAoZmllbGQgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgICAgICAvLyAgICAgZmllbGQuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChgJHtrZXl9W11gLCBpdGVtKTtcclxuICAgICAgICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChrZXksIGZpZWxkKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGFyYW1zO1xyXG5cclxuXHJcbiAgICAgICAgLy9kZWxldGVOdWxsUHJvcGVydGllcyhvYmopO1xyXG4gICAgICAgIC8vY29tbWVudCBiZWNhdXNlIGludFtdIG5vdCBzZW5kaW5nIGluIGMjIGl0IHNlbmQgXCIxLDIsMyw0XCJcclxuICAgICAgICAvLyByZXR1cm4gb2JqXHJcbiAgICAgICAgLy8gICAgID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKS5yZWR1Y2UoKHAsIGtleSkgPT4gcC5zZXQoa2V5LCBvYmpba2V5XSksIG5ldyBIdHRwUGFyYW1zKCkpXHJcbiAgICAgICAgLy8gICAgIDogdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8vdG9LZXlQYWlycyhvYmo6IGFueSk6IEtleVBhaXJbXSB8IHVuZGVmaW5lZCB7XHJcbiAgICAvLyAgICBpZiAob2JqIGluc3RhbmNlb2YgT2JqZWN0KSB7XHJcbiAgICAvLyAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaik7XHJcbiAgICAvLyAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5PEtleVBhaXI+KCk7XHJcbiAgICAvLyAgICAgICAgZm9yIChsZXQgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xyXG4gICAgLy8gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG9ialtwcm9wZXJ0eV07XHJcbiAgICAvLyAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsga2V5OiBwcm9wZXJ0eSwgdmFsdWU6IHZhbHVlIH0pO1xyXG4gICAgLy8gICAgICAgIH1cclxuICAgIC8vICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgLy8gICAgfVxyXG4gICAgLy8gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIC8vfVxyXG5cclxuICAgIHBvc3Q8VCA9IGFueT4odXJsOiBzdHJpbmcsIGJvZHk/OiBhbnkgfCBudWxsKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFQ+KHRoaXMuYmFzZVVybCArIHVybCwgYm9keSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoYm9keSkgfSk7XHJcbiAgICAgICAgLy8ucGlwZShcclxuICAgICAgICAvL2NhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcih1cmwpKVxyXG4gICAgICAgIC8vKTtcclxuICAgIH1cclxuICAgIHB1dDxUID0gYW55Pih1cmw6IHN0cmluZywgYm9keT86IGFueSB8IG51bGwpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxUPih0aGlzLmJhc2VVcmwgKyB1cmwsIGJvZHksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKGJvZHkpIH0pO1xyXG4gICAgICAgIC8vLnBpcGUoXHJcbiAgICAgICAgLy9jYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IodXJsKSlcclxuICAgICAgICAvLyk7XHJcbiAgICB9XHJcbiAgICBkZWxldGUodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnkgfCBudWxsKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnJlcXVlc3QoJ2RlbGV0ZScsIHRoaXMuYmFzZVVybCArIHVybCwgeyBib2R5LCBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoYm9keSkgfSk7XHJcbiAgICAgICAgLy9yZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShlbnZpcm9ubWVudC51cmwgKyB1cmwsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgICAgICAgLy8ucGlwZShcclxuICAgICAgICAvL2NhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcih1cmwpKVxyXG4gICAgICAgIC8vKTtcclxuICAgIH1cclxuICAgIHBhdGNoPFQgPSBhbnk+KHVybDogc3RyaW5nLCBib2R5PzogYW55IHwgbnVsbCk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8VD4odGhpcy5iYXNlVXJsICsgdXJsLCBib2R5LCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycyhib2R5KSB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJvdGVjdGVkIGdldEhlYWRlcnMoYm9keT86IGFueSB8IG51bGwpOiBIdHRwSGVhZGVycyB7XHJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICAgICAgaWYgKCEoYm9keSBpbnN0YW5jZW9mIEZvcm1EYXRhKSlcclxuICAgICAgICAgICAgaHR0cEhlYWRlcnMgPSBodHRwSGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgY29uc3QgdG1wID0gdGhpcy5hdXRoLnVzZXI7XHJcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0bXAgPyB0bXAudG9rZW4gOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHRva2VuKVxyXG4gICAgICAgICAgICBodHRwSGVhZGVycyA9IGh0dHBIZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsIHRva2VuKTtcclxuICAgICAgICByZXR1cm4gaHR0cEhlYWRlcnM7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvL3ByaXZhdGUgZ2V0UGFyYW1zKHBhcmFtcz86IEtleVBhaXJbXSB8IG51bGwpIHtcclxuICAgIC8vICAgIGlmICghcGFyYW1zIHx8IHBhcmFtcy5sZW5ndGggPT09IDApIHtcclxuICAgIC8vICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgLy8gICAgfVxyXG4gICAgLy8gICAgbGV0IGh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgLy8gICAgaWYgKHBhcmFtcykge1xyXG4gICAgLy8gICAgICAgIGZvciAobGV0IHBhcmFtIG9mIHBhcmFtcykge1xyXG4gICAgLy8gICAgICAgICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5zZXQocGFyYW0ua2V5LCBwYXJhbS52YWx1ZSk7XHJcbiAgICAvLyAgICAgICAgfVxyXG4gICAgLy8gICAgfVxyXG4gICAgLy8gICAgcmV0dXJuIGh0dHBQYXJhbXM7XHJcbiAgICAvL31cclxufVxyXG5cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tSHR0cFBhcmFtRW5jb2RlciBpbXBsZW1lbnRzIEh0dHBQYXJhbWV0ZXJDb2RlYyB7XHJcbiAgICBlbmNvZGVLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoa2V5KTtcclxuICAgIH1cclxuICAgIGVuY29kZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZGVjb2RlS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGtleSk7XHJcbiAgICB9XHJcbiAgICBkZWNvZGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKTtcclxuICAgIH1cclxufSJdfQ==
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLmFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL3NlcnZpY2VzL3dlYi5hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLENBQUEsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVNsRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFPckMsTUFBTSxPQUFPLFlBQVk7SUFDckIsWUFDdUIsSUFBZ0IsRUFDaEIsSUFBaUIsRUFDRyxPQUFlO1FBRm5DLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNHLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFDMUQsQ0FBQztJQUVELEdBQUcsQ0FBVSxHQUFXLEVBQUUsTUFBWTtRQUNsQyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBSSxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4Rzs7Ozs7Ozs7O01BU0Y7SUFDRixDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVcsRUFBRSxNQUFlO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQyxJ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Y3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMvKiwgSHR0cEVycm9yUmVzcG9uc2UqLyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG4vL2ltcG9ydCB7IG9mIH0gZnJvbSAncnhqcy9vYnNlcnZhYmxlL29mJztcclxuLy9pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XHJcbi8vaW1wb3J0IHsgZGVsZXRlTnVsbFByb3BlcnRpZXMgfSBmcm9tICcuLi91dGlscyc7XHJcbi8vaW1wb3J0IHsgSHR0cEVycm9ySGFuZGxlciwgSGFuZGxlRXJyb3IgfSBmcm9tICcuL2h0dHAtZXJyb3ItaGFuZGxlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cFBhcmFtZXRlckNvZGVjIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBUElfQkFTRV9VUkwgfSBmcm9tICcuLi90b2tlbnMnO1xyXG5pbXBvcnQgeyBVcmxIZWxwZXIgfSBmcm9tICcuLi91dGlscyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdlYkFwaUNvbmZpZyB7XHJcbiAgICBiYXNlVXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFdlYkFwaUNsaWVudCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXV0aDogQXV0aFNlcnZpY2UsXHJcbiAgICAgICAgQEluamVjdChBUElfQkFTRV9VUkwpIHByaXZhdGUgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nKSB7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0PFQgPSBhbnk+KHVybDogc3RyaW5nLCBwYXJhbXM/OiBhbnkpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgICAgICBjb25zdCBjb21iaW5lZFVybCA9IFVybEhlbHBlci5jb21iaW5lKHRoaXMuYmFzZVVybCwgdXJsKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPihjb21iaW5lZFVybCwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSwgcGFyYW1zOiB0aGlzLnRvSHR0cFBhcmFtcyhwYXJhbXMpIH0pO1xyXG4gICAgICAgIC8qLmNhdGNoKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcih1cmwpKSlcclxuICAgICAgICAuZG8oKHJlczogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgLy8gSGFuZGxlIHN1Y2Nlc3MsIG1heWJlIGRpc3BsYXkgbm90aWZpY2F0aW9uXHJcbiAgICAgICAgfSwgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgLy8gSGFuZGxlIGVycm9yc1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBSZXF1ZXN0IGNvbXBsZXRlZFxyXG4gICAgICAgIH0pO1xyXG4gICAgKi9cclxuICAgIH1cclxuXHJcbiAgICBnZXRTdHJpbmcodXJsOiBzdHJpbmcsIHBhcmFtcz86IG9iamVjdCk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xyXG4gICAgICAgIGNvbnN0IGNvbWJpbmVkVXJsID0gVXJsSGVscGVyLmNvbWJpbmUodGhpcy5iYXNlVXJsLCB1cmwpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGNvbWJpbmVkVXJsLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpLCByZXNwb25zZVR5cGU6ICd0ZXh0JywgcGFyYW1zOiB0aGlzLnRvSHR0cFBhcmFtcyhwYXJhbXMpIH0pO1xyXG4gICAgfVxyXG4gICAgZ2V0Qnl0ZXModXJsOiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IE9ic2VydmFibGU8QXJyYXlCdWZmZXI+IHtcclxuICAgICAgICBjb25zdCBjb21iaW5lZFVybCA9IFVybEhlbHBlci5jb21iaW5lKHRoaXMuYmFzZVVybCwgdXJsKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChjb21iaW5lZFVybCwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSwgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLCBwYXJhbXM6IHRoaXMudG9IdHRwUGFyYW1zKHBhcmFtcykgfSk7XHJcbiAgICB9XHJcbiAgICBnZXRCbG9iKHVybDogc3RyaW5nLCBwYXJhbXM/OiBhbnkpOiBPYnNlcnZhYmxlPEJsb2I+IHtcclxuICAgICAgICBjb25zdCBjb21iaW5lZFVybCA9IFVybEhlbHBlci5jb21iaW5lKHRoaXMuYmFzZVVybCwgdXJsKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChjb21iaW5lZFVybCwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSwgcmVzcG9uc2VUeXBlOiAnYmxvYicsIHBhcmFtczogdGhpcy50b0h0dHBQYXJhbXMocGFyYW1zKSB9KTtcclxuICAgIH1cclxuICAgIHBvc3RCbG9iKHVybDogc3RyaW5nLCBib2R5OiBhbnkpOiBPYnNlcnZhYmxlPEJsb2I+IHtcclxuICAgICAgICBjb25zdCBjb21iaW5lZFVybCA9IFVybEhlbHBlci5jb21iaW5lKHRoaXMuYmFzZVVybCwgdXJsKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoY29tYmluZWRVcmwsIGJvZHksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksIHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcm90ZWN0ZWQgdG9IdHRwUGFyYW1zKG9iajogYW55KSB7XHJcbiAgICAgICAgaWYgKCFvYmopXHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcyh7IGVuY29kZXI6IG5ldyBDdXN0b21IdHRwUGFyYW1FbmNvZGVyKCkgfSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob2JqKSkge1xyXG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9IG9ialtrZXldO1xyXG5cclxuICAgICAgICAgICAgaWYgKGZpZWxkID09PSB1bmRlZmluZWQgfHwgZmllbGQgPT09IG51bGwgfHwgKHR5cGVvZiBmaWVsZCA9PT0gJ3N0cmluZycgJiYgZmllbGQubGVuZ3RoID09PSAwKSlcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBmaWVsZDtcclxuICAgICAgICAgICAgLy8gaWYgKHR5cGVvZiBmaWVsZCA9PT0gJ3N0cmluZycgJiYgZmllbGQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAvLyAgICAgdmFsdWUgPSBmaWVsZC5yZXBsYWNlKC9cXCsvZ2ksICclMkInKTtcclxuICAgICAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChrZXksIHZhbHVlKTtcclxuICAgICAgICAgICAgLy8gaWYgKGZpZWxkIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgICAgLy8gICAgIGZpZWxkLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoYCR7a2V5fVtdYCwgaXRlbSk7XHJcbiAgICAgICAgICAgIC8vICAgICB9KTtcclxuICAgICAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoa2V5LCBmaWVsZCk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHBhcmFtcztcclxuXHJcblxyXG4gICAgICAgIC8vZGVsZXRlTnVsbFByb3BlcnRpZXMob2JqKTtcclxuICAgICAgICAvL2NvbW1lbnQgYmVjYXVzZSBpbnRbXSBub3Qgc2VuZGluZyBpbiBjIyBpdCBzZW5kIFwiMSwyLDMsNFwiXHJcbiAgICAgICAgLy8gcmV0dXJuIG9ialxyXG4gICAgICAgIC8vICAgICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikucmVkdWNlKChwLCBrZXkpID0+IHAuc2V0KGtleSwgb2JqW2tleV0pLCBuZXcgSHR0cFBhcmFtcygpKVxyXG4gICAgICAgIC8vICAgICA6IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICAvL3RvS2V5UGFpcnMob2JqOiBhbnkpOiBLZXlQYWlyW10gfCB1bmRlZmluZWQge1xyXG4gICAgLy8gICAgaWYgKG9iaiBpbnN0YW5jZW9mIE9iamVjdCkge1xyXG4gICAgLy8gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopO1xyXG4gICAgLy8gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxLZXlQYWlyPigpO1xyXG4gICAgLy8gICAgICAgIGZvciAobGV0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcclxuICAgIC8vICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBvYmpbcHJvcGVydHldO1xyXG4gICAgLy8gICAgICAgICAgICByZXN1bHQucHVzaCh7IGtleTogcHJvcGVydHksIHZhbHVlOiB2YWx1ZSB9KTtcclxuICAgIC8vICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIC8vICAgIH1cclxuICAgIC8vICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAvL31cclxuXHJcbiAgICBwb3N0PFQgPSBhbnk+KHVybDogc3RyaW5nLCBib2R5PzogYW55IHwgbnVsbCk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUPihVcmxIZWxwZXIuY29tYmluZSh0aGlzLmJhc2VVcmwsIHVybCksIGJvZHksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKGJvZHkpIH0pO1xyXG4gICAgICAgIC8vLnBpcGUoXHJcbiAgICAgICAgLy9jYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IodXJsKSlcclxuICAgICAgICAvLyk7XHJcbiAgICB9XHJcbiAgICBwdXQ8VCA9IGFueT4odXJsOiBzdHJpbmcsIGJvZHk/OiBhbnkgfCBudWxsKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8VD4oVXJsSGVscGVyLmNvbWJpbmUodGhpcy5iYXNlVXJsLCB1cmwpLCBib2R5LCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycyhib2R5KSB9KTtcclxuICAgICAgICAvLy5waXBlKFxyXG4gICAgICAgIC8vY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKHVybCkpXHJcbiAgICAgICAgLy8pO1xyXG4gICAgfVxyXG4gICAgZGVsZXRlKHVybDogc3RyaW5nLCBib2R5PzogYW55IHwgbnVsbCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5yZXF1ZXN0KCdkZWxldGUnLCBVcmxIZWxwZXIuY29tYmluZSh0aGlzLmJhc2VVcmwsIHVybCksIHsgYm9keSwgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKGJvZHkpIH0pO1xyXG4gICAgICAgIC8vcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoZW52aXJvbm1lbnQudXJsICsgdXJsLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpIH0pO1xyXG4gICAgICAgIC8vLnBpcGUoXHJcbiAgICAgICAgLy9jYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IodXJsKSlcclxuICAgICAgICAvLyk7XHJcbiAgICB9XHJcbiAgICBwYXRjaDxUID0gYW55Pih1cmw6IHN0cmluZywgYm9keT86IGFueSB8IG51bGwpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoPFQ+KFVybEhlbHBlci5jb21iaW5lKHRoaXMuYmFzZVVybCwgdXJsKSwgYm9keSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoYm9keSkgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRIZWFkZXJzKGJvZHk/OiBhbnkgfCBudWxsKTogSHR0cEhlYWRlcnMge1xyXG4gICAgICAgIGxldCBodHRwSGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG4gICAgICAgIGlmICghKGJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSkpXHJcbiAgICAgICAgICAgIGh0dHBIZWFkZXJzID0gaHR0cEhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgIGNvbnN0IHRtcCA9IHRoaXMuYXV0aC51c2VyO1xyXG4gICAgICAgIGNvbnN0IHRva2VuID0gdG1wID8gdG1wLnRva2VuIDogdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICh0b2tlbilcclxuICAgICAgICAgICAgaHR0cEhlYWRlcnMgPSBodHRwSGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCB0b2tlbik7XHJcbiAgICAgICAgcmV0dXJuIGh0dHBIZWFkZXJzO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgLy9wcml2YXRlIGdldFBhcmFtcyhwYXJhbXM/OiBLZXlQYWlyW10gfCBudWxsKSB7XHJcbiAgICAvLyAgICBpZiAoIXBhcmFtcyB8fCBwYXJhbXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAvLyAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIC8vICAgIH1cclxuICAgIC8vICAgIGxldCBodHRwUGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIC8vICAgIGlmIChwYXJhbXMpIHtcclxuICAgIC8vICAgICAgICBmb3IgKGxldCBwYXJhbSBvZiBwYXJhbXMpIHtcclxuICAgIC8vICAgICAgICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuc2V0KHBhcmFtLmtleSwgcGFyYW0udmFsdWUpO1xyXG4gICAgLy8gICAgICAgIH1cclxuICAgIC8vICAgIH1cclxuICAgIC8vICAgIHJldHVybiBodHRwUGFyYW1zO1xyXG4gICAgLy99XHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEN1c3RvbUh0dHBQYXJhbUVuY29kZXIgaW1wbGVtZW50cyBIdHRwUGFyYW1ldGVyQ29kZWMge1xyXG4gICAgZW5jb2RlS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGtleSk7XHJcbiAgICB9XHJcbiAgICBlbmNvZGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKTtcclxuICAgIH1cclxuICAgIGRlY29kZUtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChrZXkpO1xyXG4gICAgfVxyXG4gICAgZGVjb2RlVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XHJcbiAgICB9XHJcbn0iXX0=
|
package/fesm2022/zek.mjs
CHANGED
|
@@ -1436,7 +1436,7 @@ class ValidationHelper {
|
|
|
1436
1436
|
class AuthService {
|
|
1437
1437
|
constructor() {
|
|
1438
1438
|
this._isInitialized = false;
|
|
1439
|
-
this.
|
|
1439
|
+
this._auth = false;
|
|
1440
1440
|
this._user = null;
|
|
1441
1441
|
}
|
|
1442
1442
|
static { this.USER_KEY = 'user'; }
|
|
@@ -1444,20 +1444,27 @@ class AuthService {
|
|
|
1444
1444
|
get user() {
|
|
1445
1445
|
if (!this._isInitialized) {
|
|
1446
1446
|
const user = StorageHelper.get(AuthService.USER_KEY);
|
|
1447
|
-
|
|
1448
|
-
user.id = ObjectHelper.isDefined(user.id) ? Convert.parseNumber(user.id) : user.id;
|
|
1449
|
-
user.expired = ObjectHelper.isDefined(user.expired) ? DateHelper.parseDate(user.expired) : user.expired;
|
|
1450
|
-
user.refreshTokenTime = ObjectHelper.isDefined(user.refreshTokenTime) ? DateHelper.parseDate(user.refreshTokenTime) : user.refreshTokenTime;
|
|
1451
|
-
if (Array.isArray(user.roles)) {
|
|
1452
|
-
user.roles = user.roles.map(function (e) { return e ? e.toUpperCase() : e; });
|
|
1453
|
-
}
|
|
1454
|
-
}
|
|
1455
|
-
this._user = user;
|
|
1456
|
-
this._isInitialized = true;
|
|
1457
|
-
this._starRefreshTokenTimer();
|
|
1447
|
+
this._init(user);
|
|
1458
1448
|
}
|
|
1459
1449
|
return this._user;
|
|
1460
1450
|
}
|
|
1451
|
+
/**
|
|
1452
|
+
* Inits user (parses fields and starts refresh token timer if needed)
|
|
1453
|
+
* @param user user from json or storage
|
|
1454
|
+
*/
|
|
1455
|
+
_init(user) {
|
|
1456
|
+
if (user) {
|
|
1457
|
+
//convert string to specified types
|
|
1458
|
+
user.expired = ObjectHelper.isDefined(user.expired) ? DateHelper.parseDate(user.expired) : user.expired;
|
|
1459
|
+
user.refreshTokenTime = ObjectHelper.isDefined(user.refreshTokenTime) ? DateHelper.parseDate(user.refreshTokenTime) : user.refreshTokenTime;
|
|
1460
|
+
if (Array.isArray(user.roles)) {
|
|
1461
|
+
user.roles = user.roles.map(function (e) { return e ? e.toUpperCase() : e; });
|
|
1462
|
+
}
|
|
1463
|
+
}
|
|
1464
|
+
this._user = user;
|
|
1465
|
+
this._isInitialized = true;
|
|
1466
|
+
this._starRefreshTokenTimer();
|
|
1467
|
+
}
|
|
1461
1468
|
_starRefreshTokenTimer() {
|
|
1462
1469
|
this._stopRefreshTokenTimer();
|
|
1463
1470
|
const user = this._user;
|
|
@@ -1485,15 +1492,24 @@ class AuthService {
|
|
|
1485
1492
|
this._onRefreshTokenSubject.next();
|
|
1486
1493
|
}
|
|
1487
1494
|
}
|
|
1488
|
-
|
|
1489
|
-
const expired = this.getExpired()
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1495
|
+
get _isAuthenticated() {
|
|
1496
|
+
const expired = this.getExpired();
|
|
1497
|
+
return new Date() < expired;
|
|
1498
|
+
}
|
|
1499
|
+
/**
|
|
1500
|
+
* Dynamic property. gets auth user and checks expired;
|
|
1501
|
+
*/
|
|
1502
|
+
get isAuthenticated() {
|
|
1503
|
+
const newValue = this._isAuthenticated;
|
|
1504
|
+
if (this._auth !== newValue) {
|
|
1505
|
+
this._auth = newValue;
|
|
1494
1506
|
//if user is signed in and expired we need to logout (remove from localStorage)
|
|
1495
1507
|
if (!newValue) {
|
|
1496
|
-
this.logout();
|
|
1508
|
+
this.logout(); //this executes emitOnSignedIn so we don't need here execute emitOnSignedIn
|
|
1509
|
+
}
|
|
1510
|
+
else {
|
|
1511
|
+
//this line need if you already logged in and refresh page. (System will init user from storage and verify)
|
|
1512
|
+
this.emitOnSignedIn();
|
|
1497
1513
|
}
|
|
1498
1514
|
return newValue;
|
|
1499
1515
|
}
|
|
@@ -1501,7 +1517,7 @@ class AuthService {
|
|
|
1501
1517
|
}
|
|
1502
1518
|
emitOnSignedIn() {
|
|
1503
1519
|
if (this._onSignedInSubject) {
|
|
1504
|
-
this._onSignedInSubject.next(this.
|
|
1520
|
+
this._onSignedInSubject.next(this._auth);
|
|
1505
1521
|
}
|
|
1506
1522
|
}
|
|
1507
1523
|
get onSignedIn() {
|
|
@@ -1522,29 +1538,29 @@ class AuthService {
|
|
|
1522
1538
|
throw new Error("onRefreshTokenObservable is undefined");
|
|
1523
1539
|
return this._onRefreshTokenObservable;
|
|
1524
1540
|
}
|
|
1525
|
-
|
|
1541
|
+
_login(user) {
|
|
1526
1542
|
StorageHelper.set(AuthService.USER_KEY, user);
|
|
1527
|
-
this._user = null;
|
|
1528
1543
|
this._isInitialized = false; //user get method will init user
|
|
1529
|
-
this.
|
|
1544
|
+
this._init(user);
|
|
1545
|
+
this._auth = ObjectHelper.isDefined(user);
|
|
1546
|
+
this.emitOnSignedIn();
|
|
1547
|
+
}
|
|
1548
|
+
login(user) {
|
|
1549
|
+
this._login(user);
|
|
1530
1550
|
}
|
|
1531
1551
|
logout() {
|
|
1532
|
-
this.
|
|
1552
|
+
this._login(null);
|
|
1533
1553
|
}
|
|
1534
1554
|
getExpired() {
|
|
1535
|
-
|
|
1536
|
-
if (user) {
|
|
1537
|
-
return user.expired;
|
|
1538
|
-
}
|
|
1539
|
-
return null;
|
|
1540
|
-
}
|
|
1541
|
-
getRefreshTokenExpired() {
|
|
1542
|
-
const user = this.user;
|
|
1543
|
-
if (user) {
|
|
1544
|
-
return user.refreshTokenTime;
|
|
1545
|
-
}
|
|
1546
|
-
return null;
|
|
1555
|
+
return this.user?.expired ?? new Date(0); // if getExpired is null return min JS date;
|
|
1547
1556
|
}
|
|
1557
|
+
// protected getRefreshTokenExpired(): Date | null | undefined {
|
|
1558
|
+
// const user = this.user;
|
|
1559
|
+
// if (user) {
|
|
1560
|
+
// return user.refreshTokenTime;
|
|
1561
|
+
// }
|
|
1562
|
+
// return null;
|
|
1563
|
+
// }
|
|
1548
1564
|
// isInRole(allowedRoles: string[]): boolean {
|
|
1549
1565
|
// if (!allowedRoles || allowedRoles.length === 0) {
|
|
1550
1566
|
// return true;
|
|
@@ -1624,7 +1640,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
1624
1640
|
const zekAuthGuard = (route, state) => {
|
|
1625
1641
|
const auth = inject(AuthService);
|
|
1626
1642
|
const router = inject(Router);
|
|
1627
|
-
if (!auth.isAuthenticated
|
|
1643
|
+
if (!auth.isAuthenticated) {
|
|
1628
1644
|
router.navigate(['/login'], { queryParams: { returnUrl: state.url } });
|
|
1629
1645
|
return false;
|
|
1630
1646
|
}
|
|
@@ -1934,7 +1950,8 @@ class WebApiClient {
|
|
|
1934
1950
|
this.baseUrl = baseUrl;
|
|
1935
1951
|
}
|
|
1936
1952
|
get(url, params) {
|
|
1937
|
-
|
|
1953
|
+
const combinedUrl = UrlHelper.combine(this.baseUrl, url);
|
|
1954
|
+
return this.http.get(combinedUrl, { headers: this.getHeaders(), params: this.toHttpParams(params) });
|
|
1938
1955
|
/*.catch(catchError(this.handleError(url)))
|
|
1939
1956
|
.do((res: Response) => {
|
|
1940
1957
|
// Handle success, maybe display notification
|
|
@@ -1947,16 +1964,20 @@ class WebApiClient {
|
|
|
1947
1964
|
*/
|
|
1948
1965
|
}
|
|
1949
1966
|
getString(url, params) {
|
|
1950
|
-
|
|
1967
|
+
const combinedUrl = UrlHelper.combine(this.baseUrl, url);
|
|
1968
|
+
return this.http.get(combinedUrl, { headers: this.getHeaders(), responseType: 'text', params: this.toHttpParams(params) });
|
|
1951
1969
|
}
|
|
1952
1970
|
getBytes(url, params) {
|
|
1953
|
-
|
|
1971
|
+
const combinedUrl = UrlHelper.combine(this.baseUrl, url);
|
|
1972
|
+
return this.http.get(combinedUrl, { headers: this.getHeaders(), responseType: 'arraybuffer', params: this.toHttpParams(params) });
|
|
1954
1973
|
}
|
|
1955
1974
|
getBlob(url, params) {
|
|
1956
|
-
|
|
1975
|
+
const combinedUrl = UrlHelper.combine(this.baseUrl, url);
|
|
1976
|
+
return this.http.get(combinedUrl, { headers: this.getHeaders(), responseType: 'blob', params: this.toHttpParams(params) });
|
|
1957
1977
|
}
|
|
1958
1978
|
postBlob(url, body) {
|
|
1959
|
-
|
|
1979
|
+
const combinedUrl = UrlHelper.combine(this.baseUrl, url);
|
|
1980
|
+
return this.http.post(combinedUrl, body, { headers: this.getHeaders(), responseType: 'blob' });
|
|
1960
1981
|
}
|
|
1961
1982
|
toHttpParams(obj) {
|
|
1962
1983
|
if (!obj)
|
|
@@ -1999,26 +2020,26 @@ class WebApiClient {
|
|
|
1999
2020
|
// return undefined;
|
|
2000
2021
|
//}
|
|
2001
2022
|
post(url, body) {
|
|
2002
|
-
return this.http.post(this.baseUrl
|
|
2023
|
+
return this.http.post(UrlHelper.combine(this.baseUrl, url), body, { headers: this.getHeaders(body) });
|
|
2003
2024
|
//.pipe(
|
|
2004
2025
|
//catchError(this.handleError(url))
|
|
2005
2026
|
//);
|
|
2006
2027
|
}
|
|
2007
2028
|
put(url, body) {
|
|
2008
|
-
return this.http.put(this.baseUrl
|
|
2029
|
+
return this.http.put(UrlHelper.combine(this.baseUrl, url), body, { headers: this.getHeaders(body) });
|
|
2009
2030
|
//.pipe(
|
|
2010
2031
|
//catchError(this.handleError(url))
|
|
2011
2032
|
//);
|
|
2012
2033
|
}
|
|
2013
2034
|
delete(url, body) {
|
|
2014
|
-
return this.http.request('delete', this.baseUrl
|
|
2035
|
+
return this.http.request('delete', UrlHelper.combine(this.baseUrl, url), { body, headers: this.getHeaders(body) });
|
|
2015
2036
|
//return this.http.delete(environment.url + url, { headers: this.getHeaders() });
|
|
2016
2037
|
//.pipe(
|
|
2017
2038
|
//catchError(this.handleError(url))
|
|
2018
2039
|
//);
|
|
2019
2040
|
}
|
|
2020
2041
|
patch(url, body) {
|
|
2021
|
-
return this.http.patch(this.baseUrl
|
|
2042
|
+
return this.http.patch(UrlHelper.combine(this.baseUrl, url), body, { headers: this.getHeaders(body) });
|
|
2022
2043
|
}
|
|
2023
2044
|
getHeaders(body) {
|
|
2024
2045
|
let httpHeaders = new HttpHeaders();
|