@odx/auth 7.0.0 → 8.0.1
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/CHANGELOG.md +37 -0
- package/README.md +16 -10
- package/esm2022/index.mjs +2 -1
- package/esm2022/lib/auth.component.mjs +2 -2
- package/esm2022/lib/auth.config.mjs +6 -23
- package/esm2022/lib/auth.guard.mjs +10 -3
- package/esm2022/lib/auth.i18n.mjs +1 -1
- package/esm2022/lib/auth.interceptor.mjs +15 -0
- package/esm2022/lib/auth.logger.mjs +3 -0
- package/esm2022/lib/auth.providers.mjs +53 -36
- package/esm2022/lib/auth.service.mjs +29 -17
- package/esm2022/lib/auth.typings.mjs +1 -1
- package/esm2022/lib/components/auth-actions/auth-actions.component.mjs +2 -2
- package/esm2022/lib/components/auth-loading-screen/auth-loading-screen.component.mjs +6 -6
- package/esm2022/lib/helpers/create-auth-host-url.mjs +6 -0
- package/esm2022/lib/helpers/index.mjs +4 -1
- package/esm2022/lib/helpers/set-http-auth-header.mjs +13 -0
- package/esm2022/lib/helpers/user-language-loader.mjs +10 -0
- package/esm2022/lib/models/auth-environment.mjs +3 -2
- package/esm2022/lib/models/auth-http-cache.mjs +19 -23
- package/esm2022/lib/models/auth-plugin-manager.mjs +14 -9
- package/esm2022/lib/plugins/core-debug.plugin.mjs +20 -0
- package/esm2022/lib/plugins/index.mjs +2 -1
- package/esm2022/lib/plugins/user-profile-link.plugin.mjs +3 -3
- package/esm2022/lib/unauth.guard.mjs +10 -3
- package/esm2022/plugins/service-connect/index.mjs +2 -2
- package/esm2022/plugins/service-connect/lib/dtos/get-service-connect-user-response.dto.mjs +2 -0
- package/esm2022/plugins/service-connect/lib/dtos/index.mjs +2 -1
- package/esm2022/plugins/service-connect/lib/service-connect-rights.guard.mjs +3 -3
- package/esm2022/plugins/service-connect/lib/service-connect-rights.plugin.mjs +1 -2
- package/esm2022/plugins/service-connect/lib/service-connect-user-language.plugin.mjs +8 -0
- package/esm2022/plugins/service-connect/lib/service-connect.config.mjs +6 -4
- package/fesm2022/odx-auth-plugins-service-connect.mjs +15 -9
- package/fesm2022/odx-auth-plugins-service-connect.mjs.map +1 -1
- package/fesm2022/odx-auth.mjs +311 -243
- package/fesm2022/odx-auth.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/lib/auth.config.d.ts +11 -10
- package/lib/auth.guard.d.ts +1 -1
- package/lib/auth.i18n.d.ts +2 -2
- package/lib/auth.interceptor.d.ts +2 -0
- package/lib/auth.logger.d.ts +3 -0
- package/lib/auth.providers.d.ts +7 -4
- package/lib/auth.service.d.ts +6 -2
- package/lib/auth.typings.d.ts +1 -1
- package/lib/helpers/create-auth-host-url.d.ts +2 -0
- package/lib/helpers/index.d.ts +3 -0
- package/lib/helpers/set-http-auth-header.d.ts +2 -0
- package/lib/helpers/user-language-loader.d.ts +4 -0
- package/lib/models/auth-environment.d.ts +6 -1
- package/lib/models/auth-http-cache.d.ts +3 -1
- package/lib/models/auth-plugin-manager.d.ts +2 -0
- package/lib/plugins/core-debug.plugin.d.ts +2 -0
- package/lib/plugins/index.d.ts +1 -0
- package/lib/unauth.guard.d.ts +1 -1
- package/package.json +2 -2
- package/plugins/service-connect/index.d.ts +1 -1
- package/plugins/service-connect/lib/dtos/get-service-connect-user-response.dto.d.ts +3 -0
- package/plugins/service-connect/lib/dtos/index.d.ts +1 -0
- package/plugins/service-connect/lib/service-connect-rights.guard.d.ts +1 -1
- package/plugins/service-connect/lib/service-connect-rights.plugin.d.ts +8 -1
- package/plugins/service-connect/lib/service-connect-user-language.plugin.d.ts +1 -0
- package/plugins/service-connect/lib/service-connect.config.d.ts +1 -0
- package/esm2022/plugins/service-connect/lib/service-connect.typings.mjs +0 -2
- package/plugins/service-connect/lib/service-connect.typings.d.ts +0 -9
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { HttpErrorResponse } from '@angular/common/http';
|
|
2
|
-
import {
|
|
2
|
+
import { Injectable, inject } from '@angular/core';
|
|
3
3
|
import { Router } from '@angular/router';
|
|
4
4
|
import { WindowRef } from '@odx/angular';
|
|
5
5
|
import { OAuthErrorEvent, OAuthService } from 'angular-oauth2-oidc';
|
|
6
6
|
import { deepmerge } from 'deepmerge-ts';
|
|
7
|
-
import { BehaviorSubject, combineLatest, distinctUntilChanged, filter, fromEvent, map, merge, share, shareReplay, startWith, switchMap, tap, } from 'rxjs';
|
|
7
|
+
import { BehaviorSubject, catchError, combineLatest, distinctUntilChanged, filter, fromEvent, map, merge, of, share, shareReplay, startWith, switchMap, take, tap, timeout, } from 'rxjs';
|
|
8
8
|
import { injectAuthConfig } from './auth.config';
|
|
9
|
+
import { setHttpAuthHeader } from './helpers';
|
|
9
10
|
import { AuthPluginManager } from './models';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
export class AuthService {
|
|
@@ -21,12 +22,13 @@ export class AuthService {
|
|
|
21
22
|
this.silentRefreshHandler$ = this.isInitialized$$.pipe(filter(Boolean), switchMap(() => this.windowRef.isOnline$), tap((isOnline) => this.updateSilentRefresh(isOnline)));
|
|
22
23
|
this.onAuthStateChange$ = combineLatest([this.oauthService.events.pipe(startWith(null)), this.windowRef.isOnline$, this.onAccessTokenUpdate$]);
|
|
23
24
|
this.isInitialized$ = this.isInitialized$$.pipe(filter(Boolean), distinctUntilChanged());
|
|
24
|
-
this.isRedirecting$ = this.isRedirecting$$.pipe(distinctUntilChanged(), shareReplay({ refCount: true }));
|
|
25
|
+
this.isRedirecting$ = this.isRedirecting$$.pipe(distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
25
26
|
this.isLoading$ = merge(this.isRedirecting$, this.authPluginManager.pluginsLoading$).pipe(distinctUntilChanged());
|
|
26
|
-
this.isAuthenticated$ = this.isInitialized$.pipe(switchMap(() => this.authPluginManager.pluginsReady$), switchMap(() => this.onAuthStateChange$), map(() => this.isAuthenticated()), shareReplay({ refCount: true }));
|
|
27
|
-
this.identityClaims$ = this.isAuthenticated$.pipe(map(() => this.getIdentityClaims()), shareReplay({ refCount: true }));
|
|
27
|
+
this.isAuthenticated$ = this.isInitialized$.pipe(switchMap(() => this.authPluginManager.pluginsReady$), switchMap(() => this.onAuthStateChange$), map(() => this.isAuthenticated()), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
28
|
+
this.identityClaims$ = this.isAuthenticated$.pipe(map(() => this.getIdentityClaims()), shareReplay({ bufferSize: 1, refCount: true }));
|
|
28
29
|
this.errors$ = this.oauthService.events.pipe(filter((event) => event instanceof OAuthErrorEvent), share());
|
|
29
|
-
this.
|
|
30
|
+
this.onTokenReceived$ = this.oauthService.events.pipe(filter((event) => event.type === 'token_received'), share());
|
|
31
|
+
this.runPlugins();
|
|
30
32
|
this.silentRefreshHandler$.subscribe();
|
|
31
33
|
}
|
|
32
34
|
async initialize(config) {
|
|
@@ -35,7 +37,9 @@ export class AuthService {
|
|
|
35
37
|
try {
|
|
36
38
|
await this.oauthService.loadDiscoveryDocument(this.authConfig.discoveryUrl);
|
|
37
39
|
await this.oauthService.tryLogin();
|
|
38
|
-
|
|
40
|
+
if (this.authConfig.refreshTokenOnInit) {
|
|
41
|
+
await this.tryRefreshToken();
|
|
42
|
+
}
|
|
39
43
|
}
|
|
40
44
|
catch (error) {
|
|
41
45
|
if (!(error instanceof HttpErrorResponse || error instanceof OAuthErrorEvent)) {
|
|
@@ -53,6 +57,9 @@ export class AuthService {
|
|
|
53
57
|
await this.tryLoadUserProfile();
|
|
54
58
|
await this.routeToRequestedUrl();
|
|
55
59
|
}
|
|
60
|
+
runPlugins() {
|
|
61
|
+
this.authPluginManager.runPlugins(this).subscribe();
|
|
62
|
+
}
|
|
56
63
|
getIssuer() {
|
|
57
64
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
58
65
|
return new URL(this.oauthService.issuer);
|
|
@@ -63,9 +70,6 @@ export class AuthService {
|
|
|
63
70
|
signOut(noRedirect) {
|
|
64
71
|
this.oauthService.logOut(noRedirect || !this.getAccessToken());
|
|
65
72
|
}
|
|
66
|
-
async loadUserProfile() {
|
|
67
|
-
await this.oauthService.loadUserProfile();
|
|
68
|
-
}
|
|
69
73
|
async refreshTokens() {
|
|
70
74
|
return this.oauthService.refreshToken();
|
|
71
75
|
}
|
|
@@ -101,6 +105,14 @@ export class AuthService {
|
|
|
101
105
|
isAuthorized$(authorizedHandler) {
|
|
102
106
|
return this.isAuthenticated$.pipe(map(() => this.isAuthorized(authorizedHandler)));
|
|
103
107
|
}
|
|
108
|
+
prepareAuthRequest$(req, requireSignIn = false) {
|
|
109
|
+
return this.waitForAccessToken$(requireSignIn).pipe(map((token) => setHttpAuthHeader(req, token)));
|
|
110
|
+
}
|
|
111
|
+
waitForAccessToken$(requireSignIn) {
|
|
112
|
+
const accessToken$ = of(this.getAccessToken()).pipe(filter((token) => !!token && this.isAuthenticated()));
|
|
113
|
+
const waitForAccessToken$ = this.onTokenReceived$.pipe(timeout(this.authConfig.waitForTokenInMs ?? 0), catchError(async () => this.tryRefreshToken().catch(() => null)));
|
|
114
|
+
return this.isInitialized$.pipe(switchMap(() => merge(accessToken$, waitForAccessToken$)), take(1), map(() => this.getAccessToken()), tap((token) => !token && requireSignIn && this.signIn(this.windowRef.location.pathname)));
|
|
115
|
+
}
|
|
104
116
|
async routeToRequestedUrl() {
|
|
105
117
|
if (!this.oauthService.state || !this.oauthService.hasValidAccessToken())
|
|
106
118
|
return;
|
|
@@ -114,15 +126,15 @@ export class AuthService {
|
|
|
114
126
|
this.windowRef.location.assign(uri);
|
|
115
127
|
this.isRedirecting$$.next(true);
|
|
116
128
|
}
|
|
117
|
-
async
|
|
118
|
-
if (!this.authConfig.
|
|
129
|
+
async tryLoadUserProfile() {
|
|
130
|
+
if (!this.authConfig.loadUserProfile || !this.isAuthenticated())
|
|
119
131
|
return;
|
|
120
|
-
await this.oauthService.
|
|
132
|
+
await this.oauthService.loadUserProfile().catch(() => null);
|
|
121
133
|
}
|
|
122
|
-
async
|
|
123
|
-
if (!this.
|
|
134
|
+
async tryRefreshToken() {
|
|
135
|
+
if (!this.getRefreshToken())
|
|
124
136
|
return;
|
|
125
|
-
await this.
|
|
137
|
+
await this.oauthService.refreshToken();
|
|
126
138
|
}
|
|
127
139
|
assertAudience(clientId) {
|
|
128
140
|
const tokenClientId = this.getIdentityClaims()?.aud;
|
|
@@ -145,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
145
157
|
type: Injectable,
|
|
146
158
|
args: [{ providedIn: 'root' }]
|
|
147
159
|
}], ctorParameters: function () { return []; } });
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hdXRoL3NyYy9saWIvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBYyxlQUFlLEVBQUUsWUFBWSxFQUFpQixNQUFNLHFCQUFxQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixTQUFTLEVBQ1QsR0FBRyxFQUNILEtBQUssRUFFTCxLQUFLLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBcUIsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBR2hFLE1BQU0sT0FBTyxXQUFXO0lBdUN0QjtRQXRDaUIsZUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDaEMsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDOUMsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixjQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTlCLG9CQUFlLEdB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QUVPLG1CQUFtQixDQUFDLE9BQWdCO1FBQzFDLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFlBQVksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1NBQ2pEO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDMUM7SUFDSCxDQUFDOytHQXRLVSxXQUFXO21IQUFYLFdBQVcsY0FERSxNQUFNOzs0RkFDbkIsV0FBVztrQkFEdkIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFdpbmRvd1JlZiB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBBdXRoQ29uZmlnLCBPQXV0aEVycm9yRXZlbnQsIE9BdXRoU2VydmljZSwgVG9rZW5SZXNwb25zZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xuaW1wb3J0IHsgZGVlcG1lcmdlIH0gZnJvbSAnZGVlcG1lcmdlLXRzJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgZnJvbUV2ZW50LFxuICBtYXAsXG4gIG1lcmdlLFxuICBPYnNlcnZhYmxlLFxuICBzaGFyZSxcbiAgc2hhcmVSZXBsYXksXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaW5qZWN0QXV0aENvbmZpZyB9IGZyb20gJy4vYXV0aC5jb25maWcnO1xuaW1wb3J0IHsgQXV0aG9yaXplZEhhbmRsZXIsIEF1dGhQbHVnaW5NYW5hZ2VyIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoQ29uZmlnID0gaW5qZWN0QXV0aENvbmZpZygpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhQbHVnaW5NYW5hZ2VyID0gaW5qZWN0KEF1dGhQbHVnaW5NYW5hZ2VyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvYXV0aFNlcnZpY2UgPSBpbmplY3QoT0F1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3dSZWYgPSBpbmplY3QoV2luZG93UmVmKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGlzSW5pdGlhbGl6ZWQkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzUmVkaXJlY3RpbmckJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uQWNjZXNzVG9rZW5VcGRhdGUkID0gZnJvbUV2ZW50PFN0b3JhZ2VFdmVudD4odGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LCAnc3RvcmFnZScpLnBpcGUoXG4gICAgZmlsdGVyKCh7IGtleSB9KSA9PiBrZXkgPT09ICdhY2Nlc3NfdG9rZW4nIHx8IGtleSA9PT0gbnVsbCksXG4gICAgc3RhcnRXaXRoKG51bGwpLFxuICAgIHNoYXJlKCksXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2lsZW50UmVmcmVzaEhhbmRsZXIkID0gdGhpcy5pc0luaXRpYWxpemVkJCQucGlwZShcbiAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMud2luZG93UmVmLmlzT25saW5lJCksXG4gICAgdGFwKChpc09ubGluZSkgPT4gdGhpcy51cGRhdGVTaWxlbnRSZWZyZXNoKGlzT25saW5lKSksXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25BdXRoU3RhdGVDaGFuZ2UkID0gY29tYmluZUxhdGVzdChbdGhpcy5vYXV0aFNlcnZpY2UuZXZlbnRzLnBpcGUoc3RhcnRXaXRoKG51bGwpKSwgdGhpcy53aW5kb3dSZWYuaXNPbmxpbmUkLCB0aGlzLm9uQWNjZXNzVG9rZW5VcGRhdGUkXSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzSW5pdGlhbGl6ZWQkID0gdGhpcy5pc0luaXRpYWxpemVkJCQucGlwZShmaWx0ZXIoQm9vbGVhbiksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNSZWRpcmVjdGluZyQgPSB0aGlzLmlzUmVkaXJlY3RpbmckJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUgfSkpO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNMb2FkaW5nJCA9IG1lcmdlKHRoaXMuaXNSZWRpcmVjdGluZyQsIHRoaXMuYXV0aFBsdWdpbk1hbmFnZXIucGx1Z2luc0xvYWRpbmckKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNBdXRoZW50aWNhdGVkJCA9IHRoaXMuaXNJbml0aWFsaXplZCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5hdXRoUGx1Z2luTWFuYWdlci5wbHVnaW5zUmVhZHkkKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5vbkF1dGhTdGF0ZUNoYW5nZSQpLFxuICAgIG1hcCgoKSA9PiB0aGlzLmlzQXV0aGVudGljYXRlZCgpKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlIH0pLFxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgaWRlbnRpdHlDbGFpbXMkID0gdGhpcy5pc0F1dGhlbnRpY2F0ZWQkLnBpcGUoXG4gICAgbWFwKCgpID0+IHRoaXMuZ2V0SWRlbnRpdHlDbGFpbXMoKSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGVycm9ycyQgPSB0aGlzLm9hdXRoU2VydmljZS5ldmVudHMucGlwZShcbiAgICBmaWx0ZXIoKGV2ZW50KTogZXZlbnQgaXMgT0F1dGhFcnJvckV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgT0F1dGhFcnJvckV2ZW50KSxcbiAgICBzaGFyZSgpLFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuYXV0aFBsdWdpbk1hbmFnZXIucnVuUGx1Z2lucyh0aGlzKS5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnNpbGVudFJlZnJlc2hIYW5kbGVyJC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplKGNvbmZpZzogQXV0aENvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuYXNzZXJ0QXVkaWVuY2UoY29uZmlnLmNsaWVudElkKTtcbiAgICB0aGlzLm9hdXRoU2VydmljZS5jb25maWd1cmUoeyAuLi5jb25maWcsIG9wZW5Vcmk6IHRoaXMucmVkaXJlY3RUb0xvZ2luLmJpbmQodGhpcykgfSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMub2F1dGhTZXJ2aWNlLmxvYWREaXNjb3ZlcnlEb2N1bWVudCh0aGlzLmF1dGhDb25maWcuZGlzY292ZXJ5VXJsKTtcbiAgICAgIGF3YWl0IHRoaXMub2F1dGhTZXJ2aWNlLnRyeUxvZ2luKCk7XG4gICAgICBhd2FpdCB0aGlzLnRyeVJlZnJlc2hUb2tlbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlIHx8IGVycm9yIGluc3RhbmNlb2YgT0F1dGhFcnJvckV2ZW50KSkge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIGlmIChlcnJvci50eXBlID09PSAndG9rZW5fcmVmcmVzaF9lcnJvcicgfHwgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgJiYgKGVycm9yLnN0YXR1cyA9PT0gNDAxIHx8IGVycm9yLnN0YXR1cyA9PT0gNDAwKSkpIHtcbiAgICAgICAgdGhpcy5zaWduT3V0KHRydWUpO1xuICAgICAgICB0aGlzLnNpZ25Jbih0aGlzLndpbmRvd1JlZi5sb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuaXNJbml0aWFsaXplZCQkLm5leHQodHJ1ZSk7XG4gICAgaWYgKHRoaXMuYXV0aENvbmZpZy5yZXF1aXJlU2lnbkluICYmICF0aGlzLmlzQXV0aGVudGljYXRlZCgpKSB7XG4gICAgICB0aGlzLnNpZ25Jbih0aGlzLndpbmRvd1JlZi5sb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudHJ5TG9hZFVzZXJQcm9maWxlKCk7XG4gICAgYXdhaXQgdGhpcy5yb3V0ZVRvUmVxdWVzdGVkVXJsKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SXNzdWVyKCk6IFVSTCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICByZXR1cm4gbmV3IFVSTCh0aGlzLm9hdXRoU2VydmljZS5pc3N1ZXIhKTtcbiAgfVxuXG4gIHB1YmxpYyBzaWduSW4odXJsPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vYXV0aFNlcnZpY2UuaW5pdExvZ2luRmxvdyh1cmwpO1xuICB9XG5cbiAgcHVibGljIHNpZ25PdXQobm9SZWRpcmVjdD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLm9hdXRoU2VydmljZS5sb2dPdXQobm9SZWRpcmVjdCB8fCAhdGhpcy5nZXRBY2Nlc3NUb2tlbigpKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkVXNlclByb2ZpbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5vYXV0aFNlcnZpY2UubG9hZFVzZXJQcm9maWxlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVmcmVzaFRva2VucygpOiBQcm9taXNlPFRva2VuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5vYXV0aFNlcnZpY2UucmVmcmVzaFRva2VuKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QWNjZXNzVG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMub2F1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKCkgPz8gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZWZyZXNoVG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMub2F1dGhTZXJ2aWNlLmdldFJlZnJlc2hUb2tlbigpID8/IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0SWRUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5vYXV0aFNlcnZpY2UuZ2V0SWRUb2tlbigpID8/IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0SWRlbnRpdHlDbGFpbXMoKTogT2R4QXV0aC5JZGVudGl5Q2xhaW1zIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmdldElkVG9rZW4oKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGRlZXBtZXJnZSh0aGlzLm9hdXRoU2VydmljZS5nZXRJZGVudGl0eUNsYWltcygpLCB0aGlzLmF1dGhQbHVnaW5NYW5hZ2VyLmdldFJlc3VsdCgpKSBhcyBPZHhBdXRoLklkZW50aXlDbGFpbXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmF3SWRlbnRpdHlDbGFpbXMoKTogT2R4QXV0aC5SYXdJZGVudGl0eUNsYWltcyB8IG51bGwge1xuICAgIGlmICghdGhpcy5nZXRJZFRva2VuKCkpIHJldHVybiBudWxsO1xuICAgIHJldHVybiB0aGlzLm9hdXRoU2VydmljZS5nZXRJZGVudGl0eUNsYWltcygpO1xuICB9XG5cbiAgcHVibGljIGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy53aW5kb3dSZWYuaXNPbmxpbmUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMub2F1dGhTZXJ2aWNlLmhhc1ZhbGlkQWNjZXNzVG9rZW4oKSAmJiB0aGlzLm9hdXRoU2VydmljZS5oYXNWYWxpZElkVG9rZW4oKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaGFzVmFsaWRPZmZsaW5lVG9rZW4oKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0F1dGhvcml6ZWQoYXV0aG9yaXplZEhhbmRsZXI/OiBBdXRob3JpemVkSGFuZGxlciB8IG51bGwpOiBib29sZWFuIHtcbiAgICBjb25zdCBoYW5kbGVyID0gYXV0aG9yaXplZEhhbmRsZXIgPz8gdGhpcy5hdXRoQ29uZmlnLmRlZmF1bHRBdXRob3JpemVkSGFuZGxlcjtcblxuICAgIHJldHVybiB0aGlzLmlzQXV0aGVudGljYXRlZCgpICYmIChoYW5kbGVyPy4odGhpcy5nZXRJZGVudGl0eUNsYWltcygpLCB0aGlzLCB0aGlzLnJvdXRlcikgPz8gdHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgaXNBdXRob3JpemVkJChhdXRob3JpemVkSGFuZGxlcj86IEF1dGhvcml6ZWRIYW5kbGVyIHwgbnVsbCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzQXV0aGVudGljYXRlZCQucGlwZShtYXAoKCkgPT4gdGhpcy5pc0F1dGhvcml6ZWQoYXV0aG9yaXplZEhhbmRsZXIpKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJvdXRlVG9SZXF1ZXN0ZWRVcmwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLm9hdXRoU2VydmljZS5zdGF0ZSB8fCAhdGhpcy5vYXV0aFNlcnZpY2UuaGFzVmFsaWRBY2Nlc3NUb2tlbigpKSByZXR1cm47XG4gICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChkZWNvZGVVUklDb21wb25lbnQodGhpcy5vYXV0aFNlcnZpY2Uuc3RhdGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzVmFsaWRPZmZsaW5lVG9rZW4oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNzdWVkQXQgPSB0aGlzLmdldElkZW50aXR5Q2xhaW1zKCk/LmlhdCA/PyAwO1xuXG4gICAgcmV0dXJuIERhdGUubm93KCkgLSBpc3N1ZWRBdCAqIDEwMDAgPD0gdGhpcy5hdXRoQ29uZmlnLm1heE9mZmxpbmVUaW1lICogMTAwMDtcbiAgfVxuXG4gIHByaXZhdGUgcmVkaXJlY3RUb0xvZ2luKHVyaTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy53aW5kb3dSZWYubG9jYXRpb24uYXNzaWduKHVyaSk7XG4gICAgdGhpcy5pc1JlZGlyZWN0aW5nJCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJ5UmVmcmVzaFRva2VuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5hdXRoQ29uZmlnLnJlZnJlc2hUb2tlbk9uSW5pdCB8fCAhdGhpcy5nZXRSZWZyZXNoVG9rZW4oKSkgcmV0dXJuO1xuICAgIGF3YWl0IHRoaXMub2F1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0cnlMb2FkVXNlclByb2ZpbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmF1dGhDb25maWcubG9hZFVzZXJQcm9maWxlIHx8ICF0aGlzLm9hdXRoU2VydmljZS5oYXNWYWxpZEFjY2Vzc1Rva2VuKCkpIHJldHVybjtcbiAgICBhd2FpdCB0aGlzLmxvYWRVc2VyUHJvZmlsZSgpLmNhdGNoKCgpID0+IG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3NlcnRBdWRpZW5jZShjbGllbnRJZD86IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICBjb25zdCB0b2tlbkNsaWVudElkID0gdGhpcy5nZXRJZGVudGl0eUNsYWltcygpPy5hdWQ7XG4gICAgaWYgKCFjbGllbnRJZCB8fCAhdG9rZW5DbGllbnRJZCB8fCBjbGllbnRJZCA9PT0gdG9rZW5DbGllbnRJZCkgcmV0dXJuO1xuICAgIHRoaXMuc2lnbk91dCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2lsZW50UmVmcmVzaChlbmFibGVkOiBib29sZWFuKSB7XG4gICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgIHRoaXMub2F1dGhTZXJ2aWNlLnNldHVwQXV0b21hdGljU2lsZW50UmVmcmVzaCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9hdXRoU2VydmljZS5zdG9wQXV0b21hdGljUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hdXRoL3NyYy9saWIvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBZSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBYyxlQUFlLEVBQUUsWUFBWSxFQUFpQixNQUFNLHFCQUFxQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUNMLGVBQWUsRUFFZixVQUFVLEVBQ1YsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sU0FBUyxFQUNULEdBQUcsRUFDSCxLQUFLLEVBQ0wsRUFBRSxFQUNGLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxFQUNILE9BQU8sR0FDUixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFxQixNQUFNLFVBQVUsQ0FBQzs7QUFHaEUsTUFBTSxPQUFPLFdBQVc7SUE0Q3RCO1FBM0NpQixlQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUNoQyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5QyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwQyxXQUFNLEdB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QzlELENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZTtRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUFFLE9BQU87UUFDcEMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTyxjQUFjLENBQUMsUUFBd0I7UUFDN0MsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsR0FBRyxDQUFDO1FBQ3BELElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxhQUFhLElBQUksUUFBUSxLQUFLLGFBQWE7WUFBRSxPQUFPO1FBQ3RFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE9BQWdCO1FBQzFDLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFlBQVksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1NBQ2pEO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDMUM7SUFDSCxDQUFDOytHQWhNVSxXQUFXO21IQUFYLFdBQVcsY0FERSxNQUFNOzs0RkFDbkIsV0FBVztrQkFEdkIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgQXV0aENvbmZpZywgT0F1dGhFcnJvckV2ZW50LCBPQXV0aFNlcnZpY2UsIFRva2VuUmVzcG9uc2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcbmltcG9ydCB7IGRlZXBtZXJnZSB9IGZyb20gJ2RlZXBtZXJnZS10cyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIE9ic2VydmFibGUsXG4gIGNhdGNoRXJyb3IsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIGZyb21FdmVudCxcbiAgbWFwLFxuICBtZXJnZSxcbiAgb2YsXG4gIHNoYXJlLFxuICBzaGFyZVJlcGxheSxcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcCxcbiAgdGltZW91dCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpbmplY3RBdXRoQ29uZmlnIH0gZnJvbSAnLi9hdXRoLmNvbmZpZyc7XG5pbXBvcnQgeyBzZXRIdHRwQXV0aEhlYWRlciB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBBdXRoUGx1Z2luTWFuYWdlciwgQXV0aG9yaXplZEhhbmRsZXIgfSBmcm9tICcuL21vZGVscyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhDb25maWcgPSBpbmplY3RBdXRoQ29uZmlnKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aFBsdWdpbk1hbmFnZXIgPSBpbmplY3QoQXV0aFBsdWdpbk1hbmFnZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9hdXRoU2VydmljZSA9IGluamVjdChPQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvd1JlZiA9IGluamVjdChXaW5kb3dSZWYpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNJbml0aWFsaXplZCQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNSZWRpcmVjdGluZyQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25BY2Nlc3NUb2tlblVwZGF0ZSQgPSBmcm9tRXZlbnQ8U3RvcmFnZUV2ZW50Pih0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3csICdzdG9yYWdlJykucGlwZShcbiAgICBmaWx0ZXIoKHsga2V5IH0pID0+IGtleSA9PT0gJ2FjY2Vzc190b2tlbicgfHwga2V5ID09PSBudWxsKSxcbiAgICBzdGFydFdpdGgobnVsbCksXG4gICAgc2hhcmUoKSxcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzaWxlbnRSZWZyZXNoSGFuZGxlciQgPSB0aGlzLmlzSW5pdGlhbGl6ZWQkJC5waXBlKFxuICAgIGZpbHRlcihCb29sZWFuKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy53aW5kb3dSZWYuaXNPbmxpbmUkKSxcbiAgICB0YXAoKGlzT25saW5lKSA9PiB0aGlzLnVwZGF0ZVNpbGVudFJlZnJlc2goaXNPbmxpbmUpKSxcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvbkF1dGhTdGF0ZUNoYW5nZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm9hdXRoU2VydmljZS5ldmVudHMucGlwZShzdGFydFdpdGgobnVsbCkpLCB0aGlzLndpbmRvd1JlZi5pc09ubGluZSQsIHRoaXMub25BY2Nlc3NUb2tlblVwZGF0ZSRdKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNJbml0aWFsaXplZCQgPSB0aGlzLmlzSW5pdGlhbGl6ZWQkJC5waXBlKGZpbHRlcihCb29sZWFuKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gIHB1YmxpYyByZWFkb25seSBpc1JlZGlyZWN0aW5nJCA9IHRoaXMuaXNSZWRpcmVjdGluZyQkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSk7XG4gIHB1YmxpYyByZWFkb25seSBpc0xvYWRpbmckID0gbWVyZ2UodGhpcy5pc1JlZGlyZWN0aW5nJCwgdGhpcy5hdXRoUGx1Z2luTWFuYWdlci5wbHVnaW5zTG9hZGluZyQpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gIHB1YmxpYyByZWFkb25seSBpc0F1dGhlbnRpY2F0ZWQkID0gdGhpcy5pc0luaXRpYWxpemVkJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmF1dGhQbHVnaW5NYW5hZ2VyLnBsdWdpbnNSZWFkeSQpLFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLm9uQXV0aFN0YXRlQ2hhbmdlJCksXG4gICAgbWFwKCgpID0+IHRoaXMuaXNBdXRoZW50aWNhdGVkKCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGlkZW50aXR5Q2xhaW1zJCA9IHRoaXMuaXNBdXRoZW50aWNhdGVkJC5waXBlKFxuICAgIG1hcCgoKSA9PiB0aGlzLmdldElkZW50aXR5Q2xhaW1zKCkpLFxuICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBlcnJvcnMkID0gdGhpcy5vYXV0aFNlcnZpY2UuZXZlbnRzLnBpcGUoXG4gICAgZmlsdGVyKChldmVudCk6IGV2ZW50IGlzIE9BdXRoRXJyb3JFdmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE9BdXRoRXJyb3JFdmVudCksXG4gICAgc2hhcmUoKSxcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IG9uVG9rZW5SZWNlaXZlZCQgPSB0aGlzLm9hdXRoU2VydmljZS5ldmVudHMucGlwZShcbiAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudC50eXBlID09PSAndG9rZW5fcmVjZWl2ZWQnKSxcbiAgICBzaGFyZSgpLFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucnVuUGx1Z2lucygpO1xuICAgIHRoaXMuc2lsZW50UmVmcmVzaEhhbmRsZXIkLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRpYWxpemUoY29uZmlnOiBBdXRoQ29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5hc3NlcnRBdWRpZW5jZShjb25maWcuY2xpZW50SWQpO1xuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmNvbmZpZ3VyZSh7IC4uLmNvbmZpZywgb3BlblVyaTogdGhpcy5yZWRpcmVjdFRvTG9naW4uYmluZCh0aGlzKSB9KTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vYXV0aFNlcnZpY2UubG9hZERpc2NvdmVyeURvY3VtZW50KHRoaXMuYXV0aENvbmZpZy5kaXNjb3ZlcnlVcmwpO1xuICAgICAgYXdhaXQgdGhpcy5vYXV0aFNlcnZpY2UudHJ5TG9naW4oKTtcbiAgICAgIGlmICh0aGlzLmF1dGhDb25maWcucmVmcmVzaFRva2VuT25Jbml0KSB7XG4gICAgICAgIGF3YWl0IHRoaXMudHJ5UmVmcmVzaFRva2VuKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgfHwgZXJyb3IgaW5zdGFuY2VvZiBPQXV0aEVycm9yRXZlbnQpKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgaWYgKGVycm9yLnR5cGUgPT09ICd0b2tlbl9yZWZyZXNoX2Vycm9yJyB8fCAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSAmJiAoZXJyb3Iuc3RhdHVzID09PSA0MDEgfHwgZXJyb3Iuc3RhdHVzID09PSA0MDApKSkge1xuICAgICAgICB0aGlzLnNpZ25PdXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuc2lnbkluKHRoaXMud2luZG93UmVmLmxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5pc0luaXRpYWxpemVkJCQubmV4dCh0cnVlKTtcbiAgICBpZiAodGhpcy5hdXRoQ29uZmlnLnJlcXVpcmVTaWduSW4gJiYgIXRoaXMuaXNBdXRoZW50aWNhdGVkKCkpIHtcbiAgICAgIHRoaXMuc2lnbkluKHRoaXMud2luZG93UmVmLmxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy50cnlMb2FkVXNlclByb2ZpbGUoKTtcbiAgICBhd2FpdCB0aGlzLnJvdXRlVG9SZXF1ZXN0ZWRVcmwoKTtcbiAgfVxuXG4gIHB1YmxpYyBydW5QbHVnaW5zKCk6IHZvaWQge1xuICAgIHRoaXMuYXV0aFBsdWdpbk1hbmFnZXIucnVuUGx1Z2lucyh0aGlzKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJc3N1ZXIoKTogVVJMIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgIHJldHVybiBuZXcgVVJMKHRoaXMub2F1dGhTZXJ2aWNlLmlzc3VlciEpO1xuICB9XG5cbiAgcHVibGljIHNpZ25Jbih1cmw/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm9hdXRoU2VydmljZS5pbml0TG9naW5GbG93KHVybCk7XG4gIH1cblxuICBwdWJsaWMgc2lnbk91dChub1JlZGlyZWN0PzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmxvZ091dChub1JlZGlyZWN0IHx8ICF0aGlzLmdldEFjY2Vzc1Rva2VuKCkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlZnJlc2hUb2tlbnMoKTogUHJvbWlzZTxUb2tlblJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMub2F1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbigpO1xuICB9XG5cbiAgcHVibGljIGdldEFjY2Vzc1Rva2VuKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm9hdXRoU2VydmljZS5nZXRBY2Nlc3NUb2tlbigpID8/IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVmcmVzaFRva2VuKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm9hdXRoU2VydmljZS5nZXRSZWZyZXNoVG9rZW4oKSA/PyBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldElkVG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMub2F1dGhTZXJ2aWNlLmdldElkVG9rZW4oKSA/PyBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldElkZW50aXR5Q2xhaW1zKCk6IE9keEF1dGguSWRlbnRpeUNsYWltcyB8IG51bGwge1xuICAgIGlmICghdGhpcy5nZXRJZFRva2VuKCkpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBkZWVwbWVyZ2UodGhpcy5vYXV0aFNlcnZpY2UuZ2V0SWRlbnRpdHlDbGFpbXMoKSwgdGhpcy5hdXRoUGx1Z2luTWFuYWdlci5nZXRSZXN1bHQoKSkgYXMgT2R4QXV0aC5JZGVudGl5Q2xhaW1zO1xuICB9XG5cbiAgcHVibGljIGdldFJhd0lkZW50aXR5Q2xhaW1zKCk6IE9keEF1dGguUmF3SWRlbnRpdHlDbGFpbXMgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuZ2V0SWRUb2tlbigpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5vYXV0aFNlcnZpY2UuZ2V0SWRlbnRpdHlDbGFpbXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0F1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMud2luZG93UmVmLmlzT25saW5lKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLm9hdXRoU2VydmljZS5oYXNWYWxpZEFjY2Vzc1Rva2VuKCkgJiYgdGhpcy5vYXV0aFNlcnZpY2UuaGFzVmFsaWRJZFRva2VuKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhhc1ZhbGlkT2ZmbGluZVRva2VuKCk7XG4gIH1cblxuICBwdWJsaWMgaXNBdXRob3JpemVkKGF1dGhvcml6ZWRIYW5kbGVyPzogQXV0aG9yaXplZEhhbmRsZXIgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaGFuZGxlciA9IGF1dGhvcml6ZWRIYW5kbGVyID8/IHRoaXMuYXV0aENvbmZpZy5kZWZhdWx0QXV0aG9yaXplZEhhbmRsZXI7XG5cbiAgICByZXR1cm4gdGhpcy5pc0F1dGhlbnRpY2F0ZWQoKSAmJiAoaGFuZGxlcj8uKHRoaXMuZ2V0SWRlbnRpdHlDbGFpbXMoKSwgdGhpcywgdGhpcy5yb3V0ZXIpID8/IHRydWUpO1xuICB9XG5cbiAgcHVibGljIGlzQXV0aG9yaXplZCQoYXV0aG9yaXplZEhhbmRsZXI/OiBBdXRob3JpemVkSGFuZGxlciB8IG51bGwpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0F1dGhlbnRpY2F0ZWQkLnBpcGUobWFwKCgpID0+IHRoaXMuaXNBdXRob3JpemVkKGF1dGhvcml6ZWRIYW5kbGVyKSkpO1xuICB9XG5cbiAgcHVibGljIHByZXBhcmVBdXRoUmVxdWVzdCQ8UiBleHRlbmRzIEh0dHBSZXF1ZXN0PFQ+IHwgUmVxdWVzdCwgVD4ocmVxOiBSLCByZXF1aXJlU2lnbkluID0gZmFsc2UpOiBPYnNlcnZhYmxlPFI+IHtcbiAgICByZXR1cm4gdGhpcy53YWl0Rm9yQWNjZXNzVG9rZW4kKHJlcXVpcmVTaWduSW4pLnBpcGUobWFwKCh0b2tlbikgPT4gc2V0SHR0cEF1dGhIZWFkZXIocmVxLCB0b2tlbikpKTtcbiAgfVxuXG4gIHB1YmxpYyB3YWl0Rm9yQWNjZXNzVG9rZW4kKHJlcXVpcmVTaWduSW46IGJvb2xlYW4pOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiQgPSBvZih0aGlzLmdldEFjY2Vzc1Rva2VuKCkpLnBpcGUoZmlsdGVyKCh0b2tlbikgPT4gISF0b2tlbiAmJiB0aGlzLmlzQXV0aGVudGljYXRlZCgpKSk7XG4gICAgY29uc3Qgd2FpdEZvckFjY2Vzc1Rva2VuJCA9IHRoaXMub25Ub2tlblJlY2VpdmVkJC5waXBlKFxuICAgICAgdGltZW91dCh0aGlzLmF1dGhDb25maWcud2FpdEZvclRva2VuSW5NcyA/PyAwKSxcbiAgICAgIGNhdGNoRXJyb3IoYXN5bmMgKCkgPT4gdGhpcy50cnlSZWZyZXNoVG9rZW4oKS5jYXRjaCgoKSA9PiBudWxsKSksXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmlzSW5pdGlhbGl6ZWQkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gbWVyZ2UoYWNjZXNzVG9rZW4kLCB3YWl0Rm9yQWNjZXNzVG9rZW4kKSksXG4gICAgICB0YWtlKDEpLFxuICAgICAgbWFwKCgpID0+IHRoaXMuZ2V0QWNjZXNzVG9rZW4oKSksXG4gICAgICB0YXAoKHRva2VuKSA9PiAhdG9rZW4gJiYgcmVxdWlyZVNpZ25JbiAmJiB0aGlzLnNpZ25Jbih0aGlzLndpbmRvd1JlZi5sb2NhdGlvbi5wYXRobmFtZSkpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJvdXRlVG9SZXF1ZXN0ZWRVcmwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLm9hdXRoU2VydmljZS5zdGF0ZSB8fCAhdGhpcy5vYXV0aFNlcnZpY2UuaGFzVmFsaWRBY2Nlc3NUb2tlbigpKSByZXR1cm47XG4gICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChkZWNvZGVVUklDb21wb25lbnQodGhpcy5vYXV0aFNlcnZpY2Uuc3RhdGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzVmFsaWRPZmZsaW5lVG9rZW4oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNzdWVkQXQgPSB0aGlzLmdldElkZW50aXR5Q2xhaW1zKCk/LmlhdCA/PyAwO1xuXG4gICAgcmV0dXJuIERhdGUubm93KCkgLSBpc3N1ZWRBdCAqIDEwMDAgPD0gdGhpcy5hdXRoQ29uZmlnLm1heE9mZmxpbmVUaW1lICogMTAwMDtcbiAgfVxuXG4gIHByaXZhdGUgcmVkaXJlY3RUb0xvZ2luKHVyaTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy53aW5kb3dSZWYubG9jYXRpb24uYXNzaWduKHVyaSk7XG4gICAgdGhpcy5pc1JlZGlyZWN0aW5nJCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJ5TG9hZFVzZXJQcm9maWxlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5hdXRoQ29uZmlnLmxvYWRVc2VyUHJvZmlsZSB8fCAhdGhpcy5pc0F1dGhlbnRpY2F0ZWQoKSkgcmV0dXJuO1xuICAgIGF3YWl0IHRoaXMub2F1dGhTZXJ2aWNlLmxvYWRVc2VyUHJvZmlsZSgpLmNhdGNoKCgpID0+IG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0cnlSZWZyZXNoVG9rZW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmdldFJlZnJlc2hUb2tlbigpKSByZXR1cm47XG4gICAgYXdhaXQgdGhpcy5vYXV0aFNlcnZpY2UucmVmcmVzaFRva2VuKCk7XG4gIH1cblxuICBwcml2YXRlIGFzc2VydEF1ZGllbmNlKGNsaWVudElkPzogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIGNvbnN0IHRva2VuQ2xpZW50SWQgPSB0aGlzLmdldElkZW50aXR5Q2xhaW1zKCk/LmF1ZDtcbiAgICBpZiAoIWNsaWVudElkIHx8ICF0b2tlbkNsaWVudElkIHx8IGNsaWVudElkID09PSB0b2tlbkNsaWVudElkKSByZXR1cm47XG4gICAgdGhpcy5zaWduT3V0KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTaWxlbnRSZWZyZXNoKGVuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICBpZiAoZW5hYmxlZCkge1xuICAgICAgdGhpcy5vYXV0aFNlcnZpY2Uuc2V0dXBBdXRvbWF0aWNTaWxlbnRSZWZyZXNoKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub2F1dGhTZXJ2aWNlLnN0b3BBdXRvbWF0aWNSZWZyZXNoKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC50eXBpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hdXRoL3NyYy9saWIvYXV0aC50eXBpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJkZWNsYXJlIGdsb2JhbCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbmFtZXNwYWNlXG4gIG5hbWVzcGFjZSBPZHhBdXRoIHtcbiAgICB0eXBlIFJhd0lkZW50aXR5Q2xhaW1zID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgICBpbnRlcmZhY2UgQXV0aFBsdWdpblJlc3VsdCB7XG4gICAgICBwcmVmZXJyZWRMYW5ndWFnZT86IHN0cmluZztcbiAgICB9XG5cbiAgICBpbnRlcmZhY2UgSWRlbnRpeUNsYWltcyBleHRlbmRzIEF1dGhQbHVnaW5SZXN1bHQge1xuICAgICAgc3ViOiBzdHJpbmc7XG4gICAgICBva3RhaWQ6IHN0cmluZztcbiAgICAgIGlhdDogbnVtYmVyO1xuICAgICAgYXVkOiBzdHJpbmc7XG5cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIGZpcnN0bmFtZTogc3RyaW5nO1xuICAgICAgbGFzdG5hbWU6IHN0cmluZztcbiAgICAgIGRpc3BsYXluYW1lOiBzdHJpbmc7XG4gICAgICBwcmVmZXJyZWRfdXNlcm5hbWU6IHN0cmluZztcbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICBpbml0aWFsczogc3RyaW5nO1xuXG4gICAgICBsb2NhbGU/OiBzdHJpbmc7XG4gICAgICB6b25laW5mbz86IHN0cmluZztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHt9O1xuIl19
|
|
@@ -15,7 +15,7 @@ export let AuthActionsComponent = class AuthActionsComponent {
|
|
|
15
15
|
this.claims = null;
|
|
16
16
|
}
|
|
17
17
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AuthActionsComponent, isStandalone: true, selector: "odx-auth-actions", inputs: { claims: "claims" }, ngImport: i0, template: "<odx-list>\n <a data-testid=\"odx-auth-user-profile-link\" odxListItem [href]=\"url\" rel=\"noopener\" target=\"_blank\" *ngIf=\"claims?.userProfileUrl as url\">\n <odx-icon name=\"user-administration\" iconSet=\"core\" odxListPrefix></odx-icon>\n {{ 'userProfileLink' | odxTranslate | async }}\n </a>\n</odx-list>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ListModule }, { kind: "component", type: i2.ListComponent, selector: "odx-list" }, { kind: "component", type: i2.ListItemComponent, selector: "odx-list-item, [odxListItem]", inputs: ["danger", "selected"] }, { kind: "component", type: i3.IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet"] }, { kind: "pipe", type: TranslatePipe, name: "odxTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
18
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AuthActionsComponent, isStandalone: true, selector: "odx-auth-actions", inputs: { claims: "claims" }, ngImport: i0, template: "<odx-list>\n <a data-testid=\"odx-auth-user-profile-link\" odxListItem [href]=\"url\" rel=\"noopener\" target=\"_blank\" *ngIf=\"claims?.userProfileUrl as url\">\n <odx-icon name=\"user-administration\" iconSet=\"core\" odxListPrefix></odx-icon>\n {{ 'userProfileLink' | odxTranslate | async }}\n </a>\n</odx-list>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ListModule }, { kind: "component", type: i2.ListComponent, selector: "odx-list" }, { kind: "component", type: i2.ListItemComponent, selector: "odx-list-item, [odxListItem]", inputs: ["danger", "muted", "selected"] }, { kind: "component", type: i3.IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "pipe", type: TranslatePipe, name: "odxTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
19
19
|
};
|
|
20
20
|
AuthActionsComponent = __decorate([
|
|
21
21
|
CSSComponent('auth-actions')
|
|
@@ -26,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
26
26
|
}], propDecorators: { claims: [{
|
|
27
27
|
type: Input
|
|
28
28
|
}] } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1hY3Rpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvYXV0aC1hY3Rpb25zL2F1dGgtYWN0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9jb21wb25lbnRzL2F1dGgtYWN0aW9ucy9hdXRoLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQVc1QyxXQUFNLG9CQUFvQixHQUExQixNQUFNLG9CQUFvQjtJQUExQjtRQUNXLFlBQU8sR0FBRyxhQUFhLEVBQUUsQ0FBQztRQUduQyxXQUFNLEdBQWlDLElBQUksQ0FBQztLQUNwRDsrR0FMWSxvQkFBb0I7bUdBQXBCLG9CQUFvQiwwR0NoQmpDLHNVQU1BLDJDREtZLFVBQVUsdUxBQUUsVUFBVSx1V0FBRSxhQUFhOztBQUtwQyxvQkFBb0I7SUFUaEMsWUFBWSxDQUFDLGNBQWMsQ0FBQztHQVNoQixvQkFBb0IsQ0FLaEM7NEZBTFksb0JBQW9CO2tCQVJoQyxTQUFTO2lDQUNJLElBQUksWUFDTixrQkFBa0IsV0FDbkIsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxtQkFFL0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs4QkFNOUIsTUFBTTtzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb3JlTW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IExpc3RNb2R1bGUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9saXN0JztcbmltcG9ydCB7IENTU0NvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsL3RyYW5zbGF0ZSc7XG5pbXBvcnQgeyBpbmplY3RFbGVtZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcblxuQENTU0NvbXBvbmVudCgnYXV0aC1hY3Rpb25zJylcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ29keC1hdXRoLWFjdGlvbnMnLFxuICBpbXBvcnRzOiBbQ29yZU1vZHVsZSwgTGlzdE1vZHVsZSwgVHJhbnNsYXRlUGlwZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRoLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0aEFjdGlvbnNDb21wb25lbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdEVsZW1lbnQoKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY2xhaW1zOiBPZHhBdXRoLklkZW50aXlDbGFpbXMgfCBudWxsID0gbnVsbDtcbn1cbiIsIjxvZHgtbGlzdD5cbiAgPGEgZGF0YS10ZXN0aWQ9XCJvZHgtYXV0aC11c2VyLXByb2ZpbGUtbGlua1wiIG9keExpc3RJdGVtIFtocmVmXT1cInVybFwiIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgKm5nSWY9XCJjbGFpbXM/LnVzZXJQcm9maWxlVXJsIGFzIHVybFwiPlxuICAgIDxvZHgtaWNvbiBuYW1lPVwidXNlci1hZG1pbmlzdHJhdGlvblwiIGljb25TZXQ9XCJjb3JlXCIgb2R4TGlzdFByZWZpeD48L29keC1pY29uPlxuICAgIHt7ICd1c2VyUHJvZmlsZUxpbmsnIHwgb2R4VHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgPC9hPlxuPC9vZHgtbGlzdD5cbiJdfQ==
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { transition, trigger, useAnimation } from '@angular/animations';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { ChangeDetectionStrategy, Component,
|
|
3
|
+
import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';
|
|
4
4
|
import { fadeOut } from '@odx/angular/animations';
|
|
5
5
|
import { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';
|
|
6
6
|
import { ButtonComponent } from '@odx/angular/components/button';
|
|
7
7
|
import { CircularProgressComponent } from '@odx/angular/components/circular-progress';
|
|
8
8
|
import { IconComponent } from '@odx/angular/components/icon';
|
|
9
9
|
import { LogoDirective } from '@odx/angular/components/logo';
|
|
10
|
-
import {
|
|
10
|
+
import { map } from 'rxjs';
|
|
11
11
|
import { injectAuthConfig } from '../../auth.config';
|
|
12
12
|
import { AuthService } from '../../auth.service';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
@@ -15,7 +15,7 @@ import * as i1 from "@angular/common";
|
|
|
15
15
|
export class AuthLoadingScreenComponent {
|
|
16
16
|
constructor() {
|
|
17
17
|
this.authConfig = injectAuthConfig();
|
|
18
|
-
this.icon$ = inject(AuthService).isRedirecting$.pipe(
|
|
18
|
+
this.icon$ = inject(AuthService).isRedirecting$.pipe(map((isRedirecting) => (isRedirecting ? 'link-external' : 'user')));
|
|
19
19
|
}
|
|
20
20
|
static { this.instance = null; }
|
|
21
21
|
static initialize(authService, dynamicViewService) {
|
|
@@ -30,12 +30,12 @@ export class AuthLoadingScreenComponent {
|
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthLoadingScreenComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AuthLoadingScreenComponent, isStandalone: true, selector: "div.odx-auth-loading-screen", host: { properties: { "@hostAnimation": "true" } }, ngImport: i0, template: "<div class=\"odx-auth-loading-screen__content\" odxLayout=\"grid 12 horizontal-center vertical-center gap-small\">\n <odx-logo size=\"large\"
|
|
33
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AuthLoadingScreenComponent, isStandalone: true, selector: "div.odx-auth-loading-screen", host: { properties: { "@hostAnimation": "true" } }, ngImport: i0, template: "<div class=\"odx-auth-loading-screen__content\" odxLayout=\"grid 12 horizontal-center vertical-center gap-small\">\n <odx-logo size=\"large\" />\n <odx-circular-progress class=\"odx-auth-loading-screen__spinner\" value=\"-1\" size=\"medium\" stroke=\"3\">\n <odx-icon [name]=\"icon$ | async\" iconSet=\"core\" />\n </odx-circular-progress>\n <p class=\"odx-auth-loading-screen__message\" *ngIf=\"authConfig.loadingScreenMessage as content\">\n <ng-template [odxDynamicView]=\"content\" />\n </p>\n</div>\n", styles: ["@keyframes odx-auth-loading-screen-animation{0%{opacity:0;transform:translate(-50%,-50%) scale(.9)}to{opacity:1;transform:translate(-50%,-50%)}}.odx-auth-loading-screen{--odx-c-highlight: var(--odx-c-primary);background-color:var(--odx-c-background-content);inset:0;position:fixed;z-index:var(--odx-v-layer-6)}.odx-auth-loading-screen__content{animation:odx-auth-loading-screen-animation .75s ease;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.odx-auth-loading-screen__message{text-align:center}.odx-auth-loading-screen__spinner{position:relative}.odx-auth-loading-screen__spinner .odx-icon{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }, { kind: "component", type: CircularProgressComponent, selector: "odx-circular-progress", inputs: ["stroke", "size", "value"] }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }], animations: [trigger('hostAnimation', [transition(':leave', useAnimation(fadeOut()))])], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
34
34
|
}
|
|
35
35
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthLoadingScreenComponent, decorators: [{
|
|
36
36
|
type: Component,
|
|
37
37
|
args: [{ standalone: true, selector: 'div.odx-auth-loading-screen', imports: [CommonModule, ButtonComponent, IconComponent, LogoDirective, CircularProgressComponent, DynamicViewDirective], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
38
38
|
'[@hostAnimation]': 'true',
|
|
39
|
-
}, animations: [trigger('hostAnimation', [transition(':leave', useAnimation(fadeOut()))])], template: "<div class=\"odx-auth-loading-screen__content\" odxLayout=\"grid 12 horizontal-center vertical-center gap-small\">\n <odx-logo size=\"large\"
|
|
39
|
+
}, animations: [trigger('hostAnimation', [transition(':leave', useAnimation(fadeOut()))])], template: "<div class=\"odx-auth-loading-screen__content\" odxLayout=\"grid 12 horizontal-center vertical-center gap-small\">\n <odx-logo size=\"large\" />\n <odx-circular-progress class=\"odx-auth-loading-screen__spinner\" value=\"-1\" size=\"medium\" stroke=\"3\">\n <odx-icon [name]=\"icon$ | async\" iconSet=\"core\" />\n </odx-circular-progress>\n <p class=\"odx-auth-loading-screen__message\" *ngIf=\"authConfig.loadingScreenMessage as content\">\n <ng-template [odxDynamicView]=\"content\" />\n </p>\n</div>\n", styles: ["@keyframes odx-auth-loading-screen-animation{0%{opacity:0;transform:translate(-50%,-50%) scale(.9)}to{opacity:1;transform:translate(-50%,-50%)}}.odx-auth-loading-screen{--odx-c-highlight: var(--odx-c-primary);background-color:var(--odx-c-background-content);inset:0;position:fixed;z-index:var(--odx-v-layer-6)}.odx-auth-loading-screen__content{animation:odx-auth-loading-screen-animation .75s ease;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.odx-auth-loading-screen__message{text-align:center}.odx-auth-loading-screen__spinner{position:relative}.odx-auth-loading-screen__spinner .odx-icon{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}\n"] }]
|
|
40
40
|
}] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1sb2FkaW5nLXNjcmVlbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9jb21wb25lbnRzL2F1dGgtbG9hZGluZy1zY3JlZW4vYXV0aC1sb2FkaW5nLXNjcmVlbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9jb21wb25lbnRzL2F1dGgtbG9hZGluZy1zY3JlZW4vYXV0aC1sb2FkaW5nLXNjcmVlbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxvQkFBb0IsRUFBc0MsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBZ0JqRCxNQUFNLE9BQU8sMEJBQTBCO0lBZHZDO1FBaUJxQixlQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUNoQyxVQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FZeEk7YUFmZ0IsYUFBUSxHQUE2RCxJQUFJLEFBQWpFLENBQWtFO0lBS2xGLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBd0IsRUFBRSxrQkFBc0M7UUFDdkYsV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUM3QyxJQUFJLFNBQVMsRUFBRTtnQkFDYiwwQkFBMEIsQ0FBQyxRQUFRLEtBQUssa0JBQWtCLENBQUMsVUFBVSxDQUFDLDBCQUEwQixDQUFDLENBQUM7YUFDbkc7aUJBQU07Z0JBQ0wsMEJBQTBCLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUMvQywwQkFBMEIsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2FBQzVDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQWZVLDBCQUEwQjttR0FBMUIsMEJBQTBCLDJJQzNCdkMsc2dCQVNBLGl1QkRRWSxZQUFZLHdMQUFtQixhQUFhLGtIQUFFLGFBQWEsa0ZBQUUseUJBQXlCLHVHQUFFLG9CQUFvQix5SUFRMUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7NEZBRTVFLDBCQUEwQjtrQkFkdEMsU0FBUztpQ0FDSSxJQUFJLFlBRU4sNkJBQTZCLFdBQzlCLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixFQUFFLG9CQUFvQixDQUFDLG1CQUd0Ryx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLGtCQUFrQixFQUFFLE1BQU07cUJBQzNCLGNBQ1csQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRyYW5zaXRpb24sIHRyaWdnZXIsIHVzZUFuaW1hdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZhZGVPdXQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBEeW5hbWljVmlld0RpcmVjdGl2ZSwgRHluYW1pY1ZpZXdSZWYsIER5bmFtaWNWaWV3U2VydmljZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvZHluYW1pYy12aWV3JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBDaXJjdWxhclByb2dyZXNzQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvY2lyY3VsYXItcHJvZ3Jlc3MnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgTG9nb0RpcmVjdGl2ZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2xvZ28nO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpbmplY3RBdXRoQ29uZmlnIH0gZnJvbSAnLi4vLi4vYXV0aC5jb25maWcnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hdXRoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdkaXYub2R4LWF1dGgtbG9hZGluZy1zY3JlZW4nLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCdXR0b25Db21wb25lbnQsIEljb25Db21wb25lbnQsIExvZ29EaXJlY3RpdmUsIENpcmN1bGFyUHJvZ3Jlc3NDb21wb25lbnQsIER5bmFtaWNWaWV3RGlyZWN0aXZlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dGgtbG9hZGluZy1zY3JlZW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRoLWxvYWRpbmctc2NyZWVuLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tAaG9zdEFuaW1hdGlvbl0nOiAndHJ1ZScsXG4gIH0sXG4gIGFuaW1hdGlvbnM6IFt0cmlnZ2VyKCdob3N0QW5pbWF0aW9uJywgW3RyYW5zaXRpb24oJzpsZWF2ZScsIHVzZUFuaW1hdGlvbihmYWRlT3V0KCkpKV0pXSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0aExvYWRpbmdTY3JlZW5Db21wb25lbnQge1xuICBwcml2YXRlIHN0YXRpYyBpbnN0YW5jZTogRHluYW1pY1ZpZXdSZWY8dHlwZW9mIEF1dGhMb2FkaW5nU2NyZWVuQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBhdXRoQ29uZmlnID0gaW5qZWN0QXV0aENvbmZpZygpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWNvbiQgPSBpbmplY3QoQXV0aFNlcnZpY2UpLmlzUmVkaXJlY3RpbmckLnBpcGUobWFwKChpc1JlZGlyZWN0aW5nKSA9PiAoaXNSZWRpcmVjdGluZyA/ICdsaW5rLWV4dGVybmFsJyA6ICd1c2VyJykpKTtcblxuICBwdWJsaWMgc3RhdGljIGluaXRpYWxpemUoYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBkeW5hbWljVmlld1NlcnZpY2U6IER5bmFtaWNWaWV3U2VydmljZSk6IHZvaWQge1xuICAgIGF1dGhTZXJ2aWNlLmlzTG9hZGluZyQuc3Vic2NyaWJlKChpc0xvYWRpbmcpID0+IHtcbiAgICAgIGlmIChpc0xvYWRpbmcpIHtcbiAgICAgICAgQXV0aExvYWRpbmdTY3JlZW5Db21wb25lbnQuaW5zdGFuY2UgPz89IGR5bmFtaWNWaWV3U2VydmljZS5jcmVhdGVWaWV3KEF1dGhMb2FkaW5nU2NyZWVuQ29tcG9uZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIEF1dGhMb2FkaW5nU2NyZWVuQ29tcG9uZW50Lmluc3RhbmNlPy5kZXN0cm95KCk7XG4gICAgICAgIEF1dGhMb2FkaW5nU2NyZWVuQ29tcG9uZW50Lmluc3RhbmNlID0gbnVsbDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm9keC1hdXRoLWxvYWRpbmctc2NyZWVuX19jb250ZW50XCIgb2R4TGF5b3V0PVwiZ3JpZCAxMiBob3Jpem9udGFsLWNlbnRlciB2ZXJ0aWNhbC1jZW50ZXIgZ2FwLXNtYWxsXCI+XG4gIDxvZHgtbG9nbyBzaXplPVwibGFyZ2VcIiAvPlxuICA8b2R4LWNpcmN1bGFyLXByb2dyZXNzIGNsYXNzPVwib2R4LWF1dGgtbG9hZGluZy1zY3JlZW5fX3NwaW5uZXJcIiB2YWx1ZT1cIi0xXCIgc2l6ZT1cIm1lZGl1bVwiIHN0cm9rZT1cIjNcIj5cbiAgICA8b2R4LWljb24gW25hbWVdPVwiaWNvbiQgfCBhc3luY1wiIGljb25TZXQ9XCJjb3JlXCIgLz5cbiAgPC9vZHgtY2lyY3VsYXItcHJvZ3Jlc3M+XG4gIDxwIGNsYXNzPVwib2R4LWF1dGgtbG9hZGluZy1zY3JlZW5fX21lc3NhZ2VcIiAqbmdJZj1cImF1dGhDb25maWcubG9hZGluZ1NjcmVlbk1lc3NhZ2UgYXMgY29udGVudFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbb2R4RHluYW1pY1ZpZXddPVwiY29udGVudFwiIC8+XG4gIDwvcD5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { buildUrl } from '@odx/angular/utils';
|
|
2
|
+
import { ODX_AUTH_HOSTS } from '../auth.config';
|
|
3
|
+
export function createAuthHostUrl(environment, ...segments) {
|
|
4
|
+
return buildUrl(ODX_AUTH_HOSTS[environment], ...segments);
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWF1dGgtaG9zdC11cmwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9oZWxwZXJzL2NyZWF0ZS1hdXRoLWhvc3QtdXJsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHaEQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFdBQTRCLEVBQUUsR0FBRyxRQUFrQjtJQUNuRixPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQztBQUM1RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYnVpbGRVcmwgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgT0RYX0FVVEhfSE9TVFMgfSBmcm9tICcuLi9hdXRoLmNvbmZpZyc7XG5pbXBvcnQgeyBBdXRoRW52aXJvbm1lbnQgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXV0aEhvc3RVcmwoZW52aXJvbm1lbnQ6IEF1dGhFbnZpcm9ubWVudCwgLi4uc2VnbWVudHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGJ1aWxkVXJsKE9EWF9BVVRIX0hPU1RTW2Vudmlyb25tZW50XSwgLi4uc2VnbWVudHMpO1xufVxuIl19
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
export * from './create-auth-host-url';
|
|
1
2
|
export * from './create-inititals';
|
|
2
3
|
export * from './handle-auth-error';
|
|
3
4
|
export * from './handle-oauth-event';
|
|
4
5
|
export * from './resolve-email';
|
|
5
6
|
export * from './resolve-username';
|
|
6
|
-
|
|
7
|
+
export * from './set-http-auth-header';
|
|
8
|
+
export * from './user-language-loader';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9oZWxwZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3JlYXRlLWF1dGgtaG9zdC11cmwnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGUtaW5pdGl0YWxzJztcbmV4cG9ydCAqIGZyb20gJy4vaGFuZGxlLWF1dGgtZXJyb3InO1xuZXhwb3J0ICogZnJvbSAnLi9oYW5kbGUtb2F1dGgtZXZlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXNvbHZlLWVtYWlsJztcbmV4cG9ydCAqIGZyb20gJy4vcmVzb2x2ZS11c2VybmFtZSc7XG5leHBvcnQgKiBmcm9tICcuL3NldC1odHRwLWF1dGgtaGVhZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1sYW5ndWFnZS1sb2FkZXInO1xuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { HttpRequest } from '@angular/common/http';
|
|
2
|
+
import { AUTH_HTTP_HEADER } from '../auth.config';
|
|
3
|
+
export function setHttpAuthHeader(req, token) {
|
|
4
|
+
if (!token)
|
|
5
|
+
return req;
|
|
6
|
+
const header = `Bearer ${token}`;
|
|
7
|
+
if (req instanceof HttpRequest) {
|
|
8
|
+
return req.clone({ headers: req.headers.set(AUTH_HTTP_HEADER, header) });
|
|
9
|
+
}
|
|
10
|
+
req.headers.set(AUTH_HTTP_HEADER, header);
|
|
11
|
+
return req;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LWh0dHAtYXV0aC1oZWFkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9oZWxwZXJzL3NldC1odHRwLWF1dGgtaGVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRCxNQUFNLFVBQVUsaUJBQWlCLENBQXdDLEdBQU0sRUFBRSxLQUFxQjtJQUNwRyxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ3ZCLE1BQU0sTUFBTSxHQUFHLFVBQVUsS0FBSyxFQUFFLENBQUM7SUFDakMsSUFBSSxHQUFHLFlBQVksV0FBVyxFQUFFO1FBQzlCLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFNLENBQUM7S0FDL0U7SUFDRCxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUUxQyxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEFVVEhfSFRUUF9IRUFERVIgfSBmcm9tICcuLi9hdXRoLmNvbmZpZyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRIdHRwQXV0aEhlYWRlcjxSIGV4dGVuZHMgSHR0cFJlcXVlc3Q8VD4gfCBSZXF1ZXN0LCBUPihyZXE6IFIsIHRva2VuPzogc3RyaW5nIHwgbnVsbCk6IFIge1xuICBpZiAoIXRva2VuKSByZXR1cm4gcmVxO1xuICBjb25zdCBoZWFkZXIgPSBgQmVhcmVyICR7dG9rZW59YDtcbiAgaWYgKHJlcSBpbnN0YW5jZW9mIEh0dHBSZXF1ZXN0KSB7XG4gICAgcmV0dXJuIHJlcS5jbG9uZSh7IGhlYWRlcnM6IHJlcS5oZWFkZXJzLnNldChBVVRIX0hUVFBfSEVBREVSLCBoZWFkZXIpIH0pIGFzIFI7XG4gIH1cbiAgcmVxLmhlYWRlcnMuc2V0KEFVVEhfSFRUUF9IRUFERVIsIGhlYWRlcik7XG5cbiAgcmV0dXJuIHJlcTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { isNonEmptyString } from '@odx/angular/utils';
|
|
3
|
+
import { map } from 'rxjs';
|
|
4
|
+
import { AuthService } from '../auth.service';
|
|
5
|
+
export function userLanguageLoader(languageSelector = (claims) => claims?.preferredLanguage) {
|
|
6
|
+
return () => {
|
|
7
|
+
return inject(AuthService).identityClaims$.pipe(map(languageSelector), map((value) => (isNonEmptyString(value) ? value : undefined)));
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1sYW5ndWFnZS1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9oZWxwZXJzL3VzZXItbGFuZ3VhZ2UtbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJOUMsTUFBTSxVQUFVLGtCQUFrQixDQUFDLG1CQUFxQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLGlCQUFpQjtJQUMzRyxPQUFPLEdBQUcsRUFBRTtRQUNWLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQzdDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUNyQixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDOUQsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExhbmd1YWdlTG9hZGVyRm4gfSBmcm9tICdAb2R4L2FuZ3VsYXIvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7IGlzTm9uRW1wdHlTdHJpbmcgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGguc2VydmljZSc7XG5cbnR5cGUgTGFuZ3VhZ2VTZWxlY3RvciA9IChjbGFpbXM/OiBPZHhBdXRoLklkZW50aXlDbGFpbXMgfCBudWxsKSA9PiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlckxhbmd1YWdlTG9hZGVyKGxhbmd1YWdlU2VsZWN0b3I6IExhbmd1YWdlU2VsZWN0b3IgPSAoY2xhaW1zKSA9PiBjbGFpbXM/LnByZWZlcnJlZExhbmd1YWdlKTogTGFuZ3VhZ2VMb2FkZXJGbiB7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgcmV0dXJuIGluamVjdChBdXRoU2VydmljZSkuaWRlbnRpdHlDbGFpbXMkLnBpcGUoXG4gICAgICBtYXAobGFuZ3VhZ2VTZWxlY3RvciksXG4gICAgICBtYXAoKHZhbHVlKSA9PiAoaXNOb25FbXB0eVN0cmluZyh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZCkpLFxuICAgICk7XG4gIH07XG59XG4iXX0=
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Environment } from '@odx/angular';
|
|
2
|
+
export const AuthEnvironment = Environment;
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1lbnZpcm9ubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9zcmMvbGliL21vZGVscy9hdXRoLWVudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHM0MsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyJztcblxuZXhwb3J0IHR5cGUgQXV0aEVudmlyb25tZW50ID0gKHR5cGVvZiBBdXRoRW52aXJvbm1lbnQpW2tleW9mIHR5cGVvZiBBdXRoRW52aXJvbm1lbnRdO1xuZXhwb3J0IGNvbnN0IEF1dGhFbnZpcm9ubWVudCA9IEVudmlyb25tZW50O1xuIl19
|
|
@@ -1,44 +1,40 @@
|
|
|
1
|
-
import { inject, Injectable, InjectionToken } from '@angular/core';
|
|
1
|
+
import { inject, Injectable, InjectionToken, Injector } from '@angular/core';
|
|
2
2
|
import { WindowRef } from '@odx/angular';
|
|
3
|
+
import { CacheStorageClient } from '@odx/angular/utils';
|
|
3
4
|
import { OAuthService } from 'angular-oauth2-oidc';
|
|
5
|
+
import { firstValueFrom } from 'rxjs';
|
|
6
|
+
import { AUTH_HTTP_HEADER } from '../auth.config';
|
|
7
|
+
import { AuthService } from '../auth.service';
|
|
4
8
|
import { handleOAuthEvent } from '../helpers';
|
|
5
9
|
import * as i0 from "@angular/core";
|
|
6
10
|
export const ODX_AUTH_HTTP_CACHE_STORAGE = new InjectionToken('@odx/auth::AuthHttpCacheStorage', {
|
|
7
11
|
providedIn: 'root',
|
|
8
12
|
factory: () => inject(WindowRef).nativeWindow.caches,
|
|
9
13
|
});
|
|
14
|
+
export const ODX_AUTH_HTTP_CACHE_STORAGE_CLIENT = new InjectionToken('@odx/auth::AuthHttpCacheStorageClient', {
|
|
15
|
+
providedIn: 'root',
|
|
16
|
+
factory: () => new CacheStorageClient('@odx/auth/http-cache', inject(ODX_AUTH_HTTP_CACHE_STORAGE)),
|
|
17
|
+
});
|
|
10
18
|
export class AuthHttpCache {
|
|
11
|
-
static { this.CACHE_KEY = '@odx/auth/http-cache'; }
|
|
12
19
|
constructor() {
|
|
13
|
-
this.cacheStorage = inject(
|
|
20
|
+
this.cacheStorage = inject(ODX_AUTH_HTTP_CACHE_STORAGE_CLIENT);
|
|
14
21
|
this.oauthService = inject(OAuthService);
|
|
22
|
+
this.injector = inject(Injector);
|
|
15
23
|
this.oauthService.events.pipe(handleOAuthEvent('logout', () => this.deleteAll())).subscribe();
|
|
16
24
|
}
|
|
17
25
|
async deleteAll() {
|
|
18
|
-
|
|
19
|
-
for (const key of await cache.keys()) {
|
|
20
|
-
await cache.delete(key);
|
|
21
|
-
}
|
|
26
|
+
await this.cacheStorage.deleteAll();
|
|
22
27
|
}
|
|
23
28
|
async delete(request) {
|
|
24
|
-
|
|
25
|
-
return cache.delete(request);
|
|
29
|
+
return this.cacheStorage.delete(request);
|
|
26
30
|
}
|
|
27
31
|
async request(requestInfo, authentication = false) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
request.headers.
|
|
32
|
-
}
|
|
33
|
-
const cache = await this.cacheStorage.open(AuthHttpCache.CACHE_KEY);
|
|
34
|
-
const response = await fetch(request).catch(() => null);
|
|
35
|
-
if (response?.ok) {
|
|
36
|
-
await cache.put(request, response).catch(() => null);
|
|
37
|
-
}
|
|
38
|
-
if (authorizationHeader && response?.status === 401) {
|
|
39
|
-
await cache.delete(request);
|
|
32
|
+
if (authentication) {
|
|
33
|
+
const authService = this.injector.get(AuthService);
|
|
34
|
+
const request = await firstValueFrom(authService.prepareAuthRequest$(new Request(requestInfo)));
|
|
35
|
+
return this.cacheStorage.request(request, ({ status }) => request.headers.has(AUTH_HTTP_HEADER) && status === 401);
|
|
40
36
|
}
|
|
41
|
-
return
|
|
37
|
+
return this.cacheStorage.request(requestInfo, () => false);
|
|
42
38
|
}
|
|
43
39
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthHttpCache, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
44
40
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthHttpCache, providedIn: 'root' }); }
|
|
@@ -47,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
47
43
|
type: Injectable,
|
|
48
44
|
args: [{ providedIn: 'root' }]
|
|
49
45
|
}], ctorParameters: function () { return []; } });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1odHRwLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hdXRoL3NyYy9saWIvbW9kZWxzL2F1dGgtaHR0cC1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFFOUMsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxjQUFjLENBQWUsaUNBQWlDLEVBQUU7SUFDN0csVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTTtDQUNyRCxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsdUNBQXVDLEVBQUU7SUFDaEksVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksa0JBQWtCLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7Q0FDbkcsQ0FBQyxDQUFDO0FBR0gsTUFBTSxPQUFPLGFBQWE7SUFLeEI7UUFKaUIsaUJBQVksR0FBRyxNQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUMxRCxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwQyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRzNDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoRyxDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVM7UUFDcEIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQTBCO1FBQzVDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUksV0FBOEIsRUFBRSxjQUFjLEdBQUcsS0FBSztRQUM1RSxJQUFJLGNBQWMsRUFBRTtZQUNsQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNuRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWhHLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUM7U0FDcEg7UUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDOytHQTFCVSxhQUFhO21IQUFiLGFBQWEsY0FEQSxNQUFNOzs0RkFDbkIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2luZG93UmVmIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IENhY2hlU3RvcmFnZUNsaWVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBVVRIX0hUVFBfSEVBREVSIH0gZnJvbSAnLi4vYXV0aC5jb25maWcnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgaGFuZGxlT0F1dGhFdmVudCB9IGZyb20gJy4uL2hlbHBlcnMnO1xuXG5leHBvcnQgY29uc3QgT0RYX0FVVEhfSFRUUF9DQUNIRV9TVE9SQUdFID0gbmV3IEluamVjdGlvblRva2VuPENhY2hlU3RvcmFnZT4oJ0BvZHgvYXV0aDo6QXV0aEh0dHBDYWNoZVN0b3JhZ2UnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gaW5qZWN0KFdpbmRvd1JlZikubmF0aXZlV2luZG93LmNhY2hlcyxcbn0pO1xuXG5leHBvcnQgY29uc3QgT0RYX0FVVEhfSFRUUF9DQUNIRV9TVE9SQUdFX0NMSUVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDYWNoZVN0b3JhZ2VDbGllbnQ+KCdAb2R4L2F1dGg6OkF1dGhIdHRwQ2FjaGVTdG9yYWdlQ2xpZW50Jywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IG5ldyBDYWNoZVN0b3JhZ2VDbGllbnQoJ0BvZHgvYXV0aC9odHRwLWNhY2hlJywgaW5qZWN0KE9EWF9BVVRIX0hUVFBfQ0FDSEVfU1RPUkFHRSkpLFxufSk7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXV0aEh0dHBDYWNoZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGVTdG9yYWdlID0gaW5qZWN0KE9EWF9BVVRIX0hUVFBfQ0FDSEVfU1RPUkFHRV9DTElFTlQpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9hdXRoU2VydmljZSA9IGluamVjdChPQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm9hdXRoU2VydmljZS5ldmVudHMucGlwZShoYW5kbGVPQXV0aEV2ZW50KCdsb2dvdXQnLCAoKSA9PiB0aGlzLmRlbGV0ZUFsbCgpKSkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlQWxsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuY2FjaGVTdG9yYWdlLmRlbGV0ZUFsbCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZShyZXF1ZXN0OiBSZXF1ZXN0SW5mbyB8IFVSTCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlU3RvcmFnZS5kZWxldGUocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVxdWVzdDxUPihyZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8gfCBVUkwsIGF1dGhlbnRpY2F0aW9uID0gZmFsc2UpOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgaWYgKGF1dGhlbnRpY2F0aW9uKSB7XG4gICAgICBjb25zdCBhdXRoU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEF1dGhTZXJ2aWNlKTtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShhdXRoU2VydmljZS5wcmVwYXJlQXV0aFJlcXVlc3QkKG5ldyBSZXF1ZXN0KHJlcXVlc3RJbmZvKSkpO1xuXG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVN0b3JhZ2UucmVxdWVzdChyZXF1ZXN0LCAoeyBzdGF0dXMgfSkgPT4gcmVxdWVzdC5oZWFkZXJzLmhhcyhBVVRIX0hUVFBfSEVBREVSKSAmJiBzdGF0dXMgPT09IDQwMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGVTdG9yYWdlLnJlcXVlc3QocmVxdWVzdEluZm8sICgpID0+IGZhbHNlKTtcbiAgfVxufVxuIl19
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { ErrorHandler, inject, Injectable } from '@angular/core';
|
|
2
|
+
import { isNumber } from '@odx/angular/utils';
|
|
2
3
|
import { deepmerge } from 'deepmerge-ts';
|
|
3
|
-
import { BehaviorSubject, catchError, combineLatest, distinctUntilChanged, filter, map, of, share, switchMap, take, tap } from 'rxjs';
|
|
4
|
-
import {
|
|
4
|
+
import { BehaviorSubject, catchError, combineLatest, distinctUntilChanged, filter, map, of, share, switchMap, take, tap, timeout } from 'rxjs';
|
|
5
|
+
import { injectAuthConfig } from '../auth.config';
|
|
6
|
+
import { ODX_AUTH_PLUGINS } from '../auth.providers';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
6
8
|
export class AuthPluginManager {
|
|
7
9
|
constructor() {
|
|
10
|
+
this.authConfig = injectAuthConfig();
|
|
8
11
|
this.errorHandler = inject(ErrorHandler, { optional: true });
|
|
9
12
|
this.plugins = inject(ODX_AUTH_PLUGINS);
|
|
10
13
|
this.result$$ = new BehaviorSubject(null);
|
|
@@ -15,12 +18,11 @@ export class AuthPluginManager {
|
|
|
15
18
|
if (this.plugins.length < 1) {
|
|
16
19
|
return of({});
|
|
17
20
|
}
|
|
18
|
-
return authService.
|
|
19
|
-
if (!
|
|
20
|
-
return of({});
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}), tap((result) => this.result$$.next(result)), take(1));
|
|
21
|
+
return authService.waitForAccessToken$(false).pipe(switchMap((token) => {
|
|
22
|
+
if (!token)
|
|
23
|
+
return of([{}]);
|
|
24
|
+
return combineLatest(this.plugins.map((plugin) => this.runPlugin(authService, plugin)));
|
|
25
|
+
}), map((results) => deepmerge(...results)), tap((result) => this.result$$.next(result)), take(1));
|
|
24
26
|
}
|
|
25
27
|
getResult() {
|
|
26
28
|
return this.result$$.getValue() ?? {};
|
|
@@ -29,6 +31,9 @@ export class AuthPluginManager {
|
|
|
29
31
|
this.errorHandler?.handleError(error);
|
|
30
32
|
return of({});
|
|
31
33
|
}
|
|
34
|
+
runPlugin(authService, plugin) {
|
|
35
|
+
return plugin(authService).pipe(isNumber(this.authConfig.pluginTimeout) ? timeout(this.authConfig.pluginTimeout) : tap(), catchError(this.handlePluginError.bind(this)));
|
|
36
|
+
}
|
|
32
37
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthPluginManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33
38
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthPluginManager, providedIn: 'root' }); }
|
|
34
39
|
}
|
|
@@ -36,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
36
41
|
type: Injectable,
|
|
37
42
|
args: [{ providedIn: 'root' }]
|
|
38
43
|
}] });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1wbHVnaW4tbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9zcmMvbGliL21vZGVscy9hdXRoLXBsdWdpbi1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzSixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFPckQsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVtQixlQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUNoQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4RCxZQUFPLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbkMsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFrQyxJQUFJLENBQUMsQ0FBQztRQUV2RSxrQkFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ25HLG9CQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2xELEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFDeEIsb0JBQW9CLEVBQUUsRUFDdEIsS0FBSyxFQUFFLENBQ1IsQ0FBQztLQWlDSDtJQS9CUSxVQUFVLENBQUMsV0FBd0I7UUFDeEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDM0IsT0FBTyxFQUFFLENBQUMsRUFBOEIsQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsT0FBTyxXQUFXLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUNoRCxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUIsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLE9BQU8sQ0FBNkIsQ0FBQyxFQUNuRSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQzNDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUssRUFBK0IsQ0FBQztJQUN0RSxDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBZTtRQUN2QyxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV0QyxPQUFPLEVBQUUsQ0FBQyxFQUE4QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLFNBQVMsQ0FBQyxXQUF3QixFQUFFLE1BQWtCO1FBQzVELE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDN0IsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFDeEYsVUFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDOUMsQ0FBQztJQUNKLENBQUM7K0dBM0NVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBREosTUFBTTs7NEZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFcnJvckhhbmRsZXIsIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgZGVlcG1lcmdlIH0gZnJvbSAnZGVlcG1lcmdlLXRzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY2F0Y2hFcnJvciwgY29tYmluZUxhdGVzdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmUsIHN3aXRjaE1hcCwgdGFrZSwgdGFwLCB0aW1lb3V0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpbmplY3RBdXRoQ29uZmlnIH0gZnJvbSAnLi4vYXV0aC5jb25maWcnO1xuaW1wb3J0IHsgT0RYX0FVVEhfUExVR0lOUyB9IGZyb20gJy4uL2F1dGgucHJvdmlkZXJzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aC5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgQXV0aFBsdWdpbiA9IChhdXRoU2VydmljZTogQXV0aFNlcnZpY2UpID0+IE9ic2VydmFibGU8UGFydGlhbDxPZHhBdXRoLkF1dGhQbHVnaW5SZXN1bHQ+PjtcbmV4cG9ydCB0eXBlIEF1dGhQbHVnaW5GYWN0b3J5ID0gKCkgPT4gQXV0aFBsdWdpbjtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdXRoUGx1Z2luTWFuYWdlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aENvbmZpZyA9IGluamVjdEF1dGhDb25maWcoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvckhhbmRsZXIgPSBpbmplY3QoRXJyb3JIYW5kbGVyLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpbnMgPSBpbmplY3QoT0RYX0FVVEhfUExVR0lOUyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzdWx0JCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE9keEF1dGguQXV0aFBsdWdpblJlc3VsdCB8IG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyByZWFkb25seSBwbHVnaW5zUmVhZHkkID0gdGhpcy5yZXN1bHQkJC5waXBlKGZpbHRlcihCb29sZWFuKSwgbWFwKEJvb2xlYW4pLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZSgpKTtcbiAgcHVibGljIHJlYWRvbmx5IHBsdWdpbnNMb2FkaW5nJCA9IHRoaXMucmVzdWx0JCQucGlwZShcbiAgICBtYXAoKHJlc3VsdCkgPT4gIXJlc3VsdCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZSgpLFxuICApO1xuXG4gIHB1YmxpYyBydW5QbHVnaW5zKGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSk6IE9ic2VydmFibGU8T2R4QXV0aC5BdXRoUGx1Z2luUmVzdWx0PiB7XG4gICAgaWYgKHRoaXMucGx1Z2lucy5sZW5ndGggPCAxKSB7XG4gICAgICByZXR1cm4gb2Yoe30gYXMgT2R4QXV0aC5BdXRoUGx1Z2luUmVzdWx0KTtcbiAgICB9XG4gICAgcmV0dXJuIGF1dGhTZXJ2aWNlLndhaXRGb3JBY2Nlc3NUb2tlbiQoZmFsc2UpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHRva2VuKSA9PiB7XG4gICAgICAgIGlmICghdG9rZW4pIHJldHVybiBvZihbe31dKTtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QodGhpcy5wbHVnaW5zLm1hcCgocGx1Z2luKSA9PiB0aGlzLnJ1blBsdWdpbihhdXRoU2VydmljZSwgcGx1Z2luKSkpO1xuICAgICAgfSksXG4gICAgICBtYXAoKHJlc3VsdHMpID0+IGRlZXBtZXJnZSguLi5yZXN1bHRzKSBhcyBPZHhBdXRoLkF1dGhQbHVnaW5SZXN1bHQpLFxuICAgICAgdGFwKChyZXN1bHQpID0+IHRoaXMucmVzdWx0JCQubmV4dChyZXN1bHQpKSxcbiAgICAgIHRha2UoMSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZXN1bHQoKTogT2R4QXV0aC5BdXRoUGx1Z2luUmVzdWx0IHtcbiAgICByZXR1cm4gdGhpcy5yZXN1bHQkJC5nZXRWYWx1ZSgpID8/ICh7fSBhcyBPZHhBdXRoLkF1dGhQbHVnaW5SZXN1bHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVQbHVnaW5FcnJvcihlcnJvcj86IHVua25vd24pOiBPYnNlcnZhYmxlPE9keEF1dGguQXV0aFBsdWdpblJlc3VsdD4ge1xuICAgIHRoaXMuZXJyb3JIYW5kbGVyPy5oYW5kbGVFcnJvcihlcnJvcik7XG5cbiAgICByZXR1cm4gb2Yoe30gYXMgT2R4QXV0aC5BdXRoUGx1Z2luUmVzdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgcnVuUGx1Z2luKGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcGx1Z2luOiBBdXRoUGx1Z2luKTogUmV0dXJuVHlwZTxBdXRoUGx1Z2luPiB7XG4gICAgcmV0dXJuIHBsdWdpbihhdXRoU2VydmljZSkucGlwZShcbiAgICAgIGlzTnVtYmVyKHRoaXMuYXV0aENvbmZpZy5wbHVnaW5UaW1lb3V0KSA/IHRpbWVvdXQodGhpcy5hdXRoQ29uZmlnLnBsdWdpblRpbWVvdXQpIDogdGFwKCksXG4gICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlUGx1Z2luRXJyb3IuYmluZCh0aGlzKSksXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DestroyRef, inject } from '@angular/core';
|
|
2
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
|
+
import { of } from 'rxjs';
|
|
4
|
+
import logger from '../auth.logger';
|
|
5
|
+
export const coreDebugPlugin = () => {
|
|
6
|
+
logger.warn('DEBUG MODE ENABLED - DO NOT USE IN PRODUCTION!');
|
|
7
|
+
const destroyRef = inject(DestroyRef);
|
|
8
|
+
let instance = null;
|
|
9
|
+
return (authService) => {
|
|
10
|
+
instance ??= authService.identityClaims$.pipe(takeUntilDestroyed(destroyRef)).subscribe((claims) => {
|
|
11
|
+
logger.info(`User: ${claims?.username} (${claims?.email})`);
|
|
12
|
+
logger.group('Identity claims', (log) => log(claims), false);
|
|
13
|
+
logger.group('Access token', (log) => log(authService.getAccessToken()));
|
|
14
|
+
logger.group('Refresh token', (log) => log(authService.getRefreshToken()));
|
|
15
|
+
logger.group('ID token', (log) => log(authService.getIdToken()));
|
|
16
|
+
});
|
|
17
|
+
return of({});
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1kZWJ1Zy5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9wbHVnaW5zL2NvcmUtZGVidWcucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBZ0IsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sTUFBTSxNQUFNLGdCQUFnQixDQUFDO0FBR3BDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBc0IsR0FBRyxFQUFFO0lBQ3JELE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0RBQWdELENBQUMsQ0FBQztJQUM5RCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsSUFBSSxRQUFRLEdBQXdCLElBQUksQ0FBQztJQUV6QyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUU7UUFDckIsUUFBUSxLQUFLLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDakcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLE1BQU0sRUFBRSxRQUFRLEtBQUssTUFBTSxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDNUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzdELE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6RSxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0UsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4uL2F1dGgubG9nZ2VyJztcbmltcG9ydCB7IEF1dGhQbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGNvbnN0IGNvcmVEZWJ1Z1BsdWdpbjogQXV0aFBsdWdpbkZhY3RvcnkgPSAoKSA9PiB7XG4gIGxvZ2dlci53YXJuKCdERUJVRyBNT0RFIEVOQUJMRUQgLSBETyBOT1QgVVNFIElOIFBST0RVQ1RJT04hJyk7XG4gIGNvbnN0IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIGxldCBpbnN0YW5jZTogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgcmV0dXJuIChhdXRoU2VydmljZSkgPT4ge1xuICAgIGluc3RhbmNlID8/PSBhdXRoU2VydmljZS5pZGVudGl0eUNsYWltcyQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoZGVzdHJveVJlZikpLnN1YnNjcmliZSgoY2xhaW1zKSA9PiB7XG4gICAgICBsb2dnZXIuaW5mbyhgVXNlcjogJHtjbGFpbXM/LnVzZXJuYW1lfSAoJHtjbGFpbXM/LmVtYWlsfSlgKTtcbiAgICAgIGxvZ2dlci5ncm91cCgnSWRlbnRpdHkgY2xhaW1zJywgKGxvZykgPT4gbG9nKGNsYWltcyksIGZhbHNlKTtcbiAgICAgIGxvZ2dlci5ncm91cCgnQWNjZXNzIHRva2VuJywgKGxvZykgPT4gbG9nKGF1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKCkpKTtcbiAgICAgIGxvZ2dlci5ncm91cCgnUmVmcmVzaCB0b2tlbicsIChsb2cpID0+IGxvZyhhdXRoU2VydmljZS5nZXRSZWZyZXNoVG9rZW4oKSkpO1xuICAgICAgbG9nZ2VyLmdyb3VwKCdJRCB0b2tlbicsIChsb2cpID0+IGxvZyhhdXRoU2VydmljZS5nZXRJZFRva2VuKCkpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBvZih7fSk7XG4gIH07XG59O1xuIl19
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * from './core-debug.plugin';
|
|
1
2
|
export * from './core-identity.plugin';
|
|
2
3
|
export * from './user-profile-link.plugin';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvc3JjL2xpYi9wbHVnaW5zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb3JlLWRlYnVnLnBsdWdpbic7XG5leHBvcnQgKiBmcm9tICcuL2NvcmUtaWRlbnRpdHkucGx1Z2luJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1wcm9maWxlLWxpbmsucGx1Z2luJztcbiJdfQ==
|