@dontdrinkandroot/ngx-extensions 0.6.0 → 0.20.0
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/fesm2022/dontdrinkandroot-ngx-extensions.mjs +203 -736
- package/fesm2022/dontdrinkandroot-ngx-extensions.mjs.map +1 -1
- package/index.d.ts +161 -5
- package/package.json +6 -7
- package/esm2022/dontdrinkandroot-ngx-extensions.mjs +0 -5
- package/esm2022/public-api.mjs +0 -29
- package/esm2022/src/cookie/cookie.service.mjs +0 -135
- package/esm2022/src/ddr-extensions.module.mjs +0 -67
- package/esm2022/src/http/redirect-to-login-interceptor.service.mjs +0 -35
- package/esm2022/src/http/url-info.mjs +0 -26
- package/esm2022/src/http/with-credentials-interceptor.service.mjs +0 -19
- package/esm2022/src/image/lazy-image.directive.mjs +0 -132
- package/esm2022/src/jwt/jwt-interceptor.service.mjs +0 -26
- package/esm2022/src/jwt/jwt-refresh-token-interceptor.service.mjs +0 -50
- package/esm2022/src/jwt/jwt-token-response.mjs +0 -2
- package/esm2022/src/jwt/jwt.service.mjs +0 -81
- package/esm2022/src/logger/console-logger.service.mjs +0 -43
- package/esm2022/src/logger/logger.service.mjs +0 -9
- package/esm2022/src/methoddecorator/debounce.mjs +0 -13
- package/esm2022/src/methoddecorator/limit.mjs +0 -16
- package/esm2022/src/oauth/json-web-token.mjs +0 -2
- package/esm2022/src/oauth/oauth2-access-token-interceptor.service.mjs +0 -26
- package/esm2022/src/oauth/oauth2-config.mjs +0 -11
- package/esm2022/src/oauth/oauth2-error.mjs +0 -8
- package/esm2022/src/oauth/oauth2-refresh-token-interceptor.service.mjs +0 -24
- package/esm2022/src/oauth/oauth2.module.mjs +0 -44
- package/esm2022/src/oauth/oauth2.service.mjs +0 -125
- package/esm2022/src/oauth/redirect-to-oauth2-login-interceptor.service.mjs +0 -41
- package/esm2022/src/oauth/token-response.mjs +0 -2
- package/esm2022/src/scroll/bottom-hit.directive.mjs +0 -60
- package/esm2022/src/scroll/scroll.service.mjs +0 -38
- package/esm2022/src/storage/local-storage.service.mjs +0 -53
- package/esm2022/src/storage/storage.service.mjs +0 -5
- package/esm2022/src/typeguard/is-non-null.mjs +0 -4
- package/esm2022/src/util/collection-utils.mjs +0 -27
- package/esm2022/src/util/number-utils.mjs +0 -10
- package/esm2022/src/util/object-utils.mjs +0 -9
- package/esm2022/src/util/string-utils.mjs +0 -35
- package/esm2022/src/util/type-utils.mjs +0 -9
- package/esm2022/src/visibility/visibility.service.mjs +0 -19
- package/public-api.d.ts +0 -25
- package/src/cookie/cookie.service.d.ts +0 -41
- package/src/ddr-extensions.module.d.ts +0 -11
- package/src/http/redirect-to-login-interceptor.service.d.ts +0 -15
- package/src/http/url-info.d.ts +0 -13
- package/src/http/with-credentials-interceptor.service.d.ts +0 -11
- package/src/image/lazy-image.directive.d.ts +0 -29
- package/src/jwt/jwt-interceptor.service.d.ts +0 -14
- package/src/jwt/jwt-refresh-token-interceptor.service.d.ts +0 -18
- package/src/jwt/jwt-token-response.d.ts +0 -4
- package/src/jwt/jwt.service.d.ts +0 -48
- package/src/logger/console-logger.service.d.ts +0 -22
- package/src/logger/logger.service.d.ts +0 -10
- package/src/methoddecorator/debounce.d.ts +0 -1
- package/src/methoddecorator/limit.d.ts +0 -1
- package/src/oauth/json-web-token.d.ts +0 -30
- package/src/oauth/oauth2-access-token-interceptor.service.d.ts +0 -14
- package/src/oauth/oauth2-config.d.ts +0 -9
- package/src/oauth/oauth2-error.d.ts +0 -5
- package/src/oauth/oauth2-refresh-token-interceptor.service.d.ts +0 -14
- package/src/oauth/oauth2.module.d.ts +0 -9
- package/src/oauth/oauth2.service.d.ts +0 -35
- package/src/oauth/redirect-to-oauth2-login-interceptor.service.d.ts +0 -18
- package/src/oauth/token-response.d.ts +0 -6
- package/src/scroll/bottom-hit.directive.d.ts +0 -14
- package/src/scroll/scroll.service.d.ts +0 -12
- package/src/storage/local-storage.service.d.ts +0 -23
- package/src/storage/storage.service.d.ts +0 -7
- package/src/typeguard/is-non-null.d.ts +0 -1
- package/src/util/collection-utils.d.ts +0 -10
- package/src/util/number-utils.d.ts +0 -3
- package/src/util/object-utils.d.ts +0 -4
- package/src/util/string-utils.d.ts +0 -6
- package/src/util/type-utils.d.ts +0 -3
- package/src/visibility/visibility.service.d.ts +0 -9
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../storage/storage.service";
|
|
4
|
-
import * as i2 from "../logger/logger.service";
|
|
5
|
-
export class JwtService {
|
|
6
|
-
constructor(storageService, loggerService) {
|
|
7
|
-
this.storageService = storageService;
|
|
8
|
-
this.loggerService = loggerService;
|
|
9
|
-
/**
|
|
10
|
-
* The current token.
|
|
11
|
-
*/
|
|
12
|
-
this.token = null;
|
|
13
|
-
/**
|
|
14
|
-
* The expiry of the current token.
|
|
15
|
-
*/
|
|
16
|
-
this.tokenExpiry = null;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Sets the current token and a refresh token.
|
|
20
|
-
*/
|
|
21
|
-
setTokens(token, refreshToken) {
|
|
22
|
-
this.setToken(token);
|
|
23
|
-
this.storageService.store(this.getRefreshTokenStorageKey(), refreshToken);
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Sets the current token.
|
|
27
|
-
*/
|
|
28
|
-
setToken(token) {
|
|
29
|
-
this.token = token;
|
|
30
|
-
const decodedToken = JSON.parse(atob(token.split('.')[1]));
|
|
31
|
-
this.tokenExpiry = decodedToken.exp * 1000;
|
|
32
|
-
this.loggerService.info('New refresh token, expiry', new Date(this.tokenExpiry));
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Gets the current token.
|
|
36
|
-
*/
|
|
37
|
-
getToken() {
|
|
38
|
-
return this.token;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Gets the refresh token.
|
|
42
|
-
*/
|
|
43
|
-
getRefreshToken() {
|
|
44
|
-
return this.storageService.retrieve(this.getRefreshTokenStorageKey());
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Checks if the current token expired.
|
|
48
|
-
*/
|
|
49
|
-
isExpired() {
|
|
50
|
-
const now = new Date().getTime();
|
|
51
|
-
return null == this.tokenExpiry || this.tokenExpiry < now;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Checks if the current token is about to expire.
|
|
55
|
-
* @param expiryMs
|
|
56
|
-
*/
|
|
57
|
-
isAboutToExpire(expiryMs = 60000) {
|
|
58
|
-
const now = new Date().getTime();
|
|
59
|
-
return null == this.tokenExpiry || this.tokenExpiry - expiryMs < now;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Clears all token information.
|
|
63
|
-
*/
|
|
64
|
-
clear() {
|
|
65
|
-
this.token = null;
|
|
66
|
-
this.tokenExpiry = null;
|
|
67
|
-
this.storageService.remove(this.getRefreshTokenStorageKey());
|
|
68
|
-
}
|
|
69
|
-
getRefreshTokenStorageKey() {
|
|
70
|
-
return 'jwt.refresh_token';
|
|
71
|
-
}
|
|
72
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: JwtService, deps: [{ token: i1.StorageService }, { token: i2.Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
73
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: JwtService, providedIn: 'root' }); }
|
|
74
|
-
}
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: JwtService, decorators: [{
|
|
76
|
-
type: Injectable,
|
|
77
|
-
args: [{
|
|
78
|
-
providedIn: 'root'
|
|
79
|
-
}]
|
|
80
|
-
}], ctorParameters: () => [{ type: i1.StorageService }, { type: i2.Logger }] });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvand0L2p3dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFPekMsTUFBTSxPQUFPLFVBQVU7SUFZbkIsWUFDWSxjQUE4QixFQUM5QixhQUFxQjtRQURyQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFaakM7O1dBRUc7UUFDSyxVQUFLLEdBQWtCLElBQUksQ0FBQztRQUVwQzs7V0FFRztRQUNLLGdCQUFXLEdBQWtCLElBQUksQ0FBQztJQU8xQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsS0FBYSxFQUFFLFlBQW9CO1FBRWhELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUE7SUFDN0UsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUSxDQUFDLEtBQWE7UUFFekIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBRVgsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWU7UUFFbEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFBO0lBQ3pFLENBQUM7SUFFRDs7T0FFRztJQUNJLFNBQVM7UUFFWixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGVBQWUsQ0FBQyxXQUFtQixLQUFLO1FBRTNDLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakMsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsR0FBRyxHQUFHLENBQUM7SUFDekUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUVSLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUE7SUFDaEUsQ0FBQztJQUVPLHlCQUF5QjtRQUU3QixPQUFPLG1CQUFtQixDQUFDO0lBQy9CLENBQUM7OEdBdkZRLFVBQVU7a0hBQVYsVUFBVSxjQUZQLE1BQU07OzJGQUVULFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3RvcmFnZVNlcnZpY2V9IGZyb20gJy4uL3N0b3JhZ2Uvc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEp3dFNlcnZpY2VcbntcbiAgICAvKipcbiAgICAgKiBUaGUgY3VycmVudCB0b2tlbi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHRva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBleHBpcnkgb2YgdGhlIGN1cnJlbnQgdG9rZW4uXG4gICAgICovXG4gICAgcHJpdmF0ZSB0b2tlbkV4cGlyeTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbG9nZ2VyU2VydmljZTogTG9nZ2VyXG4gICAgKVxuICAgIHtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBjdXJyZW50IHRva2VuIGFuZCBhIHJlZnJlc2ggdG9rZW4uXG4gICAgICovXG4gICAgcHVibGljIHNldFRva2Vucyh0b2tlbjogc3RyaW5nLCByZWZyZXNoVG9rZW46IHN0cmluZyk6IHZvaWRcbiAgICB7XG4gICAgICAgIHRoaXMuc2V0VG9rZW4odG9rZW4pO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnN0b3JlKHRoaXMuZ2V0UmVmcmVzaFRva2VuU3RvcmFnZUtleSgpLCByZWZyZXNoVG9rZW4pXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgY3VycmVudCB0b2tlbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0VG9rZW4odG9rZW46IHN0cmluZyk6IHZvaWRcbiAgICB7XG4gICAgICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gSlNPTi5wYXJzZShhdG9iKHRva2VuLnNwbGl0KCcuJylbMV0pKTtcbiAgICAgICAgdGhpcy50b2tlbkV4cGlyeSA9IGRlY29kZWRUb2tlbi5leHAgKiAxMDAwO1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuaW5mbygnTmV3IHJlZnJlc2ggdG9rZW4sIGV4cGlyeScsIG5ldyBEYXRlKHRoaXMudG9rZW5FeHBpcnkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBjdXJyZW50IHRva2VuLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRUb2tlbigpOiBzdHJpbmcgfCBudWxsXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy50b2tlbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSByZWZyZXNoIHRva2VuLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRSZWZyZXNoVG9rZW4oKTogc3RyaW5nIHwgbnVsbFxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UucmV0cmlldmUodGhpcy5nZXRSZWZyZXNoVG9rZW5TdG9yYWdlS2V5KCkpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHRva2VuIGV4cGlyZWQuXG4gICAgICovXG4gICAgcHVibGljIGlzRXhwaXJlZCgpOiBib29sZWFuXG4gICAge1xuICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgcmV0dXJuIG51bGwgPT0gdGhpcy50b2tlbkV4cGlyeSB8fCB0aGlzLnRva2VuRXhwaXJ5IDwgbm93O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB0b2tlbiBpcyBhYm91dCB0byBleHBpcmUuXG4gICAgICogQHBhcmFtIGV4cGlyeU1zXG4gICAgICovXG4gICAgcHVibGljIGlzQWJvdXRUb0V4cGlyZShleHBpcnlNczogbnVtYmVyID0gNjAwMDApOiBib29sZWFuXG4gICAge1xuICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgcmV0dXJuIG51bGwgPT0gdGhpcy50b2tlbkV4cGlyeSB8fCB0aGlzLnRva2VuRXhwaXJ5IC0gZXhwaXJ5TXMgPCBub3c7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXJzIGFsbCB0b2tlbiBpbmZvcm1hdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZFxuICAgIHtcbiAgICAgICAgdGhpcy50b2tlbiA9IG51bGw7XG4gICAgICAgIHRoaXMudG9rZW5FeHBpcnkgPSBudWxsO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZSh0aGlzLmdldFJlZnJlc2hUb2tlblN0b3JhZ2VLZXkoKSlcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJlZnJlc2hUb2tlblN0b3JhZ2VLZXkoKTogc3RyaW5nXG4gICAge1xuICAgICAgICByZXR1cm4gJ2p3dC5yZWZyZXNoX3Rva2VuJztcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Logger } from './logger.service';
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class ConsoleLogger extends Logger {
|
|
5
|
-
/**
|
|
6
|
-
* @override
|
|
7
|
-
*/
|
|
8
|
-
debug(...data) {
|
|
9
|
-
if (this.debugEnabled) {
|
|
10
|
-
console.debug(...data);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* @override
|
|
15
|
-
*/
|
|
16
|
-
info(...data) {
|
|
17
|
-
if (this.infoEnabled) {
|
|
18
|
-
console.info(...data);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* @override
|
|
23
|
-
*/
|
|
24
|
-
warn(...data) {
|
|
25
|
-
if (this.warnEnabled) {
|
|
26
|
-
console.warn(...data);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* @override
|
|
31
|
-
*/
|
|
32
|
-
error(...data) {
|
|
33
|
-
if (this.errorEnabled) {
|
|
34
|
-
console.error(...data);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ConsoleLogger, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ConsoleLogger }); }
|
|
39
|
-
}
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ConsoleLogger, decorators: [{
|
|
41
|
-
type: Injectable
|
|
42
|
-
}] });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS1sb2dnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9sb2dnZXIvY29uc29sZS1sb2dnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDeEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFHekMsTUFBTSxPQUFPLGFBQWMsU0FBUSxNQUFNO0lBRXJDOztPQUVHO0lBQ0ksS0FBSyxDQUFDLEdBQUcsSUFBVztRQUV2QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLElBQUksQ0FBQyxHQUFHLElBQVc7UUFFdEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJLENBQUMsR0FBRyxJQUFXO1FBRXRCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLEdBQUcsSUFBVztRQUV2QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNMLENBQUM7OEdBeENRLGFBQWE7a0hBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TG9nZ2VyfSBmcm9tICcuL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb25zb2xlTG9nZ2VyIGV4dGVuZHMgTG9nZ2VyXG57XG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGRlYnVnKC4uLmRhdGE6IGFueVtdKTogdm9pZFxuICAgIHtcbiAgICAgICAgaWYgKHRoaXMuZGVidWdFbmFibGVkKSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKC4uLmRhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGluZm8oLi4uZGF0YTogYW55W10pOiB2b2lkXG4gICAge1xuICAgICAgICBpZiAodGhpcy5pbmZvRW5hYmxlZCkge1xuICAgICAgICAgICAgY29uc29sZS5pbmZvKC4uLmRhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIHdhcm4oLi4uZGF0YTogYW55W10pOiB2b2lkXG4gICAge1xuICAgICAgICBpZiAodGhpcy53YXJuRW5hYmxlZCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKC4uLmRhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGVycm9yKC4uLmRhdGE6IGFueVtdKTogdm9pZFxuICAgIHtcbiAgICAgICAgaWYgKHRoaXMuZXJyb3JFbmFibGVkKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKC4uLmRhdGEpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export class Logger {
|
|
2
|
-
constructor() {
|
|
3
|
-
this.debugEnabled = false;
|
|
4
|
-
this.infoEnabled = true;
|
|
5
|
-
this.warnEnabled = true;
|
|
6
|
-
this.errorEnabled = true;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBZ0IsTUFBTTtJQUE1QjtRQUVXLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5CLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5CLGlCQUFZLEdBQUcsSUFBSSxDQUFDO0lBUy9CLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMb2dnZXJcbntcbiAgICBwdWJsaWMgZGVidWdFbmFibGVkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaW5mb0VuYWJsZWQgPSB0cnVlO1xuXG4gICAgcHVibGljIHdhcm5FbmFibGVkID0gdHJ1ZTtcblxuICAgIHB1YmxpYyBlcnJvckVuYWJsZWQgPSB0cnVlO1xuXG4gICAgcHVibGljIGFic3RyYWN0IGRlYnVnKC4uLmRhdGE6IGFueVtdKTogdm9pZDtcblxuICAgIHB1YmxpYyBhYnN0cmFjdCBpbmZvKC4uLmRhdGE6IGFueVtdKTogdm9pZDtcblxuICAgIHB1YmxpYyBhYnN0cmFjdCB3YXJuKC4uLmRhdGE6IGFueVtdKTogdm9pZDtcblxuICAgIHB1YmxpYyBhYnN0cmFjdCBlcnJvciguLi5kYXRhOiBhbnlbXSk6IHZvaWQ7XG59XG4iXX0=
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export function Debounce(delay = 250) {
|
|
2
|
-
let timeoutReference = null;
|
|
3
|
-
return (target, propertyKey, descriptor) => {
|
|
4
|
-
const original = descriptor.value;
|
|
5
|
-
descriptor.value = function (...args) {
|
|
6
|
-
if (null != timeoutReference)
|
|
7
|
-
clearTimeout(timeoutReference);
|
|
8
|
-
timeoutReference = setTimeout(() => original.apply(this, args), delay);
|
|
9
|
-
};
|
|
10
|
-
return descriptor;
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWV0aG9kZGVjb3JhdG9yL2RlYm91bmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxRQUFRLENBQUMsUUFBZ0IsR0FBRztJQUV4QyxJQUFJLGdCQUFnQixHQUFRLElBQUksQ0FBQztJQUVqQyxPQUFPLENBQUMsTUFBYyxFQUFFLFdBQTRCLEVBQUUsVUFBd0MsRUFBRSxFQUFFO1FBQzlGLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDbEMsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLEdBQUcsSUFBUztZQUNyQyxJQUFJLElBQUksSUFBSSxnQkFBZ0I7Z0JBQUUsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDN0QsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNFLENBQUMsQ0FBQztRQUVGLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gRGVib3VuY2UoZGVsYXk6IG51bWJlciA9IDI1MCk6IE1ldGhvZERlY29yYXRvclxue1xuICAgIGxldCB0aW1lb3V0UmVmZXJlbmNlOiBhbnkgPSBudWxsO1xuXG4gICAgcmV0dXJuICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCwgZGVzY3JpcHRvcjogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8YW55PikgPT4ge1xuICAgICAgICBjb25zdCBvcmlnaW5hbCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55KSB7XG4gICAgICAgICAgICBpZiAobnVsbCAhPSB0aW1lb3V0UmVmZXJlbmNlKSBjbGVhclRpbWVvdXQodGltZW91dFJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aW1lb3V0UmVmZXJlbmNlID0gc2V0VGltZW91dCgoKSA9PiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKSwgZGVsYXkpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH07XG59XG4iXX0=
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export function Limit(rate = 250) {
|
|
2
|
-
let timeoutReference = null;
|
|
3
|
-
return (target, propertyKey, descriptor) => {
|
|
4
|
-
const original = descriptor.value;
|
|
5
|
-
descriptor.value = function (...args) {
|
|
6
|
-
if (null == timeoutReference) {
|
|
7
|
-
timeoutReference = setTimeout(() => {
|
|
8
|
-
original.apply(this, args);
|
|
9
|
-
timeoutReference = undefined;
|
|
10
|
-
}, rate);
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
return descriptor;
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGltaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWV0aG9kZGVjb3JhdG9yL2xpbWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBZSxHQUFHO0lBRXBDLElBQUksZ0JBQWdCLEdBQVEsSUFBSSxDQUFDO0lBRWpDLE9BQU8sQ0FBQyxNQUFjLEVBQUUsV0FBNEIsRUFBRSxVQUF3QyxFQUFFLEVBQUU7UUFDOUYsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNsQyxVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsR0FBRyxJQUFTO1lBQ3JDLElBQUksSUFBSSxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQzNCLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQy9CLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUMzQixnQkFBZ0IsR0FBRyxTQUFTLENBQUE7Z0JBQ2hDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNiLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIExpbWl0KHJhdGU6IG51bWJlciA9IDI1MCk6IE1ldGhvZERlY29yYXRvclxue1xuICAgIGxldCB0aW1lb3V0UmVmZXJlbmNlOiBhbnkgPSBudWxsO1xuXG4gICAgcmV0dXJuICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCwgZGVzY3JpcHRvcjogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8YW55PikgPT4ge1xuICAgICAgICBjb25zdCBvcmlnaW5hbCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55KSB7XG4gICAgICAgICAgICBpZiAobnVsbCA9PSB0aW1lb3V0UmVmZXJlbmNlKSB7XG4gICAgICAgICAgICAgICAgdGltZW91dFJlZmVyZW5jZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgdGltZW91dFJlZmVyZW5jZSA9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH0sIHJhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH07XG59XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi13ZWItdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvb2F1dGgvanNvbi13ZWItdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSnNvbldlYlRva2VuXG57XG4gICAgLyoqXG4gICAgICogQXVkaWVuY2VcbiAgICAgKi9cbiAgICBhdWQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEV4cGlyYXRpb24gVGltZVxuICAgICAqL1xuICAgIGV4cDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogSXNzdWVkIEF0XG4gICAgICovXG4gICAgaWF0OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBKV1QgSURcbiAgICAgKi9cbiAgICBqdGk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE5vdCBCZWZvcmVcbiAgICAgKi9cbiAgICBuYmY6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFNjb3Blc1xuICAgICAqL1xuICAgIHNjb3Blczogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBTdWJqZWN0XG4gICAgICovXG4gICAgc3ViOiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "./oauth2.service";
|
|
4
|
-
export class OAuth2AccessTokenInterceptor {
|
|
5
|
-
constructor(oAuth2Service) {
|
|
6
|
-
this.oAuth2Service = oAuth2Service;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* @override
|
|
10
|
-
*/
|
|
11
|
-
intercept(req, next) {
|
|
12
|
-
const accessTokenString = this.oAuth2Service.getAccessTokenString();
|
|
13
|
-
if (null !== accessTokenString && !this.oAuth2Service.isAccessTokenExpired()) {
|
|
14
|
-
req = req.clone({
|
|
15
|
-
headers: req.headers.set('Authorization', 'Bearer ' + accessTokenString)
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
return next.handle(req);
|
|
19
|
-
}
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: OAuth2AccessTokenInterceptor, deps: [{ token: i1.OAuth2Service }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: OAuth2AccessTokenInterceptor }); }
|
|
22
|
-
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: OAuth2AccessTokenInterceptor, decorators: [{
|
|
24
|
-
type: Injectable
|
|
25
|
-
}], ctorParameters: () => [{ type: i1.OAuth2Service }] });
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgyLWFjY2Vzcy10b2tlbi1pbnRlcmNlcHRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL29hdXRoL29hdXRoMi1hY2Nlc3MtdG9rZW4taW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7QUFLekMsTUFBTSxPQUFPLDRCQUE0QjtJQUVyQyxZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUVoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUVyRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUVwRSxJQUFJLElBQUksS0FBSyxpQkFBaUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO1lBQzNFLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUNaLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsU0FBUyxHQUFHLGlCQUFpQixDQUFDO2FBQzNFLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQzs4R0FwQlEsNEJBQTRCO2tIQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBRHhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBFdmVudCwgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3R9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtPQXV0aDJTZXJ2aWNlfSBmcm9tICcuL29hdXRoMi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9BdXRoMkFjY2Vzc1Rva2VuSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3JcbntcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9BdXRoMlNlcnZpY2U6IE9BdXRoMlNlcnZpY2UpXG4gICAge1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+XG4gICAge1xuICAgICAgICBjb25zdCBhY2Nlc3NUb2tlblN0cmluZyA9IHRoaXMub0F1dGgyU2VydmljZS5nZXRBY2Nlc3NUb2tlblN0cmluZygpO1xuXG4gICAgICAgIGlmIChudWxsICE9PSBhY2Nlc3NUb2tlblN0cmluZyAmJiAhdGhpcy5vQXV0aDJTZXJ2aWNlLmlzQWNjZXNzVG9rZW5FeHBpcmVkKCkpIHtcbiAgICAgICAgICAgIHJlcSA9IHJlcS5jbG9uZSh7XG4gICAgICAgICAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgJ0JlYXJlciAnICsgYWNjZXNzVG9rZW5TdHJpbmcpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export const DDR_OAUTH2_CONFIG = new InjectionToken('DDR_OAUTH2_CONFIG');
|
|
3
|
-
export class OAuth2Config {
|
|
4
|
-
constructor(clientId, redirectUri, authorizeUri, tokenUri) {
|
|
5
|
-
this.clientId = clientId;
|
|
6
|
-
this.redirectUri = redirectUri;
|
|
7
|
-
this.authorizeUri = authorizeUri;
|
|
8
|
-
this.tokenUri = tokenUri;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgyLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9vYXV0aC9vYXV0aDItY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFN0MsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQWUsbUJBQW1CLENBQUMsQ0FBQztBQUV2RixNQUFNLE9BQU8sWUFBWTtJQUVyQixZQUNvQixRQUFnQixFQUNoQixXQUFtQixFQUNuQixZQUFvQixFQUNwQixRQUFnQjtRQUhoQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLGlCQUFZLEdBQVosWUFBWSxDQUFRO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQVE7SUFHcEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBERFJfT0FVVEgyX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPQXV0aDJDb25maWc+KCdERFJfT0FVVEgyX0NPTkZJRycpO1xuXG5leHBvcnQgY2xhc3MgT0F1dGgyQ29uZmlnXG57XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBjbGllbnRJZDogc3RyaW5nLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgcmVkaXJlY3RVcmk6IHN0cmluZyxcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGF1dGhvcml6ZVVyaTogc3RyaW5nLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgdG9rZW5Vcmk6IHN0cmluZ1xuICAgIClcbiAgICB7XG4gICAgfVxufVxuIl19
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export class OAuth2Error extends Error {
|
|
2
|
-
static { this.CODE_NOT_FOUND = 'code_not_found'; }
|
|
3
|
-
static { this.ACCESS_DENIED = 'access_denied'; }
|
|
4
|
-
constructor(error) {
|
|
5
|
-
super(error);
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgyLWVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL29hdXRoL29hdXRoMi1lcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sV0FBWSxTQUFRLEtBQUs7YUFFWCxtQkFBYyxHQUFHLGdCQUFnQixDQUFDO2FBRWxDLGtCQUFhLEdBQUcsZUFBZSxDQUFDO0lBRXZELFlBQVksS0FBYTtRQUVyQixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBPQXV0aDJFcnJvciBleHRlbmRzIEVycm9yXG57XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBDT0RFX05PVF9GT1VORCA9ICdjb2RlX25vdF9mb3VuZCc7XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDQ0VTU19ERU5JRUQgPSAnYWNjZXNzX2RlbmllZCc7XG5cbiAgICBjb25zdHJ1Y3RvcihlcnJvcjogc3RyaW5nKVxuICAgIHtcbiAgICAgICAgc3VwZXIoZXJyb3IpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { switchMap } from 'rxjs/operators';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./oauth2.service";
|
|
5
|
-
export class OAuth2RefreshTokenInterceptor {
|
|
6
|
-
constructor(oAuth2Service) {
|
|
7
|
-
this.oAuth2Service = oAuth2Service;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* @override
|
|
11
|
-
*/
|
|
12
|
-
intercept(req, next) {
|
|
13
|
-
if (this.oAuth2Service.isRefreshPossibleAndRequired(req)) {
|
|
14
|
-
return this.oAuth2Service.performRefresh().pipe(switchMap(() => next.handle(req)));
|
|
15
|
-
}
|
|
16
|
-
return next.handle(req);
|
|
17
|
-
}
|
|
18
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: OAuth2RefreshTokenInterceptor, deps: [{ token: i1.OAuth2Service }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
19
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: OAuth2RefreshTokenInterceptor }); }
|
|
20
|
-
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: OAuth2RefreshTokenInterceptor, decorators: [{
|
|
22
|
-
type: Injectable
|
|
23
|
-
}], ctorParameters: () => [{ type: i1.OAuth2Service }] });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgyLXJlZnJlc2gtdG9rZW4taW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9vYXV0aC9vYXV0aDItcmVmcmVzaC10b2tlbi1pbnRlcmNlcHRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFJekMsTUFBTSxPQUFPLDZCQUE2QjtJQUV0QyxZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUVoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUVyRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsNEJBQTRCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUMzQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNwQyxDQUFDO1FBQ04sQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDOzhHQWxCUSw2QkFBNkI7a0hBQTdCLDZCQUE2Qjs7MkZBQTdCLDZCQUE2QjtrQkFEekMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cEV2ZW50LCBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3N3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtPQXV0aDJTZXJ2aWNlfSBmcm9tICcuL29hdXRoMi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9BdXRoMlJlZnJlc2hUb2tlbkludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yXG57XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBvQXV0aDJTZXJ2aWNlOiBPQXV0aDJTZXJ2aWNlKVxuICAgIHtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PlxuICAgIHtcbiAgICAgICAgaWYgKHRoaXMub0F1dGgyU2VydmljZS5pc1JlZnJlc2hQb3NzaWJsZUFuZFJlcXVpcmVkKHJlcSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9BdXRoMlNlcnZpY2UucGVyZm9ybVJlZnJlc2goKS5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiBuZXh0LmhhbmRsZShyZXEpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { DDR_OAUTH2_CONFIG } from './oauth2-config';
|
|
3
|
-
import { HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
4
|
-
import { OAuth2RefreshTokenInterceptor } from './oauth2-refresh-token-interceptor.service';
|
|
5
|
-
import { RedirectToOAuth2LoginInterceptor } from './redirect-to-oauth2-login-interceptor.service';
|
|
6
|
-
import { OAuth2AccessTokenInterceptor } from './oauth2-access-token-interceptor.service';
|
|
7
|
-
import { OAuth2Service } from './oauth2.service';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
export class OAuth2Module {
|
|
10
|
-
static forRoot(config) {
|
|
11
|
-
return {
|
|
12
|
-
ngModule: OAuth2Module,
|
|
13
|
-
providers: [
|
|
14
|
-
OAuth2Service,
|
|
15
|
-
{
|
|
16
|
-
provide: DDR_OAUTH2_CONFIG,
|
|
17
|
-
useValue: config
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
provide: HTTP_INTERCEPTORS,
|
|
21
|
-
useClass: OAuth2RefreshTokenInterceptor,
|
|
22
|
-
multi: true
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
provide: HTTP_INTERCEPTORS,
|
|
26
|
-
useClass: RedirectToOAuth2LoginInterceptor,
|
|
27
|
-
multi: true
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
provide: HTTP_INTERCEPTORS,
|
|
31
|
-
useClass: OAuth2AccessTokenInterceptor,
|
|
32
|
-
multi: true
|
|
33
|
-
}
|
|
34
|
-
],
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: OAuth2Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
38
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: OAuth2Module }); }
|
|
39
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: OAuth2Module }); }
|
|
40
|
-
}
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: OAuth2Module, decorators: [{
|
|
42
|
-
type: NgModule
|
|
43
|
-
}] });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9vYXV0aC9vYXV0aDIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0IsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBQyxpQkFBaUIsRUFBZSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ2hHLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7QUFHL0MsTUFBTSxPQUFPLFlBQVk7SUFFckIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFvQjtRQUUvQixPQUFPO1lBQ0gsUUFBUSxFQUFFLFlBQVk7WUFDdEIsU0FBUyxFQUFFO2dCQUNQLGFBQWE7Z0JBQ2I7b0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsUUFBUSxFQUFFLE1BQU07aUJBQ25CO2dCQUNEO29CQUNJLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLEtBQUssRUFBRSxJQUFJO2lCQUNkO2dCQUNEO29CQUNJLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFFBQVEsRUFBRSxnQ0FBZ0M7b0JBQzFDLEtBQUssRUFBRSxJQUFJO2lCQUNkO2dCQUNEO29CQUNJLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLEtBQUssRUFBRSxJQUFJO2lCQUNkO2FBQ0o7U0FDSixDQUFDO0lBQ04sQ0FBQzs4R0E3QlEsWUFBWTsrR0FBWixZQUFZOytHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBRHhCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RERSX09BVVRIMl9DT05GSUcsIE9BdXRoMkNvbmZpZ30gZnJvbSAnLi9vYXV0aDItY29uZmlnJztcbmltcG9ydCB7SFRUUF9JTlRFUkNFUFRPUlN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7T0F1dGgyUmVmcmVzaFRva2VuSW50ZXJjZXB0b3J9IGZyb20gJy4vb2F1dGgyLXJlZnJlc2gtdG9rZW4taW50ZXJjZXB0b3Iuc2VydmljZSc7XG5pbXBvcnQge1JlZGlyZWN0VG9PQXV0aDJMb2dpbkludGVyY2VwdG9yfSBmcm9tICcuL3JlZGlyZWN0LXRvLW9hdXRoMi1sb2dpbi1pbnRlcmNlcHRvci5zZXJ2aWNlJztcbmltcG9ydCB7T0F1dGgyQWNjZXNzVG9rZW5JbnRlcmNlcHRvcn0gZnJvbSAnLi9vYXV0aDItYWNjZXNzLXRva2VuLWludGVyY2VwdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtPQXV0aDJTZXJ2aWNlfSBmcm9tICcuL29hdXRoMi5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKClcbmV4cG9ydCBjbGFzcyBPQXV0aDJNb2R1bGVcbntcbiAgICBzdGF0aWMgZm9yUm9vdChjb25maWc6IE9BdXRoMkNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8T0F1dGgyTW9kdWxlPlxuICAgIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBPQXV0aDJNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICBPQXV0aDJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogRERSX09BVVRIMl9DT05GSUcsXG4gICAgICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBjb25maWdcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXG4gICAgICAgICAgICAgICAgICAgIHVzZUNsYXNzOiBPQXV0aDJSZWZyZXNoVG9rZW5JbnRlcmNlcHRvcixcbiAgICAgICAgICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXG4gICAgICAgICAgICAgICAgICAgIHVzZUNsYXNzOiBSZWRpcmVjdFRvT0F1dGgyTG9naW5JbnRlcmNlcHRvcixcbiAgICAgICAgICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXG4gICAgICAgICAgICAgICAgICAgIHVzZUNsYXNzOiBPQXV0aDJBY2Nlc3NUb2tlbkludGVyY2VwdG9yLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { throwError } from 'rxjs';
|
|
3
|
-
import { HttpParams } from '@angular/common/http';
|
|
4
|
-
import { catchError, map, shareReplay } from 'rxjs/operators';
|
|
5
|
-
import { DDR_OAUTH2_CONFIG } from './oauth2-config';
|
|
6
|
-
import { OAuth2Error } from './oauth2-error';
|
|
7
|
-
import { TypeUtils } from '../util/type-utils';
|
|
8
|
-
import { StringUtils } from '../util/string-utils';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/router";
|
|
11
|
-
import * as i2 from "@angular/common/http";
|
|
12
|
-
import * as i3 from "../logger/logger.service";
|
|
13
|
-
import * as i4 from "./oauth2-config";
|
|
14
|
-
export class OAuth2Service {
|
|
15
|
-
static { this.STORAGE_KEY_CHALLENGE = 'ddr_oauth2_challenge'; }
|
|
16
|
-
static { this.STORAGE_KEY_REFRESH_TOKEN = 'ddr_oauth2_refresh_token'; }
|
|
17
|
-
static { this.STORAGE_KEY_RETURN_URL = 'ddr_oauth2_return_url'; }
|
|
18
|
-
constructor(route, httpClient, loggerService, config) {
|
|
19
|
-
this.route = route;
|
|
20
|
-
this.httpClient = httpClient;
|
|
21
|
-
this.loggerService = loggerService;
|
|
22
|
-
this.config = config;
|
|
23
|
-
this.accessTokenString = null;
|
|
24
|
-
this.accessToken = null;
|
|
25
|
-
this.REFRESH_MARGIN_SECONDS = 60 * 10;
|
|
26
|
-
this.refreshTokenRequest$ = null;
|
|
27
|
-
}
|
|
28
|
-
redirectToLogin() {
|
|
29
|
-
const challenge = this.createChallenge();
|
|
30
|
-
localStorage.setItem(OAuth2Service.STORAGE_KEY_CHALLENGE, challenge);
|
|
31
|
-
const params = new HttpParams()
|
|
32
|
-
.set('client_id', this.config.clientId)
|
|
33
|
-
.set('response_type', 'code')
|
|
34
|
-
.set('redirect_uri', this.config.redirectUri)
|
|
35
|
-
.set('code_challenge', challenge)
|
|
36
|
-
.set('code_challenge_method', 'plain');
|
|
37
|
-
window.location.href = this.config.authorizeUri + '?' + params.toString();
|
|
38
|
-
}
|
|
39
|
-
handleCode() {
|
|
40
|
-
if (this.route.snapshot.queryParamMap.has('error')) {
|
|
41
|
-
const error = this.route.snapshot.queryParamMap.get('error');
|
|
42
|
-
return throwError(() => new OAuth2Error(error ?? 'Unknown error'));
|
|
43
|
-
}
|
|
44
|
-
if (!this.route.snapshot.queryParamMap.has('code')) {
|
|
45
|
-
return throwError(() => new OAuth2Error(OAuth2Error.CODE_NOT_FOUND));
|
|
46
|
-
}
|
|
47
|
-
const code = TypeUtils.notNull(this.route.snapshot.queryParamMap.get('code'));
|
|
48
|
-
const params = new HttpParams()
|
|
49
|
-
.set('grant_type', 'authorization_code')
|
|
50
|
-
.set('code', code)
|
|
51
|
-
.set('redirect_uri', this.config.redirectUri)
|
|
52
|
-
.set('code_verifier', TypeUtils.notNull(localStorage.getItem(OAuth2Service.STORAGE_KEY_CHALLENGE)))
|
|
53
|
-
.set('client_id', this.config.clientId);
|
|
54
|
-
return this.httpClient.post(this.config.tokenUri, params).pipe(map(tokenResponse => this.processTokenResponse(tokenResponse)));
|
|
55
|
-
}
|
|
56
|
-
createChallenge() {
|
|
57
|
-
return StringUtils.createRandomString(64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-._~');
|
|
58
|
-
}
|
|
59
|
-
getRefreshToken() {
|
|
60
|
-
return localStorage.getItem(OAuth2Service.STORAGE_KEY_REFRESH_TOKEN);
|
|
61
|
-
}
|
|
62
|
-
getAccessTokenString() {
|
|
63
|
-
return this.accessTokenString;
|
|
64
|
-
}
|
|
65
|
-
isAccessTokenExpired() {
|
|
66
|
-
return (null == this.accessToken
|
|
67
|
-
|| this.accessToken.exp * 1000 < Date.now());
|
|
68
|
-
}
|
|
69
|
-
isRefreshPossibleAndRequired(req = null) {
|
|
70
|
-
return ((null == req || !req.url.endsWith(this.config.tokenUri))
|
|
71
|
-
&& null != this.getRefreshToken()
|
|
72
|
-
&& (null == this.accessToken
|
|
73
|
-
|| (this.accessToken.exp - this.REFRESH_MARGIN_SECONDS) * 1000 < Date.now()));
|
|
74
|
-
}
|
|
75
|
-
performRefresh() {
|
|
76
|
-
if (null == this.refreshTokenRequest$) {
|
|
77
|
-
this.loggerService.info('Performing token refesh');
|
|
78
|
-
const params = new HttpParams()
|
|
79
|
-
.set('grant_type', 'refresh_token')
|
|
80
|
-
.set('refresh_token', TypeUtils.notNull(this.getRefreshToken()))
|
|
81
|
-
.set('client_id', this.config.clientId);
|
|
82
|
-
this.refreshTokenRequest$ = this.httpClient.post(this.config.tokenUri, params).pipe(map(tokenResponse => {
|
|
83
|
-
const token = this.processTokenResponse(tokenResponse);
|
|
84
|
-
this.refreshTokenRequest$ = null;
|
|
85
|
-
return token;
|
|
86
|
-
}), catchError(error => {
|
|
87
|
-
this.accessTokenString = null;
|
|
88
|
-
this.accessToken = null;
|
|
89
|
-
localStorage.removeItem(OAuth2Service.STORAGE_KEY_REFRESH_TOKEN);
|
|
90
|
-
this.refreshTokenRequest$ = null;
|
|
91
|
-
return throwError(error);
|
|
92
|
-
}), shareReplay(1));
|
|
93
|
-
}
|
|
94
|
-
return this.refreshTokenRequest$;
|
|
95
|
-
}
|
|
96
|
-
processTokenResponse(tokenResponse) {
|
|
97
|
-
localStorage.removeItem(OAuth2Service.STORAGE_KEY_CHALLENGE);
|
|
98
|
-
this.accessTokenString = tokenResponse.access_token;
|
|
99
|
-
this.accessToken = JSON.parse(atob(tokenResponse.access_token.split('.')[1]));
|
|
100
|
-
this.loggerService.info('Access Token Expiry', new Date(this.accessToken.exp * 1000));
|
|
101
|
-
localStorage.setItem(OAuth2Service.STORAGE_KEY_REFRESH_TOKEN, tokenResponse.refresh_token);
|
|
102
|
-
return this.accessToken;
|
|
103
|
-
}
|
|
104
|
-
clear() {
|
|
105
|
-
this.accessToken = null;
|
|
106
|
-
this.accessTokenString = null;
|
|
107
|
-
localStorage.removeItem(OAuth2Service.STORAGE_KEY_REFRESH_TOKEN);
|
|
108
|
-
localStorage.removeItem(OAuth2Service.STORAGE_KEY_RETURN_URL);
|
|
109
|
-
}
|
|
110
|
-
setReturnUrl(url) {
|
|
111
|
-
localStorage.setItem(OAuth2Service.STORAGE_KEY_RETURN_URL, url);
|
|
112
|
-
}
|
|
113
|
-
getReturnUrl() {
|
|
114
|
-
return localStorage.getItem(OAuth2Service.STORAGE_KEY_RETURN_URL);
|
|
115
|
-
}
|
|
116
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: OAuth2Service, deps: [{ token: i1.ActivatedRoute }, { token: i2.HttpClient }, { token: i3.Logger }, { token: DDR_OAUTH2_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
117
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: OAuth2Service }); }
|
|
118
|
-
}
|
|
119
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: OAuth2Service, decorators: [{
|
|
120
|
-
type: Injectable
|
|
121
|
-
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.HttpClient }, { type: i3.Logger }, { type: i4.OAuth2Config, decorators: [{
|
|
122
|
-
type: Inject,
|
|
123
|
-
args: [DDR_OAUTH2_CONFIG]
|
|
124
|
-
}] }] });
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvb2F1dGgvb2F1dGgyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFhLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQWEsVUFBVSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUQsT0FBTyxFQUFDLGlCQUFpQixFQUFlLE1BQU0saUJBQWlCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQUlqRCxNQUFNLE9BQU8sYUFBYTthQUVQLDBCQUFxQixHQUFHLHNCQUFzQixBQUF6QixDQUEwQjthQUUvQyw4QkFBeUIsR0FBRywwQkFBMEIsQUFBN0IsQ0FBOEI7YUFFeEQsMkJBQXNCLEdBQUcsdUJBQXVCLEFBQTFCLENBQTJCO0lBVS9ELFlBQ1ksS0FBcUIsRUFDckIsVUFBc0IsRUFDdEIsYUFBcUIsRUFDTSxNQUFvQjtRQUgvQyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQ00sV0FBTSxHQUFOLE1BQU0sQ0FBYztRQVpuRCxzQkFBaUIsR0FBa0IsSUFBSSxDQUFDO1FBRXhDLGdCQUFXLEdBQXdCLElBQUksQ0FBQztRQUUvQiwyQkFBc0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBRTFDLHlC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QUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMseUJBQXlCLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTNGLE9BQU8sSUFBSSxDQUFDLFdBQVksQ0FBQztJQUM3QixDQUFDO0lBRU0sS0FBSztRQUVSLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDOUIsWUFBWSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNqRSxZQUFZLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSxZQUFZLENBQUMsR0FBVztRQUUzQixZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU0sWUFBWTtRQUVmLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN0RSxDQUFDOzhHQTVKUSxhQUFhLGdHQW9CVixpQkFBaUI7a0hBcEJwQixhQUFhOzsyRkFBYixhQUFhO2tCQUR6QixVQUFVOzswQkFxQkYsTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cFBhcmFtcywgSHR0cFJlcXVlc3R9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwLCBzaGFyZVJlcGxheX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtUb2tlblJlc3BvbnNlfSBmcm9tICcuL3Rva2VuLXJlc3BvbnNlJztcbmltcG9ydCB7SnNvbldlYlRva2VufSBmcm9tICcuL2pzb24td2ViLXRva2VuJztcbmltcG9ydCB7RERSX09BVVRIMl9DT05GSUcsIE9BdXRoMkNvbmZpZ30gZnJvbSAnLi9vYXV0aDItY29uZmlnJztcbmltcG9ydCB7T0F1dGgyRXJyb3J9IGZyb20gJy4vb2F1dGgyLWVycm9yJztcbmltcG9ydCB7VHlwZVV0aWxzfSBmcm9tICcuLi91dGlsL3R5cGUtdXRpbHMnO1xuaW1wb3J0IHtTdHJpbmdVdGlsc30gZnJvbSAnLi4vdXRpbC9zdHJpbmctdXRpbHMnO1xuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPQXV0aDJTZXJ2aWNlXG57XG4gICAgcHJpdmF0ZSBzdGF0aWMgU1RPUkFHRV9LRVlfQ0hBTExFTkdFID0gJ2Rkcl9vYXV0aDJfY2hhbGxlbmdlJztcblxuICAgIHByaXZhdGUgc3RhdGljIFNUT1JBR0VfS0VZX1JFRlJFU0hfVE9LRU4gPSAnZGRyX29hdXRoMl9yZWZyZXNoX3Rva2VuJztcblxuICAgIHB1YmxpYyBzdGF0aWMgU1RPUkFHRV9LRVlfUkVUVVJOX1VSTCA9ICdkZHJfb2F1dGgyX3JldHVybl91cmwnO1xuXG4gICAgcHJpdmF0ZSBhY2Nlc3NUb2tlblN0cmluZzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcml2YXRlIGFjY2Vzc1Rva2VuOiBKc29uV2ViVG9rZW4gfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgUkVGUkVTSF9NQVJHSU5fU0VDT05EUyA9IDYwICogMTA7XG5cbiAgICBwcml2YXRlIHJlZnJlc2hUb2tlblJlcXVlc3QkOiBPYnNlcnZhYmxlPEpzb25XZWJUb2tlbj4gfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgICAgICBwcml2YXRlIGxvZ2dlclNlcnZpY2U6IExvZ2dlcixcbiAgICAgICAgQEluamVjdChERFJfT0FVVEgyX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IE9BdXRoMkNvbmZpZ1xuICAgIClcbiAgICB7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZGlyZWN0VG9Mb2dpbigpXG4gICAge1xuICAgICAgICBjb25zdCBjaGFsbGVuZ2UgPSB0aGlzLmNyZWF0ZUNoYWxsZW5nZSgpO1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShPQXV0aDJTZXJ2aWNlLlNUT1JBR0VfS0VZX0NIQUxMRU5HRSwgY2hhbGxlbmdlKTtcblxuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXG4gICAgICAgICAgICAuc2V0KCdjbGllbnRfaWQnLCB0aGlzLmNvbmZpZy5jbGllbnRJZClcbiAgICAgICAgICAgIC5zZXQoJ3Jlc3BvbnNlX3R5cGUnLCAnY29kZScpXG4gICAgICAgICAgICAuc2V0KCdyZWRpcmVjdF91cmknLCB0aGlzLmNvbmZpZy5yZWRpcmVjdFVyaSlcbiAgICAgICAgICAgIC5zZXQoJ2NvZGVfY2hhbGxlbmdlJywgY2hhbGxlbmdlKVxuICAgICAgICAgICAgLnNldCgnY29kZV9jaGFsbGVuZ2VfbWV0aG9kJywgJ3BsYWluJyk7XG5cbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLmNvbmZpZy5hdXRob3JpemVVcmkgKyAnPycgKyBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlQ29kZSgpOiBPYnNlcnZhYmxlPEpzb25XZWJUb2tlbj5cbiAgICB7XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuaGFzKCdlcnJvcicpKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ2Vycm9yJyk7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgT0F1dGgyRXJyb3IoZXJyb3IgPz8gJ1Vua25vd24gZXJyb3InKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5oYXMoJ2NvZGUnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IE9BdXRoMkVycm9yKE9BdXRoMkVycm9yLkNPREVfTk9UX0ZPVU5EKSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb2RlID0gVHlwZVV0aWxzLm5vdE51bGwodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCgnY29kZScpKTtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKVxuICAgICAgICAgICAgLnNldCgnZ3JhbnRfdHlwZScsICdhdXRob3JpemF0aW9uX2NvZGUnKVxuICAgICAgICAgICAgLnNldCgnY29kZScsIGNvZGUpXG4gICAgICAgICAgICAuc2V0KCdyZWRpcmVjdF91cmknLCB0aGlzLmNvbmZpZy5yZWRpcmVjdFVyaSlcbiAgICAgICAgICAgIC5zZXQoJ2NvZGVfdmVyaWZpZXInLCBUeXBlVXRpbHMubm90TnVsbChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShPQXV0aDJTZXJ2aWNlLlNUT1JBR0VfS0VZX0NIQUxMRU5HRSkpKVxuICAgICAgICAgICAgLnNldCgnY2xpZW50X2lkJywgdGhpcy5jb25maWcuY2xpZW50SWQpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8VG9rZW5SZXNwb25zZT4odGhpcy5jb25maWcudG9rZW5VcmksIHBhcmFtcykucGlwZShcbiAgICAgICAgICAgIG1hcCh0b2tlblJlc3BvbnNlID0+IHRoaXMucHJvY2Vzc1Rva2VuUmVzcG9uc2UodG9rZW5SZXNwb25zZSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDaGFsbGVuZ2UoKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZ1V0aWxzLmNyZWF0ZVJhbmRvbVN0cmluZyg2NCwgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMTIzNDU2Nzg5MC0uX34nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJlZnJlc2hUb2tlbigpOiBzdHJpbmcgfCBudWxsXG4gICAge1xuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oT0F1dGgyU2VydmljZS5TVE9SQUdFX0tFWV9SRUZSRVNIX1RPS0VOKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWNjZXNzVG9rZW5TdHJpbmcoKTogc3RyaW5nIHwgbnVsbFxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWNjZXNzVG9rZW5TdHJpbmc7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQWNjZXNzVG9rZW5FeHBpcmVkKCk6IGJvb2xlYW5cbiAgICB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBudWxsID09IHRoaXMuYWNjZXNzVG9rZW5cbiAgICAgICAgICAgIHx8IHRoaXMuYWNjZXNzVG9rZW4uZXhwICogMTAwMCA8IERhdGUubm93KClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNSZWZyZXNoUG9zc2libGVBbmRSZXF1aXJlZChyZXE6IEh0dHBSZXF1ZXN0PGFueT4gfCBudWxsID0gbnVsbCk6IGJvb2xlYW5cbiAgICB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAobnVsbCA9PSByZXEgfHwgIXJlcS51cmwuZW5kc1dpdGgodGhpcy5jb25maWcudG9rZW5VcmkpKVxuICAgICAgICAgICAgJiYgbnVsbCAhPSB0aGlzLmdldFJlZnJlc2hUb2tlbigpXG4gICAgICAgICAgICAmJiAoXG4gICAgICAgICAgICAgICAgbnVsbCA9PSB0aGlzLmFjY2Vzc1Rva2VuXG4gICAgICAgICAgICAgICAgfHwgKHRoaXMuYWNjZXNzVG9rZW4uZXhwIC0gdGhpcy5SRUZSRVNIX01BUkdJTl9TRUNPTkRTKSAqIDEwMDAgPCBEYXRlLm5vdygpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHBlcmZvcm1SZWZyZXNoKCk6IE9ic2VydmFibGU8SnNvbldlYlRva2VuPlxuICAgIHtcbiAgICAgICAgaWYgKG51bGwgPT0gdGhpcy5yZWZyZXNoVG9rZW5SZXF1ZXN0JCkge1xuXG4gICAgICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuaW5mbygnUGVyZm9ybWluZyB0b2tlbiByZWZlc2gnKTtcblxuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKVxuICAgICAgICAgICAgICAgIC5zZXQoJ2dyYW50X3R5cGUnLCAncmVmcmVzaF90b2tlbicpXG4gICAgICAgICAgICAgICAgLnNldCgncmVmcmVzaF90b2tlbicsIFR5cGVVdGlscy5ub3ROdWxsKHRoaXMuZ2V0UmVmcmVzaFRva2VuKCkpKVxuICAgICAgICAgICAgICAgIC5zZXQoJ2NsaWVudF9pZCcsIHRoaXMuY29uZmlnLmNsaWVudElkKTtcblxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5SZXF1ZXN0JCA9IHRoaXMuaHR0cENsaWVudC5wb3N0PFRva2VuUmVzcG9uc2U+KHRoaXMuY29uZmlnLnRva2VuVXJpLCBwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHRva2VuUmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMucHJvY2Vzc1Rva2VuUmVzcG9uc2UodG9rZW5SZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuUmVxdWVzdCQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWNjZXNzVG9rZW5TdHJpbmcgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjY2Vzc1Rva2VuID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oT0F1dGgyU2VydmljZS5TVE9SQUdFX0tFWV9SRUZSRVNIX1RPS0VOKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5SZXF1ZXN0JCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlblJlcXVlc3QkO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1Rva2VuUmVzcG9uc2UodG9rZW5SZXNwb25zZTogVG9rZW5SZXNwb25zZSk6IEpzb25XZWJUb2tlblxuICAgIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oT0F1dGgyU2VydmljZS5TVE9SQUdFX0tFWV9DSEFMTEVOR0UpO1xuICAgICAgICB0aGlzLmFjY2Vzc1Rva2VuU3RyaW5nID0gdG9rZW5SZXNwb25zZS5hY2Nlc3NfdG9rZW47XG4gICAgICAgIHRoaXMuYWNjZXNzVG9rZW4gPSBKU09OLnBhcnNlKGF0b2IodG9rZW5SZXNwb25zZS5hY2Nlc3NfdG9rZW4uc3BsaXQoJy4nKVsxXSkpO1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuaW5mbygnQWNjZXNzIFRva2VuIEV4cGlyeScsIG5ldyBEYXRlKHRoaXMuYWNjZXNzVG9rZW4hLmV4cCAqIDEwMDApKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oT0F1dGgyU2VydmljZS5TVE9SQUdFX0tFWV9SRUZSRVNIX1RPS0VOLCB0b2tlblJlc3BvbnNlLnJlZnJlc2hfdG9rZW4pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFjY2Vzc1Rva2VuITtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIoKVxuICAgIHtcbiAgICAgICAgdGhpcy5hY2Nlc3NUb2tlbiA9IG51bGw7XG4gICAgICAgIHRoaXMuYWNjZXNzVG9rZW5TdHJpbmcgPSBudWxsO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShPQXV0aDJTZXJ2aWNlLlNUT1JBR0VfS0VZX1JFRlJFU0hfVE9LRU4pO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShPQXV0aDJTZXJ2aWNlLlNUT1JBR0VfS0VZX1JFVFVSTl9VUkwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRSZXR1cm5VcmwodXJsOiBzdHJpbmcpXG4gICAge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShPQXV0aDJTZXJ2aWNlLlNUT1JBR0VfS0VZX1JFVFVSTl9VUkwsIHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJldHVyblVybCgpOiBzdHJpbmcgfCBudWxsXG4gICAge1xuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oT0F1dGgyU2VydmljZS5TVE9SQUdFX0tFWV9SRVRVUk5fVVJMKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { HttpErrorResponse } from '@angular/common/http';
|
|
2
|
-
import { throwError } from 'rxjs';
|
|
3
|
-
import { Inject, Injectable } from '@angular/core';
|
|
4
|
-
import { catchError } from 'rxjs/operators';
|
|
5
|
-
import { DDR_OAUTH2_CONFIG } from './oauth2-config';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "./oauth2.service";
|
|
8
|
-
import * as i2 from "@angular/router";
|
|
9
|
-
import * as i3 from "./oauth2-config";
|
|
10
|
-
export class RedirectToOAuth2LoginInterceptor {
|
|
11
|
-
constructor(oAuth2Service, router, oAuth2Config) {
|
|
12
|
-
this.oAuth2Service = oAuth2Service;
|
|
13
|
-
this.router = router;
|
|
14
|
-
this.oAuth2Config = oAuth2Config;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* @override
|
|
18
|
-
*/
|
|
19
|
-
intercept(req, next) {
|
|
20
|
-
return next.handle(req).pipe(catchError((err) => {
|
|
21
|
-
if (err instanceof HttpErrorResponse) {
|
|
22
|
-
if (err.status === 401) {
|
|
23
|
-
if (!window.location.href.startsWith(this.oAuth2Config.redirectUri)) {
|
|
24
|
-
this.oAuth2Service.setReturnUrl(this.router.routerState.snapshot.url);
|
|
25
|
-
this.oAuth2Service.redirectToLogin();
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return throwError(err);
|
|
30
|
-
}));
|
|
31
|
-
}
|
|
32
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RedirectToOAuth2LoginInterceptor, deps: [{ token: i1.OAuth2Service }, { token: i2.Router }, { token: DDR_OAUTH2_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RedirectToOAuth2LoginInterceptor }); }
|
|
34
|
-
}
|
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: RedirectToOAuth2LoginInterceptor, decorators: [{
|
|
36
|
-
type: Injectable
|
|
37
|
-
}], ctorParameters: () => [{ type: i1.OAuth2Service }, { type: i2.Router }, { type: i3.OAuth2Config, decorators: [{
|
|
38
|
-
type: Inject,
|
|
39
|
-
args: [DDR_OAUTH2_CONFIG]
|
|
40
|
-
}] }] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXJlY3QtdG8tb2F1dGgyLWxvZ2luLWludGVyY2VwdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvb2F1dGgvcmVkaXJlY3QtdG8tb2F1dGgyLWxvZ2luLWludGVyY2VwdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUF1RCxNQUFNLHNCQUFzQixDQUFDO0FBQzdHLE9BQU8sRUFBYSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRzFDLE9BQU8sRUFBQyxpQkFBaUIsRUFBZSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQUdoRSxNQUFNLE9BQU8sZ0NBQWdDO0lBRXpDLFlBQ1ksYUFBNEIsRUFDNUIsTUFBYyxFQUNhLFlBQTBCO1FBRnJELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDYSxpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUdqRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUVyRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBRTVDLElBQUksR0FBRyxZQUFZLGlCQUFpQixFQUFFLENBQUM7Z0JBQ25DLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7d0JBQ2xFLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDdEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDekMsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztZQUVELE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDOzhHQTVCUSxnQ0FBZ0MscUVBSzdCLGlCQUFpQjtrSEFMcEIsZ0NBQWdDOzsyRkFBaEMsZ0NBQWdDO2tCQUQ1QyxVQUFVOzswQkFNRixNQUFNOzJCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2UsIEh0dHBFdmVudCwgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3R9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgdGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2NhdGNoRXJyb3J9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtPQXV0aDJTZXJ2aWNlfSBmcm9tICcuL29hdXRoMi5zZXJ2aWNlJztcbmltcG9ydCB7RERSX09BVVRIMl9DT05GSUcsIE9BdXRoMkNvbmZpZ30gZnJvbSAnLi9vYXV0aDItY29uZmlnJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlZGlyZWN0VG9PQXV0aDJMb2dpbkludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yXG57XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgb0F1dGgyU2VydmljZTogT0F1dGgyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgQEluamVjdChERFJfT0FVVEgyX0NPTkZJRykgcHJpdmF0ZSBvQXV0aDJDb25maWc6IE9BdXRoMkNvbmZpZ1xuICAgIClcbiAgICB7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj5cbiAgICB7XG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpLnBpcGUoY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG5cbiAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIGlmIChlcnIuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF3aW5kb3cubG9jYXRpb24uaHJlZi5zdGFydHNXaXRoKHRoaXMub0F1dGgyQ29uZmlnLnJlZGlyZWN0VXJpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vQXV0aDJTZXJ2aWNlLnNldFJldHVyblVybCh0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vQXV0aDJTZXJ2aWNlLnJlZGlyZWN0VG9Mb2dpbigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xuICAgICAgICB9KSk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tcmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvb2F1dGgvdG9rZW4tcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVG9rZW5SZXNwb25zZVxue1xuICAgIHRva2VuX3R5cGU6IHN0cmluZztcbiAgICBleHBpcmVzX2luOiBudW1iZXI7XG4gICAgYWNjZXNzX3Rva2VuOiBzdHJpbmc7XG4gICAgcmVmcmVzaF90b2tlbjogc3RyaW5nO1xufVxuIl19
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
|
|
3
|
-
import { Limit } from '../methoddecorator/limit';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class BottomHitDirective {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.offset = 1000;
|
|
8
|
-
this.onWindowBottomHit = new EventEmitter();
|
|
9
|
-
this.onElementBottomHit = new EventEmitter();
|
|
10
|
-
}
|
|
11
|
-
scrolled($event) {
|
|
12
|
-
this.elementScrollEvent($event);
|
|
13
|
-
}
|
|
14
|
-
windowScrolled($event) {
|
|
15
|
-
this.windowScrollEvent($event);
|
|
16
|
-
}
|
|
17
|
-
windowScrollEvent($event) {
|
|
18
|
-
const pageHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.offsetHeight, document.body.clientHeight, document.documentElement.clientHeight);
|
|
19
|
-
const viewportHeight = document.documentElement.clientHeight;
|
|
20
|
-
const scrollPosition = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
|
|
21
|
-
const distanceToBottom = pageHeight - (scrollPosition + viewportHeight);
|
|
22
|
-
if (distanceToBottom < this.offset) {
|
|
23
|
-
this.onWindowBottomHit.emit();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
elementScrollEvent($event) {
|
|
27
|
-
const target = $event.target;
|
|
28
|
-
const scrollPosition = target.scrollHeight - target.scrollTop;
|
|
29
|
-
const offsetHeight = target.offsetHeight;
|
|
30
|
-
const isReachingBottom = (scrollPosition - offsetHeight) < this.offset;
|
|
31
|
-
if (isReachingBottom) {
|
|
32
|
-
this.onElementBottomHit.emit();
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BottomHitDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
36
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: BottomHitDirective, selector: "[ddrBottomHit]", outputs: { onWindowBottomHit: "onWindowBottomHit", onElementBottomHit: "onElementBottomHit" }, host: { listeners: { "scroll": "scrolled($event)", "window:scroll": "windowScrolled($event)" } }, ngImport: i0 }); }
|
|
37
|
-
}
|
|
38
|
-
__decorate([
|
|
39
|
-
Limit()
|
|
40
|
-
], BottomHitDirective.prototype, "scrolled", null);
|
|
41
|
-
__decorate([
|
|
42
|
-
Limit()
|
|
43
|
-
], BottomHitDirective.prototype, "windowScrolled", null);
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BottomHitDirective, decorators: [{
|
|
45
|
-
type: Directive,
|
|
46
|
-
args: [{
|
|
47
|
-
selector: '[ddrBottomHit]'
|
|
48
|
-
}]
|
|
49
|
-
}], ctorParameters: () => [], propDecorators: { onWindowBottomHit: [{
|
|
50
|
-
type: Output
|
|
51
|
-
}], onElementBottomHit: [{
|
|
52
|
-
type: Output
|
|
53
|
-
}], scrolled: [{
|
|
54
|
-
type: HostListener,
|
|
55
|
-
args: ['scroll', ['$event']]
|
|
56
|
-
}], windowScrolled: [{
|
|
57
|
-
type: HostListener,
|
|
58
|
-
args: ['window:scroll', ['$event']]
|
|
59
|
-
}] } });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90dG9tLWhpdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2Nyb2xsL2JvdHRvbS1oaXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7QUFLL0MsTUFBTSxPQUFPLGtCQUFrQjtJQVUzQjtRQVJPLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFHZCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3RDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFJaEQsQ0FBQztJQUlNLFFBQVEsQ0FBQyxNQUFhO1FBRXpCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBSU0sY0FBYyxDQUFDLE1BQWE7UUFFL0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxNQUFhO1FBRXJDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQ3ZCLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUNqRSxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksRUFDakUsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQ3BFLENBQUM7UUFDRixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztRQUM3RCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQztRQUNoSCxNQUFNLGdCQUFnQixHQUFHLFVBQVUsR0FBRyxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsQ0FBQztRQUN4RSxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEMsQ0FBQztJQUNMLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxNQUFhO1FBRXRDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFxQixDQUFDO1FBQzVDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUM5RCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQ3pDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN2RSxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDOzhHQXBEUSxrQkFBa0I7a0dBQWxCLGtCQUFrQjs7QUFnQnBCO0lBRE4sS0FBSyxFQUFFO2tEQUlQO0FBSU07SUFETixLQUFLLEVBQUU7d0RBSVA7MkZBMUJRLGtCQUFrQjtrQkFIOUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO2lCQUM3Qjt3REFNVSxpQkFBaUI7c0JBRHZCLE1BQU07Z0JBSUMsa0JBQWtCO3NCQUR6QixNQUFNO2dCQVNBLFFBQVE7c0JBRmQsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUzNCLGNBQWM7c0JBRnBCLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMaW1pdH0gZnJvbSAnLi4vbWV0aG9kZGVjb3JhdG9yL2xpbWl0JztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZGRyQm90dG9tSGl0XSdcbn0pXG5leHBvcnQgY2xhc3MgQm90dG9tSGl0RGlyZWN0aXZlXG57XG4gICAgcHVibGljIG9mZnNldCA9IDEwMDA7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25XaW5kb3dCb3R0b21IaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwcml2YXRlIG9uRWxlbWVudEJvdHRvbUhpdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIGNvbnN0cnVjdG9yKClcbiAgICB7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignc2Nyb2xsJywgWyckZXZlbnQnXSlcbiAgICBATGltaXQoKVxuICAgIHB1YmxpYyBzY3JvbGxlZCgkZXZlbnQ6IEV2ZW50KTogdm9pZFxuICAgIHtcbiAgICAgICAgdGhpcy5lbGVtZW50U2Nyb2xsRXZlbnQoJGV2ZW50KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2Nyb2xsJywgWyckZXZlbnQnXSlcbiAgICBATGltaXQoKVxuICAgIHB1YmxpYyB3aW5kb3dTY3JvbGxlZCgkZXZlbnQ6IEV2ZW50KTogdm9pZFxuICAgIHtcbiAgICAgICAgdGhpcy53aW5kb3dTY3JvbGxFdmVudCgkZXZlbnQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB3aW5kb3dTY3JvbGxFdmVudCgkZXZlbnQ6IEV2ZW50KTogdm9pZFxuICAgIHtcbiAgICAgICAgY29uc3QgcGFnZUhlaWdodCA9IE1hdGgubWF4KFxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQsIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQsXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldEhlaWdodCxcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0LCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPSB3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCB8fCAwO1xuICAgICAgICBjb25zdCBkaXN0YW5jZVRvQm90dG9tID0gcGFnZUhlaWdodCAtIChzY3JvbGxQb3NpdGlvbiArIHZpZXdwb3J0SGVpZ2h0KTtcbiAgICAgICAgaWYgKGRpc3RhbmNlVG9Cb3R0b20gPCB0aGlzLm9mZnNldCkge1xuICAgICAgICAgICAgdGhpcy5vbldpbmRvd0JvdHRvbUhpdC5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZWxlbWVudFNjcm9sbEV2ZW50KCRldmVudDogRXZlbnQpOiB2b2lkXG4gICAge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSAkZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBzY3JvbGxQb3NpdGlvbiA9IHRhcmdldC5zY3JvbGxIZWlnaHQgLSB0YXJnZXQuc2Nyb2xsVG9wO1xuICAgICAgICBjb25zdCBvZmZzZXRIZWlnaHQgPSB0YXJnZXQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBjb25zdCBpc1JlYWNoaW5nQm90dG9tID0gKHNjcm9sbFBvc2l0aW9uIC0gb2Zmc2V0SGVpZ2h0KSA8IHRoaXMub2Zmc2V0O1xuICAgICAgICBpZiAoaXNSZWFjaGluZ0JvdHRvbSkge1xuICAgICAgICAgICAgdGhpcy5vbkVsZW1lbnRCb3R0b21IaXQuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|