@eui/core 17.3.0 → 18.0.0-next.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/docs/dependencies.html +19 -33
- package/docs/index.html +3 -3
- package/docs/js/menu-wc.js +0 -12
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/miscellaneous/variables.html +0 -78
- package/esm2022/lib/eui-core.module.mjs +5 -5
- package/esm2022/lib/interceptors/add-lang-param.interceptor.mjs +4 -4
- package/esm2022/lib/interceptors/cache-prevention.interceptor.mjs +4 -4
- package/esm2022/lib/interceptors/cors-security.interceptor.mjs +4 -4
- package/esm2022/lib/interceptors/csrf-prevention.interceptor.mjs +4 -4
- package/esm2022/lib/interceptors/eu-login-session-timeout-handling.interceptor.mjs +4 -4
- package/esm2022/lib/interceptors/index.mjs +1 -2
- package/esm2022/lib/interceptors/ux-request-error-model.interceptor.mjs +4 -4
- package/esm2022/lib/services/dynamic-component/dynamic-component.service.mjs +4 -4
- package/esm2022/lib/services/dynamic-menu/dynamic-menu.service.mjs +4 -4
- package/esm2022/lib/services/errors/global-error-handler.mjs +4 -4
- package/esm2022/lib/services/errors/http-error-handler.interceptor.mjs +4 -4
- package/esm2022/lib/services/eui-app-shell.service.mjs +4 -4
- package/esm2022/lib/services/eui-timezone.service.mjs +4 -4
- package/esm2022/lib/services/growl/eui-growl.service.mjs +4 -4
- package/esm2022/lib/services/i18n/i18n.loader.mjs +4 -4
- package/esm2022/lib/services/i18n/i18n.service.mjs +4 -4
- package/esm2022/lib/services/loader/eui-loader.service.mjs +4 -4
- package/esm2022/lib/services/locale/locale.service.mjs +4 -4
- package/esm2022/lib/services/locale/locale.service.mock.mjs +4 -4
- package/esm2022/lib/services/log/log.module.mjs +5 -5
- package/esm2022/lib/services/log/log.service.mjs +4 -4
- package/esm2022/lib/services/permission/permission.service.mjs +4 -4
- package/esm2022/lib/services/queue/api-queue.service.mjs +4 -4
- package/esm2022/lib/services/storage/local-forage.service.mjs +4 -4
- package/esm2022/lib/services/storage/local-storage.service.mjs +4 -4
- package/esm2022/lib/services/storage/session-storage.service.mjs +4 -4
- package/esm2022/lib/services/store/effects/app.effects.mjs +4 -4
- package/esm2022/lib/services/store/store.service.mjs +4 -4
- package/esm2022/lib/services/store/store.service.mock.mjs +4 -4
- package/esm2022/lib/services/user/user.service.mjs +4 -4
- package/esm2022/lib/services/user/user.service.mock.mjs +4 -4
- package/fesm2022/eui-core.mjs +5258 -5274
- package/fesm2022/eui-core.mjs.map +7 -1
- package/lib/interceptors/index.d.ts +0 -1
- package/lib/interceptors/index.d.ts.map +1 -1
- package/package.json +4 -4
- package/docs/classes/OpenIdConnectServiceMock.html +0 -281
- package/docs/injectables/OpenIdConnectService.html +0 -283
- package/docs/interceptors/OpenIdConnectInterceptor.html +0 -403
- package/docs/interfaces/OpenIdConnectUserDetails.html +0 -497
- package/esm2022/lib/interceptors/openid/index.mjs +0 -4
- package/esm2022/lib/interceptors/openid/openid-connect.interceptor.mjs +0 -183
- package/esm2022/lib/interceptors/openid/openid-connect.service.mjs +0 -58
- package/esm2022/lib/interceptors/openid/openid-connect.service.mock.mjs +0 -8
- package/lib/interceptors/openid/index.d.ts +0 -4
- package/lib/interceptors/openid/index.d.ts.map +0 -1
- package/lib/interceptors/openid/openid-connect.interceptor.d.ts +0 -15
- package/lib/interceptors/openid/openid-connect.interceptor.d.ts.map +0 -1
- package/lib/interceptors/openid/openid-connect.service.d.ts +0 -18
- package/lib/interceptors/openid/openid-connect.service.d.ts.map +0 -1
- package/lib/interceptors/openid/openid-connect.service.mock.d.ts +0 -6
- package/lib/interceptors/openid/openid-connect.service.mock.d.ts.map +0 -1
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { HttpErrorResponse, HttpEventType, HttpHeaders, } from '@angular/common/http';
|
|
3
|
-
import { of, Subject, throwError } from 'rxjs';
|
|
4
|
-
import { catchError, finalize } from 'rxjs/operators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class OpenIdConnectInterceptor {
|
|
7
|
-
constructor() {
|
|
8
|
-
// By default, the original request should at least be retries once in case the cached API Gateway token expires:
|
|
9
|
-
this.defaultMaximumRequestRetries = 1;
|
|
10
|
-
// check if the OpenIdConnect is defined
|
|
11
|
-
if (typeof OpenIdConnect === 'undefined') {
|
|
12
|
-
console.error('Please include the script openid-login.js in your index.html file.', 'For more details, please consult the documentation regarding the Http Interceptors and OpenID Connect configuration.');
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
intercept(
|
|
16
|
-
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
17
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
18
|
-
request, next, retryCount = 0,
|
|
19
|
-
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
20
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
|
-
retryCallback) {
|
|
22
|
-
if (typeof OpenIdConnect !== 'undefined') {
|
|
23
|
-
let authorizedRequest = retryCallback;
|
|
24
|
-
if (!authorizedRequest) {
|
|
25
|
-
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
26
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
|
-
authorizedRequest = new Subject();
|
|
28
|
-
}
|
|
29
|
-
let subscription = null;
|
|
30
|
-
OpenIdConnect.getAuthorizationHeaders(request.urlWithParams,
|
|
31
|
-
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
32
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
33
|
-
(headers) => {
|
|
34
|
-
let newRequest = request;
|
|
35
|
-
if (headers) {
|
|
36
|
-
let newHeaders = request.headers;
|
|
37
|
-
if (newHeaders) {
|
|
38
|
-
for (const headerName in headers) {
|
|
39
|
-
// eslint-disable-next-line no-prototype-builtins
|
|
40
|
-
if (headers.hasOwnProperty(headerName)) {
|
|
41
|
-
newHeaders = newHeaders.set(headerName, headers[headerName]);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
newHeaders = new HttpHeaders(headers);
|
|
47
|
-
}
|
|
48
|
-
newRequest = request.clone({
|
|
49
|
-
withCredentials: false,
|
|
50
|
-
headers: newHeaders,
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
// Don't mix the next line with the line below it.
|
|
54
|
-
// We would get a "Cannot access 'subscription' before initialization" error.
|
|
55
|
-
subscription = next
|
|
56
|
-
.handle(newRequest)
|
|
57
|
-
.pipe(catchError((response) => this.handleErrorResponse(response, request, next, retryCount, authorizedRequest, subscription)))
|
|
58
|
-
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
59
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
60
|
-
.subscribe((httpEvent) => {
|
|
61
|
-
if (httpEvent) {
|
|
62
|
-
authorizedRequest.next(httpEvent);
|
|
63
|
-
if (httpEvent.type === HttpEventType.Response) {
|
|
64
|
-
if (subscription) {
|
|
65
|
-
subscription.unsubscribe();
|
|
66
|
-
}
|
|
67
|
-
authorizedRequest.complete();
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
}, (errorResponse) => {
|
|
72
|
-
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
73
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
74
|
-
const errorProperties = {
|
|
75
|
-
error: errorResponse,
|
|
76
|
-
};
|
|
77
|
-
if (errorResponse) {
|
|
78
|
-
errorProperties.status = errorResponse.status;
|
|
79
|
-
errorProperties.statusText = errorResponse.statusText;
|
|
80
|
-
}
|
|
81
|
-
return this.handleErrorResponse(new HttpErrorResponse(errorProperties), request, next, retryCount, authorizedRequest, null);
|
|
82
|
-
});
|
|
83
|
-
// EUI-3992 will cancel the xhr request when observable is unsubscribed from or terminated
|
|
84
|
-
return authorizedRequest.pipe(finalize(() => {
|
|
85
|
-
if (subscription) {
|
|
86
|
-
subscription.unsubscribe();
|
|
87
|
-
}
|
|
88
|
-
}));
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
return next.handle(request);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
handleErrorResponse(response,
|
|
95
|
-
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
96
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
97
|
-
originalRequest, next, retryCount = 0,
|
|
98
|
-
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
99
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
100
|
-
retryCallback, subscription) {
|
|
101
|
-
if (response) {
|
|
102
|
-
if (response.error && response.error.error === 'invalid_request') {
|
|
103
|
-
// The ID token is invalid or incorrect; retrieve another one:
|
|
104
|
-
OpenIdConnect.renewIdToken();
|
|
105
|
-
}
|
|
106
|
-
else if (this.apiGatewayTokenExpired(response)) {
|
|
107
|
-
OpenIdConnect.clearCachedApiGatewayAccessToken();
|
|
108
|
-
return this.retryRequest(originalRequest, response, next, retryCount, retryCallback, subscription);
|
|
109
|
-
}
|
|
110
|
-
else if (response.status === 401 || response.status === 403) {
|
|
111
|
-
// The EU Login access token is invalid. (403)
|
|
112
|
-
// The target service is unable to read the access token, for example because the EU Login session ended. (401)
|
|
113
|
-
// Retry in case the access token became invalid too quickly:
|
|
114
|
-
return this.retryRequest(originalRequest, response, next, retryCount, retryCallback, subscription);
|
|
115
|
-
}
|
|
116
|
-
else if (response.status === 0) {
|
|
117
|
-
// One of the access token requests or the original request was not sent.
|
|
118
|
-
// Most likely one of the CORS pre-flight requests failed, or the browser is offline.
|
|
119
|
-
console.warn('The OpenID Connect call may have issues:\n' +
|
|
120
|
-
'* the CORS pre-flight requests for the OpenID Connect access tokens or for the REST call could be failing\n' +
|
|
121
|
-
'* the browser could be currently offline.');
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
if (subscription) {
|
|
125
|
-
subscription.unsubscribe();
|
|
126
|
-
}
|
|
127
|
-
if (retryCallback) {
|
|
128
|
-
retryCallback.error(response);
|
|
129
|
-
retryCallback.complete();
|
|
130
|
-
}
|
|
131
|
-
return throwError(response);
|
|
132
|
-
}
|
|
133
|
-
retryRequest(
|
|
134
|
-
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
135
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
136
|
-
originalRequest, response, next, retryCount = 0,
|
|
137
|
-
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
138
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
139
|
-
retryCallback, subscription) {
|
|
140
|
-
if (retryCount < this.maximumRequestRetries()) {
|
|
141
|
-
this.intercept(originalRequest, next, retryCount + 1, retryCallback);
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
console.error('The OpenID Connect call may have issues:\n' +
|
|
145
|
-
'* the client ID could be invalid\n' +
|
|
146
|
-
'* the API Gateway access token could be invalid\n' +
|
|
147
|
-
'* the EU Login access token for the target service could be invalid.');
|
|
148
|
-
if (subscription) {
|
|
149
|
-
subscription.unsubscribe();
|
|
150
|
-
}
|
|
151
|
-
if (retryCallback) {
|
|
152
|
-
retryCallback.error(response);
|
|
153
|
-
retryCallback.complete();
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
157
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
158
|
-
return of(null);
|
|
159
|
-
}
|
|
160
|
-
apiGatewayTokenExpired(response) {
|
|
161
|
-
if (response && response.status === 401) {
|
|
162
|
-
const message = '' + response.error;
|
|
163
|
-
return message.indexOf('<ams:code>900901</ams:code>') >= 0;
|
|
164
|
-
}
|
|
165
|
-
else {
|
|
166
|
-
return false;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
maximumRequestRetries() {
|
|
170
|
-
if (OpenIdConnect.config && OpenIdConnect.config.maximumRequestRetries >= 0) {
|
|
171
|
-
return OpenIdConnect.config.maximumRequestRetries;
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
174
|
-
return this.defaultMaximumRequestRetries;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: OpenIdConnectInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
178
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: OpenIdConnectInterceptor }); }
|
|
179
|
-
}
|
|
180
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: OpenIdConnectInterceptor, decorators: [{
|
|
181
|
-
type: Injectable
|
|
182
|
-
}], ctorParameters: () => [] });
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmlkLWNvbm5lY3QuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVyY2VwdG9ycy9vcGVuaWQvb3BlbmlkLWNvbm5lY3QuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsaUJBQWlCLEVBRWpCLGFBQWEsRUFFYixXQUFXLEdBSWQsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBU3RELE1BQU0sT0FBTyx3QkFBd0I7SUFJakM7UUFIQSxpSEFBaUg7UUFDakgsaUNBQTRCLEdBQUcsQ0FBQyxDQUFDO1FBRzdCLHdDQUF3QztRQUN4QyxJQUFJLE9BQU8sYUFBYSxLQUFLLFdBQVcsRUFBRTtZQUN0QyxPQUFPLENBQUMsS0FBSyxDQUNULG9FQUFvRSxFQUNwRSxzSEFBc0gsQ0FDekgsQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUVELFNBQVM7SUFDTCxtSEFBbUg7SUFDbkgsOERBQThEO0lBQzlELE9BQXlCLEVBQ3pCLElBQWlCLEVBQ2pCLFVBQVUsR0FBRyxDQUFDO0lBQ2QsbUhBQW1IO0lBQ25ILDhEQUE4RDtJQUM5RCxhQUF1QztRQUl2QyxJQUFJLE9BQU8sYUFBYSxLQUFLLFdBQVcsRUFBRTtZQUN0QyxJQUFJLGlCQUFpQixHQUFHLGFBQWEsQ0FBQztZQUN0QyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0JBQ3BCLG1IQUFtSDtnQkFDbkgsOERBQThEO2dCQUM5RCxpQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBa0IsQ0FBQzthQUNyRDtZQUVELElBQUksWUFBWSxHQUFHLElB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QUMzQixJQUFJLGFBQWEsQ0FBQyxNQUFNLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLEVBQUU7WUFDekUsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDO1NBQ3JEO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztTQUM1QztJQUNMLENBQUM7aUlBek5RLHdCQUF3QjtxSUFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgICBIdHRwRXZlbnQsXG4gICAgSHR0cEV2ZW50VHlwZSxcbiAgICBIdHRwSGFuZGxlcixcbiAgICBIdHRwSGVhZGVycyxcbiAgICBIdHRwSW50ZXJjZXB0b3IsXG4gICAgSHR0cFJlcXVlc3QsXG4gICAgSHR0cFJlc3BvbnNlLFxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLy8gVGhpcyB2YXJpYWJsZSBpcyBkZWNsYXJlZCBpbiB0aGUgamF2YXNjcmlwdCBmaWxlIG9wZW5pZC1sb2dpbi5qc1xuLy8gYW5kIHdpbGwgYmUgaW1wb3J0ZWQgaW4gdGhlIGVVSSBhcHBsaWNhdGlvbnMnIGluZGV4Lmh0bWwgZmlsZSwgd2hlbiBuZWNlc3NhcnkuXG4vLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZGVjbGFyZSBsZXQgT3BlbklkQ29ubmVjdDogYW55O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT3BlbklkQ29ubmVjdEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgICAvLyBCeSBkZWZhdWx0LCB0aGUgb3JpZ2luYWwgcmVxdWVzdCBzaG91bGQgYXQgbGVhc3QgYmUgcmV0cmllcyBvbmNlIGluIGNhc2UgdGhlIGNhY2hlZCBBUEkgR2F0ZXdheSB0b2tlbiBleHBpcmVzOlxuICAgIGRlZmF1bHRNYXhpbXVtUmVxdWVzdFJldHJpZXMgPSAxO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8vIGNoZWNrIGlmIHRoZSBPcGVuSWRDb25uZWN0IGlzIGRlZmluZWRcbiAgICAgICAgaWYgKHR5cGVvZiBPcGVuSWRDb25uZWN0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAnUGxlYXNlIGluY2x1ZGUgdGhlIHNjcmlwdCBvcGVuaWQtbG9naW4uanMgaW4geW91ciBpbmRleC5odG1sIGZpbGUuJyxcbiAgICAgICAgICAgICAgICAnRm9yIG1vcmUgZGV0YWlscywgcGxlYXNlIGNvbnN1bHQgdGhlIGRvY3VtZW50YXRpb24gcmVnYXJkaW5nIHRoZSBIdHRwIEludGVyY2VwdG9ycyBhbmQgT3BlbklEIENvbm5lY3QgY29uZmlndXJhdGlvbi4nLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGludGVyY2VwdChcbiAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICByZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgICAgICBuZXh0OiBIdHRwSGFuZGxlcixcbiAgICAgICAgcmV0cnlDb3VudCA9IDAsXG4gICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgcmV0cnlDYWxsYmFjaz86IFN1YmplY3Q8SHR0cEV2ZW50PGFueT4+LFxuICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgICAgICBpZiAodHlwZW9mIE9wZW5JZENvbm5lY3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBsZXQgYXV0aG9yaXplZFJlcXVlc3QgPSByZXRyeUNhbGxiYWNrO1xuICAgICAgICAgICAgaWYgKCFhdXRob3JpemVkUmVxdWVzdCkge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgIGF1dGhvcml6ZWRSZXF1ZXN0ID0gbmV3IFN1YmplY3Q8SHR0cEV2ZW50PGFueT4+KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBzdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICAgICAgT3BlbklkQ29ubmVjdC5nZXRBdXRob3JpemF0aW9uSGVhZGVycyhcbiAgICAgICAgICAgICAgICByZXF1ZXN0LnVybFdpdGhQYXJhbXMsXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgKGhlYWRlcnM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmV3UmVxdWVzdCA9IHJlcXVlc3Q7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3SGVhZGVycyA9IHJlcXVlc3QuaGVhZGVycztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdIZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBoZWFkZXJOYW1lIGluIGhlYWRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZGVycy5oYXNPd25Qcm9wZXJ0eShoZWFkZXJOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3SGVhZGVycyA9IG5ld0hlYWRlcnMuc2V0KGhlYWRlck5hbWUsIGhlYWRlcnNbaGVhZGVyTmFtZV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKGhlYWRlcnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogbmV3SGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgbWl4IHRoZSBuZXh0IGxpbmUgd2l0aCB0aGUgbGluZSBiZWxvdyBpdC5cbiAgICAgICAgICAgICAgICAgICAgLy8gV2Ugd291bGQgZ2V0IGEgXCJDYW5ub3QgYWNjZXNzICdzdWJzY3JpcHRpb24nIGJlZm9yZSBpbml0aWFsaXphdGlvblwiIGVycm9yLlxuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24gPSBuZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAuaGFuZGxlKG5ld1JlcXVlc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JSZXNwb25zZShyZXNwb25zZSwgcmVxdWVzdCwgbmV4dCwgcmV0cnlDb3VudCwgYXV0aG9yaXplZFJlcXVlc3QsIHN1YnNjcmlwdGlvbiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChodHRwRXZlbnQ6IEh0dHBSZXNwb25zZTxhbnk+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGh0dHBFdmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3JpemVkUmVxdWVzdC5uZXh0KGh0dHBFdmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChodHRwRXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXplZFJlcXVlc3QuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycm9yUmVzcG9uc2U6IFhNTEh0dHBSZXF1ZXN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JQcm9wZXJ0aWVzOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3JSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yUHJvcGVydGllcy5zdGF0dXMgPSBlcnJvclJlc3BvbnNlLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yUHJvcGVydGllcy5zdGF0dXNUZXh0ID0gZXJyb3JSZXNwb25zZS5zdGF0dXNUZXh0O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3JSZXNwb25zZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBIdHRwRXJyb3JSZXNwb25zZShlcnJvclByb3BlcnRpZXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXRyeUNvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXplZFJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyBFVUktMzk5MiB3aWxsIGNhbmNlbCB0aGUgeGhyIHJlcXVlc3Qgd2hlbiBvYnNlcnZhYmxlIGlzIHVuc3Vic2NyaWJlZCBmcm9tIG9yIHRlcm1pbmF0ZWRcbiAgICAgICAgICAgIHJldHVybiBhdXRob3JpemVkUmVxdWVzdC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXJyb3JSZXNwb25zZShcbiAgICAgICAgcmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlLFxuICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIG9yaWdpbmFsUmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PixcbiAgICAgICAgbmV4dDogSHR0cEhhbmRsZXIsXG4gICAgICAgIHJldHJ5Q291bnQgPSAwLFxuICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIHJldHJ5Q2FsbGJhY2s6IFN1YmplY3Q8SHR0cEV2ZW50PGFueT4+LFxuICAgICAgICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbixcbiAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuZXJyb3IgJiYgcmVzcG9uc2UuZXJyb3IuZXJyb3IgPT09ICdpbnZhbGlkX3JlcXVlc3QnKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlIElEIHRva2VuIGlzIGludmFsaWQgb3IgaW5jb3JyZWN0OyByZXRyaWV2ZSBhbm90aGVyIG9uZTpcbiAgICAgICAgICAgICAgICBPcGVuSWRDb25uZWN0LnJlbmV3SWRUb2tlbigpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFwaUdhdGV3YXlUb2tlbkV4cGlyZWQocmVzcG9uc2UpKSB7XG4gICAgICAgICAgICAgICAgT3BlbklkQ29ubmVjdC5jbGVhckNhY2hlZEFwaUdhdGV3YXlBY2Nlc3NUb2tlbigpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHJ5UmVxdWVzdChvcmlnaW5hbFJlcXVlc3QsIHJlc3BvbnNlLCBuZXh0LCByZXRyeUNvdW50LCByZXRyeUNhbGxiYWNrLCBzdWJzY3JpcHRpb24pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMSB8fCByZXNwb25zZS5zdGF0dXMgPT09IDQwMykge1xuICAgICAgICAgICAgICAgIC8vIFRoZSBFVSBMb2dpbiBhY2Nlc3MgdG9rZW4gaXMgaW52YWxpZC4gKDQwMylcbiAgICAgICAgICAgICAgICAvLyBUaGUgdGFyZ2V0IHNlcnZpY2UgaXMgdW5hYmxlIHRvIHJlYWQgdGhlIGFjY2VzcyB0b2tlbiwgZm9yIGV4YW1wbGUgYmVjYXVzZSB0aGUgRVUgTG9naW4gc2Vzc2lvbiBlbmRlZC4gKDQwMSlcbiAgICAgICAgICAgICAgICAvLyBSZXRyeSBpbiBjYXNlIHRoZSBhY2Nlc3MgdG9rZW4gYmVjYW1lIGludmFsaWQgdG9vIHF1aWNrbHk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0cnlSZXF1ZXN0KG9yaWdpbmFsUmVxdWVzdCwgcmVzcG9uc2UsIG5leHQsIHJldHJ5Q291bnQsIHJldHJ5Q2FsbGJhY2ssIHN1YnNjcmlwdGlvbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIC8vIE9uZSBvZiB0aGUgYWNjZXNzIHRva2VuIHJlcXVlc3RzIG9yIHRoZSBvcmlnaW5hbCByZXF1ZXN0IHdhcyBub3Qgc2VudC5cbiAgICAgICAgICAgICAgICAvLyBNb3N0IGxpa2VseSBvbmUgb2YgdGhlIENPUlMgcHJlLWZsaWdodCByZXF1ZXN0cyBmYWlsZWQsIG9yIHRoZSBicm93c2VyIGlzIG9mZmxpbmUuXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICAnVGhlIE9wZW5JRCBDb25uZWN0IGNhbGwgbWF5IGhhdmUgaXNzdWVzOlxcbicgK1xuICAgICAgICAgICAgICAgICAgICAnKiB0aGUgQ09SUyBwcmUtZmxpZ2h0IHJlcXVlc3RzIGZvciB0aGUgT3BlbklEIENvbm5lY3QgYWNjZXNzIHRva2VucyBvciBmb3IgdGhlIFJFU1QgY2FsbCBjb3VsZCBiZSBmYWlsaW5nXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICcqIHRoZSBicm93c2VyIGNvdWxkIGJlIGN1cnJlbnRseSBvZmZsaW5lLicsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXRyeUNhbGxiYWNrKSB7XG4gICAgICAgICAgICByZXRyeUNhbGxiYWNrLmVycm9yKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHJldHJ5Q2FsbGJhY2suY29tcGxldGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHJlc3BvbnNlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmV0cnlSZXF1ZXN0KFxuICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIG9yaWdpbmFsUmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PixcbiAgICAgICAgcmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlLFxuICAgICAgICBuZXh0OiBIdHRwSGFuZGxlcixcbiAgICAgICAgcmV0cnlDb3VudCA9IDAsXG4gICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgcmV0cnlDYWxsYmFjazogU3ViamVjdDxIdHRwRXZlbnQ8YW55Pj4sXG4gICAgICAgIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uLFxuICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgICAgICBpZiAocmV0cnlDb3VudCA8IHRoaXMubWF4aW11bVJlcXVlc3RSZXRyaWVzKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJjZXB0KG9yaWdpbmFsUmVxdWVzdCwgbmV4dCwgcmV0cnlDb3VudCArIDEsIHJldHJ5Q2FsbGJhY2spO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAnVGhlIE9wZW5JRCBDb25uZWN0IGNhbGwgbWF5IGhhdmUgaXNzdWVzOlxcbicgK1xuICAgICAgICAgICAgICAgICcqIHRoZSBjbGllbnQgSUQgY291bGQgYmUgaW52YWxpZFxcbicgK1xuICAgICAgICAgICAgICAgICcqIHRoZSBBUEkgR2F0ZXdheSBhY2Nlc3MgdG9rZW4gY291bGQgYmUgaW52YWxpZFxcbicgK1xuICAgICAgICAgICAgICAgICcqIHRoZSBFVSBMb2dpbiBhY2Nlc3MgdG9rZW4gZm9yIHRoZSB0YXJnZXQgc2VydmljZSBjb3VsZCBiZSBpbnZhbGlkLicsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJldHJ5Q2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICByZXRyeUNhbGxiYWNrLmVycm9yKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICByZXRyeUNhbGxiYWNrLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIHJldHVybiBvZjxIdHRwRXZlbnQ8YW55Pj4obnVsbCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFwaUdhdGV3YXlUb2tlbkV4cGlyZWQocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9ICcnICsgcmVzcG9uc2UuZXJyb3I7XG4gICAgICAgICAgICByZXR1cm4gbWVzc2FnZS5pbmRleE9mKCc8YW1zOmNvZGU+OTAwOTAxPC9hbXM6Y29kZT4nKSA+PSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG1heGltdW1SZXF1ZXN0UmV0cmllcygpOiBudW1iZXIge1xuICAgICAgICBpZiAoT3BlbklkQ29ubmVjdC5jb25maWcgJiYgT3BlbklkQ29ubmVjdC5jb25maWcubWF4aW11bVJlcXVlc3RSZXRyaWVzID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiBPcGVuSWRDb25uZWN0LmNvbmZpZy5tYXhpbXVtUmVxdWVzdFJldHJpZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0TWF4aW11bVJlcXVlc3RSZXRyaWVzO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class OpenIdConnectService {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.userDetails = new Observable((observer) => {
|
|
7
|
-
if (typeof ApiGateway !== 'undefined') {
|
|
8
|
-
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
9
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
|
-
ApiGateway.getUser((user) => {
|
|
11
|
-
if (user) {
|
|
12
|
-
observer.next({
|
|
13
|
-
domain: null,
|
|
14
|
-
domainUsername: user.username,
|
|
15
|
-
firstName: user.given_name,
|
|
16
|
-
lastName: user.family_name,
|
|
17
|
-
email: user.email,
|
|
18
|
-
departmentNumber: user['https://ecas.ec.europa.eu/claims/department_number'],
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
observer.next(null);
|
|
23
|
-
}
|
|
24
|
-
observer.complete();
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
else if (typeof OpenIdConnect !== 'undefined') {
|
|
28
|
-
OpenIdConnect.getIdToken(() => {
|
|
29
|
-
const detailsString = sessionStorage.getItem(OpenIdConnect.SESSION_STORAGE_KEY_USER_DETAILS);
|
|
30
|
-
if (detailsString) {
|
|
31
|
-
observer.next(JSON.parse(detailsString));
|
|
32
|
-
observer.complete();
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
observer.next(null);
|
|
36
|
-
observer.complete();
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
observer.next(null);
|
|
42
|
-
observer.complete();
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
getUserDetails() {
|
|
47
|
-
return this.userDetails;
|
|
48
|
-
}
|
|
49
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: OpenIdConnectService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
50
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: OpenIdConnectService, providedIn: 'root' }); }
|
|
51
|
-
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: OpenIdConnectService, decorators: [{
|
|
53
|
-
type: Injectable,
|
|
54
|
-
args: [{
|
|
55
|
-
providedIn: 'root',
|
|
56
|
-
}]
|
|
57
|
-
}], ctorParameters: () => [] });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmlkLWNvbm5lY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvaW50ZXJjZXB0b3JzL29wZW5pZC9vcGVuaWQtY29ubmVjdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUF1QmxDLE1BQU0sT0FBTyxvQkFBb0I7SUFHN0I7UUFDSSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDM0MsSUFBSSxPQUFPLFVBQVUsS0FBSyxXQUFXLEVBQUU7Z0JBQ25DLG1IQUFtSDtnQkFDbkgsOERBQThEO2dCQUM5RCxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7b0JBQzdCLElBQUksSUFBSSxFQUFFO3dCQUNOLFFBQVEsQ0FBQyxJQUFJLENBQUM7NEJBQ1YsTUFBTSxFQUFFLElBQUk7NEJBQ1osY0FBYyxFQUFFLElBQUksQ0FBQyxRQUFROzRCQUM3QixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVU7NEJBQzFCLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVzs0QkFDMUIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLOzRCQUNqQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsb0RBQW9ELENBQUM7eUJBQy9FLENBQUMsQ0FBQztxQkFDTjt5QkFBTTt3QkFDSCxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUN2QjtvQkFDRCxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3hCLENBQUMsQ0FBQyxDQUFDO2FBQ047aUJBQU0sSUFBSSxPQUFPLGFBQWEsS0FBSyxXQUFXLEVBQUU7Z0JBQzdDLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUMxQixNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO29CQUM3RixJQUFJLGFBQWEsRUFBRTt3QkFDZixRQUFRLENBQUMsSUFBSSxDQUEyQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7d0JBQ25FLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztxQkFDdkI7eUJBQU07d0JBQ0gsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDcEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO3FCQUN2QjtnQkFDTCxDQUFDLENBQUMsQ0FBQzthQUNOO2lCQUFNO2dCQUNILFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN2QjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztpSUEzQ1Esb0JBQW9CO3FJQUFwQixvQkFBb0IsY0FGakIsTUFBTTs7MkZBRVQsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLy8gVGhpcyB2YXJpYWJsZSBpcyBkZWNsYXJlZCBpbiB0aGUgamF2YXNjcmlwdCBmaWxlIG9wZW5pZC1sb2dpbi5qc1xuLy8gYW5kIGluamVjdGVkIGluIHRoZSBlVUkgYXBwbGljYXRpb25zJyBpbmRleC5odG1sIGZpbGUsIGlmIG5lY2Vzc2FyeVxuLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmRlY2xhcmUgbGV0IE9wZW5JZENvbm5lY3Q6IGFueTtcbi8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5kZWNsYXJlIGxldCBBcGlHYXRld2F5OiBhbnk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbklkQ29ubmVjdFVzZXJEZXRhaWxzIHtcbiAgICBkb21haW4/OiBzdHJpbmc7XG4gICAgZG9tYWluVXNlcm5hbWU/OiBzdHJpbmc7XG4gICAgZmlyc3ROYW1lPzogc3RyaW5nO1xuICAgIGxhc3ROYW1lPzogc3RyaW5nO1xuICAgIGVtYWlsPzogc3RyaW5nO1xuICAgIGRlcGFydG1lbnROdW1iZXI/OiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE9wZW5JZENvbm5lY3RTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHVzZXJEZXRhaWxzOiBPYnNlcnZhYmxlPE9wZW5JZENvbm5lY3RVc2VyRGV0YWlscz47XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy51c2VyRGV0YWlscyA9IG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBBcGlHYXRld2F5ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgIEFwaUdhdGV3YXkuZ2V0VXNlcigodXNlcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh1c2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluVXNlcm5hbWU6IHVzZXIudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiB1c2VyLmdpdmVuX25hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IHVzZXIuZmFtaWx5X25hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IHVzZXIuZW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwYXJ0bWVudE51bWJlcjogdXNlclsnaHR0cHM6Ly9lY2FzLmVjLmV1cm9wYS5ldS9jbGFpbXMvZGVwYXJ0bWVudF9udW1iZXInXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgT3BlbklkQ29ubmVjdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBPcGVuSWRDb25uZWN0LmdldElkVG9rZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXRhaWxzU3RyaW5nID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShPcGVuSWRDb25uZWN0LlNFU1NJT05fU1RPUkFHRV9LRVlfVVNFUl9ERVRBSUxTKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRldGFpbHNTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoPE9wZW5JZENvbm5lY3RVc2VyRGV0YWlscz5KU09OLnBhcnNlKGRldGFpbHNTdHJpbmcpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFVzZXJEZXRhaWxzKCk6IE9ic2VydmFibGU8T3BlbklkQ29ubmVjdFVzZXJEZXRhaWxzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZXJEZXRhaWxzO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { of } from 'rxjs';
|
|
2
|
-
import { OpenIdConnectService } from './openid-connect.service';
|
|
3
|
-
export class OpenIdConnectServiceMock extends OpenIdConnectService {
|
|
4
|
-
getUserDetails() {
|
|
5
|
-
return of(null);
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmlkLWNvbm5lY3Quc2VydmljZS5tb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9pbnRlcmNlcHRvcnMvb3BlbmlkL29wZW5pZC1jb25uZWN0LnNlcnZpY2UubW9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxvQkFBb0IsRUFBNEIsTUFBTSwwQkFBMEIsQ0FBQztBQUUxRixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsb0JBQW9CO0lBQzlELGNBQWM7UUFDVixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3BlbklkQ29ubmVjdFNlcnZpY2UsIE9wZW5JZENvbm5lY3RVc2VyRGV0YWlscyB9IGZyb20gJy4vb3BlbmlkLWNvbm5lY3Quc2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBPcGVuSWRDb25uZWN0U2VydmljZU1vY2sgZXh0ZW5kcyBPcGVuSWRDb25uZWN0U2VydmljZSB7XG4gICAgZ2V0VXNlckRldGFpbHMoKTogT2JzZXJ2YWJsZTxPcGVuSWRDb25uZWN0VXNlckRldGFpbHM+IHtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/interceptors/openid/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
|
|
2
|
-
import { Observable, Subject, Subscription } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class OpenIdConnectInterceptor implements HttpInterceptor {
|
|
5
|
-
defaultMaximumRequestRetries: number;
|
|
6
|
-
constructor();
|
|
7
|
-
intercept(request: HttpRequest<any>, next: HttpHandler, retryCount?: number, retryCallback?: Subject<HttpEvent<any>>): Observable<HttpEvent<any>>;
|
|
8
|
-
protected handleErrorResponse(response: HttpErrorResponse, originalRequest: HttpRequest<any>, next: HttpHandler, retryCount: number, retryCallback: Subject<HttpEvent<any>>, subscription: Subscription): Observable<HttpEvent<any>>;
|
|
9
|
-
protected retryRequest(originalRequest: HttpRequest<any>, response: HttpErrorResponse, next: HttpHandler, retryCount: number, retryCallback: Subject<HttpEvent<any>>, subscription: Subscription): Observable<HttpEvent<any>>;
|
|
10
|
-
protected apiGatewayTokenExpired(response: HttpErrorResponse): boolean;
|
|
11
|
-
protected maximumRequestRetries(): number;
|
|
12
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<OpenIdConnectInterceptor, never>;
|
|
13
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<OpenIdConnectInterceptor>;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=openid-connect.interceptor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openid-connect.interceptor.d.ts","sourceRoot":"","sources":["../../../../src/lib/interceptors/openid/openid-connect.interceptor.ts"],"names":[],"mappings":"AACA,OAAO,EACH,iBAAiB,EACjB,SAAS,EAET,WAAW,EAEX,eAAe,EACf,WAAW,EAEd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAM,OAAO,EAAE,YAAY,EAAc,MAAM,MAAM,CAAC;;AASzE,qBACa,wBAAyB,YAAW,eAAe;IAE5D,4BAA4B,SAAK;;IAYjC,SAAS,CAGL,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EACzB,IAAI,EAAE,WAAW,EACjB,UAAU,SAAI,EAGd,aAAa,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAGxC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IA4F7B,SAAS,CAAC,mBAAmB,CACzB,QAAQ,EAAE,iBAAiB,EAG3B,eAAe,EAAE,WAAW,CAAC,GAAG,CAAC,EACjC,IAAI,EAAE,WAAW,EACjB,UAAU,QAAI,EAGd,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EACtC,YAAY,EAAE,YAAY,GAG3B,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAmC7B,SAAS,CAAC,YAAY,CAGlB,eAAe,EAAE,WAAW,CAAC,GAAG,CAAC,EACjC,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,WAAW,EACjB,UAAU,QAAI,EAGd,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EACtC,YAAY,EAAE,YAAY,GAG3B,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAwB7B,SAAS,CAAC,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO;IAStE,SAAS,CAAC,qBAAqB,IAAI,MAAM;yCAnNhC,wBAAwB;6CAAxB,wBAAwB;CA0NpC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export interface OpenIdConnectUserDetails {
|
|
4
|
-
domain?: string;
|
|
5
|
-
domainUsername?: string;
|
|
6
|
-
firstName?: string;
|
|
7
|
-
lastName?: string;
|
|
8
|
-
email?: string;
|
|
9
|
-
departmentNumber?: string;
|
|
10
|
-
}
|
|
11
|
-
export declare class OpenIdConnectService {
|
|
12
|
-
private userDetails;
|
|
13
|
-
constructor();
|
|
14
|
-
getUserDetails(): Observable<OpenIdConnectUserDetails>;
|
|
15
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<OpenIdConnectService, never>;
|
|
16
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<OpenIdConnectService>;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=openid-connect.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openid-connect.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/interceptors/openid/openid-connect.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;;AAWlC,MAAM,WAAW,wBAAwB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAGa,oBAAoB;IAC7B,OAAO,CAAC,WAAW,CAAuC;;IAwC1D,cAAc,IAAI,UAAU,CAAC,wBAAwB,CAAC;yCAzC7C,oBAAoB;6CAApB,oBAAoB;CA4ChC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
import { OpenIdConnectService, OpenIdConnectUserDetails } from './openid-connect.service';
|
|
3
|
-
export declare class OpenIdConnectServiceMock extends OpenIdConnectService {
|
|
4
|
-
getUserDetails(): Observable<OpenIdConnectUserDetails>;
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=openid-connect.service.mock.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openid-connect.service.mock.d.ts","sourceRoot":"","sources":["../../../../src/lib/interceptors/openid/openid-connect.service.mock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAM,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAE1F,qBAAa,wBAAyB,SAAQ,oBAAoB;IAC9D,cAAc,IAAI,UAAU,CAAC,wBAAwB,CAAC;CAGzD"}
|