ngx-oauth 3.0.1 → 4.1.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/README.md +9 -24
- package/esm2020/lib/components/login/oauth-login.component.mjs +40 -24
- package/esm2020/lib/models/index.mjs +6 -4
- package/esm2020/lib/oauth.module.mjs +12 -10
- package/esm2020/lib/services/oauth.interceptor.mjs +31 -34
- package/esm2020/lib/services/oauth.service.mjs +127 -239
- package/esm2020/lib/services/token.service.mjs +80 -0
- package/fesm2015/ngx-oauth.mjs +233 -283
- package/fesm2015/ngx-oauth.mjs.map +1 -1
- package/fesm2020/ngx-oauth.mjs +275 -302
- package/fesm2020/ngx-oauth.mjs.map +1 -1
- package/lib/components/login/oauth-login.component.d.ts +9 -10
- package/lib/models/index.d.ts +8 -6
- package/lib/services/oauth.interceptor.d.ts +7 -6
- package/lib/services/oauth.service.d.ts +25 -44
- package/lib/services/token.service.d.ts +22 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,11 +14,10 @@
|
|
|
14
14
|
|
|
15
15
|
To start using the `ngx-oauth` you need to import and configure the `OAuthModule` module.
|
|
16
16
|
|
|
17
|
-
Example
|
|
17
|
+
Example:
|
|
18
18
|
|
|
19
19
|
```typescript
|
|
20
20
|
const oauthConfig = {
|
|
21
|
-
type: OAuthType.RESOURCE,
|
|
22
21
|
config: {
|
|
23
22
|
tokenPath: '/authorizationserver/oauth/token',
|
|
24
23
|
revokePath: '/authorizationserver/oauth/revoke', // optional
|
|
@@ -46,10 +45,9 @@ For public oauth clients `clientSecret` can be removed since is not used
|
|
|
46
45
|
|
|
47
46
|
```typescript
|
|
48
47
|
const oauthConfig = {
|
|
49
|
-
type: OAuthType.AUTHORIZATION_CODE,
|
|
50
48
|
config: {
|
|
51
49
|
clientId: '<your_client_id>',
|
|
52
|
-
clientSecret: '<your_client_secret>',
|
|
50
|
+
clientSecret: '<your_client_secret>', //not used for public clients
|
|
53
51
|
authorizePath: '/o/authorize/',
|
|
54
52
|
tokenPath: '/o/token/',
|
|
55
53
|
revokePath: '/o/revoke/',
|
|
@@ -59,23 +57,10 @@ const oauthConfig = {
|
|
|
59
57
|
}
|
|
60
58
|
```
|
|
61
59
|
|
|
62
|
-
***Keycloak*** example for **oidc**
|
|
60
|
+
***Keycloak*** example for **oidc** with autodiscovery
|
|
63
61
|
|
|
64
62
|
```typescript
|
|
65
63
|
const keycloakOpenIDConfig = {
|
|
66
|
-
type: OAuthType.IMPLICIT,
|
|
67
|
-
config: {
|
|
68
|
-
issuerPath: 'http://localhost:8080/auth/realms/commerce',
|
|
69
|
-
clientId: '<your_client_id>',
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
***Keycloak*** example for **oidc** with issuer url
|
|
75
|
-
|
|
76
|
-
```typescript
|
|
77
|
-
const keycloakOpenIDConfig = {
|
|
78
|
-
type: OAuthType.AUTHORIZATION_CODE,
|
|
79
64
|
config: {
|
|
80
65
|
issuerPath: 'http://localhost:8080/auth/realms/commerce',
|
|
81
66
|
clientId: '<your_client_id>',
|
|
@@ -87,12 +72,11 @@ const keycloakOpenIDConfig = {
|
|
|
87
72
|
|
|
88
73
|
```typescript
|
|
89
74
|
const azureOpenIDConfig = {
|
|
90
|
-
type: OAuthType.AUTHORIZATION_CODE,
|
|
91
75
|
config: {
|
|
92
76
|
issuerPath: 'https://login.microsoftonline.com/common/v2.0', // for common make sure you app has "signInAudience": "AzureADandPersonalMicrosoftAccount",
|
|
93
77
|
clientId: '<your_client_id>',
|
|
94
78
|
scope: 'openid profile email offline_access',
|
|
95
|
-
pkce: true // manually since is required but code_challenge_methods_supported is not in openid configuration
|
|
79
|
+
pkce: true // manually, since is required, but code_challenge_methods_supported is not in openid configuration
|
|
96
80
|
}
|
|
97
81
|
}
|
|
98
82
|
```
|
|
@@ -126,7 +110,8 @@ or with params
|
|
|
126
110
|
@Component({
|
|
127
111
|
selector: 'login-component',
|
|
128
112
|
template: `
|
|
129
|
-
<oauth-login [
|
|
113
|
+
<oauth-login [type]="type"
|
|
114
|
+
[i18n]="i18n"
|
|
130
115
|
[profileName$]="profileName$"
|
|
131
116
|
[useLogoutUrl]="useLogoutUrl"
|
|
132
117
|
[(state)]="state"></oauth-login>
|
|
@@ -137,13 +122,11 @@ export class LoginComponent {
|
|
|
137
122
|
username: 'Username'
|
|
138
123
|
};
|
|
139
124
|
state = 'some_salt_hash_or_whatever';
|
|
140
|
-
status$: Observable<OAuthStatus>;
|
|
141
125
|
// not only revoke tokens but also access the logout page if defined.
|
|
142
126
|
// logoutPath needs to be defined. logoutRedirectUri is optional. Current url will be used if undefined
|
|
143
127
|
useLogoutUrl = true;
|
|
144
128
|
|
|
145
129
|
constructor(private oauthService: OAuthService) {
|
|
146
|
-
this.status$ = this.oauthService.status$;
|
|
147
130
|
}
|
|
148
131
|
|
|
149
132
|
get profileName$(): Observable<string> {
|
|
@@ -160,6 +143,8 @@ export class LoginComponent {
|
|
|
160
143
|
}
|
|
161
144
|
```
|
|
162
145
|
|
|
146
|
+
(`state`, `redirectUri`, `responseType` are optional in case of some advanced configuration)
|
|
147
|
+
|
|
163
148
|
or create your custom login template using OAuthService
|
|
164
149
|
|
|
165
150
|
```html
|
|
@@ -226,4 +211,4 @@ Import ```OAuthModule``` in your angular app
|
|
|
226
211
|
|
|
227
212
|
#### Licensing
|
|
228
213
|
|
|
229
|
-
MIT License
|
|
214
|
+
[MIT License](LICENSE)
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
var _OAuthLoginComponent_subscription, _OAuthLoginComponent_redirectUri, _OAuthLoginComponent_responseType, _OAuthLoginComponent_i18n;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
+
import { Component, ContentChild, HostListener, Inject, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
2
4
|
import { Subscription, take } from 'rxjs';
|
|
3
5
|
import { LOCATION, OAuthStatus, OAuthType } from '../../models';
|
|
4
6
|
import { tap } from 'rxjs/operators';
|
|
@@ -11,28 +13,29 @@ export class OAuthLoginComponent {
|
|
|
11
13
|
this.oauthService = oauthService;
|
|
12
14
|
this.locationService = locationService;
|
|
13
15
|
this.location = location;
|
|
14
|
-
this
|
|
15
|
-
this
|
|
16
|
+
_OAuthLoginComponent_subscription.set(this, new Subscription());
|
|
17
|
+
_OAuthLoginComponent_redirectUri.set(this, void 0);
|
|
18
|
+
_OAuthLoginComponent_responseType.set(this, void 0);
|
|
19
|
+
_OAuthLoginComponent_i18n.set(this, {
|
|
16
20
|
username: 'Username',
|
|
17
21
|
password: 'Password',
|
|
18
22
|
submit: 'Sign in',
|
|
19
23
|
notAuthorized: 'Sign in',
|
|
20
24
|
authorized: 'Welcome',
|
|
21
25
|
denied: 'Access Denied. Try again!'
|
|
22
|
-
};
|
|
26
|
+
});
|
|
27
|
+
this.type = OAuthType.RESOURCE;
|
|
23
28
|
this.useLogoutUrl = false;
|
|
24
29
|
this.state = '';
|
|
25
|
-
this.stateChange =
|
|
30
|
+
this.stateChange = this.oauthService.state$.asObservable();
|
|
26
31
|
this.username = '';
|
|
27
32
|
this.password = '';
|
|
28
33
|
this.OAuthStatus = OAuthStatus;
|
|
29
34
|
this.OAuthType = OAuthType;
|
|
30
35
|
this.collapse = false;
|
|
31
|
-
this.type = this.oauthService.type;
|
|
32
|
-
this.state$ = this.oauthService.state$.pipe(tap(s => this.stateChange.emit(s)));
|
|
33
36
|
this.status$ = this.oauthService.status$.pipe(tap(s => {
|
|
34
37
|
if (s === OAuthStatus.AUTHORIZED && this.profileName$) {
|
|
35
|
-
this.
|
|
38
|
+
__classPrivateFieldGet(this, _OAuthLoginComponent_subscription, "f").add(this.profileName$.pipe(take(1)).subscribe(n => this.profileName = n));
|
|
36
39
|
}
|
|
37
40
|
else {
|
|
38
41
|
const { token } = this.oauthService;
|
|
@@ -44,31 +47,39 @@ export class OAuthLoginComponent {
|
|
|
44
47
|
this.logoutFunction = () => this.logout();
|
|
45
48
|
}
|
|
46
49
|
get i18n() {
|
|
47
|
-
return this
|
|
50
|
+
return __classPrivateFieldGet(this, _OAuthLoginComponent_i18n, "f");
|
|
48
51
|
}
|
|
49
52
|
set i18n(i18n) {
|
|
50
|
-
this
|
|
51
|
-
...this
|
|
53
|
+
__classPrivateFieldSet(this, _OAuthLoginComponent_i18n, {
|
|
54
|
+
...__classPrivateFieldGet(this, _OAuthLoginComponent_i18n, "f"),
|
|
52
55
|
...i18n
|
|
53
|
-
};
|
|
56
|
+
}, "f");
|
|
57
|
+
}
|
|
58
|
+
get redirectUri() {
|
|
59
|
+
return __classPrivateFieldGet(this, _OAuthLoginComponent_redirectUri, "f") || `${this.location.origin}${this.locationService.path(true) || '/'}`;
|
|
54
60
|
}
|
|
55
61
|
set redirectUri(redirectUri) {
|
|
56
62
|
if (redirectUri) {
|
|
57
|
-
this
|
|
63
|
+
__classPrivateFieldSet(this, _OAuthLoginComponent_redirectUri, redirectUri, "f");
|
|
58
64
|
}
|
|
59
65
|
}
|
|
60
|
-
|
|
61
|
-
|
|
66
|
+
set responseType(responseType) {
|
|
67
|
+
if (this.responseType) {
|
|
68
|
+
__classPrivateFieldSet(this, _OAuthLoginComponent_responseType, responseType, "f");
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
get responseType() {
|
|
72
|
+
return __classPrivateFieldGet(this, _OAuthLoginComponent_responseType, "f") || this.type;
|
|
62
73
|
}
|
|
63
74
|
ngOnDestroy() {
|
|
64
|
-
this.
|
|
75
|
+
__classPrivateFieldGet(this, _OAuthLoginComponent_subscription, "f").unsubscribe();
|
|
65
76
|
}
|
|
66
77
|
logout() {
|
|
67
78
|
this.oauthService.logout(this.useLogoutUrl);
|
|
68
79
|
}
|
|
69
|
-
|
|
70
|
-
await this.oauthService.login(parameters);
|
|
80
|
+
login(parameters) {
|
|
71
81
|
this.collapse = false;
|
|
82
|
+
return this.oauthService.login(parameters);
|
|
72
83
|
}
|
|
73
84
|
toggleCollapse() {
|
|
74
85
|
this.collapse = !this.collapse;
|
|
@@ -77,18 +88,23 @@ export class OAuthLoginComponent {
|
|
|
77
88
|
this.collapse = false;
|
|
78
89
|
}
|
|
79
90
|
}
|
|
80
|
-
|
|
81
|
-
OAuthLoginComponent.ɵ
|
|
82
|
-
i0.ɵɵ
|
|
91
|
+
_OAuthLoginComponent_subscription = new WeakMap(), _OAuthLoginComponent_redirectUri = new WeakMap(), _OAuthLoginComponent_responseType = new WeakMap(), _OAuthLoginComponent_i18n = new WeakMap();
|
|
92
|
+
OAuthLoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: OAuthLoginComponent, deps: [{ token: i1.OAuthService }, { token: i2.Location }, { token: LOCATION }], target: i0.ɵɵFactoryTarget.Component });
|
|
93
|
+
OAuthLoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: OAuthLoginComponent, selector: "oauth-login", inputs: { type: "type", i18n: "i18n", redirectUri: "redirectUri", responseType: "responseType", useLogoutUrl: "useLogoutUrl", state: "state", profileName$: "profileName$" }, outputs: { stateChange: "stateChange" }, host: { listeners: { "window:keydown.escape": "keyboardEvent()" } }, queries: [{ propertyName: "loginTemplate", first: true, predicate: ["login"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"loginTemplate; else defaultLogin\"\r\n [ngTemplateOutlet]=\"loginTemplate\"\r\n [ngTemplateOutletContext]=\"{login: loginFunction, logout: logoutFunction, status: status$ | async}\">\r\n</ng-container>\r\n<ng-template #defaultLogin>\r\n <ng-container *ngIf=\"status$ | async as status\">\r\n <ng-container *ngIf=\"type === OAuthType.RESOURCE; else noResource\">\r\n <div class=\"oauth dropdown text-end {{collapse ? 'show': ''}}\">\r\n <button class=\"btn btn-link p-0 dropdown-toggle\"\r\n (click)=\"status === OAuthStatus.AUTHORIZED ? logout() : toggleCollapse()\">\r\n <ng-container *ngTemplateOutlet=\"message\"></ng-container>\r\n </button>\r\n <div class=\"dropdown-menu mr-3 {{collapse ? 'show': ''}}\">\r\n <form class=\"p-3\"\r\n #form=\"ngForm\"\r\n *ngIf=\"status === OAuthStatus.NOT_AUTHORIZED || status === OAuthStatus.DENIED\"\r\n (submit)=\"login({username: username, password: password})\">\r\n <div class=\"mb-3\">\r\n <input type=\"text\"\r\n class=\"form-control\"\r\n name=\"username\"\r\n required\r\n [(ngModel)]=\"username\"\r\n [placeholder]=\"i18n.username\">\r\n </div>\r\n <div class=\"mb-3\">\r\n <input type=\"password\"\r\n class=\"form-control\"\r\n name=\"password\"\r\n required\r\n [(ngModel)]=\"password\"\r\n [placeholder]=\"i18n.password\">\r\n </div>\r\n <div class=\"text-end\">\r\n <button type=\"submit\"\r\n class=\"btn btn-primary\"\r\n [disabled]=\"form.invalid\">{{i18n.submit}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-template #noResource>\r\n <a role=\"button\"\r\n class=\"oauth\"\r\n (click)=\"status === OAuthStatus.AUTHORIZED ? logout() : login({responseType: responseType, redirectUri: redirectUri, state:state})\">\r\n <ng-container *ngTemplateOutlet=\"message\"></ng-container>\r\n </a>\r\n </ng-template>\r\n\r\n <ng-template #message>\r\n <span class=\"not-authorized\"\r\n *ngIf=\"status === OAuthStatus.NOT_AUTHORIZED\"\r\n [innerHTML]=\"i18n.notAuthorized\"></span>\r\n <span class=\"authorized\"\r\n *ngIf=\"status === OAuthStatus.AUTHORIZED\">\r\n <span class=\"welcome\" [innerHTML]=\"i18n.authorized + ' '\"></span>\r\n <strong class=\"profile-name\"\r\n [innerHTML]=\"profileName\"></strong>\r\n </span>\r\n <span class=\"denied\"\r\n *ngIf=\"status === OAuthStatus.DENIED\"\r\n [innerHTML]=\"i18n.denied\"></span>\r\n </ng-template>\r\n </ng-container>\r\n</ng-template>\r\n\r\n", styles: [".oauth .dropdown-menu{left:auto;right:0;box-shadow:0 5px 10px #0003;min-width:250px}.oauth .dropdown-menu:before{content:\"\";display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:#0003;position:absolute;top:-7px;left:auto;right:15px}.oauth .dropdown-menu:after{content:\"\";display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:auto;right:16px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None });
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: OAuthLoginComponent, decorators: [{
|
|
83
95
|
type: Component,
|
|
84
|
-
args: [{ selector: 'oauth-login', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"
|
|
96
|
+
args: [{ selector: 'oauth-login', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"loginTemplate; else defaultLogin\"\r\n [ngTemplateOutlet]=\"loginTemplate\"\r\n [ngTemplateOutletContext]=\"{login: loginFunction, logout: logoutFunction, status: status$ | async}\">\r\n</ng-container>\r\n<ng-template #defaultLogin>\r\n <ng-container *ngIf=\"status$ | async as status\">\r\n <ng-container *ngIf=\"type === OAuthType.RESOURCE; else noResource\">\r\n <div class=\"oauth dropdown text-end {{collapse ? 'show': ''}}\">\r\n <button class=\"btn btn-link p-0 dropdown-toggle\"\r\n (click)=\"status === OAuthStatus.AUTHORIZED ? logout() : toggleCollapse()\">\r\n <ng-container *ngTemplateOutlet=\"message\"></ng-container>\r\n </button>\r\n <div class=\"dropdown-menu mr-3 {{collapse ? 'show': ''}}\">\r\n <form class=\"p-3\"\r\n #form=\"ngForm\"\r\n *ngIf=\"status === OAuthStatus.NOT_AUTHORIZED || status === OAuthStatus.DENIED\"\r\n (submit)=\"login({username: username, password: password})\">\r\n <div class=\"mb-3\">\r\n <input type=\"text\"\r\n class=\"form-control\"\r\n name=\"username\"\r\n required\r\n [(ngModel)]=\"username\"\r\n [placeholder]=\"i18n.username\">\r\n </div>\r\n <div class=\"mb-3\">\r\n <input type=\"password\"\r\n class=\"form-control\"\r\n name=\"password\"\r\n required\r\n [(ngModel)]=\"password\"\r\n [placeholder]=\"i18n.password\">\r\n </div>\r\n <div class=\"text-end\">\r\n <button type=\"submit\"\r\n class=\"btn btn-primary\"\r\n [disabled]=\"form.invalid\">{{i18n.submit}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-template #noResource>\r\n <a role=\"button\"\r\n class=\"oauth\"\r\n (click)=\"status === OAuthStatus.AUTHORIZED ? logout() : login({responseType: responseType, redirectUri: redirectUri, state:state})\">\r\n <ng-container *ngTemplateOutlet=\"message\"></ng-container>\r\n </a>\r\n </ng-template>\r\n\r\n <ng-template #message>\r\n <span class=\"not-authorized\"\r\n *ngIf=\"status === OAuthStatus.NOT_AUTHORIZED\"\r\n [innerHTML]=\"i18n.notAuthorized\"></span>\r\n <span class=\"authorized\"\r\n *ngIf=\"status === OAuthStatus.AUTHORIZED\">\r\n <span class=\"welcome\" [innerHTML]=\"i18n.authorized + ' '\"></span>\r\n <strong class=\"profile-name\"\r\n [innerHTML]=\"profileName\"></strong>\r\n </span>\r\n <span class=\"denied\"\r\n *ngIf=\"status === OAuthStatus.DENIED\"\r\n [innerHTML]=\"i18n.denied\"></span>\r\n </ng-template>\r\n </ng-container>\r\n</ng-template>\r\n\r\n", styles: [".oauth .dropdown-menu{left:auto;right:0;box-shadow:0 5px 10px #0003;min-width:250px}.oauth .dropdown-menu:before{content:\"\";display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:#0003;position:absolute;top:-7px;left:auto;right:15px}.oauth .dropdown-menu:after{content:\"\";display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:auto;right:16px}\n"] }]
|
|
85
97
|
}], ctorParameters: function () { return [{ type: i1.OAuthService }, { type: i2.Location }, { type: Location, decorators: [{
|
|
86
98
|
type: Inject,
|
|
87
99
|
args: [LOCATION]
|
|
88
|
-
}] }]; }, propDecorators: {
|
|
100
|
+
}] }]; }, propDecorators: { type: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], i18n: [{
|
|
89
103
|
type: Input
|
|
90
104
|
}], redirectUri: [{
|
|
91
105
|
type: Input
|
|
106
|
+
}], responseType: [{
|
|
107
|
+
type: Input
|
|
92
108
|
}], useLogoutUrl: [{
|
|
93
109
|
type: Input
|
|
94
110
|
}], state: [{
|
|
@@ -104,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
|
|
|
104
120
|
type: HostListener,
|
|
105
121
|
args: ['window:keydown.escape']
|
|
106
122
|
}] } });
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgtbG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9hdXRoL3NyYy9saWIvY29tcG9uZW50cy9sb2dpbi9vYXV0aC1sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2F1dGgvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2luL29hdXRoLWxvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBRU4saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYSxZQUFZLEVBQUUsSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBQyxRQUFRLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDL0UsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7OztBQW1CbkMsTUFBTSxPQUFPLG1CQUFtQjtJQXNFOUIsWUFBb0IsWUFBMEIsRUFDMUIsZUFBMEIsRUFDUixRQUFrQjtRQUZwQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixvQkFBZSxHQUFmLGVBQWUsQ0FBVztRQUNSLGFBQVEsR0FBUixRQUFRLENBQVU7UUFyRWhELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxVQUFLLEdBQW1CO1lBQzlCLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLGFBQWEsRUFBRSxTQUFTO1lBQ3hCLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLE1BQU0sRUFBRSwyQkFBMkI7U0FDcEMsQ0FBQztRQTBCRixpQkFB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QUssQ0FBQyxVQUEyQjtRQUNyQyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUdELGFBQWE7UUFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDOztnSEEvRlUsbUJBQW1CLHNFQXdFVixRQUFRO29HQXhFakIsbUJBQW1CLHVZQ2pDaEMsMDNGQTZEQTsyRkQ1QmEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGFBQWEsaUJBR1IsaUJBQWlCLENBQUMsSUFBSTs0R0EwRVcsUUFBUTswQkFBM0MsTUFBTTsyQkFBQyxRQUFROzRDQXREeEIsSUFBSTtzQkFEUCxLQUFLO2dCQVNGLFdBQVc7c0JBRGQsS0FBSztnQkFZTixZQUFZO3NCQURYLEtBQUs7Z0JBR04sS0FBSztzQkFESixLQUFLO2dCQUdOLFdBQVc7c0JBRFYsTUFBTTtnQkFHUCxZQUFZO3NCQURYLEtBQUs7Z0JBR04sYUFBYTtzQkFEWixZQUFZO3VCQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBaUR0QyxhQUFhO3NCQURaLFlBQVk7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHRha2V9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0xPQ0FUSU9OLCBPQXV0aFBhcmFtZXRlcnMsIE9BdXRoU3RhdHVzLCBPQXV0aFR5cGV9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7dGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7T0F1dGhTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHtMb2NhdGlvbiBhcyBMb2NhdGlvbjJ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9BdXRoTG9naW5JMThuIHtcclxuICB1c2VybmFtZT86IHN0cmluZztcclxuICBwYXNzd29yZD86IHN0cmluZztcclxuICBzdWJtaXQ/OiBzdHJpbmc7XHJcbiAgbm90QXV0aG9yaXplZD86IHN0cmluZztcclxuICBhdXRob3JpemVkPzogc3RyaW5nO1xyXG4gIGRlbmllZD86IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdvYXV0aC1sb2dpbicsXHJcbiAgdGVtcGxhdGVVcmw6ICdvYXV0aC1sb2dpbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ29hdXRoLWxvZ2luLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE9BdXRoTG9naW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIF9yZWRpcmVjdFVyaTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIHByaXZhdGUgX2kxOG46IE9BdXRoTG9naW5JMThuID0ge1xyXG4gICAgdXNlcm5hbWU6ICdVc2VybmFtZScsXHJcbiAgICBwYXNzd29yZDogJ1Bhc3N3b3JkJyxcclxuICAgIHN1Ym1pdDogJ1NpZ24gaW4nLFxyXG4gICAgbm90QXV0aG9yaXplZDogJ1NpZ24gaW4nLFxyXG4gICAgYXV0aG9yaXplZDogJ1dlbGNvbWUnLFxyXG4gICAgZGVuaWVkOiAnQWNjZXNzIERlbmllZC4gVHJ5IGFnYWluISdcclxuICB9O1xyXG5cclxuICBnZXQgaTE4bigpIHtcclxuICAgIHJldHVybiB0aGlzLl9pMThuO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgaTE4bihpMThuKSB7XHJcbiAgICB0aGlzLl9pMThuID0ge1xyXG4gICAgICAuLi50aGlzLl9pMThuLFxyXG4gICAgICAuLi5pMThuXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcmVkaXJlY3RVcmkocmVkaXJlY3RVcmk6IHN0cmluZykge1xyXG4gICAgaWYgKHJlZGlyZWN0VXJpKSB7XHJcbiAgICAgIHRoaXMuX3JlZGlyZWN0VXJpID0gcmVkaXJlY3RVcmk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgcmVkaXJlY3RVcmkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVkaXJlY3RVcmkgfHwgYCR7dGhpcy5sb2NhdGlvbi5vcmlnaW59JHt0aGlzLmxvY2F0aW9uU2VydmljZS5wYXRoKHRydWUpIHx8ICcvJ31gO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICB1c2VMb2dvdXRVcmwgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHN0YXRlID0gJyc7XHJcbiAgQE91dHB1dCgpXHJcbiAgc3RhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHJvZmlsZU5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ7XHJcbiAgQENvbnRlbnRDaGlsZCgnbG9naW4nLCB7c3RhdGljOiBmYWxzZX0pXHJcbiAgbG9naW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcclxuICB1c2VybmFtZSA9ICcnO1xyXG4gIHBhc3N3b3JkID0gJyc7XHJcbiAgcHJvZmlsZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBPQXV0aFN0YXR1cyA9IE9BdXRoU3RhdHVzO1xyXG4gIE9BdXRoVHlwZSA9IE9BdXRoVHlwZTtcclxuICBjb2xsYXBzZSA9IGZhbHNlO1xyXG4gIHR5cGUgPSB0aGlzLm9hdXRoU2VydmljZS50eXBlO1xyXG4gIHN0YXRlJCA9IHRoaXMub2F1dGhTZXJ2aWNlLnN0YXRlJC5waXBlKFxyXG4gICAgdGFwKHMgPT4gdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KHMpKVxyXG4gICk7XHJcbiAgc3RhdHVzJCA9IHRoaXMub2F1dGhTZXJ2aWNlLnN0YXR1cyQucGlwZShcclxuICAgIHRhcChzID0+IHtcclxuICAgICAgaWYgKHMgPT09IE9BdXRoU3RhdHVzLkFVVEhPUklaRUQgJiYgdGhpcy5wcm9maWxlTmFtZSQpIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5wcm9maWxlTmFtZSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUobiA9PiB0aGlzLnByb2ZpbGVOYW1lID0gbikpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHt0b2tlbn0gPSB0aGlzLm9hdXRoU2VydmljZTtcclxuICAgICAgICBjb25zdCB1c2VySW5mbyA9IHRva2VuICYmIHRva2VuLmlkX3Rva2VuICYmIEpTT04ucGFyc2UoYXRvYih0b2tlbi5pZF90b2tlbi5zcGxpdCgnLicpWzFdKSkgfHwge307XHJcbiAgICAgICAgdGhpcy5wcm9maWxlTmFtZSA9IHVzZXJJbmZvLm5hbWUgfHwgdXNlckluZm8udXNlcm5hbWUgfHwgdXNlckluZm8uZW1haWwgfHwgdXNlckluZm8uc3ViIHx8ICcnO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICk7XHJcbiAgbG9naW5GdW5jdGlvbiA9IChwOiBPQXV0aFBhcmFtZXRlcnMpID0+IHRoaXMubG9naW4ocCk7XHJcbiAgbG9nb3V0RnVuY3Rpb24gPSAoKSA9PiB0aGlzLmxvZ291dCgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9hdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgbG9jYXRpb25TZXJ2aWNlOiBMb2NhdGlvbjIsXHJcbiAgICAgICAgICAgICAgQEluamVjdChMT0NBVElPTikgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24pIHtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGxvZ291dCgpIHtcclxuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmxvZ291dCh0aGlzLnVzZUxvZ291dFVybCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBsb2dpbihwYXJhbWV0ZXJzOiBPQXV0aFBhcmFtZXRlcnMpIHtcclxuICAgIGF3YWl0IHRoaXMub2F1dGhTZXJ2aWNlLmxvZ2luKHBhcmFtZXRlcnMpO1xyXG4gICAgdGhpcy5jb2xsYXBzZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ29sbGFwc2UoKSB7XHJcbiAgICB0aGlzLmNvbGxhcHNlID0gIXRoaXMuY29sbGFwc2U7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bi5lc2NhcGUnKVxyXG4gIGtleWJvYXJkRXZlbnQoKSB7XHJcbiAgICB0aGlzLmNvbGxhcHNlID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJzdGF0ZSQgfCBhc3luY1wiPjwvbmctY29udGFpbmVyPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwibG9naW5UZW1wbGF0ZTsgZWxzZSBkZWZhdWx0TG9naW5cIlxyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxvZ2luVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7bG9naW46IGxvZ2luRnVuY3Rpb24sIGxvZ291dDogbG9nb3V0RnVuY3Rpb24sIHN0YXR1czogc3RhdHVzJCB8IGFzeW5jfVwiPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0TG9naW4+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXR1cyQgfCBhc3luYyBhcyBzdGF0dXNcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBlID09PSBPQXV0aFR5cGUuUkVTT1VSQ0U7IGVsc2Ugbm9SZXNvdXJjZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwib2F1dGggZHJvcGRvd24gdGV4dC1lbmQgcC0zIHt7Y29sbGFwc2UgPyAnc2hvdyc6ICcnfX1cIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMCBkcm9wZG93bi10b2dnbGVcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInN0YXR1cyA9PT0gT0F1dGhTdGF0dXMuQVVUSE9SSVpFRCA/IGxvZ291dCgpIDogdG9nZ2xlQ29sbGFwc2UoKVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1lc3NhZ2VcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBtci0zIHt7Y29sbGFwc2UgPyAnc2hvdyc6ICcnfX1cIj5cclxuICAgICAgICAgIDxmb3JtIGNsYXNzPVwicC0zXCIgI2Zvcm09XCJuZ0Zvcm1cIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzdGF0dXMgPT09IE9BdXRoU3RhdHVzLk5PVF9BVVRIT1JJWkVEIHx8IHN0YXR1cyA9PT0gT0F1dGhTdGF0dXMuREVOSUVEXCJcclxuICAgICAgICAgICAgICAgIChzdWJtaXQpPVwibG9naW4oe3VzZXJuYW1lOiB1c2VybmFtZSwgcGFzc3dvcmQ6IHBhc3N3b3JkfSlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ1c2VybmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidXNlcm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaTE4bi51c2VybmFtZVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImkxOG4ucGFzc3dvcmRcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCI+e3tpMThuLnN1Ym1pdH19PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjbm9SZXNvdXJjZT5cclxuICAgICAgPGEgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwib2F1dGhcIlxyXG4gICAgICAgICAoY2xpY2spPVwic3RhdHVzID09PSBPQXV0aFN0YXR1cy5BVVRIT1JJWkVEID8gbG9nb3V0KCkgOiBsb2dpbih7cmVkaXJlY3RVcmk6IHJlZGlyZWN0VXJpLCBzdGF0ZTpzdGF0ZX0pXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1lc3NhZ2VcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9hPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI21lc3NhZ2U+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwic3RhdHVzID09PSBPQXV0aFN0YXR1cy5OT1RfQVVUSE9SSVpFRFwiIGNsYXNzPVwibm90LWF1dGhvcml6ZWRcIj57e2kxOG4ubm90QXV0aG9yaXplZH19PC9zcGFuPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cInN0YXR1cyA9PT0gT0F1dGhTdGF0dXMuQVVUSE9SSVpFRFwiIGNsYXNzPVwiYXV0aG9yaXplZFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwid2VsY29tZVwiPnt7aTE4bi5hdXRob3JpemVkfX0mbmJzcDs8L3NwYW4+XHJcbiAgICAgICAgPHN0cm9uZyBjbGFzcz1cInByb2ZpbGUtbmFtZVwiIFtpbm5lckhUTUxdPVwicHJvZmlsZU5hbWVcIj48L3N0cm9uZz5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cInN0YXR1cyA9PT0gT0F1dGhTdGF0dXMuREVOSUVEXCIgY2xhc3M9XCJkZW5pZWRcIj57e2kxOG4uZGVuaWVkfX08L3NwYW4+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuIl19
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgtbG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9hdXRoL3NyYy9saWIvY29tcG9uZW50cy9sb2dpbi9vYXV0aC1sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2F1dGgvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2luL29hdXRoLWxvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFlLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBYSxZQUFZLEVBQUUsSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBQyxRQUFRLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDL0UsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7OztBQW1CbkMsTUFBTSxPQUFPLG1CQUFtQjtJQW1GOUIsWUFBb0IsWUFBMEIsRUFDMUIsZUFBMEIsRUFDUixRQUFrQjtRQUZwQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixvQkFBZSxHQUFmLGVBQWUsQ0FBVztRQUNSLGFBQVEsR0FBUixRQUFRLENBQVU7UUFuRnhELDRDQUFnQixJQUFJLFlBQVksRUFBRSxFQUFDO1FBQ25DLG1EQUFzQjtRQUN0QixvREFBdUI7UUFDdkIsb0NBQXdCO1lBQ3RCLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLGFBQWEsRUFBRSxTQUFTO1lBQ3hCLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLE1BQU0sRUFBRSwyQkFBMkI7U0FDcEMsRUFBQztR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QUNKLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQTJCO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBR0QsYUFBYTtRQUNYLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7OztnSEE1R1UsbUJBQW1CLHNFQXFGVixRQUFRO29HQXJGakIsbUJBQW1CLG1iQ3RCaEMsa2dHQW9FQTsyRkQ5Q2EsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGFBQWEsaUJBR1IsaUJBQWlCLENBQUMsSUFBSTs0R0F1RlcsUUFBUTswQkFBM0MsTUFBTTsyQkFBQyxRQUFROzRDQWxFNUIsSUFBSTtzQkFESCxLQUFLO2dCQUlGLElBQUk7c0JBRFAsS0FBSztnQkFhRixXQUFXO3NCQURkLEtBQUs7Z0JBUUYsWUFBWTtzQkFEZixLQUFLO2dCQVlOLFlBQVk7c0JBRFgsS0FBSztnQkFHTixLQUFLO3NCQURKLEtBQUs7Z0JBR04sV0FBVztzQkFEVixNQUFNO2dCQUdQLFlBQVk7c0JBRFgsS0FBSztnQkFHTixhQUFhO3NCQURaLFlBQVk7dUJBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkErQ3RDLGFBQWE7c0JBRFosWUFBWTt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgQ29udGVudENoaWxkLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge09ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgdGFrZX0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7TE9DQVRJT04sIE9BdXRoUGFyYW1ldGVycywgT0F1dGhTdGF0dXMsIE9BdXRoVHlwZX0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHt0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtPQXV0aFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL29hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQge0xvY2F0aW9uIGFzIExvY2F0aW9uMn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgT0F1dGhMb2dpbkkxOG4ge1xyXG4gIHVzZXJuYW1lPzogc3RyaW5nO1xyXG4gIHBhc3N3b3JkPzogc3RyaW5nO1xyXG4gIHN1Ym1pdD86IHN0cmluZztcclxuICBub3RBdXRob3JpemVkPzogc3RyaW5nO1xyXG4gIGF1dGhvcml6ZWQ/OiBzdHJpbmc7XHJcbiAgZGVuaWVkPzogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ29hdXRoLWxvZ2luJyxcclxuICB0ZW1wbGF0ZVVybDogJ29hdXRoLWxvZ2luLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnb2F1dGgtbG9naW4uY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgT0F1dGhMb2dpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gICNzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgI3JlZGlyZWN0VXJpPzogc3RyaW5nO1xyXG4gICNyZXNwb25zZVR5cGU/OiBzdHJpbmc7XHJcbiAgI2kxOG46IE9BdXRoTG9naW5JMThuID0ge1xyXG4gICAgdXNlcm5hbWU6ICdVc2VybmFtZScsXHJcbiAgICBwYXNzd29yZDogJ1Bhc3N3b3JkJyxcclxuICAgIHN1Ym1pdDogJ1NpZ24gaW4nLFxyXG4gICAgbm90QXV0aG9yaXplZDogJ1NpZ24gaW4nLFxyXG4gICAgYXV0aG9yaXplZDogJ1dlbGNvbWUnLFxyXG4gICAgZGVuaWVkOiAnQWNjZXNzIERlbmllZC4gVHJ5IGFnYWluISdcclxuICB9O1xyXG5cclxuICBnZXQgaTE4bigpIHtcclxuICAgIHJldHVybiB0aGlzLiNpMThuO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICB0eXBlOiBPQXV0aFR5cGUgPSBPQXV0aFR5cGUuUkVTT1VSQ0U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGkxOG4oaTE4bikge1xyXG4gICAgdGhpcy4jaTE4biA9IHtcclxuICAgICAgLi4udGhpcy4jaTE4bixcclxuICAgICAgLi4uaTE4blxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGdldCByZWRpcmVjdFVyaSgpIHtcclxuICAgIHJldHVybiB0aGlzLiNyZWRpcmVjdFVyaSB8fCBgJHt0aGlzLmxvY2F0aW9uLm9yaWdpbn0ke3RoaXMubG9jYXRpb25TZXJ2aWNlLnBhdGgodHJ1ZSkgfHwgJy8nfWA7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCByZWRpcmVjdFVyaShyZWRpcmVjdFVyaTogc3RyaW5nKSB7XHJcbiAgICBpZiAocmVkaXJlY3RVcmkpIHtcclxuICAgICAgdGhpcy4jcmVkaXJlY3RVcmkgPSByZWRpcmVjdFVyaTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHJlc3BvbnNlVHlwZShyZXNwb25zZVR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMucmVzcG9uc2VUeXBlKSB7XHJcbiAgICAgIHRoaXMuI3Jlc3BvbnNlVHlwZSA9IHJlc3BvbnNlVHlwZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCByZXNwb25zZVR5cGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy4jcmVzcG9uc2VUeXBlIHx8IHRoaXMudHlwZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdXNlTG9nb3V0VXJsID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBzdGF0ZSA9ICcnO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHN0YXRlQ2hhbmdlID0gdGhpcy5vYXV0aFNlcnZpY2Uuc3RhdGUkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHJvZmlsZU5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ7XHJcbiAgQENvbnRlbnRDaGlsZCgnbG9naW4nLCB7c3RhdGljOiBmYWxzZX0pXHJcbiAgbG9naW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcclxuICB1c2VybmFtZSA9ICcnO1xyXG4gIHBhc3N3b3JkID0gJyc7XHJcbiAgcHJvZmlsZU5hbWU/OiBzdHJpbmc7XHJcbiAgT0F1dGhTdGF0dXMgPSBPQXV0aFN0YXR1cztcclxuICBPQXV0aFR5cGUgPSBPQXV0aFR5cGU7XHJcbiAgY29sbGFwc2UgPSBmYWxzZTtcclxuICBzdGF0dXMkID0gdGhpcy5vYXV0aFNlcnZpY2Uuc3RhdHVzJC5waXBlKFxyXG4gICAgdGFwKHMgPT4ge1xyXG4gICAgICBpZiAocyA9PT0gT0F1dGhTdGF0dXMuQVVUSE9SSVpFRCAmJiB0aGlzLnByb2ZpbGVOYW1lJCkge1xyXG4gICAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5wcm9maWxlTmFtZSQucGlwZShcclxuICAgICAgICAgIHRha2UoMSlcclxuICAgICAgICApLnN1YnNjcmliZShuID0+IHRoaXMucHJvZmlsZU5hbWUgPSBuKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qge3Rva2VufSA9IHRoaXMub2F1dGhTZXJ2aWNlO1xyXG4gICAgICAgIGNvbnN0IHVzZXJJbmZvID0gdG9rZW4gJiYgdG9rZW4uaWRfdG9rZW4gJiYgSlNPTi5wYXJzZShhdG9iKHRva2VuLmlkX3Rva2VuLnNwbGl0KCcuJylbMV0pKSB8fCB7fTtcclxuICAgICAgICB0aGlzLnByb2ZpbGVOYW1lID0gdXNlckluZm8ubmFtZSB8fCB1c2VySW5mby51c2VybmFtZSB8fCB1c2VySW5mby5lbWFpbCB8fCB1c2VySW5mby5zdWIgfHwgJyc7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgKTtcclxuICBsb2dpbkZ1bmN0aW9uID0gKHA6IE9BdXRoUGFyYW1ldGVycykgPT4gdGhpcy5sb2dpbihwKTtcclxuICBsb2dvdXRGdW5jdGlvbiA9ICgpID0+IHRoaXMubG9nb3V0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb2F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsb2NhdGlvblNlcnZpY2U6IExvY2F0aW9uMixcclxuICAgICAgICAgICAgICBASW5qZWN0KExPQ0FUSU9OKSBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGxvZ291dCgpIHtcclxuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmxvZ291dCh0aGlzLnVzZUxvZ291dFVybCk7XHJcbiAgfVxyXG5cclxuICBsb2dpbihwYXJhbWV0ZXJzOiBPQXV0aFBhcmFtZXRlcnMpIHtcclxuICAgIHRoaXMuY29sbGFwc2UgPSBmYWxzZTtcclxuICAgIHJldHVybiB0aGlzLm9hdXRoU2VydmljZS5sb2dpbihwYXJhbWV0ZXJzKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNvbGxhcHNlKCkge1xyXG4gICAgdGhpcy5jb2xsYXBzZSA9ICF0aGlzLmNvbGxhcHNlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24uZXNjYXBlJylcclxuICBrZXlib2FyZEV2ZW50KCkge1xyXG4gICAgdGhpcy5jb2xsYXBzZSA9IGZhbHNlO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibG9naW5UZW1wbGF0ZTsgZWxzZSBkZWZhdWx0TG9naW5cIlxyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxvZ2luVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7bG9naW46IGxvZ2luRnVuY3Rpb24sIGxvZ291dDogbG9nb3V0RnVuY3Rpb24sIHN0YXR1czogc3RhdHVzJCB8IGFzeW5jfVwiPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0TG9naW4+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXR1cyQgfCBhc3luYyBhcyBzdGF0dXNcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBlID09PSBPQXV0aFR5cGUuUkVTT1VSQ0U7IGVsc2Ugbm9SZXNvdXJjZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwib2F1dGggZHJvcGRvd24gdGV4dC1lbmQge3tjb2xsYXBzZSA/ICdzaG93JzogJyd9fVwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wIGRyb3Bkb3duLXRvZ2dsZVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic3RhdHVzID09PSBPQXV0aFN0YXR1cy5BVVRIT1JJWkVEID8gbG9nb3V0KCkgOiB0b2dnbGVDb2xsYXBzZSgpXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVzc2FnZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IG1yLTMge3tjb2xsYXBzZSA/ICdzaG93JzogJyd9fVwiPlxyXG4gICAgICAgICAgPGZvcm0gY2xhc3M9XCJwLTNcIlxyXG4gICAgICAgICAgICAgICAgI2Zvcm09XCJuZ0Zvcm1cIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzdGF0dXMgPT09IE9BdXRoU3RhdHVzLk5PVF9BVVRIT1JJWkVEIHx8IHN0YXR1cyA9PT0gT0F1dGhTdGF0dXMuREVOSUVEXCJcclxuICAgICAgICAgICAgICAgIChzdWJtaXQpPVwibG9naW4oe3VzZXJuYW1lOiB1c2VybmFtZSwgcGFzc3dvcmQ6IHBhc3N3b3JkfSlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ1c2VybmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidXNlcm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaTE4bi51c2VybmFtZVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImkxOG4ucGFzc3dvcmRcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCI+e3tpMThuLnN1Ym1pdH19PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjbm9SZXNvdXJjZT5cclxuICAgICAgPGEgcm9sZT1cImJ1dHRvblwiXHJcbiAgICAgICAgIGNsYXNzPVwib2F1dGhcIlxyXG4gICAgICAgICAoY2xpY2spPVwic3RhdHVzID09PSBPQXV0aFN0YXR1cy5BVVRIT1JJWkVEID8gbG9nb3V0KCkgOiBsb2dpbih7cmVzcG9uc2VUeXBlOiByZXNwb25zZVR5cGUsICByZWRpcmVjdFVyaTogcmVkaXJlY3RVcmksIHN0YXRlOnN0YXRlfSlcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVzc2FnZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2E+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjbWVzc2FnZT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJub3QtYXV0aG9yaXplZFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwic3RhdHVzID09PSBPQXV0aFN0YXR1cy5OT1RfQVVUSE9SSVpFRFwiXHJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaTE4bi5ub3RBdXRob3JpemVkXCI+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImF1dGhvcml6ZWRcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInN0YXR1cyA9PT0gT0F1dGhTdGF0dXMuQVVUSE9SSVpFRFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwid2VsY29tZVwiIFtpbm5lckhUTUxdPVwiaTE4bi5hdXRob3JpemVkICsgJyZuYnNwOydcIj48L3NwYW4+XHJcbiAgICAgICAgPHN0cm9uZyBjbGFzcz1cInByb2ZpbGUtbmFtZVwiXHJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInByb2ZpbGVOYW1lXCI+PC9zdHJvbmc+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJkZW5pZWRcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInN0YXR1cyA9PT0gT0F1dGhTdGF0dXMuREVOSUVEXCJcclxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJpMThuLmRlbmllZFwiPjwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { inject, Injectable, InjectionToken } from '@angular/core';
|
|
2
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
export const SERVER_HOST = new InjectionToken('SERVER_HOST');
|
|
4
5
|
export const SERVER_PATH = new InjectionToken('SERVER_PATH');
|
|
@@ -6,11 +7,12 @@ export const LOCATION = new InjectionToken('Location');
|
|
|
6
7
|
export const STORAGE = new InjectionToken('Storage');
|
|
7
8
|
export const OAUTH_CONFIG = new InjectionToken('OAuthConfig');
|
|
8
9
|
export const OAUTH_TOKEN = new InjectionToken('OAuthToken');
|
|
10
|
+
export const HEADER_APPLICATION = new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' });
|
|
9
11
|
export class OAuthConfig {
|
|
10
12
|
}
|
|
11
|
-
OAuthConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
12
|
-
OAuthConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
13
|
+
OAuthConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: OAuthConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
14
|
+
OAuthConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: OAuthConfig, providedIn: 'root', useFactory: () => inject(OAUTH_CONFIG).reduce((p, c) => ({ ...p, ...c }), {}) });
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: OAuthConfig, decorators: [{
|
|
14
16
|
type: Injectable,
|
|
15
17
|
args: [{
|
|
16
18
|
providedIn: 'root',
|
|
@@ -41,4 +43,4 @@ export var OAuthStatus;
|
|
|
41
43
|
OAuthStatus["AUTHORIZED"] = "AUTHORIZED";
|
|
42
44
|
OAuthStatus["DENIED"] = "DENIED";
|
|
43
45
|
})(OAuthStatus || (OAuthStatus = {}));
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2F1dGgvc3JjL2xpYi9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDOztBQUVqRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQVMsYUFBYSxDQUFDLENBQUM7QUFDckUsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFTLGFBQWEsQ0FBQyxDQUFDO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQWMsQ0FBVyxVQUFVLENBQUMsQ0FBQztBQUNqRSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxjQUFjLENBQVUsU0FBUyxDQUFDLENBQUM7QUFDOUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFnQixhQUFhLENBQUMsQ0FBQztBQUM3RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQWEsWUFBWSxDQUFDLENBQUM7QUFDeEUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBQyxjQUFjLEVBQUUsbUNBQW1DLEVBQUMsQ0FBQyxDQUFDO0FBTXpHLE1BQU0sT0FBZ0IsV0FBVzs7d0dBQVgsV0FBVzs0R0FBWCxXQUFXLGNBSG5CLE1BQU0sY0FDTixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7MkZBRXZELFdBQVc7a0JBSmhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07b0JBQ2xCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7aUJBQzVFOztBQVFELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsU0FBc0IsRUFBRSxFQUFpQixFQUFFLENBQUMsQ0FBQztJQUM5RSxPQUFPLEVBQUUsWUFBWTtJQUNyQixRQUFRLEVBQUUsTUFBTTtJQUNoQixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQUMsT0FBaUIsRUFBRSxJQUFZLEVBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQzlGLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFVBQVUsRUFBRSxPQUFPO0lBQ25CLElBQUksRUFBRSxJQUFJO0lBQ1YsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDLENBQUM7QUFFSCxNQUFNLENBQU4sSUFBWSxTQUtYO0FBTEQsV0FBWSxTQUFTO0lBQ25CLGtDQUFxQixDQUFBO0lBQ3JCLHdDQUEyQixDQUFBO0lBQzNCLCtCQUFrQixDQUFBO0lBQ2xCLHFEQUF3QyxDQUFBO0FBQzFDLENBQUMsRUFMVyxTQUFTLEtBQVQsU0FBUyxRQUtwQjtBQTBFRCxNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ3JCLGdEQUFpQyxDQUFBO0lBQ2pDLHdDQUF5QixDQUFBO0lBQ3pCLGdDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RmFjdG9yeVByb3ZpZGVyLCBpbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBWYWx1ZVByb3ZpZGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cEhlYWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuZXhwb3J0IGNvbnN0IFNFUlZFUl9IT1NUID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ1NFUlZFUl9IT1NUJyk7XG5leHBvcnQgY29uc3QgU0VSVkVSX1BBVEggPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignU0VSVkVSX1BBVEgnKTtcbmV4cG9ydCBjb25zdCBMT0NBVElPTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxMb2NhdGlvbj4oJ0xvY2F0aW9uJyk7XG5leHBvcnQgY29uc3QgU1RPUkFHRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTdG9yYWdlPignU3RvcmFnZScpO1xuZXhwb3J0IGNvbnN0IE9BVVRIX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPQXV0aENvbmZpZ1tdPignT0F1dGhDb25maWcnKTtcbmV4cG9ydCBjb25zdCBPQVVUSF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPQXV0aFRva2VuPignT0F1dGhUb2tlbicpO1xuZXhwb3J0IGNvbnN0IEhFQURFUl9BUFBMSUNBVElPTiA9IG5ldyBIdHRwSGVhZGVycyh7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfSk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICB1c2VGYWN0b3J5OiAoKSA9PiBpbmplY3QoT0FVVEhfQ09ORklHKS5yZWR1Y2UoKHAsIGMpID0+ICh7Li4ucCwgLi4uY30pLCB7fSlcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgT0F1dGhDb25maWcge1xuICBjb25maWc/OiBPQXV0aFR5cGVDb25maWc7XG4gIHN0b3JhZ2VLZXk/OiBzdHJpbmc7XG4gIHN0b3JhZ2U/OiBTdG9yYWdlO1xuICBpZ25vcmVQYXRocz86IFJlZ0V4cFtdO1xufVxuXG5leHBvcnQgY29uc3QgcHJvdmlkZU9BdXRoQ29uZmlnID0gKGNvbmZpZzogT0F1dGhDb25maWcgPSB7fSk6IFZhbHVlUHJvdmlkZXIgPT4gKHtcbiAgcHJvdmlkZTogT0FVVEhfQ09ORklHLFxuICB1c2VWYWx1ZTogY29uZmlnLFxuICBtdWx0aTogdHJ1ZVxufSk7XG5cbmV4cG9ydCBjb25zdCBwcm92aWRlT0F1dGhDb25maWdGYWN0b3J5ID0gKGZhY3Rvcnk6IEZ1bmN0aW9uLCBkZXBzPzogYW55W10pOiBGYWN0b3J5UHJvdmlkZXIgPT4gKHtcbiAgcHJvdmlkZTogT0FVVEhfQ09ORklHLFxuICB1c2VGYWN0b3J5OiBmYWN0b3J5LFxuICBkZXBzOiBkZXBzLFxuICBtdWx0aTogdHJ1ZVxufSk7XG5cbmV4cG9ydCBlbnVtIE9BdXRoVHlwZSB7XG4gIFJFU09VUkNFID0gJ3Bhc3N3b3JkJyxcbiAgQVVUSE9SSVpBVElPTl9DT0RFID0gJ2NvZGUnLFxuICBJTVBMSUNJVCA9ICd0b2tlbicsXG4gIENMSUVOVF9DUkVERU5USUFMID0gJ2NsaWVudF9jcmVkZW50aWFscydcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbGllbnRDcmVkZW50aWFsQ29uZmlnIHtcbiAgdG9rZW5QYXRoOiBzdHJpbmc7XG4gIHJldm9rZVBhdGg/OiBzdHJpbmc7XG4gIGNsaWVudElkOiBzdHJpbmc7XG4gIGNsaWVudFNlY3JldD86IHN0cmluZztcbiAgc2NvcGU/OiBzdHJpbmc7XG59XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1lbXB0eS1pbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VDb25maWcgZXh0ZW5kcyBDbGllbnRDcmVkZW50aWFsQ29uZmlnIHtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbXBsaWNpdENvbmZpZyB7XG4gIGF1dGhvcml6ZVBhdGg6IHN0cmluZztcbiAgcmV2b2tlUGF0aD86IHN0cmluZztcbiAgY2xpZW50SWQ6IHN0cmluZztcbiAgc2NvcGU/OiBzdHJpbmc7XG4gIGxvZ291dFBhdGg/OiBzdHJpbmc7XG4gIGxvZ291dFJlZGlyZWN0VXJpPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhvcml6YXRpb25Db2RlQ29uZmlnIGV4dGVuZHMgUmVzb3VyY2VDb25maWcge1xuICBhdXRob3JpemVQYXRoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXphdGlvbkNvZGVQS0NFQ29uZmlnIGV4dGVuZHMgQXV0aG9yaXphdGlvbkNvZGVDb25maWcge1xuICBwa2NlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5JZENvbmZpZyB7XG4gIGlzc3VlclBhdGg6IHN0cmluZztcbiAgY2xpZW50SWQ6IHN0cmluZztcbiAgY2xpZW50U2VjcmV0Pzogc3RyaW5nO1xuICBzY29wZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVBhcmFtZXRlcnMge1xuICB1c2VybmFtZTogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhvcml6YXRpb25QYXJhbWV0ZXJzIHtcbiAgcmVkaXJlY3RVcmk6IHN0cmluZztcbiAgcmVzcG9uc2VUeXBlOiBPQXV0aFR5cGUuSU1QTElDSVQgfCBPQXV0aFR5cGUuQVVUSE9SSVpBVElPTl9DT0RFIHwgc3RyaW5nO1xuICBzdGF0ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgT0F1dGhQYXJhbWV0ZXJzID0gUmVzb3VyY2VQYXJhbWV0ZXJzIHwgQXV0aG9yaXphdGlvblBhcmFtZXRlcnM7XG5leHBvcnQgdHlwZSBPQXV0aFR5cGVDb25maWcgPSBPcGVuSWRDb25maWdcbiAgfCBBdXRob3JpemF0aW9uQ29kZVBLQ0VDb25maWdcbiAgfCBBdXRob3JpemF0aW9uQ29kZUNvbmZpZ1xuICB8IEltcGxpY2l0Q29uZmlnXG4gIHwgUmVzb3VyY2VDb25maWdcbiAgfCBDbGllbnRDcmVkZW50aWFsQ29uZmlnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9BdXRoVG9rZW4ge1xuICBpZF90b2tlbj86IHN0cmluZztcbiAgYWNjZXNzX3Rva2VuPzogc3RyaW5nO1xuICByZWZyZXNoX3Rva2VuPzogc3RyaW5nO1xuICB0b2tlbl90eXBlPzogc3RyaW5nO1xuICBzdGF0ZT86IHN0cmluZztcbiAgZXJyb3I/OiBzdHJpbmc7XG4gIGVycm9yX2Rlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBleHBpcmVzX2luPzogbnVtYmVyIHwgc3RyaW5nO1xuICByZWZyZXNoX2V4cGlyZXNfaW4/OiBudW1iZXIgfCBzdHJpbmc7XG4gIHNjb3BlPzogc3RyaW5nO1xuICBjb2RlVmVyaWZpZXI/OiBzdHJpbmc7XG4gIG5vbmNlPzogc3RyaW5nO1xuICB0eXBlPzogT0F1dGhUeXBlO1xuICBleHBpcmVzPzogbnVtYmVyO1xufVxuXG5leHBvcnQgZW51bSBPQXV0aFN0YXR1cyB7XG4gIE5PVF9BVVRIT1JJWkVEID0gJ05PVF9BVVRIT1JJWkVEJyxcbiAgQVVUSE9SSVpFRCA9ICdBVVRIT1JJWkVEJyxcbiAgREVOSUVEID0gJ0RFTklFRCdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcGVuSWRDb25maWd1cmF0aW9uIHtcbiAgaXNzdWVyPzogc3RyaW5nO1xuICBhdXRob3JpemF0aW9uX2VuZHBvaW50Pzogc3RyaW5nO1xuICBpbnRyb3NwZWN0aW9uX2VuZHBvaW50Pzogc3RyaW5nO1xuICB0b2tlbl9lbmRwb2ludD86IHN0cmluZztcbiAgdXNlcmluZm9fZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIGVuZF9zZXNzaW9uX2VuZHBvaW50Pzogc3RyaW5nO1xuICByZXZvY2F0aW9uX2VuZHBvaW50Pzogc3RyaW5nO1xuICBzY29wZXNfc3VwcG9ydGVkPzogc3RyaW5nW107XG4gIGNvZGVfY2hhbGxlbmdlX21ldGhvZHNfc3VwcG9ydGVkPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckluZm8ge1xuICBlbWFpbD86IHN0cmluZztcbiAgZW1haWxfdmVyaWZpZWQ/OiBib29sZWFuO1xuICBmYW1pbHlfbmFtZT86IHN0cmluZztcbiAgZ2l2ZW5fbmFtZT86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgcHJlZmVycmVkX3VzZXJuYW1lPzogc3RyaW5nO1xuICBzdWI/OiBzdHJpbmc7XG4gIGFkZHJlc3M/OiBvYmplY3Q7XG4gIHBpY3R1cmU/OiBzdHJpbmc7XG4gIGxvY2FsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRyb3NwZWN0SW5mbyBleHRlbmRzIFVzZXJJbmZvIHtcbiAgYWN0aXZlOiBib29sZWFuO1xuICBzY29wZTogc3RyaW5nO1xuICBjbGllbnRfaWQ/OiBzdHJpbmc7XG4gIHVzZXJuYW1lOiBzdHJpbmc7XG4gIGV4cDogbnVtYmVyO1xufVxuIl19
|
|
@@ -2,11 +2,12 @@ import { NgModule, Optional, PLATFORM_ID } from '@angular/core';
|
|
|
2
2
|
import { FormsModule } from '@angular/forms';
|
|
3
3
|
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
|
|
4
4
|
import { RouterModule } from '@angular/router';
|
|
5
|
-
import { LOCATION, SERVER_HOST, SERVER_PATH, STORAGE
|
|
5
|
+
import { LOCATION, provideOAuthConfigFactory, SERVER_HOST, SERVER_PATH, STORAGE } from './models';
|
|
6
6
|
import { OAuthService } from './services/oauth.service';
|
|
7
7
|
import { OAuthLoginComponent } from './components/login/oauth-login.component';
|
|
8
8
|
import { CommonModule, isPlatformBrowser } from '@angular/common';
|
|
9
9
|
import { OAuthInterceptor } from './services/oauth.interceptor';
|
|
10
|
+
import { TokenService } from './services/token.service';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
const mockLocation = (serverHost, serverPath) => {
|
|
12
13
|
const url = new URL(serverHost && serverPath ? `${serverHost}${serverPath}` : 'http://localhost');
|
|
@@ -15,10 +16,10 @@ const mockLocation = (serverHost, serverPath) => {
|
|
|
15
16
|
href, origin, protocol, host, hostname, port, pathname, search, hash,
|
|
16
17
|
reload() {
|
|
17
18
|
},
|
|
18
|
-
assign(
|
|
19
|
+
assign(_) {
|
|
19
20
|
},
|
|
20
21
|
ancestorOrigins: {},
|
|
21
|
-
replace(
|
|
22
|
+
replace(_) {
|
|
22
23
|
}
|
|
23
24
|
};
|
|
24
25
|
};
|
|
@@ -74,26 +75,27 @@ export class OAuthModule {
|
|
|
74
75
|
providers: [
|
|
75
76
|
LocationService,
|
|
76
77
|
StorageService,
|
|
77
|
-
OAuthService,
|
|
78
|
-
OAuthInterceptorService,
|
|
79
78
|
provideOAuthConfigFactory((storage) => ({
|
|
80
79
|
...defaultConfig(storage),
|
|
81
80
|
...config
|
|
82
81
|
}), [STORAGE]),
|
|
82
|
+
TokenService,
|
|
83
|
+
OAuthInterceptorService,
|
|
84
|
+
OAuthService,
|
|
83
85
|
]
|
|
84
86
|
};
|
|
85
87
|
}
|
|
86
88
|
}
|
|
87
|
-
OAuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
88
|
-
OAuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
|
|
89
|
+
OAuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: OAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
90
|
+
OAuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: OAuthModule, declarations: [OAuthLoginComponent], imports: [CommonModule,
|
|
89
91
|
FormsModule,
|
|
90
92
|
HttpClientModule,
|
|
91
93
|
RouterModule], exports: [OAuthLoginComponent] });
|
|
92
|
-
OAuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.
|
|
94
|
+
OAuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: OAuthModule, imports: [CommonModule,
|
|
93
95
|
FormsModule,
|
|
94
96
|
HttpClientModule,
|
|
95
97
|
RouterModule] });
|
|
96
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: OAuthModule, decorators: [{
|
|
97
99
|
type: NgModule,
|
|
98
100
|
args: [{
|
|
99
101
|
imports: [
|
|
@@ -106,4 +108,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
|
|
|
106
108
|
exports: [OAuthLoginComponent]
|
|
107
109
|
}]
|
|
108
110
|
}] });
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9hdXRoL3NyYy9saWIvb2F1dGgubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0IsUUFBUSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFlLHlCQUF5QixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzdHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDBCQUEwQixDQUFDOztBQUV0RCxNQUFNLFlBQVksR0FBRyxDQUFDLFVBQWtCLEVBQUUsVUFBa0IsRUFBWSxFQUFFO0lBQ3hFLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxHQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2xHLE1BQU0sRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxHQUFHLEdBQUcsQ0FBQztJQUNuRixPQUFPO1FBQ0wsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJO1FBQ3BFLE1BQU07UUFDTixDQUFDO1FBQ0QsTUFBTSxDQUFDLENBQVM7UUFDaEIsQ0FBQztRQUNELGVBQWUsRUFBRSxFQUFTO1FBQzFCLE9BQU8sQ0FBQyxDQUFTO1FBQ2pCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUc7SUFDdEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsVUFBVSxDQUFDLFVBQWtCLEVBQUUsVUFBa0IsRUFBRSxVQUFrQjtRQUNuRSxPQUFPLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUNELElBQUksRUFBRTtRQUNKLFdBQVc7UUFDWCxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsV0FBVyxDQUFDO1FBQzdCLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxXQUFXLENBQUM7S0FDOUI7Q0FDRixDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQVk7SUFDM0IsS0FBSztJQUNMLENBQUM7SUFDRCxPQUFPLENBQUMsR0FBVztRQUNqQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxHQUFHLENBQUMsS0FBYTtRQUNmLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUFXO0lBQ3RCLENBQUM7SUFDRCxPQUFPLENBQUMsR0FBVyxFQUFFLEtBQWE7SUFDbEMsQ0FBQztJQUNELE1BQU0sRUFBRSxDQUFDO0NBQ1YsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHO0lBQ3JCLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFVBQVUsQ0FBQyxVQUFrQjtRQUMzQixPQUFPLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDO0NBQ3BCLENBQUM7QUFFRixNQUFNLHVCQUF1QixHQUFHO0lBQzlCLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsUUFBUSxFQUFFLGdCQUFnQjtJQUMxQixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtJQUN6QyxPQUFPO1FBQ0wsT0FBTztRQUNQLFVBQVUsRUFBRSxPQUFPO1FBQ25CLFdBQVcsRUFBRSxFQUFFO0tBQ2hCLENBQUM7QUFDSixDQUFDLENBQUM7QUFZRixNQUFNLE9BQU8sV0FBVztJQUV0QixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQXNCLEVBQUU7UUFDckMsT0FBTztZQUNMLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFNBQVMsRUFBRTtnQkFDVCxlQUFlO2dCQUNmLGNBQWM7Z0JBQ2QseUJBQXlCLENBQUMsQ0FBQyxPQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUMvQyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUM7b0JBQ3pCLEdBQUcsTUFBTTtpQkFDVixDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDZCxZQUFZO2dCQUNaLHVCQUF1QjtnQkFDdkIsWUFBWTthQUNiO1NBQ0YsQ0FBQztJQUNKLENBQUM7O3dHQWpCVSxXQUFXO3lHQUFYLFdBQVcsaUJBSFAsbUJBQW1CLGFBTGhDLFlBQVk7UUFDWixXQUFXO1FBQ1gsZ0JBQWdCO1FBQ2hCLFlBQVksYUFHSixtQkFBbUI7eUdBRWxCLFdBQVcsWUFScEIsWUFBWTtRQUNaLFdBQVc7UUFDWCxnQkFBZ0I7UUFDaEIsWUFBWTsyRkFLSCxXQUFXO2tCQVZ2QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixZQUFZO3FCQUNiO29CQUNELFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQyxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBPcHRpb25hbCwgUExBVEZPUk1fSUR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtIVFRQX0lOVEVSQ0VQVE9SUywgSHR0cENsaWVudE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0xPQ0FUSU9OLCBPQXV0aENvbmZpZywgcHJvdmlkZU9BdXRoQ29uZmlnRmFjdG9yeSwgU0VSVkVSX0hPU1QsIFNFUlZFUl9QQVRILCBTVE9SQUdFfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQge09BdXRoU2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcy9vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7T0F1dGhMb2dpbkNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL2xvZ2luL29hdXRoLWxvZ2luLmNvbXBvbmVudCc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge09BdXRoSW50ZXJjZXB0b3J9IGZyb20gJy4vc2VydmljZXMvb2F1dGguaW50ZXJjZXB0b3InO1xuaW1wb3J0IHtUb2tlblNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMvdG9rZW4uc2VydmljZSc7XG5cbmNvbnN0IG1vY2tMb2NhdGlvbiA9IChzZXJ2ZXJIb3N0OiBzdHJpbmcsIHNlcnZlclBhdGg6IHN0cmluZyk6IExvY2F0aW9uID0+IHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChzZXJ2ZXJIb3N0ICYmIHNlcnZlclBhdGggPyBgJHtzZXJ2ZXJIb3N0fSR7c2VydmVyUGF0aH1gIDogJ2h0dHA6Ly9sb2NhbGhvc3QnKTtcbiAgY29uc3Qge2hyZWYsIG9yaWdpbiwgcHJvdG9jb2wsIGhvc3QsIGhvc3RuYW1lLCBwb3J0LCBwYXRobmFtZSwgc2VhcmNoLCBoYXNofSA9IHVybDtcbiAgcmV0dXJuIHtcbiAgICBocmVmLCBvcmlnaW4sIHByb3RvY29sLCBob3N0LCBob3N0bmFtZSwgcG9ydCwgcGF0aG5hbWUsIHNlYXJjaCwgaGFzaCxcbiAgICByZWxvYWQoKSB7XG4gICAgfSxcbiAgICBhc3NpZ24oXzogc3RyaW5nKSB7XG4gICAgfSxcbiAgICBhbmNlc3Rvck9yaWdpbnM6IHt9IGFzIGFueSxcbiAgICByZXBsYWNlKF86IHN0cmluZykge1xuICAgIH1cbiAgfTtcbn07XG5cbmNvbnN0IExvY2F0aW9uU2VydmljZSA9IHtcbiAgcHJvdmlkZTogTE9DQVRJT04sXG4gIHVzZUZhY3RvcnkocGxhdGZvcm1JZDogT2JqZWN0LCBzZXJ2ZXJIb3N0OiBzdHJpbmcsIHNlcnZlclBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiBpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSA/IGxvY2F0aW9uIDogbW9ja0xvY2F0aW9uKHNlcnZlckhvc3QsIHNlcnZlclBhdGgpO1xuICB9LFxuICBkZXBzOiBbXG4gICAgUExBVEZPUk1fSUQsXG4gICAgW25ldyBPcHRpb25hbCgpLCBTRVJWRVJfSE9TVF0sXG4gICAgW25ldyBPcHRpb25hbCgpLCBTRVJWRVJfUEFUSF1cbiAgXVxufTtcblxuY29uc3QgbW9ja1N0b3JhZ2U6IFN0b3JhZ2UgPSB7XG4gIGNsZWFyKCkge1xuICB9LFxuICBnZXRJdGVtKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG4gIGtleShpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG4gIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpIHtcbiAgfSxcbiAgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICB9LFxuICBsZW5ndGg6IDBcbn07XG5cbmNvbnN0IFN0b3JhZ2VTZXJ2aWNlID0ge1xuICBwcm92aWRlOiBTVE9SQUdFLFxuICB1c2VGYWN0b3J5KHBsYXRmb3JtSWQ6IE9iamVjdCkge1xuICAgIHJldHVybiBpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSA/IGxvY2FsU3RvcmFnZSA6IG1vY2tTdG9yYWdlO1xuICB9LFxuICBkZXBzOiBbUExBVEZPUk1fSURdXG59O1xuXG5jb25zdCBPQXV0aEludGVyY2VwdG9yU2VydmljZSA9IHtcbiAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXG4gIHVzZUNsYXNzOiBPQXV0aEludGVyY2VwdG9yLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbmNvbnN0IGRlZmF1bHRDb25maWcgPSAoc3RvcmFnZTogU3RvcmFnZSkgPT4ge1xuICByZXR1cm4ge1xuICAgIHN0b3JhZ2UsXG4gICAgc3RvcmFnZUtleTogJ3Rva2VuJyxcbiAgICBpZ25vcmVQYXRoczogW11cbiAgfTtcbn07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSHR0cENsaWVudE1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW09BdXRoTG9naW5Db21wb25lbnRdLFxuICBleHBvcnRzOiBbT0F1dGhMb2dpbkNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgT0F1dGhNb2R1bGUge1xuXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogT0F1dGhDb25maWcgPSB7fSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8T0F1dGhNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE9BdXRoTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIExvY2F0aW9uU2VydmljZSxcbiAgICAgICAgU3RvcmFnZVNlcnZpY2UsXG4gICAgICAgIHByb3ZpZGVPQXV0aENvbmZpZ0ZhY3RvcnkoKHN0b3JhZ2U6IFN0b3JhZ2UpID0+ICh7XG4gICAgICAgICAgLi4uZGVmYXVsdENvbmZpZyhzdG9yYWdlKSxcbiAgICAgICAgICAuLi5jb25maWdcbiAgICAgICAgfSksIFtTVE9SQUdFXSksXG4gICAgICAgIFRva2VuU2VydmljZSxcbiAgICAgICAgT0F1dGhJbnRlcmNlcHRvclNlcnZpY2UsXG4gICAgICAgIE9BdXRoU2VydmljZSxcbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1,41 +1,38 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { throwError } from 'rxjs';
|
|
3
|
-
import { catchError } from 'rxjs/operators';
|
|
4
|
-
import { OAuthStatus } from '../models';
|
|
2
|
+
import { switchMap, take, throwError } from 'rxjs';
|
|
3
|
+
import { catchError, map } from 'rxjs/operators';
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "./
|
|
5
|
+
import * as i1 from "./token.service";
|
|
6
|
+
import * as i2 from "../models";
|
|
7
7
|
export class OAuthInterceptor {
|
|
8
|
-
constructor(
|
|
9
|
-
this.
|
|
8
|
+
constructor(tokenService, authConfig) {
|
|
9
|
+
this.tokenService = tokenService;
|
|
10
|
+
this.authConfig = authConfig;
|
|
10
11
|
}
|
|
11
12
|
intercept(req, next) {
|
|
12
|
-
|
|
13
|
-
if (!this.isPathExcepted(req)) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
}
|
|
13
|
+
return this.tokenService.token$.pipe(take(1), map(token => {
|
|
14
|
+
if (token?.access_token && !this.isPathExcepted(req)) {
|
|
15
|
+
req = req.clone({
|
|
16
|
+
setHeaders: {
|
|
17
|
+
Authorization: `${token.token_type} ${token.access_token}`
|
|
18
|
+
}
|
|
19
|
+
});
|
|
22
20
|
}
|
|
23
|
-
return
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
21
|
+
return req;
|
|
22
|
+
}), switchMap(req => next.handle(req)), catchError((err) => {
|
|
23
|
+
if (err.status === 401 && !this.isPathExcepted(req)) {
|
|
24
|
+
this.tokenService.token = {
|
|
25
|
+
error: `${err.status}`,
|
|
26
|
+
error_description: err.message
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
return throwError(() => err);
|
|
30
|
+
}));
|
|
34
31
|
}
|
|
35
32
|
isPathExcepted(req) {
|
|
36
|
-
const { ignorePaths } = this.
|
|
33
|
+
const { ignorePaths } = this.authConfig || {};
|
|
37
34
|
if (ignorePaths) {
|
|
38
|
-
for (const ignorePath of
|
|
35
|
+
for (const ignorePath of ignorePaths) {
|
|
39
36
|
try {
|
|
40
37
|
if (req.url.match(ignorePath)) {
|
|
41
38
|
return true;
|
|
@@ -48,9 +45,9 @@ export class OAuthInterceptor {
|
|
|
48
45
|
return false;
|
|
49
46
|
}
|
|
50
47
|
}
|
|
51
|
-
OAuthInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
52
|
-
OAuthInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
48
|
+
OAuthInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: OAuthInterceptor, deps: [{ token: i1.TokenService }, { token: i2.OAuthConfig }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
49
|
+
OAuthInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: OAuthInterceptor });
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: OAuthInterceptor, decorators: [{
|
|
54
51
|
type: Injectable
|
|
55
|
-
}], ctorParameters: function () { return [{ type: i1.
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
}], ctorParameters: function () { return [{ type: i1.TokenService }, { type: i2.OAuthConfig }]; } });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGguaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2F1dGgvc3JjL2xpYi9zZXJ2aWNlcy9vYXV0aC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUMsVUFBVSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7O0FBSy9DLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsWUFBc0IsWUFBMEIsRUFDMUIsVUFBdUI7UUFEdkIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZUFBVSxHQUFWLFVBQVUsQ0FBYTtJQUM3QyxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQXFCLEVBQUUsSUFBaUI7UUFDaEQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2xDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDVixJQUFJLEtBQUssRUFBRSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNwRCxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztvQkFDZCxVQUFVLEVBQUU7d0JBQ1YsYUFBYSxFQUFFLEdBQUcsS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO3FCQUMzRDtpQkFDRixDQUFDLENBQUM7YUFDSjtZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNsQyxVQUFVLENBQUMsQ0FBQyxHQUFzQixFQUFFLEVBQUU7WUFDcEMsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHO29CQUN4QixLQUFLLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFO29CQUN0QixpQkFBaUIsRUFBRSxHQUFHLENBQUMsT0FBTztpQkFDL0IsQ0FBQzthQUNIO1lBQ0QsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxjQUFjLENBQUMsR0FBcUI7UUFDMUMsTUFBTSxFQUFDLFdBQVcsRUFBQyxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1FBQzVDLElBQUksV0FBVyxFQUFFO1lBQ2YsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUU7Z0JBQ3BDLElBQUk7b0JBQ0YsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRTt3QkFDN0IsT0FBTyxJQUFJLENBQUM7cUJBQ2I7aUJBQ0Y7Z0JBQUMsT0FBTyxHQUFHLEVBQUU7aUJBQ2I7YUFDRjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs2R0E3Q1UsZ0JBQWdCO2lIQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtzd2l0Y2hNYXAsIHRha2UsIHRocm93RXJyb3J9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7T0F1dGhDb25maWd9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge1Rva2VuU2VydmljZX0gZnJvbSAnLi90b2tlbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9BdXRoSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB0b2tlblNlcnZpY2U6IFRva2VuU2VydmljZSxcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGF1dGhDb25maWc6IE9BdXRoQ29uZmlnKSB7XG4gIH1cblxuICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xuICAgIHJldHVybiB0aGlzLnRva2VuU2VydmljZS50b2tlbiQucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICBtYXAodG9rZW4gPT4ge1xuICAgICAgICBpZiAodG9rZW4/LmFjY2Vzc190b2tlbiAmJiAhdGhpcy5pc1BhdGhFeGNlcHRlZChyZXEpKSB7XG4gICAgICAgICAgcmVxID0gcmVxLmNsb25lKHtcbiAgICAgICAgICAgIHNldEhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYCR7dG9rZW4udG9rZW5fdHlwZX0gJHt0b2tlbi5hY2Nlc3NfdG9rZW59YFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXE7XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcChyZXEgPT4gbmV4dC5oYW5kbGUocmVxKSksXG4gICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChlcnIuc3RhdHVzID09PSA0MDEgJiYgIXRoaXMuaXNQYXRoRXhjZXB0ZWQocmVxKSkge1xuICAgICAgICAgIHRoaXMudG9rZW5TZXJ2aWNlLnRva2VuID0ge1xuICAgICAgICAgICAgZXJyb3I6IGAke2Vyci5zdGF0dXN9YCxcbiAgICAgICAgICAgIGVycm9yX2Rlc2NyaXB0aW9uOiBlcnIubWVzc2FnZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNQYXRoRXhjZXB0ZWQocmVxOiBIdHRwUmVxdWVzdDxhbnk+KSB7XG4gICAgY29uc3Qge2lnbm9yZVBhdGhzfSA9IHRoaXMuYXV0aENvbmZpZyB8fCB7fTtcbiAgICBpZiAoaWdub3JlUGF0aHMpIHtcbiAgICAgIGZvciAoY29uc3QgaWdub3JlUGF0aCBvZiBpZ25vcmVQYXRocykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChyZXEudXJsLm1hdGNoKGlnbm9yZVBhdGgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
|