ssi-security-commons 0.0.7 → 0.0.8
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/esm2020/lib/services/auth-interceptor.service.mjs +11 -10
- package/esm2020/lib/services/messages.service.mjs +1 -1
- package/esm2020/lib/services/session.service.mjs +25 -12
- package/fesm2015/ssi-security-commons.mjs +32 -20
- package/fesm2015/ssi-security-commons.mjs.map +1 -1
- package/fesm2020/ssi-security-commons.mjs +33 -21
- package/fesm2020/ssi-security-commons.mjs.map +1 -1
- package/lib/services/session.service.d.ts +3 -1
- package/package.json +1 -1
|
@@ -14,10 +14,10 @@ export class AuthInterceptor {
|
|
|
14
14
|
console.log('AuthInterceptor constructor');
|
|
15
15
|
}
|
|
16
16
|
intercept(request, next) {
|
|
17
|
-
console.log('intercept');
|
|
17
|
+
//console.log('intercept');
|
|
18
18
|
const token = window.localStorage.getItem('TOKEN');
|
|
19
|
-
console.log(token);
|
|
20
|
-
console.log(request);
|
|
19
|
+
//console.log(token);
|
|
20
|
+
//console.log(request);
|
|
21
21
|
let encrypt = request.headers.get('encrypted');
|
|
22
22
|
if (encrypt && encrypt === 'true') {
|
|
23
23
|
let body = request.body;
|
|
@@ -52,7 +52,7 @@ export class ResponseInterceptor {
|
|
|
52
52
|
this.sessionService = sessionService;
|
|
53
53
|
this.isRefreshing = false;
|
|
54
54
|
this.refreshTokenSubject = new BehaviorSubject(null);
|
|
55
|
-
console.log('ResponseInterceptor constructor');
|
|
55
|
+
//console.log('ResponseInterceptor constructor');
|
|
56
56
|
setTimeout(() => {
|
|
57
57
|
this.messages = this.injector.get(MessagesService);
|
|
58
58
|
});
|
|
@@ -60,7 +60,7 @@ export class ResponseInterceptor {
|
|
|
60
60
|
intercept(request, next) {
|
|
61
61
|
return next.handle(request).pipe(map((event) => {
|
|
62
62
|
if (event instanceof HttpResponse) {
|
|
63
|
-
console.log(request.headers.get('encrypted'));
|
|
63
|
+
//console.log(request.headers.get('encrypted'));
|
|
64
64
|
let encrypt = request.headers.get('encrypted');
|
|
65
65
|
if (encrypt && encrypt === 'true') {
|
|
66
66
|
event = event.clone({ body: this.decryptBody(event.body) });
|
|
@@ -98,21 +98,22 @@ export class ResponseInterceptor {
|
|
|
98
98
|
}));
|
|
99
99
|
}
|
|
100
100
|
decryptBody(body) {
|
|
101
|
-
console.log(body);
|
|
101
|
+
//console.log(body);
|
|
102
102
|
let encrypted = body.encrypted;
|
|
103
103
|
let strJson = this.cryptoService.decrypt(encrypted);
|
|
104
104
|
return JSON.parse(strJson);
|
|
105
105
|
}
|
|
106
106
|
handle401Error(request, next) {
|
|
107
|
-
console.log('handle401Error');
|
|
108
|
-
console.log(this.isRefreshing);
|
|
107
|
+
//console.log('handle401Error');
|
|
108
|
+
//console.log(this.isRefreshing);
|
|
109
109
|
if (!this.isRefreshing) {
|
|
110
110
|
this.isRefreshing = true;
|
|
111
111
|
this.refreshTokenSubject.next(null);
|
|
112
112
|
const refreshToken = this.sessionService.getRefreshToken();
|
|
113
|
-
console.log(refreshToken);
|
|
113
|
+
//console.log(refreshToken);
|
|
114
114
|
if (refreshToken) {
|
|
115
115
|
return this.sessionService.getNewToken(refreshToken).pipe(switchMap((res) => {
|
|
116
|
+
console.log('refresh token response');
|
|
116
117
|
console.log(res);
|
|
117
118
|
this.isRefreshing = false;
|
|
118
119
|
this.sessionService.setToken(res.data.accessToken);
|
|
@@ -153,4 +154,4 @@ ResponseInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0",
|
|
|
153
154
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ResponseInterceptor, decorators: [{
|
|
154
155
|
type: Injectable
|
|
155
156
|
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i2.Router }, { type: i1.CryptoService }, { type: i3.SessionService }]; } });
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcmNlcHRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3NpLXNlY3VyaXR5LWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9hdXRoLWludGVyY2VwdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUtMLGlCQUFpQixFQUNqQixZQUFZLEVBQ2IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBTyxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFPckQsTUFBTSxPQUFPLGVBQWU7SUFFMUIsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUVwRCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXpCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5ELE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVyQixJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQyxJQUFH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SyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDekUsQ0FBQztTQUNMO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUF5QixFQUFFLEtBQWE7UUFDN0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxTQUFTLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQzFCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2pDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBQyxDQUFDLEVBQUU7Z0JBQzNCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsR0FBRyxZQUFZLEdBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDeEU7UUFDSCxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztnSEFySFUsbUJBQW1CO29IQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSHR0cFJlcXVlc3QsXG4gIEh0dHBIYW5kbGVyLFxuICBIdHRwRXZlbnQsXG4gIEh0dHBJbnRlcmNlcHRvcixcbiAgSHR0cEVycm9yUmVzcG9uc2UsXG4gIEh0dHBSZXNwb25zZVxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lc3NhZ2VzU2VydmljZSB9IGZyb20gJy4vbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBDcnlwdG9TZXJ2aWNlIH0gZnJvbSAnLi9jcnlwdG8uc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjcnlwdG9TZXJ2aWNlOiBDcnlwdG9TZXJ2aWNlKSB7XG4gICAgY29uc29sZS5sb2coJ0F1dGhJbnRlcmNlcHRvciBjb25zdHJ1Y3RvcicpO1xuICB9XG5cbiAgaW50ZXJjZXB0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuXG4gICAgY29uc29sZS5sb2coJ2ludGVyY2VwdCcpO1xuXG4gICAgY29uc3QgdG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1RPS0VOJyk7XG5cbiAgICBjb25zb2xlLmxvZyh0b2tlbik7XG4gICAgY29uc29sZS5sb2cocmVxdWVzdCk7XG5cbiAgICBsZXQgZW5jcnlwdCA9IHJlcXVlc3QuaGVhZGVycy5nZXQoJ2VuY3J5cHRlZCcpO1xuICAgIGlmKGVuY3J5cHQgJiYgZW5jcnlwdCA9PT0gJ3RydWUnKXtcbiAgICAgIGxldCBib2R5ID0gcmVxdWVzdC5ib2R5O1xuICAgICAgbGV0IGJvZHlTdHIgPSBKU09OLnN0cmluZ2lmeShib2R5KTtcbiAgICAgIHZhciBuZXdCb2R5ID0ge1xuICAgICAgICBlbmNyeXB0ZWQ6IHRoaXMuY3J5cHRvU2VydmljZS5lbmNyeXB0KGJvZHlTdHIpXG4gICAgICB9XG4gICAgICByZXF1ZXN0ID0gcmVxdWVzdC5jbG9uZSh7XG4gICAgICAgIGJvZHk6IG5ld0JvZHlcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0b2tlbikge1xuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAnICsgdG9rZW4sXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCk7XG4gIH1cbn1cblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVzcG9uc2VJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgcHJpdmF0ZSBtZXNzYWdlczogTWVzc2FnZXNTZXJ2aWNlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGlzUmVmcmVzaGluZyA9IGZhbHNlO1xuICBwcml2YXRlIHJlZnJlc2hUb2tlblN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBjcnlwdG9TZXJ2aWNlOiBDcnlwdG9TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2Vzc2lvblNlcnZpY2U6IFNlc3Npb25TZXJ2aWNlKSB7XG4gICAgY29uc29sZS5sb2coJ1Jlc3BvbnNlSW50ZXJjZXB0b3IgY29uc3RydWN0b3InKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubWVzc2FnZXMgPSB0aGlzLmluamVjdG9yLmdldChNZXNzYWdlc1NlcnZpY2UpO1xuICAgIH0pXG4gIH1cblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG5cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShcbiAgICAgIG1hcCgoZXZlbnQ6IEh0dHBFdmVudDxhbnk+KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhyZXF1ZXN0LmhlYWRlcnMuZ2V0KCdlbmNyeXB0ZWQnKSk7XG4gICAgICAgICAgICBsZXQgZW5jcnlwdCA9IHJlcXVlc3QuaGVhZGVycy5nZXQoJ2VuY3J5cHRlZCcpO1xuICAgICAgICAgICAgaWYoZW5jcnlwdCAmJiBlbmNyeXB0ID09PSAndHJ1ZScpe1xuICAgICAgICAgICAgICBldmVudCA9IGV2ZW50LmNsb25lKHtib2R5OiB0aGlzLmRlY3J5cHRCb2R5KGV2ZW50LmJvZHkpfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBldmVudDtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIGxldCBuZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgIC8qbGV0IGVuY3J5cHQgPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCdlbmNyeXB0ZWQnKTtcbiAgICAgICAgICAgIGlmKGVuY3J5cHQgJiYgZW5jcnlwdCA9PT0gJ3RydWUnKXtcbiAgICAgICAgICAgICAgbmVycm9yID0gbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtcbiAgICAgICAgICAgICAgICBlcnJvcjogdGhpcy5kZWNyeXB0Qm9keShlcnJvci5lcnJvciksXG4gICAgICAgICAgICAgICAgaGVhZGVyczogZXJyb3IuaGVhZGVycyxcbiAgICAgICAgICAgICAgICBzdGF0dXM6IGVycm9yLnN0YXR1cyxcbiAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiBlcnJvci5zdGF0dXNUZXh0LFxuICAgICAgICAgICAgICAgIHVybDogZXJyb3IudXJsIHx8IHJlcXVlc3QudXJsV2l0aFBhcmFtcyB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSovXG4gICAgICAgICAgICBpZiAobmVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMucm91dGVyLnVybCk7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlci51cmwgIT0gJy9sb2dpbicgJiYgdGhpcy5yb3V0ZXIudXJsLmluZGV4T2YoJy9sb2dpbicpPDApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCc0MDEtLS0+JysgcmVxdWVzdC51cmwpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlNDAxRXJyb3IocmVxdWVzdCwgbmV4dCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IobmVycm9yKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcz8uc2hvd0Vycm9yTWVzc2FnZShuZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSkgYXMgT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj47XG4gIH1cblxuICBkZWNyeXB0Qm9keShib2R5OiBhbnkpOiBhbnkge1xuICAgIGNvbnNvbGUubG9nKGJvZHkpO1xuICAgIGxldCBlbmNyeXB0ZWQgPSBib2R5LmVuY3J5cHRlZDtcbiAgICBsZXQgc3RySnNvbiA9IHRoaXMuY3J5cHRvU2VydmljZS5kZWNyeXB0KGVuY3J5cHRlZCk7XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RySnNvbik7XG4gIH1cblxuXG4gIHByaXZhdGUgaGFuZGxlNDAxRXJyb3IocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpIHtcbiAgICBjb25zb2xlLmxvZygnaGFuZGxlNDAxRXJyb3InKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmlzUmVmcmVzaGluZyk7XG4gICAgaWYgKCF0aGlzLmlzUmVmcmVzaGluZykge1xuICAgICAgICB0aGlzLmlzUmVmcmVzaGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMucmVmcmVzaFRva2VuU3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldFJlZnJlc2hUb2tlbigpO1xuICAgICAgICBjb25zb2xlLmxvZyhyZWZyZXNoVG9rZW4pO1xuICAgICAgICBpZiAocmVmcmVzaFRva2VuKXtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldE5ld1Rva2VuKHJlZnJlc2hUb2tlbikucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0VG9rZW4ocmVzLmRhdGEuYWNjZXNzVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldFJlZnJlc2hUb2tlbihyZXMuZGF0YS5yZWZyZXNoVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QubmV4dChyZXMuZGF0YS5hY2Nlc3NUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZSh0aGlzLmFkZFRva2VuSGVhZGVyKHJlcXVlc3QsIHJlcy5kYXRhLmFjY2Vzc1Rva2VuKSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2UubG9nb3V0KCk7XG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ29Ub0xvZ2luKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0LnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIodG9rZW4gPT4gdG9rZW4gIT09IG51bGwpLFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgodG9rZW4pID0+IG5leHQuaGFuZGxlKHRoaXMuYWRkVG9rZW5IZWFkZXIocmVxdWVzdCwgdG9rZW4pKSlcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZFRva2VuSGVhZGVyKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIHRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVxdWVzdC5jbG9uZSh7IGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmVhcmVyICcgKyB0b2tlbikgfSk7XG4gIH1cblxuICBwcml2YXRlIGdvVG9Mb2dpbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldExvZ2luVXJsKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgY29uc3QgbG9naW5VcmwgPSByZXMuZGF0YTtcbiAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgaWYgKHVybC5pbmRleE9mKGxvZ2luVXJsKTwwKSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbG9naW5VcmwgKyAnP2NvbnRpbnVlPScrZW5jb2RlVVJJQ29tcG9uZW50KHVybCk7XG4gICAgICB9XG4gICAgfSwgKGVycikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIH0pO1xuICB9XG5cbn1cblxuXG5cblxuIl19
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcmNlcHRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3NpLXNlY3VyaXR5LWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9hdXRoLWludGVyY2VwdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUtMLGlCQUFpQixFQUNqQixZQUFZLEVBQ2IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBTyxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFPckQsTUFBTSxPQUFPLGVBQWU7SUFFMUIsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUVwRCwyQkFBMkI7UUFFM0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkQscUJBQXFCO1FBQ3JCLHVCQUF1QjtRQUV2QixJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQyxJQUFHLE9BQU8sSUFBSSxPQUFPLEtBQUssTUFBTSxFQUFDO1lBQy9CLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDeEIsSUFBSSxP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QUMsQ0FBQztJQUM3RixDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2hELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztZQUMxQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNqQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUMsQ0FBQyxFQUFFO2dCQUMzQixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLEdBQUcsWUFBWSxHQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3hFO1FBQ0gsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Z0hBdEhVLG1CQUFtQjtvSEFBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEh0dHBSZXF1ZXN0LFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cEV2ZW50LFxuICBIdHRwSW50ZXJjZXB0b3IsXG4gIEh0dHBFcnJvclJlc3BvbnNlLFxuICBIdHRwUmVzcG9uc2Vcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNZXNzYWdlc1NlcnZpY2UgfSBmcm9tICcuL21lc3NhZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3J5cHRvU2VydmljZSB9IGZyb20gJy4vY3J5cHRvLnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uLnNlcnZpY2UnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY3J5cHRvU2VydmljZTogQ3J5cHRvU2VydmljZSkge1xuICAgIGNvbnNvbGUubG9nKCdBdXRoSW50ZXJjZXB0b3IgY29uc3RydWN0b3InKTtcbiAgfVxuXG4gIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcblxuICAgIC8vY29uc29sZS5sb2coJ2ludGVyY2VwdCcpO1xuXG4gICAgY29uc3QgdG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1RPS0VOJyk7XG5cbiAgICAvL2NvbnNvbGUubG9nKHRva2VuKTtcbiAgICAvL2NvbnNvbGUubG9nKHJlcXVlc3QpO1xuXG4gICAgbGV0IGVuY3J5cHQgPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCdlbmNyeXB0ZWQnKTtcbiAgICBpZihlbmNyeXB0ICYmIGVuY3J5cHQgPT09ICd0cnVlJyl7XG4gICAgICBsZXQgYm9keSA9IHJlcXVlc3QuYm9keTtcbiAgICAgIGxldCBib2R5U3RyID0gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG4gICAgICB2YXIgbmV3Qm9keSA9IHtcbiAgICAgICAgZW5jcnlwdGVkOiB0aGlzLmNyeXB0b1NlcnZpY2UuZW5jcnlwdChib2R5U3RyKVxuICAgICAgfVxuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgICBib2R5OiBuZXdCb2R5XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodG9rZW4pIHtcbiAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHtcbiAgICAgICAgc2V0SGVhZGVyczoge1xuICAgICAgICAgIEF1dGhvcml6YXRpb246ICdCZWFyZXIgJyArIHRva2VuLFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xuICB9XG59XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlc3BvbnNlSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gIHByaXZhdGUgbWVzc2FnZXM6IE1lc3NhZ2VzU2VydmljZSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBpc1JlZnJlc2hpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW5TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgY3J5cHRvU2VydmljZTogQ3J5cHRvU2VydmljZSxcbiAgICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlOiBTZXNzaW9uU2VydmljZSkge1xuICAgIC8vY29uc29sZS5sb2coJ1Jlc3BvbnNlSW50ZXJjZXB0b3IgY29uc3RydWN0b3InKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubWVzc2FnZXMgPSB0aGlzLmluamVjdG9yLmdldChNZXNzYWdlc1NlcnZpY2UpO1xuICAgIH0pXG4gIH1cblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG5cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShcbiAgICAgIG1hcCgoZXZlbnQ6IEh0dHBFdmVudDxhbnk+KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKHJlcXVlc3QuaGVhZGVycy5nZXQoJ2VuY3J5cHRlZCcpKTtcbiAgICAgICAgICAgIGxldCBlbmNyeXB0ID0gcmVxdWVzdC5oZWFkZXJzLmdldCgnZW5jcnlwdGVkJyk7XG4gICAgICAgICAgICBpZihlbmNyeXB0ICYmIGVuY3J5cHQgPT09ICd0cnVlJyl7XG4gICAgICAgICAgICAgIGV2ZW50ID0gZXZlbnQuY2xvbmUoe2JvZHk6IHRoaXMuZGVjcnlwdEJvZHkoZXZlbnQuYm9keSl9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgbGV0IG5lcnJvciA9IGVycm9yO1xuICAgICAgICAgICAgLypsZXQgZW5jcnlwdCA9IHJlcXVlc3QuaGVhZGVycy5nZXQoJ2VuY3J5cHRlZCcpO1xuICAgICAgICAgICAgaWYoZW5jcnlwdCAmJiBlbmNyeXB0ID09PSAndHJ1ZScpe1xuICAgICAgICAgICAgICBuZXJyb3IgPSBuZXcgSHR0cEVycm9yUmVzcG9uc2Uoe1xuICAgICAgICAgICAgICAgIGVycm9yOiB0aGlzLmRlY3J5cHRCb2R5KGVycm9yLmVycm9yKSxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBlcnJvci5oZWFkZXJzLFxuICAgICAgICAgICAgICAgIHN0YXR1czogZXJyb3Iuc3RhdHVzLFxuICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6IGVycm9yLnN0YXR1c1RleHQsXG4gICAgICAgICAgICAgICAgdXJsOiBlcnJvci51cmwgfHwgcmVxdWVzdC51cmxXaXRoUGFyYW1zIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9Ki9cbiAgICAgICAgICAgIGlmIChuZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5yb3V0ZXIudXJsKTtcbiAgICAgICAgICAgICAgaWYgKHRoaXMucm91dGVyLnVybCAhPSAnL2xvZ2luJyAmJiB0aGlzLnJvdXRlci51cmwuaW5kZXhPZignL2xvZ2luJyk8MCkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJzQwMS0tLT4nKyByZXF1ZXN0LnVybCk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGU0MDFFcnJvcihyZXF1ZXN0LCBuZXh0KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihuZXJyb3IpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzPy5zaG93RXJyb3JNZXNzYWdlKG5lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKSBhcyBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PjtcbiAgfVxuXG4gIGRlY3J5cHRCb2R5KGJvZHk6IGFueSk6IGFueSB7XG4gICAgLy9jb25zb2xlLmxvZyhib2R5KTtcbiAgICBsZXQgZW5jcnlwdGVkID0gYm9keS5lbmNyeXB0ZWQ7XG4gICAgbGV0IHN0ckpzb24gPSB0aGlzLmNyeXB0b1NlcnZpY2UuZGVjcnlwdChlbmNyeXB0ZWQpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKHN0ckpzb24pO1xuICB9XG5cblxuICBwcml2YXRlIGhhbmRsZTQwMUVycm9yKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgLy9jb25zb2xlLmxvZygnaGFuZGxlNDAxRXJyb3InKTtcbiAgICAvL2NvbnNvbGUubG9nKHRoaXMuaXNSZWZyZXNoaW5nKTtcbiAgICBpZiAoIXRoaXMuaXNSZWZyZXNoaW5nKSB7XG4gICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0UmVmcmVzaFRva2VuKCk7XG4gICAgICAgIC8vY29uc29sZS5sb2cocmVmcmVzaFRva2VuKTtcbiAgICAgICAgaWYgKHJlZnJlc2hUb2tlbil7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXNzaW9uU2VydmljZS5nZXROZXdUb2tlbihyZWZyZXNoVG9rZW4pLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygncmVmcmVzaCB0b2tlbiByZXNwb25zZScpO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUmVmcmVzaGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldFRva2VuKHJlcy5kYXRhLmFjY2Vzc1Rva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5zZXRSZWZyZXNoVG9rZW4ocmVzLmRhdGEucmVmcmVzaFRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQocmVzLmRhdGEuYWNjZXNzVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUodGhpcy5hZGRUb2tlbkhlYWRlcihyZXF1ZXN0LCByZXMuZGF0YS5hY2Nlc3NUb2tlbikpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUmVmcmVzaGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLmxvZ291dCgpO1xuICAgICAgICAgICAgICAgICAgICAvL3RoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ2luJ10pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdvVG9Mb2dpbigpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuU3ViamVjdC5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKHRva2VuID0+IHRva2VuICE9PSBudWxsKSxcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHRva2VuKSA9PiBuZXh0LmhhbmRsZSh0aGlzLmFkZFRva2VuSGVhZGVyKHJlcXVlc3QsIHRva2VuKSkpXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRUb2tlbkhlYWRlcihyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCB0b2tlbjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlcXVlc3QuY2xvbmUoeyBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgJ0JlYXJlciAnICsgdG9rZW4pIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnb1RvTG9naW4oKTogdm9pZCB7XG4gICAgdGhpcy5zZXNzaW9uU2VydmljZS5nZXRMb2dpblVybCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgIGNvbnN0IGxvZ2luVXJsID0gcmVzLmRhdGE7XG4gICAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgIGlmICh1cmwuaW5kZXhPZihsb2dpblVybCk8MCkge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGxvZ2luVXJsICsgJz9jb250aW51ZT0nK2VuY29kZVVSSUNvbXBvbmVudCh1cmwpO1xuICAgICAgfVxuICAgIH0sIChlcnIpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9KTtcbiAgfVxuXG59XG5cblxuXG5cbiJdfQ==
|
|
@@ -169,4 +169,4 @@ MessagesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", vers
|
|
|
169
169
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MessagesService, decorators: [{
|
|
170
170
|
type: Injectable
|
|
171
171
|
}], ctorParameters: function () { return [{ type: i1.SessionService }, { type: i2.MatSnackBar }, { type: i3.MatDialog }]; } });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NzaS1zZWN1cml0eS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvbWVzc2FnZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLDRDQUE0QztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBSzFELE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQ1MsSUFBb0I7SUFDM0IsMEJBQTBCO0lBQ2xCLFFBQXFCLEVBQ3RCLE1BQWlCO1FBSGpCLFNBQUksR0FBSixJQUFJLENBQWdCO1FBRW5CLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBVztJQUN0QixDQUFDO0lBR0wsa0RBQWtEO0lBQ2xELGdCQUFnQixDQUFDLEtBQXdCO1FBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE1BQU0sSUFBSSxHQUFRLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2hELFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNwQixLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUIsTUFBTTthQUNQO1lBQ0QsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDUixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUNwRCxNQUFNO2FBQ1A7WUFDRCxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLE1BQU07YUFDUDtZQUNELEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztnQkFDdEUsTUFBTTthQUNQO1lBQ0QsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDUixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNyQyxNQUFNO2FBQ1A7WUFDRCxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUNsRSxNQUFNO2FBQ1A7WUFDRCxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUNsRSxNQUFNO2FBQ1A7WUFDRCxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JDLE1BQU07YUFDUDtZQUNELEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztnQkFDeEUsTUFBTTthQUNQO1lBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNQLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQzVELE1BQU07YUFDUDtZQUNELEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDNUQsTUFBTTthQUNQO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBVTtRQUMxQixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzdGLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM1RCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFTO1FBQ3ZCLHNDQUFzQztRQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLG9DQUFvQztRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQzFCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2pDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBQyxDQUFDLEVBQUU7Z0JBQzNCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsR0FBRyxZQUFZLEdBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDeEU7UUFDSCxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJO0lBQ04sQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQVUsRUFBRSxJQUFTO1FBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUU7WUFDL0IsT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO1lBQ3RDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQzNCO2dCQUFDLE9BQU8sR0FBRyxPQUFPLEdBQUcsTUFBTSxHQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO2FBQUM7U0FDeEY7YUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQzlCLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUM5QixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUMzQjtnQkFBQyxPQUFPLEdBQUcsT0FBTyxHQUFHLE1BQU0sR0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxHQUFDLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQzthQUFDO1NBQ3hGO2FBQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ3pCLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ3hCLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQzNCO2dCQUFDLE9BQU8sR0FBRyxPQUFPLEdBQUcsTUFBTSxHQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO2FBQUM7U0FDeEY7YUFBTTtZQUNMLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQy9CLFlBQVksRUFBRSxJQUFJO1lBQ2xCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRTtTQUN0RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQVksRUFBRSxhQUFvQixFQUFFO1FBQ2pELE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUU7Z0JBQ3JDLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFVBQVU7Z0JBQ1YsZ0JBQWdCLEVBQUUsS0FBSzthQUN4QixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxPQUFZO1FBQ2pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUM7SUFDckMsQ0FBQztJQUVELGtEQUFrRDtJQUNsRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUM3QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRCxNQUFNLFVBQVUsR0FBRztnQkFDakIsZ0JBQWdCLEVBQUc7b0JBQ2pCLFlBQVksRUFBRSx3Q0FBd0M7b0JBQ3RELFNBQVMsRUFBRSxvQkFBb0I7b0JBQy9CLEtBQUssRUFBRSxlQUFlO29CQUN0QixPQUFPLEVBQUUsa0RBQWtEO29CQUMzRCxJQUFJLEVBQUMsTUFBTTtvQkFDWCxXQUFXLEVBQUMseURBQXlEO29CQUNyRSxnQkFBZ0IsRUFBQyxvRUFBb0U7aUJBQ3RGO2FBQ0YsQ0FBQztZQUNGLE1BQU0sVUFBVSxHQUFHO2dCQUNqQixnQkFBZ0IsRUFBRTtvQkFDaEIsWUFBWSxFQUFFLG1EQUFtRDtvQkFDakUsU0FBUyxFQUFFLHVCQUF1QjtvQkFDbEMsS0FBSyxFQUFFLGVBQWU7b0JBQ3RCLE9BQU8sRUFBRSx5REFBeUQ7b0JBQ2xFLElBQUksRUFBRSxRQUFRO29CQUNkLFdBQVcsRUFBRSw2REFBNkQ7b0JBQzFFLGdCQUFnQixFQUFFLGdFQUFnRTtpQkFDbkY7YUFDRixDQUFDO1lBQ0YsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFHLElBQUksRUFBRTtnQkFDdkIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFVBQVUsQ0FBQzthQUN2QztpQkFBTTtnQkFDTCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxDQUFDO2FBQ3ZDO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDOzs0R0FoS1UsZUFBZTtnSEFBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBxdW90ZS1wcm9wcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG4vLyBpbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWxlcnRDb21wb25lbnQgfSBmcm9tICcuLi9hbGVydC9hbGVydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VzU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRvck1lc3NhZ2VzOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGF1dGg6IFNlc3Npb25TZXJ2aWNlLFxuICAgIC8vIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nXG4gICkgeyB9XG5cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxpbmVzLXBlci1mdW5jdGlvblxuICBzaG93RXJyb3JNZXNzYWdlKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdlcnJvcjogJywgZXJyb3IpO1xuICAgIGNvbnN0IG1zZ3M6IGFueSA9IHRoaXMuZ2V0SW50ZXJjZXB0b3JNZXNzYWdlcygpO1xuICAgIHN3aXRjaCAoZXJyb3Iuc3RhdHVzKSB7XG4gICAgICBjYXNlIDMwMjoge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTbmFja0Vycm9yKGVycm9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDQwMDoge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKGVycm9yLm1lc3NhZ2UsIFsnc25hY2stZXJyb3InXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MDM6IHtcbiAgICAgICAgdGhpcy5nb05hdmlnYXRlTG9naW4obXNncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MDQ6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3Iubm90X2ZvdW5kLCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgNDA5OiB7XG4gICAgICAgIHRoaXMubWVzc2FnZUFsZXJ0RGlhbG9nKGVycm9yLCBtc2dzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDQxMjoge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKGVycm9yLmVycm9yLnJlc3BvbnNlTWVzc2FnZSwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDQyODoge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKGVycm9yLmVycm9yLnJlc3BvbnNlTWVzc2FnZSwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDUwMDoge1xuICAgICAgICB0aGlzLm1lc3NhZ2VBbGVydERpYWxvZyhlcnJvciwgbXNncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA1MDM6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3IudW5hdmFpbGFibGUsIFsnc25hY2stZXJyb3InXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAtMToge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKG1zZ3MuYXV0aF9pbnRlcmNlcHRvci5jb25uZWN0aW9uX2Vycm9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDA6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29ubmVjdGlvbl9lcnJvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1lc3NhZ2VTbmFja0Vycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvci5lcnJvciAmJiBlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UgPyBlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UgOlxuICAgICAgZXJyb3IuZXJyb3IubWVzc2FnZSA/IGVycm9yLmVycm9yLm1lc3NhZ2UgOiBlcnJvci5tZXNzYWdlO1xuICAgIHRoaXMuc2hvd1NuYWNrRXJyb3IoZXJyb3JNZXNzYWdlLCBbJ3NuYWNrLWVycm9yJ10pO1xuICB9XG5cbiAgZ29OYXZpZ2F0ZUxvZ2luKG1zZ3M6IGFueSk6IHZvaWQge1xuICAgIC8vIGlmICh0aGlzLnJvdXRlci51cmwgIT09ICcvbG9naW4nKSB7XG4gICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3Iuc2Vzc2lvbl9sb3N0LCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ2luJ10pO1xuICAgIHRoaXMuYXV0aC5kZXN0cm95Q3JlZGVudGlhbHMoKTtcbiAgICB0aGlzLmF1dGguZ2V0TG9naW5VcmwoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICBjb25zdCBsb2dpblVybCA9IHJlcy5kYXRhO1xuICAgICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICBpZiAodXJsLmluZGV4T2YobG9naW5VcmwpPDApIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBsb2dpblVybCArICc/Y29udGludWU9JytlbmNvZGVVUklDb21wb25lbnQodXJsKTtcbiAgICAgIH1cbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgfSk7XG4gICAgLy8gfVxuICB9XG5cbiAgbWVzc2FnZUFsZXJ0RGlhbG9nKGVycm9yOiBhbnksIG1zZ3M6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICBsZXQgbWVzc2FnZSA9ICcnO1xuICAgIGlmIChlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UgPSBlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2U7XG4gICAgICBpZiAoZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQpXG4gICAgICB7bWVzc2FnZSA9IG1lc3NhZ2UgKyAnXFxuXFxuJyttc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29kZSsnOiAnICsgZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQ7fVxuICAgIH0gZWxzZSBpZiAoZXJyb3IuZXJyb3IubWVzc2FnZSkge1xuICAgICAgbWVzc2FnZSA9IGVycm9yLmVycm9yLm1lc3NhZ2U7XG4gICAgICBpZiAoZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQpXG4gICAgICB7bWVzc2FnZSA9IG1lc3NhZ2UgKyAnXFxuXFxuJyttc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29kZSsnOiAnICsgZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQ7fVxuICAgIH0gIGVsc2UgaWYgKGVycm9yLm1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgaWYgKGVycm9yLmVycm9yLmV4Y2VwdGlvbklkKVxuICAgICAge21lc3NhZ2UgPSBtZXNzYWdlICsgJ1xcblxcbicrbXNncy5hdXRoX2ludGVyY2VwdG9yLmNvZGUrJzogJyArIGVycm9yLmVycm9yLmV4Y2VwdGlvbklkO31cbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZSA9IG1zZ3MuYXV0aF9pbnRlcmNlcHRvci5tZXNzYWdlO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZy5vcGVuKEFsZXJ0Q29tcG9uZW50LCB7XG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBkYXRhOiB7IHRpdGxlOiBtc2dzLmF1dGhfaW50ZXJjZXB0b3IudGl0bGUsIG1lc3NhZ2UgfVxuICAgIH0pO1xuICB9XG5cbiAgc2hvd1NuYWNrRXJyb3IobWVzc2FnZTogYW55LCBwYW5lbENsYXNzOiBhbnlbXSA9IFtdKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2cobWVzc2FnZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwgdW5kZWZpbmVkLCB7XG4gICAgICAgIGR1cmF0aW9uOiA1MDAwLFxuICAgICAgICBwYW5lbENsYXNzLFxuICAgICAgICB2ZXJ0aWNhbFBvc2l0aW9uOiAndG9wJ1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRJbnRlcmNlcHRvck1lc3NhZ2VzKG1lc3NhZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JNZXNzYWdlcyA9IG1lc3NhZ2U7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxpbmVzLXBlci1mdW5jdGlvblxuICBnZXRJbnRlcmNlcHRvck1lc3NhZ2VzKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmludGVyY2VwdG9yTWVzc2FnZXMpIHtcbiAgICAgIGNvbnN0IGxhbmcgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0xBTkcnKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VzRW4gPSB7XG4gICAgICAgIGF1dGhfaW50ZXJjZXB0b3IgOiB7XG4gICAgICAgICAgc2Vzc2lvbl9sb3N0IDonU2Vzc2lvbiBsb3N0LCB5b3UgaGF2ZSB0byBsb2dpbiBhZ2Fpbi4nLFxuICAgICAgICAgIG5vdF9mb3VuZDogJ1Jlc291cmNlIG5vdCBmb3VuZCcsXG4gICAgICAgICAgdGl0bGU6ICdXZSBhcmUgc29ycnkhJyxcbiAgICAgICAgICBtZXNzYWdlOiAnV2UgaGFkIGEgcHJvYmxlbSB0cnlpbmcgdG8gcHJvY2VzcyB5b3VyIHJlcXVlc3QuJyxcbiAgICAgICAgICBjb2RlOidDb2RlJyxcbiAgICAgICAgICB1bmF2YWlsYWJsZTonU2VydmljZSB1bmF2YWlsYWJsZSwgcGxlYXNlIHRyeSBhZ2FpbiBpbiBhIGZldyBtaW51dGVzLicsXG4gICAgICAgICAgY29ubmVjdGlvbl9lcnJvcjonQ291bGQgbm90IGNvbm5lY3QgdG8gc2VydmVyLCBwbGVhc2UgY2hlY2sgeW91ciBuZXR3b3JrIGNvbm5lY3Rpb24uJ1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgbWVzc2FnZXNFcyA9IHtcbiAgICAgICAgYXV0aF9pbnRlcmNlcHRvcjoge1xuICAgICAgICAgIHNlc3Npb25fbG9zdDogJ1N1IHNlc2nDs24gZXhwaXLDsywgZGViZSBpbmljaWFyIHNlc2nDs24gbnVldmFtZW50ZS4nLFxuICAgICAgICAgIG5vdF9mb3VuZDogJ1JlY3Vyc28gbm8gZW5jb250cmFkbycsXG4gICAgICAgICAgdGl0bGU6ICfCoUxvIHNlbnRpbW9zIScsXG4gICAgICAgICAgbWVzc2FnZTogJ1R1dmltb3MgdW4gcHJvYmxlbWEgYWwgdHJhdGFyIGRlIHByb2Nlc2FyIHN1IHNvbGljaXR1ZC4nLFxuICAgICAgICAgIGNvZGU6ICdDw7NkaWdvJyxcbiAgICAgICAgICB1bmF2YWlsYWJsZTogJ1NlcnZpY2lvIG5vIGRpc3BvbmlibGUsIGludMOpbnRlbG8gZGUgbnVldm8gZW4gdW5vcyBtaW51dG9zLicsXG4gICAgICAgICAgY29ubmVjdGlvbl9lcnJvcjogJ05vIHNlIHB1ZG8gY29uZWN0YXIgYWwgc2Vydmlkb3IsIHZlcmlmaXF1ZSBzdSBjb25leGnDs24gZGUgcmVkLidcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGlmIChsYW5nICYmIGxhbmc9PT0nZW4nKSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0b3JNZXNzYWdlcyA9IG1lc3NhZ2VzRW47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmludGVyY2VwdG9yTWVzc2FnZXMgPSBtZXNzYWdlc0VzO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbnRlcmNlcHRvck1lc3NhZ2VzO1xuICB9XG5cbn1cbiJdfQ==
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NzaS1zZWN1cml0eS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvbWVzc2FnZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLDRDQUE0QztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBSzFELE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQ1MsSUFBb0I7SUFDM0IsMEJBQTBCO0lBQ2xCLFFBQXFCLEVBQ3RCLE1BQWlCO1FBSGpCLFNBQUksR0FBSixJQUFJLENBQWdCO1FBRW5CLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBVztJQUN0QixDQUFDO0lBR0wsa0RBQWtEO0lBQ2xELGdCQUFnQixDQUFDLEtBQXdCO1FBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE1BQU0sSUFBSSxHQUFRLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2hELFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNwQixLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUIsTUFBTTthQUNQO1lBQ0QsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDUixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUNwRCxNQUFNO2FBQ1A7WUFDRCxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLE1BQU07YUFDUDtZQUNELEtBQUss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VUFBVSxHQUFHO2dCQUNqQixnQkFBZ0IsRUFBRTtvQkFDaEIsWUFBWSxFQUFFLG1EQUFtRDtvQkFDakUsU0FBUyxFQUFFLHVCQUF1QjtvQkFDbEMsS0FBSyxFQUFFLGVBQWU7b0JBQ3RCLE9BQU8sRUFBRSx5REFBeUQ7b0JBQ2xFLElBQUksRUFBRSxRQUFRO29CQUNkLFdBQVcsRUFBRSw2REFBNkQ7b0JBQzFFLGdCQUFnQixFQUFFLGdFQUFnRTtpQkFDbkY7YUFDRixDQUFDO1lBQ0YsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFHLElBQUksRUFBRTtnQkFDdkIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFVBQVUsQ0FBQzthQUN2QztpQkFBTTtnQkFDTCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxDQUFDO2FBQ3ZDO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDOzs0R0FoS1UsZUFBZTtnSEFBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGluZXMtcGVyLWZ1bmN0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBxdW90ZS1wcm9wcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG4vLyBpbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWxlcnRDb21wb25lbnQgfSBmcm9tICcuLi9hbGVydC9hbGVydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VzU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRvck1lc3NhZ2VzOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGF1dGg6IFNlc3Npb25TZXJ2aWNlLFxuICAgIC8vIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nXG4gICkgeyB9XG5cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxpbmVzLXBlci1mdW5jdGlvblxuICBzaG93RXJyb3JNZXNzYWdlKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdlcnJvcjogJywgZXJyb3IpO1xuICAgIGNvbnN0IG1zZ3M6IGFueSA9IHRoaXMuZ2V0SW50ZXJjZXB0b3JNZXNzYWdlcygpO1xuICAgIHN3aXRjaCAoZXJyb3Iuc3RhdHVzKSB7XG4gICAgICBjYXNlIDMwMjoge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTbmFja0Vycm9yKGVycm9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDQwMDoge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKGVycm9yLm1lc3NhZ2UsIFsnc25hY2stZXJyb3InXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MDM6IHtcbiAgICAgICAgdGhpcy5nb05hdmlnYXRlTG9naW4obXNncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MDQ6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3Iubm90X2ZvdW5kLCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgNDA5OiB7XG4gICAgICAgIHRoaXMubWVzc2FnZUFsZXJ0RGlhbG9nKGVycm9yLCBtc2dzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDQxMjoge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKGVycm9yLmVycm9yLnJlc3BvbnNlTWVzc2FnZSwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDQyODoge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKGVycm9yLmVycm9yLnJlc3BvbnNlTWVzc2FnZSwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDUwMDoge1xuICAgICAgICB0aGlzLm1lc3NhZ2VBbGVydERpYWxvZyhlcnJvciwgbXNncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA1MDM6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3IudW5hdmFpbGFibGUsIFsnc25hY2stZXJyb3InXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAtMToge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKG1zZ3MuYXV0aF9pbnRlcmNlcHRvci5jb25uZWN0aW9uX2Vycm9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDA6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29ubmVjdGlvbl9lcnJvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1lc3NhZ2VTbmFja0Vycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvci5lcnJvciAmJiBlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UgPyBlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UgOlxuICAgICAgZXJyb3IuZXJyb3IubWVzc2FnZSA/IGVycm9yLmVycm9yLm1lc3NhZ2UgOiBlcnJvci5tZXNzYWdlO1xuICAgIHRoaXMuc2hvd1NuYWNrRXJyb3IoZXJyb3JNZXNzYWdlLCBbJ3NuYWNrLWVycm9yJ10pO1xuICB9XG5cbiAgZ29OYXZpZ2F0ZUxvZ2luKG1zZ3M6IGFueSk6IHZvaWQge1xuICAgIC8vIGlmICh0aGlzLnJvdXRlci51cmwgIT09ICcvbG9naW4nKSB7XG4gICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3Iuc2Vzc2lvbl9sb3N0LCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ2luJ10pO1xuICAgIHRoaXMuYXV0aC5kZXN0cm95Q3JlZGVudGlhbHMoKTtcbiAgICB0aGlzLmF1dGguZ2V0TG9naW5VcmwoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICBjb25zdCBsb2dpblVybCA9IHJlcy5kYXRhO1xuICAgICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICBpZiAodXJsLmluZGV4T2YobG9naW5VcmwpPDApIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBsb2dpblVybCArICc/Y29udGludWU9JytlbmNvZGVVUklDb21wb25lbnQodXJsKTtcbiAgICAgIH1cbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgfSk7XG4gICAgLy8gfVxuICB9XG5cbiAgbWVzc2FnZUFsZXJ0RGlhbG9nKGVycm9yOiBhbnksIG1zZ3M6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICBsZXQgbWVzc2FnZSA9ICcnO1xuICAgIGlmIChlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UgPSBlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2U7XG4gICAgICBpZiAoZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQpXG4gICAgICB7bWVzc2FnZSA9IG1lc3NhZ2UgKyAnXFxuXFxuJyttc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29kZSsnOiAnICsgZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQ7fVxuICAgIH0gZWxzZSBpZiAoZXJyb3IuZXJyb3IubWVzc2FnZSkge1xuICAgICAgbWVzc2FnZSA9IGVycm9yLmVycm9yLm1lc3NhZ2U7XG4gICAgICBpZiAoZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQpXG4gICAgICB7bWVzc2FnZSA9IG1lc3NhZ2UgKyAnXFxuXFxuJyttc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29kZSsnOiAnICsgZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQ7fVxuICAgIH0gIGVsc2UgaWYgKGVycm9yLm1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgaWYgKGVycm9yLmVycm9yLmV4Y2VwdGlvbklkKVxuICAgICAge21lc3NhZ2UgPSBtZXNzYWdlICsgJ1xcblxcbicrbXNncy5hdXRoX2ludGVyY2VwdG9yLmNvZGUrJzogJyArIGVycm9yLmVycm9yLmV4Y2VwdGlvbklkO31cbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZSA9IG1zZ3MuYXV0aF9pbnRlcmNlcHRvci5tZXNzYWdlO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZy5vcGVuKEFsZXJ0Q29tcG9uZW50LCB7XG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBkYXRhOiB7IHRpdGxlOiBtc2dzLmF1dGhfaW50ZXJjZXB0b3IudGl0bGUsIG1lc3NhZ2UgfVxuICAgIH0pO1xuICB9XG5cbiAgc2hvd1NuYWNrRXJyb3IobWVzc2FnZTogYW55LCBwYW5lbENsYXNzOiBhbnlbXSA9IFtdKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2cobWVzc2FnZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwgdW5kZWZpbmVkLCB7XG4gICAgICAgIGR1cmF0aW9uOiA1MDAwLFxuICAgICAgICBwYW5lbENsYXNzLFxuICAgICAgICB2ZXJ0aWNhbFBvc2l0aW9uOiAndG9wJ1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRJbnRlcmNlcHRvck1lc3NhZ2VzKG1lc3NhZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JNZXNzYWdlcyA9IG1lc3NhZ2U7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxpbmVzLXBlci1mdW5jdGlvblxuICBnZXRJbnRlcmNlcHRvck1lc3NhZ2VzKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmludGVyY2VwdG9yTWVzc2FnZXMpIHtcbiAgICAgIGNvbnN0IGxhbmcgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0xBTkcnKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VzRW4gPSB7XG4gICAgICAgIGF1dGhfaW50ZXJjZXB0b3IgOiB7XG4gICAgICAgICAgc2Vzc2lvbl9sb3N0IDonU2Vzc2lvbiBsb3N0LCB5b3UgaGF2ZSB0byBsb2dpbiBhZ2Fpbi4nLFxuICAgICAgICAgIG5vdF9mb3VuZDogJ1Jlc291cmNlIG5vdCBmb3VuZCcsXG4gICAgICAgICAgdGl0bGU6ICdXZSBhcmUgc29ycnkhJyxcbiAgICAgICAgICBtZXNzYWdlOiAnV2UgaGFkIGEgcHJvYmxlbSB0cnlpbmcgdG8gcHJvY2VzcyB5b3VyIHJlcXVlc3QuJyxcbiAgICAgICAgICBjb2RlOidDb2RlJyxcbiAgICAgICAgICB1bmF2YWlsYWJsZTonU2VydmljZSB1bmF2YWlsYWJsZSwgcGxlYXNlIHRyeSBhZ2FpbiBpbiBhIGZldyBtaW51dGVzLicsXG4gICAgICAgICAgY29ubmVjdGlvbl9lcnJvcjonQ291bGQgbm90IGNvbm5lY3QgdG8gc2VydmVyLCBwbGVhc2UgY2hlY2sgeW91ciBuZXR3b3JrIGNvbm5lY3Rpb24uJ1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgbWVzc2FnZXNFcyA9IHtcbiAgICAgICAgYXV0aF9pbnRlcmNlcHRvcjoge1xuICAgICAgICAgIHNlc3Npb25fbG9zdDogJ1N1IHNlc2nDs24gZXhwaXLDsywgZGViZSBpbmljaWFyIHNlc2nDs24gbnVldmFtZW50ZS4nLFxuICAgICAgICAgIG5vdF9mb3VuZDogJ1JlY3Vyc28gbm8gZW5jb250cmFkbycsXG4gICAgICAgICAgdGl0bGU6ICfCoUxvIHNlbnRpbW9zIScsXG4gICAgICAgICAgbWVzc2FnZTogJ1R1dmltb3MgdW4gcHJvYmxlbWEgYWwgdHJhdGFyIGRlIHByb2Nlc2FyIHN1IHNvbGljaXR1ZC4nLFxuICAgICAgICAgIGNvZGU6ICdDw7NkaWdvJyxcbiAgICAgICAgICB1bmF2YWlsYWJsZTogJ1NlcnZpY2lvIG5vIGRpc3BvbmlibGUsIGludMOpbnRlbG8gZGUgbnVldm8gZW4gdW5vcyBtaW51dG9zLicsXG4gICAgICAgICAgY29ubmVjdGlvbl9lcnJvcjogJ05vIHNlIHB1ZG8gY29uZWN0YXIgYWwgc2Vydmlkb3IsIHZlcmlmaXF1ZSBzdSBjb25leGnDs24gZGUgcmVkLidcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGlmIChsYW5nICYmIGxhbmc9PT0nZW4nKSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0b3JNZXNzYWdlcyA9IG1lc3NhZ2VzRW47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmludGVyY2VwdG9yTWVzc2FnZXMgPSBtZXNzYWdlc0VzO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbnRlcmNlcHRvck1lc3NhZ2VzO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/* eslint-disable max-lines-per-function */
|
|
2
|
+
/* eslint-disable arrow-body-style */
|
|
1
3
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
2
4
|
import { Inject, Injectable } from '@angular/core';
|
|
3
5
|
import { HttpHeaders } from '@angular/common/http';
|
|
@@ -15,14 +17,11 @@ export class SessionService {
|
|
|
15
17
|
this.storage = new CrossStorageClient(urlHub, { timeout: 5000 });
|
|
16
18
|
}
|
|
17
19
|
checkSessionData() {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
let token = undefined;
|
|
24
|
-
let refreshToken = undefined;
|
|
25
|
-
let self = this;
|
|
20
|
+
const promise = new Promise((resolve, reject) => {
|
|
21
|
+
let data;
|
|
22
|
+
let token;
|
|
23
|
+
let refreshToken;
|
|
24
|
+
const self = this;
|
|
26
25
|
this.storage.onConnect().then(function () {
|
|
27
26
|
return self.storage.get('USERDATA', 'TOKEN', 'REFRESH_TOKEN');
|
|
28
27
|
}).then(function (res) {
|
|
@@ -39,9 +38,9 @@ export class SessionService {
|
|
|
39
38
|
else {
|
|
40
39
|
self.destroyCredentials();
|
|
41
40
|
self.destroyUserData();
|
|
42
|
-
self.getLoginUrl().subscribe(
|
|
43
|
-
console.log(
|
|
44
|
-
self.loginUrl =
|
|
41
|
+
self.getLoginUrl().subscribe(res1 => {
|
|
42
|
+
console.log(res1);
|
|
43
|
+
self.loginUrl = res1.data;
|
|
45
44
|
const url = window.location.href;
|
|
46
45
|
if (url.indexOf('/login') < 0 && url.indexOf('/forgot') < 0 && url.indexOf('/reset') < 0) {
|
|
47
46
|
window.location.href = self.loginUrl + '?continue=' + encodeURIComponent(url);
|
|
@@ -67,6 +66,10 @@ export class SessionService {
|
|
|
67
66
|
setUserdata(userdata) {
|
|
68
67
|
this.userdata = userdata;
|
|
69
68
|
}
|
|
69
|
+
setTokens(token, refreshToken) {
|
|
70
|
+
this.token = token;
|
|
71
|
+
this.refreshToken = refreshToken;
|
|
72
|
+
}
|
|
70
73
|
getUserdata() {
|
|
71
74
|
return this.userdata;
|
|
72
75
|
}
|
|
@@ -172,6 +175,16 @@ export class SessionService {
|
|
|
172
175
|
console.error(err);
|
|
173
176
|
});
|
|
174
177
|
}
|
|
178
|
+
loadSessionData() {
|
|
179
|
+
const data = window.localStorage.getItem('USERDATA');
|
|
180
|
+
const token = window.localStorage.getItem('TOKEN');
|
|
181
|
+
const refreshToken = window.localStorage.getItem('REFRESH_TOKEN');
|
|
182
|
+
if (data && token && refreshToken) {
|
|
183
|
+
const user = JSON.parse(data);
|
|
184
|
+
this.setTokens(token, refreshToken);
|
|
185
|
+
this.setUserdata(user);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
175
188
|
}
|
|
176
189
|
SessionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SessionService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
177
190
|
SessionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SessionService });
|
|
@@ -181,4 +194,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
|
|
|
181
194
|
type: Inject,
|
|
182
195
|
args: ['environment']
|
|
183
196
|
}] }]; } });
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3NpLXNlY3VyaXR5LWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9zZXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBQXlEO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUcvRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFJbkQsTUFBTSxPQUFPLGNBQWM7SUFTekIsWUFBb0IsSUFBZ0IsRUFDWCxXQUFnQjtRQURyQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBSHBDLGFBQVEsR0FBRyw2QkFBNkIsQ0FBQztRQUt2QyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7UUFDckMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztRQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLElBQUksT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzVDLHVEQUF1RDtZQUN2RCxxREFBcUQ7WUFDckQsb0VBQW9FO1lBQ3BFLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQztZQUNyQixJQUFJLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDdEIsSUFBSSxZQUFZLEdBQUcs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SUFBSSxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUNsQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzsyR0FyTVUsY0FBYyw0Q0FVZixhQUFhOytHQVZaLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVTs7MEJBV04sTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uL3VzZXIubW9kZWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ3Jvc3NTdG9yYWdlQ2xpZW50IH0gZnJvbSAnY3Jvc3Mtc3RvcmFnZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlc3Npb25TZXJ2aWNlIHtcblxuICB1c2VyZGF0YTogVXNlciB8IHVuZGVmaW5lZDtcbiAgdG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcmVmcmVzaFRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGVuZFBvaW50OiBzdHJpbmc7XG4gIGxvZ2luVXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMC9sb2dpbic7XG4gIHN0b3JhZ2U6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBlbnZpcm9ubWVudDogYW55KSB7XG4gICAgdGhpcy5lbmRQb2ludCA9IGVudmlyb25tZW50LmVuZFBvaW50O1xuICAgIGNvbnN0IHVybEh1YiA9IGVudmlyb25tZW50LnNlc3Npb25IdWI7XG4gICAgY29uc29sZS5sb2codXJsSHViKTtcbiAgICB0aGlzLnN0b3JhZ2UgPSBuZXcgQ3Jvc3NTdG9yYWdlQ2xpZW50KHVybEh1Yiwge3RpbWVvdXQ6IDUwMDB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja1Nlc3Npb25EYXRhKCl7XG4gICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvL2NvbnN0IGRhdGEgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1VTRVJEQVRBJyk7XG4gICAgICAvL2NvbnN0IHRva2VuID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdUT0tFTicpO1xuICAgICAgLy9jb25zdCByZWZyZXNoVG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1JFRlJFU0hfVE9LRU4nKTtcbiAgICAgIGxldCBkYXRhID0gdW5kZWZpbmVkO1xuICAgICAgbGV0IHRva2VuID0gdW5kZWZpbmVkO1xuICAgICAgbGV0IHJlZnJlc2hUb2tlbiA9IHVuZGVmaW5lZDtcblxuICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgdGhpcy5zdG9yYWdlLm9uQ29ubmVjdCgpLnRoZW4oZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzZWxmLnN0b3JhZ2UuZ2V0KCdVU0VSREFUQScsICdUT0tFTicsICdSRUZSRVNIX1RPS0VOJyk7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uKHJlczogYW55KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKHJlcyk7IFxuICAgICAgICBkYXRhID0gcmVzWzBdO1xuICAgICAgICB0b2tlbiA9IHJlc1sxXTtcbiAgICAgICAgcmVmcmVzaFRva2VuID0gcmVzWzJdO1xuXG4gICAgICAgIGlmIChkYXRhICYmIHRva2VuICYmIHJlZnJlc2hUb2tlbikge1xuICAgICAgICAgIGNvbnN0IHVzZXIgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgICAgIHNlbGYuc2F2ZUNyZWRlbnRpYWxzKHRva2VuLCByZWZyZXNoVG9rZW4pO1xuICAgICAgICAgIHNlbGYuc2F2ZVVzZXJEYXRhKHVzZXIpO1xuICAgICAgICAgIHJlc29sdmUoJ09LJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VsZi5kZXN0cm95Q3JlZGVudGlhbHMoKTtcbiAgICAgICAgICBzZWxmLmRlc3Ryb3lVc2VyRGF0YSgpO1xuICAgICAgICAgIHNlbGYuZ2V0TG9naW5VcmwoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgICAgICBzZWxmLmxvZ2luVXJsID0gcmVzLmRhdGE7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgICAgIGlmICh1cmwuaW5kZXhPZignL2xvZ2luJyk8MCAmJiB1cmwuaW5kZXhPZignL2ZvcmdvdCcpPDAgJiYgdXJsLmluZGV4T2YoJy9yZXNldCcpPDApIHtcbiAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBzZWxmLmxvZ2luVXJsICsgJz9jb250aW51ZT0nK2VuY29kZVVSSUNvbXBvbmVudCh1cmwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZSgnTk9LJyk7XG4gICAgICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyOiBhbnkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJldmlld1Nlc3Npb25EYXRhKCkge1xuICAgIGNvbnN0IHZhbHVlID0gPGFueT5hd2FpdCB0aGlzLmNoZWNrU2Vzc2lvbkRhdGEoKTtcbiAgICBjb25zb2xlLmxvZyhgYXN5bmMgcmVzdWx0OiAke3ZhbHVlfWApO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRVc2VyZGF0YSh1c2VyZGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy51c2VyZGF0YSA9IHVzZXJkYXRhO1xuICB9XG5cbiAgcHVibGljIGdldFVzZXJkYXRhKCk6IFVzZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnVzZXJkYXRhO1xuICB9XG5cbiAgcHVibGljIHNldFJlZnJlc2hUb2tlbihyZWZyZXNoVG9rZW46IGFueSk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaFRva2VuID0gcmVmcmVzaFRva2VuO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnUkVGUkVTSF9UT0tFTicsIHJlZnJlc2hUb2tlbik7XG4gICAgdGhpcy5zdG9yYWdlLm9uQ29ubmVjdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5zZXQoJ1JFRlJFU0hfVE9LRU4nLCByZWZyZXNoVG9rZW4pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFJlZnJlc2hUb2tlbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlbjtcbiAgfVxuXG4gIHB1YmxpYyBzZXRUb2tlbih0b2tlbjogYW55KTogYW55IHtcbiAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdUT0tFTicsIHRva2VuKTtcbiAgICB0aGlzLnN0b3JhZ2Uub25Db25uZWN0KCkudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLnNldCgnVE9LRU4nLCB0b2tlbik7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VG9rZW4oKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy50b2tlbjtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95Q3JlZGVudGlhbHMoKTogdm9pZCB7XG4gICAgdGhpcy50b2tlbiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlZnJlc2hUb2tlbiA9IHVuZGVmaW5lZDtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ1RPS0VOJyk7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdSRUZSRVNIX1RPS0VOJyk7XG4gICAgdGhpcy5zdG9yYWdlLm9uQ29ubmVjdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5kZWwoJ1RPS0VOJywgJ1JFRlJFU0hfVE9LRU4nKTtcbiAgICB9KVxuICB9XG5cbiAgcHVibGljIGRlc3Ryb3lVc2VyRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJkYXRhID0gdW5kZWZpbmVkO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnVVNFUkRBVEEnKTtcbiAgICB0aGlzLnN0b3JhZ2Uub25Db25uZWN0KCkudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmRlbCgnVVNFUkRBVEEnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlQ3JlZGVudGlhbHModG9rZW46IGFueSwgcmVmcmVzaFRva2VuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgdGhpcy5yZWZyZXNoVG9rZW4gPSByZWZyZXNoVG9rZW47XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdUT0tFTicsIHRva2VuKTtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1JFRlJFU0hfVE9LRU4nLCByZWZyZXNoVG9rZW4pO1xuICAgIHRoaXMuc3RvcmFnZS5vbkNvbm5lY3QoKS50aGVuKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2Uuc2V0KCdUT0tFTicsIHRva2VuKTtcbiAgICB9KTtcbiAgICB0aGlzLnN0b3JhZ2Uub25Db25uZWN0KCkudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLnNldCgnUkVGUkVTSF9UT0tFTicsIHJlZnJlc2hUb2tlbik7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZVVzZXJEYXRhKHVzZXJkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJkYXRhID0gdXNlcmRhdGE7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdVU0VSREFUQScsIEpTT04uc3RyaW5naWZ5KHRoaXMudXNlcmRhdGEpKTtcbiAgICB0aGlzLnN0b3JhZ2Uub25Db25uZWN0KCkudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLnNldCgnVVNFUkRBVEEnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnVzZXJkYXRhKSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaXNMb2dnZWRJbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnVzZXJkYXRhO1xuICB9XG5cbiAgbG9nb3V0KCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMubG9nb3V0QXBpKHRoaXMudXNlcmRhdGE/LnVzZXJJZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgIHRoaXMuZGVzdHJveUNyZWRlbnRpYWxzKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveVVzZXJEYXRhKCk7XG4gICAgICAgIHRoaXMuZ29Ub0xvZ2luKCk7XG4gICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMuZGVzdHJveUNyZWRlbnRpYWxzKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveVVzZXJEYXRhKCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldE5ld1Rva2VuKHJlZnJlc2hUb2tlbjogc3RyaW5nKTogYW55IHtcbiAgICBjb25zb2xlLmxvZygnZ2V0TmV3VG9rZW4nKTtcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZW5kUG9pbnQgKyAnL2F1dGgvcmVmcmVzaC10b2tlbicsIHsgcmVmcmVzaFRva2VuIH0sIGh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldExvZ2luVXJsKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih0aGlzLmVuZFBvaW50ICsgJy9hdXRoL2xvZ2luL3VybCcpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG4gIGdldEhvbWVVcmwoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHRoaXMuZW5kUG9pbnQgKyAnL2F1dGgvaG9tZS91cmwnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gcmVzKSk7XG4gIH1cblxuICBsb2dvdXRBcGkodXNlcklkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHRoaXMuZW5kUG9pbnQgKyAnL2F1dGgvbG9nb3V0Jywge3VzZXJJZH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG4gIGdvVG9Mb2dpbigpOiB2b2lkIHtcbiAgICB0aGlzLmdldExvZ2luVXJsKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgY29uc3QgbG9naW5VcmwgPSByZXMuZGF0YTtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbG9naW5Vcmw7XG4gICAgfSwgKGVycikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIH0pO1xuICB9XG5cblxufVxuXG4iXX0=
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3NpLXNlY3VyaXR5LWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9zZXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLHFDQUFxQztBQUNyQyx5REFBeUQ7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRy9ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUluRCxNQUFNLE9BQU8sY0FBYztJQVN6QixZQUFvQixJQUFnQixFQUNYLFdBQWdCO1FBRHJCLFNBQUksR0FBSixJQUFJLENBQVk7UUFIcEMsYUFBUSxHQUFHLDZCQUE2QixDQUFDO1FBS3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUNyQyxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDOUMsSUFBSSxJQUFJLENBQUM7WUFDVCxJQUFJLEtBQUssQ0FBQztZQUNWLElBQUksWUFBWSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztZQUVsQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQztnQkFDNUIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ2hFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQVE7Z0JBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2pCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDZixZQUFZLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUV0QixJQUFJLElBQUksSUFBSSxLQUFLLElBQUksWUFBWSxFQUFFO29CQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNmO3FCQUFNO29CQUNMLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29CQUMxQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQzt3QkFDMUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7d0JBQ2pDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBQyxDQUFDLEVBQUU7NEJBQ2xGLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxHQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO3lCQUM3RTt3QkFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2pCLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO3dCQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ25CLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDZCxDQUFDLENBQUMsQ0FBQztpQkFDSjtZQUVILENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQVE7Z0JBQ3pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25CLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU0sS0FBSyxDQUFDLGlCQUFpQjtRQUM1QixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBUyxDQUFDO1FBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sV0FBVyxDQUFDLFFBQWE7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUFVLEVBQUUsWUFBaUI7UUFDNUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxlQUFlLENBQUMsWUFBaUI7UUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQVU7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDOUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDMUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sZUFBZSxDQUFDLEtBQVUsRUFBRSxZQUFpQjtRQUNsRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxZQUFZLENBQUMsUUFBYTtRQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDakMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDcEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEIsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsWUFBb0I7UUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzQixNQUFNLFdBQVcsR0FBRztZQUNsQixPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBQyxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztTQUNoRSxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLHFCQUFxQixFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLElBQUksQ0FBQyxRQUFRLEdBQUcsaUJBQWlCLENBQUM7YUFDekQsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLElBQUksQ0FBQyxRQUFRLEdBQUcsZ0JBQWdCLENBQUM7YUFDeEQsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFXO1FBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU0sSUFBSSxDQUFDLFFBQVEsR0FBRyxjQUFjLEVBQUUsRUFBQyxNQUFNLEVBQUMsQ0FBQzthQUNqRSxJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUNsQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxZQUFZLEVBQUU7WUFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQzs7MkdBbE5VLGNBQWMsNENBVWYsYUFBYTsrR0FWWixjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLFVBQVU7OzBCQVdOLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1saW5lcy1wZXItZnVuY3Rpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIGFycm93LWJvZHktc3R5bGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi91c2VyLm1vZGVsJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENyb3NzU3RvcmFnZUNsaWVudCB9IGZyb20gJ2Nyb3NzLXN0b3JhZ2UnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZXNzaW9uU2VydmljZSB7XG5cbiAgdXNlcmRhdGE6IFVzZXIgfCB1bmRlZmluZWQ7XG4gIHRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBlbmRQb2ludDogc3RyaW5nO1xuICBsb2dpblVybCA9ICdodHRwOi8vbG9jYWxob3N0OjQyMDAvbG9naW4nO1xuICBzdG9yYWdlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgZW52aXJvbm1lbnQ6IGFueSkge1xuICAgIHRoaXMuZW5kUG9pbnQgPSBlbnZpcm9ubWVudC5lbmRQb2ludDtcbiAgICBjb25zdCB1cmxIdWIgPSBlbnZpcm9ubWVudC5zZXNzaW9uSHViO1xuICAgIGNvbnNvbGUubG9nKHVybEh1Yik7XG4gICAgdGhpcy5zdG9yYWdlID0gbmV3IENyb3NzU3RvcmFnZUNsaWVudCh1cmxIdWIsIHt0aW1lb3V0OiA1MDAwfSk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tTZXNzaW9uRGF0YSgpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBsZXQgZGF0YTtcbiAgICAgIGxldCB0b2tlbjtcbiAgICAgIGxldCByZWZyZXNoVG9rZW47XG4gICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgdGhpcy5zdG9yYWdlLm9uQ29ubmVjdCgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gc2VsZi5zdG9yYWdlLmdldCgnVVNFUkRBVEEnLCAnVE9LRU4nLCAnUkVGUkVTSF9UT0tFTicpO1xuICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcbiAgICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgICAgZGF0YSA9IHJlc1swXTtcbiAgICAgICAgdG9rZW4gPSByZXNbMV07XG4gICAgICAgIHJlZnJlc2hUb2tlbiA9IHJlc1syXTtcblxuICAgICAgICBpZiAoZGF0YSAmJiB0b2tlbiAmJiByZWZyZXNoVG9rZW4pIHtcbiAgICAgICAgICBjb25zdCB1c2VyID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgICAgICBzZWxmLnNhdmVDcmVkZW50aWFscyh0b2tlbiwgcmVmcmVzaFRva2VuKTtcbiAgICAgICAgICBzZWxmLnNhdmVVc2VyRGF0YSh1c2VyKTtcbiAgICAgICAgICByZXNvbHZlKCdPSycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlbGYuZGVzdHJveUNyZWRlbnRpYWxzKCk7XG4gICAgICAgICAgc2VsZi5kZXN0cm95VXNlckRhdGEoKTtcbiAgICAgICAgICBzZWxmLmdldExvZ2luVXJsKCkuc3Vic2NyaWJlKHJlczEgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2cocmVzMSk7XG4gICAgICAgICAgICBzZWxmLmxvZ2luVXJsID0gcmVzMS5kYXRhO1xuICAgICAgICAgICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICAgICAgICBpZiAodXJsLmluZGV4T2YoJy9sb2dpbicpPDAgJiYgdXJsLmluZGV4T2YoJy9mb3Jnb3QnKTwwICYmIHVybC5pbmRleE9mKCcvcmVzZXQnKTwwKSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc2VsZi5sb2dpblVybCArICc/Y29udGludWU9JytlbmNvZGVVUklDb21wb25lbnQodXJsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc29sdmUoJ05PSycpO1xuICAgICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnI6IGFueSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmV2aWV3U2Vzc2lvbkRhdGEoKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMuY2hlY2tTZXNzaW9uRGF0YSgpIGFzIGFueTtcbiAgICBjb25zb2xlLmxvZyhgYXN5bmMgcmVzdWx0OiAke3ZhbHVlfWApO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRVc2VyZGF0YSh1c2VyZGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy51c2VyZGF0YSA9IHVzZXJkYXRhO1xuICB9XG5cbiAgcHVibGljIHNldFRva2Vucyh0b2tlbjogYW55LCByZWZyZXNoVG9rZW46IGFueSk6IHZvaWQge1xuICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgICB0aGlzLnJlZnJlc2hUb2tlbiA9IHJlZnJlc2hUb2tlbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVc2VyZGF0YSgpOiBVc2VyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy51c2VyZGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSZWZyZXNoVG9rZW4ocmVmcmVzaFRva2VuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2hUb2tlbiA9IHJlZnJlc2hUb2tlbjtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1JFRlJFU0hfVE9LRU4nLCByZWZyZXNoVG9rZW4pO1xuICAgIHRoaXMuc3RvcmFnZS5vbkNvbm5lY3QoKS50aGVuKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2Uuc2V0KCdSRUZSRVNIX1RPS0VOJywgcmVmcmVzaFRva2VuKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZWZyZXNoVG9rZW4oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW47XG4gIH1cblxuICBwdWJsaWMgc2V0VG9rZW4odG9rZW46IGFueSk6IGFueSB7XG4gICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnVE9LRU4nLCB0b2tlbik7XG4gICAgdGhpcy5zdG9yYWdlLm9uQ29ubmVjdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5zZXQoJ1RPS0VOJywgdG9rZW4pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFRva2VuKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW47XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveUNyZWRlbnRpYWxzKCk6IHZvaWQge1xuICAgIHRoaXMudG9rZW4gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZWZyZXNoVG9rZW4gPSB1bmRlZmluZWQ7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdUT0tFTicpO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnUkVGUkVTSF9UT0tFTicpO1xuICAgIHRoaXMuc3RvcmFnZS5vbkNvbm5lY3QoKS50aGVuKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZGVsKCdUT0tFTicsICdSRUZSRVNIX1RPS0VOJyk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveVVzZXJEYXRhKCk6IHZvaWQge1xuICAgIHRoaXMudXNlcmRhdGEgPSB1bmRlZmluZWQ7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdVU0VSREFUQScpO1xuICAgIHRoaXMuc3RvcmFnZS5vbkNvbm5lY3QoKS50aGVuKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZGVsKCdVU0VSREFUQScpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNhdmVDcmVkZW50aWFscyh0b2tlbjogYW55LCByZWZyZXNoVG9rZW46IGFueSk6IHZvaWQge1xuICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgICB0aGlzLnJlZnJlc2hUb2tlbiA9IHJlZnJlc2hUb2tlbjtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1RPS0VOJywgdG9rZW4pO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnUkVGUkVTSF9UT0tFTicsIHJlZnJlc2hUb2tlbik7XG4gICAgdGhpcy5zdG9yYWdlLm9uQ29ubmVjdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5zZXQoJ1RPS0VOJywgdG9rZW4pO1xuICAgIH0pO1xuICAgIHRoaXMuc3RvcmFnZS5vbkNvbm5lY3QoKS50aGVuKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2Uuc2V0KCdSRUZSRVNIX1RPS0VOJywgcmVmcmVzaFRva2VuKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlVXNlckRhdGEodXNlcmRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudXNlcmRhdGEgPSB1c2VyZGF0YTtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1VTRVJEQVRBJywgSlNPTi5zdHJpbmdpZnkodGhpcy51c2VyZGF0YSkpO1xuICAgIHRoaXMuc3RvcmFnZS5vbkNvbm5lY3QoKS50aGVuKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2Uuc2V0KCdVU0VSREFUQScsIEpTT04uc3RyaW5naWZ5KHRoaXMudXNlcmRhdGEpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpc0xvZ2dlZEluKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMudXNlcmRhdGE7XG4gIH1cblxuICBsb2dvdXQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5sb2dvdXRBcGkodGhpcy51c2VyZGF0YT8udXNlcklkKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgICAgdGhpcy5kZXN0cm95Q3JlZGVudGlhbHMoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95VXNlckRhdGEoKTtcbiAgICAgICAgdGhpcy5nb1RvTG9naW4oKTtcbiAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5kZXN0cm95Q3JlZGVudGlhbHMoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95VXNlckRhdGEoKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0TmV3VG9rZW4ocmVmcmVzaFRva2VuOiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnNvbGUubG9nKCdnZXROZXdUb2tlbicpO1xuICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5lbmRQb2ludCArICcvYXV0aC9yZWZyZXNoLXRva2VuJywgeyByZWZyZXNoVG9rZW4gfSwgaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0TG9naW5VcmwoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHRoaXMuZW5kUG9pbnQgKyAnL2F1dGgvbG9naW4vdXJsJylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHJlcykpO1xuICB9XG5cbiAgZ2V0SG9tZVVybCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odGhpcy5lbmRQb2ludCArICcvYXV0aC9ob21lL3VybCcpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG4gIGxvZ291dEFwaSh1c2VySWQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odGhpcy5lbmRQb2ludCArICcvYXV0aC9sb2dvdXQnLCB7dXNlcklkfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHJlcykpO1xuICB9XG5cbiAgZ29Ub0xvZ2luKCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0TG9naW5VcmwoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICBjb25zdCBsb2dpblVybCA9IHJlcy5kYXRhO1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBsb2dpblVybDtcbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgfSk7XG4gIH1cblxuICBsb2FkU2Vzc2lvbkRhdGEoKTogdm9pZCB7XG4gICAgY29uc3QgZGF0YSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnVVNFUkRBVEEnKTtcbiAgICBjb25zdCB0b2tlbiA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnVE9LRU4nKTtcbiAgICBjb25zdCByZWZyZXNoVG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1JFRlJFU0hfVE9LRU4nKTtcbiAgICBpZiAoZGF0YSAmJiB0b2tlbiAmJiByZWZyZXNoVG9rZW4pIHtcbiAgICAgIGNvbnN0IHVzZXIgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgdGhpcy5zZXRUb2tlbnModG9rZW4sIHJlZnJlc2hUb2tlbik7XG4gICAgICB0aGlzLnNldFVzZXJkYXRhKHVzZXIpO1xuICAgIH1cbiAgfVxuXG59XG5cbiJdfQ==
|
|
@@ -117,14 +117,11 @@ class SessionService {
|
|
|
117
117
|
this.storage = new CrossStorageClient(urlHub, { timeout: 5000 });
|
|
118
118
|
}
|
|
119
119
|
checkSessionData() {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
let token = undefined;
|
|
126
|
-
let refreshToken = undefined;
|
|
127
|
-
let self = this;
|
|
120
|
+
const promise = new Promise((resolve, reject) => {
|
|
121
|
+
let data;
|
|
122
|
+
let token;
|
|
123
|
+
let refreshToken;
|
|
124
|
+
const self = this;
|
|
128
125
|
this.storage.onConnect().then(function () {
|
|
129
126
|
return self.storage.get('USERDATA', 'TOKEN', 'REFRESH_TOKEN');
|
|
130
127
|
}).then(function (res) {
|
|
@@ -141,9 +138,9 @@ class SessionService {
|
|
|
141
138
|
else {
|
|
142
139
|
self.destroyCredentials();
|
|
143
140
|
self.destroyUserData();
|
|
144
|
-
self.getLoginUrl().subscribe(
|
|
145
|
-
console.log(
|
|
146
|
-
self.loginUrl =
|
|
141
|
+
self.getLoginUrl().subscribe(res1 => {
|
|
142
|
+
console.log(res1);
|
|
143
|
+
self.loginUrl = res1.data;
|
|
147
144
|
const url = window.location.href;
|
|
148
145
|
if (url.indexOf('/login') < 0 && url.indexOf('/forgot') < 0 && url.indexOf('/reset') < 0) {
|
|
149
146
|
window.location.href = self.loginUrl + '?continue=' + encodeURIComponent(url);
|
|
@@ -171,6 +168,10 @@ class SessionService {
|
|
|
171
168
|
setUserdata(userdata) {
|
|
172
169
|
this.userdata = userdata;
|
|
173
170
|
}
|
|
171
|
+
setTokens(token, refreshToken) {
|
|
172
|
+
this.token = token;
|
|
173
|
+
this.refreshToken = refreshToken;
|
|
174
|
+
}
|
|
174
175
|
getUserdata() {
|
|
175
176
|
return this.userdata;
|
|
176
177
|
}
|
|
@@ -277,6 +278,16 @@ class SessionService {
|
|
|
277
278
|
console.error(err);
|
|
278
279
|
});
|
|
279
280
|
}
|
|
281
|
+
loadSessionData() {
|
|
282
|
+
const data = window.localStorage.getItem('USERDATA');
|
|
283
|
+
const token = window.localStorage.getItem('TOKEN');
|
|
284
|
+
const refreshToken = window.localStorage.getItem('REFRESH_TOKEN');
|
|
285
|
+
if (data && token && refreshToken) {
|
|
286
|
+
const user = JSON.parse(data);
|
|
287
|
+
this.setTokens(token, refreshToken);
|
|
288
|
+
this.setUserdata(user);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
280
291
|
}
|
|
281
292
|
SessionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SessionService, deps: [{ token: i1$1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
282
293
|
SessionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SessionService });
|
|
@@ -506,10 +517,10 @@ class AuthInterceptor {
|
|
|
506
517
|
console.log('AuthInterceptor constructor');
|
|
507
518
|
}
|
|
508
519
|
intercept(request, next) {
|
|
509
|
-
console.log('intercept');
|
|
520
|
+
//console.log('intercept');
|
|
510
521
|
const token = window.localStorage.getItem('TOKEN');
|
|
511
|
-
console.log(token);
|
|
512
|
-
console.log(request);
|
|
522
|
+
//console.log(token);
|
|
523
|
+
//console.log(request);
|
|
513
524
|
let encrypt = request.headers.get('encrypted');
|
|
514
525
|
if (encrypt && encrypt === 'true') {
|
|
515
526
|
let body = request.body;
|
|
@@ -544,7 +555,7 @@ class ResponseInterceptor {
|
|
|
544
555
|
this.sessionService = sessionService;
|
|
545
556
|
this.isRefreshing = false;
|
|
546
557
|
this.refreshTokenSubject = new BehaviorSubject(null);
|
|
547
|
-
console.log('ResponseInterceptor constructor');
|
|
558
|
+
//console.log('ResponseInterceptor constructor');
|
|
548
559
|
setTimeout(() => {
|
|
549
560
|
this.messages = this.injector.get(MessagesService);
|
|
550
561
|
});
|
|
@@ -552,7 +563,7 @@ class ResponseInterceptor {
|
|
|
552
563
|
intercept(request, next) {
|
|
553
564
|
return next.handle(request).pipe(map((event) => {
|
|
554
565
|
if (event instanceof HttpResponse) {
|
|
555
|
-
console.log(request.headers.get('encrypted'));
|
|
566
|
+
//console.log(request.headers.get('encrypted'));
|
|
556
567
|
let encrypt = request.headers.get('encrypted');
|
|
557
568
|
if (encrypt && encrypt === 'true') {
|
|
558
569
|
event = event.clone({ body: this.decryptBody(event.body) });
|
|
@@ -591,21 +602,22 @@ class ResponseInterceptor {
|
|
|
591
602
|
}));
|
|
592
603
|
}
|
|
593
604
|
decryptBody(body) {
|
|
594
|
-
console.log(body);
|
|
605
|
+
//console.log(body);
|
|
595
606
|
let encrypted = body.encrypted;
|
|
596
607
|
let strJson = this.cryptoService.decrypt(encrypted);
|
|
597
608
|
return JSON.parse(strJson);
|
|
598
609
|
}
|
|
599
610
|
handle401Error(request, next) {
|
|
600
|
-
console.log('handle401Error');
|
|
601
|
-
console.log(this.isRefreshing);
|
|
611
|
+
//console.log('handle401Error');
|
|
612
|
+
//console.log(this.isRefreshing);
|
|
602
613
|
if (!this.isRefreshing) {
|
|
603
614
|
this.isRefreshing = true;
|
|
604
615
|
this.refreshTokenSubject.next(null);
|
|
605
616
|
const refreshToken = this.sessionService.getRefreshToken();
|
|
606
|
-
console.log(refreshToken);
|
|
617
|
+
//console.log(refreshToken);
|
|
607
618
|
if (refreshToken) {
|
|
608
619
|
return this.sessionService.getNewToken(refreshToken).pipe(switchMap((res) => {
|
|
620
|
+
console.log('refresh token response');
|
|
609
621
|
console.log(res);
|
|
610
622
|
this.isRefreshing = false;
|
|
611
623
|
this.sessionService.setToken(res.data.accessToken);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssi-security-commons.mjs","sources":["../../../projects/ssi-security-commons/src/lib/ssi-security-commons.service.ts","../../../projects/ssi-security-commons/src/lib/ssi-security-commons.component.ts","../../../projects/ssi-security-commons/src/lib/services/crypto.service.ts","../../../projects/ssi-security-commons/src/lib/alert/alert.component.ts","../../../projects/ssi-security-commons/src/lib/alert/alert.component.html","../../../projects/ssi-security-commons/src/lib/services/session.service.ts","../../../projects/ssi-security-commons/src/lib/services/messages.service.ts","../../../projects/ssi-security-commons/src/lib/ssi-security-commons.module.ts","../../../projects/ssi-security-commons/src/lib/services/auth-interceptor.service.ts","../../../projects/ssi-security-commons/src/public-api.ts","../../../projects/ssi-security-commons/src/ssi-security-commons.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SsiSecurityCommonsService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-ssi-security-commons',\n template: `\n <p>\n ssi-security-commons works!\n </p>\n `,\n styles: [\n ]\n})\nexport class SsiSecurityCommonsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport * as CryptoJS from 'crypto-js';\n\n@Injectable()\nexport class CryptoService {\n\n private configuration: any;\n private key: any;\n private secret = '&E)H@McQfThWmZq4';\n\n constructor() {\n this.configuration = {\n mode: CryptoJS.mode.ECB\n };\n const hash = CryptoJS.SHA1(this.secret);\n this.key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n }\n\n encrypt(text: string): string {\n return CryptoJS.AES.encrypt(text, this.key, this.configuration).toString();\n }\n\n decrypt(text: string): string {\n return CryptoJS.AES.decrypt(text, this.key, this.configuration).toString(CryptoJS.enc.Utf8);\n }\n\n encryptWithSecret(text: string, secret: string): string {\n const hash = CryptoJS.SHA1(secret);\n const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n return CryptoJS.AES.encrypt(text, key, this.configuration).toString();\n }\n\n decryptWithSecret(text: string, secret: string): string {\n const hash = CryptoJS.SHA1(secret);\n const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n return CryptoJS.AES.decrypt(text, key, this.configuration).toString(CryptoJS.enc.Utf8);\n }\n\n}\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nexport interface DialogData {\n title?: string;\n icon?: string;\n type?: string;\n message?: string;\n okText?: string;\n cancelText?: string;\n}\n\n@Component({\n selector: 'lib-app-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss']\n})\nexport class AlertComponent {\n\n constructor(\n public dialogRef: MatDialogRef<AlertComponent>,\n @Inject(MAT_DIALOG_DATA) public data: DialogData\n ) { }\n\n onConfirm(): void {\n this.dialogRef.close(true);\n }\n\n onCancel(): void {\n this.dialogRef.close(null);\n }\n}\n","<h1 mat-dialog-title>{{data.title?data.title:'Alert'}}</h1>\n<div mat-dialog-content class=\"alert-min-width\">\n <div>\n {{data.message}}\n </div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button *ngIf=\"data?.cancelText\" mat-button (click)=\"onCancel()\">{{data.cancelText ? data.cancelText : 'Cancel'}}</button>\n <button mat-button color=\"primary\" (click)=\"onConfirm()\">{{data.okText ? data.okText : 'OK'}}</button>\n</div>\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { User } from '../user.model';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CrossStorageClient } from 'cross-storage';\n\n\n@Injectable()\nexport class SessionService {\n\n userdata: User | undefined;\n token: string | undefined;\n refreshToken: string | undefined;\n endPoint: string;\n loginUrl = 'http://localhost:4200/login';\n storage: any;\n\n constructor(private http: HttpClient,\n @Inject('environment') environment: any) {\n this.endPoint = environment.endPoint;\n const urlHub = environment.sessionHub;\n console.log(urlHub);\n this.storage = new CrossStorageClient(urlHub, {timeout: 5000});\n }\n\n public checkSessionData(){\n var promise = new Promise((resolve, reject) => {\n //const data = window.localStorage.getItem('USERDATA');\n //const token = window.localStorage.getItem('TOKEN');\n //const refreshToken = window.localStorage.getItem('REFRESH_TOKEN');\n let data = undefined;\n let token = undefined;\n let refreshToken = undefined;\n\n let self = this;\n this.storage.onConnect().then(function() {\n return self.storage.get('USERDATA', 'TOKEN', 'REFRESH_TOKEN');\n }).then(function(res: any) {\n console.log(res); \n data = res[0];\n token = res[1];\n refreshToken = res[2];\n\n if (data && token && refreshToken) {\n const user = JSON.parse(data);\n self.saveCredentials(token, refreshToken);\n self.saveUserData(user);\n resolve('OK');\n } else {\n self.destroyCredentials();\n self.destroyUserData();\n self.getLoginUrl().subscribe(res => {\n console.log(res);\n self.loginUrl = res.data;\n const url = window.location.href;\n if (url.indexOf('/login')<0 && url.indexOf('/forgot')<0 && url.indexOf('/reset')<0) {\n window.location.href = self.loginUrl + '?continue='+encodeURIComponent(url);\n }\n resolve('NOK');\n }, (err) => {\n console.error(err);\n reject(err);\n });\n }\n\n }).catch(function(err: any) {\n console.error(err);\n reject(err);\n });\n });\n return promise;\n }\n\n public async reviewSessionData() {\n const value = <any>await this.checkSessionData();\n console.log(`async result: ${value}`);\n return value;\n }\n\n public setUserdata(userdata: any): void {\n this.userdata = userdata;\n }\n\n public getUserdata(): User | undefined {\n return this.userdata;\n }\n\n public setRefreshToken(refreshToken: any): void {\n this.refreshToken = refreshToken;\n window.localStorage.setItem('REFRESH_TOKEN', refreshToken);\n this.storage.onConnect().then(() => {\n return this.storage.set('REFRESH_TOKEN', refreshToken);\n });\n }\n\n public getRefreshToken(): string | undefined {\n return this.refreshToken;\n }\n\n public setToken(token: any): any {\n this.token = token;\n window.localStorage.setItem('TOKEN', token);\n this.storage.onConnect().then(() => {\n return this.storage.set('TOKEN', token);\n });\n }\n\n public getToken(): any {\n return this.token;\n }\n\n public destroyCredentials(): void {\n this.token = undefined;\n this.refreshToken = undefined;\n window.localStorage.removeItem('TOKEN');\n window.localStorage.removeItem('REFRESH_TOKEN');\n this.storage.onConnect().then(() => {\n return this.storage.del('TOKEN', 'REFRESH_TOKEN');\n })\n }\n\n public destroyUserData(): void {\n this.userdata = undefined;\n window.localStorage.removeItem('USERDATA');\n this.storage.onConnect().then(() => {\n return this.storage.del('USERDATA');\n });\n }\n\n public saveCredentials(token: any, refreshToken: any): void {\n this.token = token;\n this.refreshToken = refreshToken;\n window.localStorage.setItem('TOKEN', token);\n window.localStorage.setItem('REFRESH_TOKEN', refreshToken);\n this.storage.onConnect().then(() => {\n return this.storage.set('TOKEN', token);\n });\n this.storage.onConnect().then(() => {\n return this.storage.set('REFRESH_TOKEN', refreshToken);\n });\n }\n\n public saveUserData(userdata: any): void {\n this.userdata = userdata;\n window.localStorage.setItem('USERDATA', JSON.stringify(this.userdata));\n this.storage.onConnect().then(() => {\n return this.storage.set('USERDATA', JSON.stringify(this.userdata));\n });\n }\n\n public isLoggedIn(): boolean {\n return !!this.userdata;\n }\n\n logout(): Promise<any> {\n return new Promise((resolve, reject) => {\n this.logoutApi(this.userdata?.userId).subscribe(res => {\n console.log(res);\n this.destroyCredentials();\n this.destroyUserData();\n this.goToLogin();\n resolve(null);\n }, (err) => {\n this.destroyCredentials();\n this.destroyUserData();\n console.error(err);\n reject(err);\n });\n });\n }\n\n getNewToken(refreshToken: string): any {\n console.log('getNewToken');\n const httpOptions = {\n headers: new HttpHeaders({'Content-Type': 'application/json' })\n };\n return this.http.post(this.endPoint + '/auth/refresh-token', { refreshToken }, httpOptions);\n }\n\n getLoginUrl(): Observable<any> {\n return this.http.get<any>(this.endPoint + '/auth/login/url')\n .pipe(\n map(res => res));\n }\n\n getHomeUrl(): Observable<any> {\n return this.http.get<any>(this.endPoint + '/auth/home/url')\n .pipe(\n map(res => res));\n }\n\n logoutApi(userId: any): Observable<any> {\n return this.http.post<any>(this.endPoint + '/auth/logout', {userId})\n .pipe(\n map(res => res));\n }\n\n goToLogin(): void {\n this.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n window.location.href = loginUrl;\n }, (err) => {\n console.error(err);\n });\n }\n\n\n}\n\n","/* eslint-disable quote-props */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n// import { Router } from '@angular/router';\nimport { AlertComponent } from '../alert/alert.component';\nimport { SessionService } from './session.service';\n\n\n@Injectable()\nexport class MessagesService {\n\n private interceptorMessages: any;\n\n constructor(\n public auth: SessionService,\n // private router: Router,\n private snackBar: MatSnackBar,\n public dialog: MatDialog\n ) { }\n\n\n // eslint-disable-next-line max-lines-per-function\n showErrorMessage(error: HttpErrorResponse): void {\n console.log('error: ', error);\n const msgs: any = this.getInterceptorMessages();\n switch (error.status) {\n case 302: {\n this.messageSnackError(error);\n break;\n }\n case 400: {\n this.showSnackError(error.message, ['snack-error']);\n break;\n }\n case 403: {\n this.goNavigateLogin(msgs);\n break;\n }\n case 404: {\n this.showSnackError(msgs.auth_interceptor.not_found, ['snack-error']);\n break;\n }\n case 409: {\n this.messageAlertDialog(error, msgs);\n break;\n }\n case 412: {\n this.showSnackError(error.error.responseMessage, ['snack-error']);\n break;\n }\n case 428: {\n this.showSnackError(error.error.responseMessage, ['snack-error']);\n break;\n }\n case 500: {\n this.messageAlertDialog(error, msgs);\n break;\n }\n case 503: {\n this.showSnackError(msgs.auth_interceptor.unavailable, ['snack-error']);\n break;\n }\n case -1: {\n this.showSnackError(msgs.auth_interceptor.connection_error);\n break;\n }\n case 0: {\n this.showSnackError(msgs.auth_interceptor.connection_error);\n break;\n }\n }\n }\n\n messageSnackError(error: any): void {\n const errorMessage = error.error && error.error.responseMessage ? error.error.responseMessage :\n error.error.message ? error.error.message : error.message;\n this.showSnackError(errorMessage, ['snack-error']);\n }\n\n goNavigateLogin(msgs: any): void {\n // if (this.router.url !== '/login') {\n this.showSnackError(msgs.auth_interceptor.session_lost, ['snack-error']);\n // this.router.navigate(['/login']);\n this.auth.destroyCredentials();\n this.auth.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n const url = window.location.href;\n if (url.indexOf(loginUrl)<0) {\n window.location.href = loginUrl + '?continue='+encodeURIComponent(url);\n }\n }, (err) => {\n console.error(err);\n });\n // }\n }\n\n messageAlertDialog(error: any, msgs: any): void {\n console.log(error);\n let message = '';\n if (error.error.responseMessage) {\n message = error.error.responseMessage;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else if (error.error.message) {\n message = error.error.message;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else if (error.message) {\n message = error.message;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else {\n message = msgs.auth_interceptor.message;\n }\n this.dialog.open(AlertComponent, {\n disableClose: true,\n data: { title: msgs.auth_interceptor.title, message }\n });\n }\n\n showSnackError(message: any, panelClass: any[] = []): void {\n console.log(message);\n setTimeout(() => {\n this.snackBar.open(message, undefined, {\n duration: 5000,\n panelClass,\n verticalPosition: 'top'\n });\n });\n }\n\n setInterceptorMessages(message: any): void {\n this.interceptorMessages = message;\n }\n\n // eslint-disable-next-line max-lines-per-function\n getInterceptorMessages(): string {\n if (!this.interceptorMessages) {\n const lang = window.localStorage.getItem('LANG');\n const messagesEn = {\n auth_interceptor : {\n session_lost :'Session lost, you have to login again.',\n not_found: 'Resource not found',\n title: 'We are sorry!',\n message: 'We had a problem trying to process your request.',\n code:'Code',\n unavailable:'Service unavailable, please try again in a few minutes.',\n connection_error:'Could not connect to server, please check your network connection.'\n }\n };\n const messagesEs = {\n auth_interceptor: {\n session_lost: 'Su sesión expiró, debe iniciar sesión nuevamente.',\n not_found: 'Recurso no encontrado',\n title: '¡Lo sentimos!',\n message: 'Tuvimos un problema al tratar de procesar su solicitud.',\n code: 'Código',\n unavailable: 'Servicio no disponible, inténtelo de nuevo en unos minutos.',\n connection_error: 'No se pudo conectar al servidor, verifique su conexión de red.'\n }\n };\n if (lang && lang==='en') {\n this.interceptorMessages = messagesEn;\n } else {\n this.interceptorMessages = messagesEs;\n }\n }\n return this.interceptorMessages;\n }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { CryptoService } from './services/crypto.service';\nimport { AlertComponent } from './alert/alert.component';\nimport { MessagesService } from './services/messages.service';\nimport { SessionService } from './services/session.service';\nimport { SsiSecurityCommonsComponent } from './ssi-security-commons.component';\nimport { MatButtonModule } from '@angular/material/button';\n\n\n@NgModule({\n declarations: [\n SsiSecurityCommonsComponent,\n AlertComponent\n ],\n imports: [\n MatSnackBarModule,\n MatDialogModule,\n MatButtonModule\n ],\n exports: [\n SsiSecurityCommonsComponent\n ],\n providers: [\n MessagesService,\n SessionService,\n CryptoService\n ]\n})\nexport class SsiSecurityCommonsModule {\n static forRoot(environment: any): ModuleWithProviders<SsiSecurityCommonsModule> {\n return {\n ngModule: SsiSecurityCommonsModule,\n providers: [{provide: 'environment', useValue: environment}]\n };\n }\n}\n","/* eslint-disable */\nimport { Injectable, Injector } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor,\n HttpErrorResponse,\n HttpResponse\n} from '@angular/common/http';\nimport { BehaviorSubject, Observable, throwError } from 'rxjs';\nimport { catchError, filter, map, switchMap, take, tap } from 'rxjs/operators';\nimport { MessagesService } from './messages.service';\nimport { CryptoService } from './crypto.service';\nimport { Router } from '@angular/router';\nimport { SessionService } from './session.service';\n\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n\n constructor(private cryptoService: CryptoService) {\n console.log('AuthInterceptor constructor');\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n console.log('intercept');\n\n const token = window.localStorage.getItem('TOKEN');\n\n console.log(token);\n console.log(request);\n\n let encrypt = request.headers.get('encrypted');\n if(encrypt && encrypt === 'true'){\n let body = request.body;\n let bodyStr = JSON.stringify(body);\n var newBody = {\n encrypted: this.cryptoService.encrypt(bodyStr)\n }\n request = request.clone({\n body: newBody\n });\n }\n\n if (token) {\n request = request.clone({\n setHeaders: {\n Authorization: 'Bearer ' + token,\n }\n });\n }\n return next.handle(request);\n }\n}\n\n\n@Injectable()\nexport class ResponseInterceptor implements HttpInterceptor {\n\n private messages: MessagesService | undefined;\n private isRefreshing = false;\n private refreshTokenSubject: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n\n constructor(private injector: Injector,\n private router: Router,\n private cryptoService: CryptoService,\n private sessionService: SessionService) {\n console.log('ResponseInterceptor constructor');\n setTimeout(() => {\n this.messages = this.injector.get(MessagesService);\n })\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n return next.handle(request).pipe(\n map((event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n console.log(request.headers.get('encrypted'));\n let encrypt = request.headers.get('encrypted');\n if(encrypt && encrypt === 'true'){\n event = event.clone({body: this.decryptBody(event.body)});\n }\n }\n return event;\n }),\n catchError(error => {\n if (error instanceof HttpErrorResponse) {\n console.error(error);\n let nerror = error;\n /*let encrypt = request.headers.get('encrypted');\n if(encrypt && encrypt === 'true'){\n nerror = new HttpErrorResponse({\n error: this.decryptBody(error.error),\n headers: error.headers,\n status: error.status,\n statusText: error.statusText,\n url: error.url || request.urlWithParams || undefined,\n });\n }*/\n if (nerror.status === 401) {\n console.log(this.router.url);\n if (this.router.url != '/login' && this.router.url.indexOf('/login')<0) {\n console.log('401--->'+ request.url);\n return this.handle401Error(request, next);\n } else {\n return throwError(nerror);\n }\n } else {\n this.messages?.showErrorMessage(nerror);\n }\n }\n })) as Observable<HttpEvent<any>>;\n }\n\n decryptBody(body: any): any {\n console.log(body);\n let encrypted = body.encrypted;\n let strJson = this.cryptoService.decrypt(encrypted);\n return JSON.parse(strJson);\n }\n\n\n private handle401Error(request: HttpRequest<any>, next: HttpHandler) {\n console.log('handle401Error');\n console.log(this.isRefreshing);\n if (!this.isRefreshing) {\n this.isRefreshing = true;\n this.refreshTokenSubject.next(null);\n const refreshToken = this.sessionService.getRefreshToken();\n console.log(refreshToken);\n if (refreshToken){\n return this.sessionService.getNewToken(refreshToken).pipe(\n switchMap((res: any) => {\n console.log(res);\n this.isRefreshing = false;\n this.sessionService.setToken(res.data.accessToken);\n this.sessionService.setRefreshToken(res.data.refreshToken);\n this.refreshTokenSubject.next(res.data.accessToken);\n return next.handle(this.addTokenHeader(request, res.data.accessToken));\n }),\n catchError((err) => {\n this.isRefreshing = false;\n this.sessionService.logout();\n //this.router.navigate(['/login']);\n this.goToLogin();\n return throwError(err);\n })\n );\n }\n } else {\n return this.refreshTokenSubject.pipe(\n filter(token => token !== null),\n take(1),\n switchMap((token) => next.handle(this.addTokenHeader(request, token)))\n );\n }\n }\n\n private addTokenHeader(request: HttpRequest<any>, token: string) {\n return request.clone({ headers: request.headers.set('Authorization', 'Bearer ' + token) });\n }\n\n private goToLogin(): void {\n this.sessionService.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n const url = window.location.href;\n if (url.indexOf(loginUrl)<0) {\n window.location.href = loginUrl + '?continue='+encodeURIComponent(url);\n }\n }, (err) => {\n console.error(err);\n });\n }\n\n}\n\n\n\n\n","/*\n * Public API Surface of ssi-security-commons\n */\n\nexport * from './lib/ssi-security-commons.service';\nexport * from './lib/ssi-security-commons.component';\nexport * from './lib/ssi-security-commons.module';\nexport * from './lib/services/auth-interceptor.service';\nexport * from './lib/services/session.service';\nexport * from './lib/services/messages.service';\nexport * from './lib/user.model';\nexport * from './lib/services/crypto.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SessionService","i2","i3","i1.CryptoService","i3.SessionService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ssi-security-commons.mjs","sources":["../../../projects/ssi-security-commons/src/lib/ssi-security-commons.service.ts","../../../projects/ssi-security-commons/src/lib/ssi-security-commons.component.ts","../../../projects/ssi-security-commons/src/lib/services/crypto.service.ts","../../../projects/ssi-security-commons/src/lib/alert/alert.component.ts","../../../projects/ssi-security-commons/src/lib/alert/alert.component.html","../../../projects/ssi-security-commons/src/lib/services/session.service.ts","../../../projects/ssi-security-commons/src/lib/services/messages.service.ts","../../../projects/ssi-security-commons/src/lib/ssi-security-commons.module.ts","../../../projects/ssi-security-commons/src/lib/services/auth-interceptor.service.ts","../../../projects/ssi-security-commons/src/public-api.ts","../../../projects/ssi-security-commons/src/ssi-security-commons.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SsiSecurityCommonsService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-ssi-security-commons',\n template: `\n <p>\n ssi-security-commons works!\n </p>\n `,\n styles: [\n ]\n})\nexport class SsiSecurityCommonsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport * as CryptoJS from 'crypto-js';\n\n@Injectable()\nexport class CryptoService {\n\n private configuration: any;\n private key: any;\n private secret = '&E)H@McQfThWmZq4';\n\n constructor() {\n this.configuration = {\n mode: CryptoJS.mode.ECB\n };\n const hash = CryptoJS.SHA1(this.secret);\n this.key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n }\n\n encrypt(text: string): string {\n return CryptoJS.AES.encrypt(text, this.key, this.configuration).toString();\n }\n\n decrypt(text: string): string {\n return CryptoJS.AES.decrypt(text, this.key, this.configuration).toString(CryptoJS.enc.Utf8);\n }\n\n encryptWithSecret(text: string, secret: string): string {\n const hash = CryptoJS.SHA1(secret);\n const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n return CryptoJS.AES.encrypt(text, key, this.configuration).toString();\n }\n\n decryptWithSecret(text: string, secret: string): string {\n const hash = CryptoJS.SHA1(secret);\n const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n return CryptoJS.AES.decrypt(text, key, this.configuration).toString(CryptoJS.enc.Utf8);\n }\n\n}\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nexport interface DialogData {\n title?: string;\n icon?: string;\n type?: string;\n message?: string;\n okText?: string;\n cancelText?: string;\n}\n\n@Component({\n selector: 'lib-app-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss']\n})\nexport class AlertComponent {\n\n constructor(\n public dialogRef: MatDialogRef<AlertComponent>,\n @Inject(MAT_DIALOG_DATA) public data: DialogData\n ) { }\n\n onConfirm(): void {\n this.dialogRef.close(true);\n }\n\n onCancel(): void {\n this.dialogRef.close(null);\n }\n}\n","<h1 mat-dialog-title>{{data.title?data.title:'Alert'}}</h1>\n<div mat-dialog-content class=\"alert-min-width\">\n <div>\n {{data.message}}\n </div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button *ngIf=\"data?.cancelText\" mat-button (click)=\"onCancel()\">{{data.cancelText ? data.cancelText : 'Cancel'}}</button>\n <button mat-button color=\"primary\" (click)=\"onConfirm()\">{{data.okText ? data.okText : 'OK'}}</button>\n</div>\n","/* eslint-disable max-lines-per-function */\n/* eslint-disable arrow-body-style */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { User } from '../user.model';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CrossStorageClient } from 'cross-storage';\n\n\n@Injectable()\nexport class SessionService {\n\n userdata: User | undefined;\n token: string | undefined;\n refreshToken: string | undefined;\n endPoint: string;\n loginUrl = 'http://localhost:4200/login';\n storage: any;\n\n constructor(private http: HttpClient,\n @Inject('environment') environment: any) {\n this.endPoint = environment.endPoint;\n const urlHub = environment.sessionHub;\n console.log(urlHub);\n this.storage = new CrossStorageClient(urlHub, {timeout: 5000});\n }\n\n public checkSessionData(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n let data;\n let token;\n let refreshToken;\n const self = this;\n\n this.storage.onConnect().then(function () {\n return self.storage.get('USERDATA', 'TOKEN', 'REFRESH_TOKEN');\n }).then(function (res: any) {\n console.log(res);\n data = res[0];\n token = res[1];\n refreshToken = res[2];\n\n if (data && token && refreshToken) {\n const user = JSON.parse(data);\n self.saveCredentials(token, refreshToken);\n self.saveUserData(user);\n resolve('OK');\n } else {\n self.destroyCredentials();\n self.destroyUserData();\n self.getLoginUrl().subscribe(res1 => {\n console.log(res1);\n self.loginUrl = res1.data;\n const url = window.location.href;\n if (url.indexOf('/login')<0 && url.indexOf('/forgot')<0 && url.indexOf('/reset')<0) {\n window.location.href = self.loginUrl + '?continue='+encodeURIComponent(url);\n }\n resolve('NOK');\n }, (err) => {\n console.error(err);\n reject(err);\n });\n }\n\n }).catch(function (err: any) {\n console.error(err);\n reject(err);\n });\n });\n return promise;\n }\n\n public async reviewSessionData(): Promise<any> {\n const value = await this.checkSessionData() as any;\n console.log(`async result: ${value}`);\n return value;\n }\n\n public setUserdata(userdata: any): void {\n this.userdata = userdata;\n }\n\n public setTokens(token: any, refreshToken: any): void {\n this.token = token;\n this.refreshToken = refreshToken;\n }\n\n public getUserdata(): User | undefined {\n return this.userdata;\n }\n\n public setRefreshToken(refreshToken: any): void {\n this.refreshToken = refreshToken;\n window.localStorage.setItem('REFRESH_TOKEN', refreshToken);\n this.storage.onConnect().then(() => {\n return this.storage.set('REFRESH_TOKEN', refreshToken);\n });\n }\n\n public getRefreshToken(): string | undefined {\n return this.refreshToken;\n }\n\n public setToken(token: any): any {\n this.token = token;\n window.localStorage.setItem('TOKEN', token);\n this.storage.onConnect().then(() => {\n return this.storage.set('TOKEN', token);\n });\n }\n\n public getToken(): any {\n return this.token;\n }\n\n public destroyCredentials(): void {\n this.token = undefined;\n this.refreshToken = undefined;\n window.localStorage.removeItem('TOKEN');\n window.localStorage.removeItem('REFRESH_TOKEN');\n this.storage.onConnect().then(() => {\n return this.storage.del('TOKEN', 'REFRESH_TOKEN');\n });\n }\n\n public destroyUserData(): void {\n this.userdata = undefined;\n window.localStorage.removeItem('USERDATA');\n this.storage.onConnect().then(() => {\n return this.storage.del('USERDATA');\n });\n }\n\n public saveCredentials(token: any, refreshToken: any): void {\n this.token = token;\n this.refreshToken = refreshToken;\n window.localStorage.setItem('TOKEN', token);\n window.localStorage.setItem('REFRESH_TOKEN', refreshToken);\n this.storage.onConnect().then(() => {\n return this.storage.set('TOKEN', token);\n });\n this.storage.onConnect().then(() => {\n return this.storage.set('REFRESH_TOKEN', refreshToken);\n });\n }\n\n public saveUserData(userdata: any): void {\n this.userdata = userdata;\n window.localStorage.setItem('USERDATA', JSON.stringify(this.userdata));\n this.storage.onConnect().then(() => {\n return this.storage.set('USERDATA', JSON.stringify(this.userdata));\n });\n }\n\n public isLoggedIn(): boolean {\n return !!this.userdata;\n }\n\n logout(): Promise<any> {\n return new Promise((resolve, reject) => {\n this.logoutApi(this.userdata?.userId).subscribe(res => {\n console.log(res);\n this.destroyCredentials();\n this.destroyUserData();\n this.goToLogin();\n resolve(null);\n }, (err) => {\n this.destroyCredentials();\n this.destroyUserData();\n console.error(err);\n reject(err);\n });\n });\n }\n\n getNewToken(refreshToken: string): any {\n console.log('getNewToken');\n const httpOptions = {\n headers: new HttpHeaders({'Content-Type': 'application/json' })\n };\n return this.http.post(this.endPoint + '/auth/refresh-token', { refreshToken }, httpOptions);\n }\n\n getLoginUrl(): Observable<any> {\n return this.http.get<any>(this.endPoint + '/auth/login/url')\n .pipe(\n map(res => res));\n }\n\n getHomeUrl(): Observable<any> {\n return this.http.get<any>(this.endPoint + '/auth/home/url')\n .pipe(\n map(res => res));\n }\n\n logoutApi(userId: any): Observable<any> {\n return this.http.post<any>(this.endPoint + '/auth/logout', {userId})\n .pipe(\n map(res => res));\n }\n\n goToLogin(): void {\n this.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n window.location.href = loginUrl;\n }, (err) => {\n console.error(err);\n });\n }\n\n loadSessionData(): void {\n const data = window.localStorage.getItem('USERDATA');\n const token = window.localStorage.getItem('TOKEN');\n const refreshToken = window.localStorage.getItem('REFRESH_TOKEN');\n if (data && token && refreshToken) {\n const user = JSON.parse(data);\n this.setTokens(token, refreshToken);\n this.setUserdata(user);\n }\n }\n\n}\n\n","/* eslint-disable max-lines-per-function */\n/* eslint-disable quote-props */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n// import { Router } from '@angular/router';\nimport { AlertComponent } from '../alert/alert.component';\nimport { SessionService } from './session.service';\n\n\n@Injectable()\nexport class MessagesService {\n\n private interceptorMessages: any;\n\n constructor(\n public auth: SessionService,\n // private router: Router,\n private snackBar: MatSnackBar,\n public dialog: MatDialog\n ) { }\n\n\n // eslint-disable-next-line max-lines-per-function\n showErrorMessage(error: HttpErrorResponse): void {\n console.log('error: ', error);\n const msgs: any = this.getInterceptorMessages();\n switch (error.status) {\n case 302: {\n this.messageSnackError(error);\n break;\n }\n case 400: {\n this.showSnackError(error.message, ['snack-error']);\n break;\n }\n case 403: {\n this.goNavigateLogin(msgs);\n break;\n }\n case 404: {\n this.showSnackError(msgs.auth_interceptor.not_found, ['snack-error']);\n break;\n }\n case 409: {\n this.messageAlertDialog(error, msgs);\n break;\n }\n case 412: {\n this.showSnackError(error.error.responseMessage, ['snack-error']);\n break;\n }\n case 428: {\n this.showSnackError(error.error.responseMessage, ['snack-error']);\n break;\n }\n case 500: {\n this.messageAlertDialog(error, msgs);\n break;\n }\n case 503: {\n this.showSnackError(msgs.auth_interceptor.unavailable, ['snack-error']);\n break;\n }\n case -1: {\n this.showSnackError(msgs.auth_interceptor.connection_error);\n break;\n }\n case 0: {\n this.showSnackError(msgs.auth_interceptor.connection_error);\n break;\n }\n }\n }\n\n messageSnackError(error: any): void {\n const errorMessage = error.error && error.error.responseMessage ? error.error.responseMessage :\n error.error.message ? error.error.message : error.message;\n this.showSnackError(errorMessage, ['snack-error']);\n }\n\n goNavigateLogin(msgs: any): void {\n // if (this.router.url !== '/login') {\n this.showSnackError(msgs.auth_interceptor.session_lost, ['snack-error']);\n // this.router.navigate(['/login']);\n this.auth.destroyCredentials();\n this.auth.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n const url = window.location.href;\n if (url.indexOf(loginUrl)<0) {\n window.location.href = loginUrl + '?continue='+encodeURIComponent(url);\n }\n }, (err) => {\n console.error(err);\n });\n // }\n }\n\n messageAlertDialog(error: any, msgs: any): void {\n console.log(error);\n let message = '';\n if (error.error.responseMessage) {\n message = error.error.responseMessage;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else if (error.error.message) {\n message = error.error.message;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else if (error.message) {\n message = error.message;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else {\n message = msgs.auth_interceptor.message;\n }\n this.dialog.open(AlertComponent, {\n disableClose: true,\n data: { title: msgs.auth_interceptor.title, message }\n });\n }\n\n showSnackError(message: any, panelClass: any[] = []): void {\n console.log(message);\n setTimeout(() => {\n this.snackBar.open(message, undefined, {\n duration: 5000,\n panelClass,\n verticalPosition: 'top'\n });\n });\n }\n\n setInterceptorMessages(message: any): void {\n this.interceptorMessages = message;\n }\n\n // eslint-disable-next-line max-lines-per-function\n getInterceptorMessages(): string {\n if (!this.interceptorMessages) {\n const lang = window.localStorage.getItem('LANG');\n const messagesEn = {\n auth_interceptor : {\n session_lost :'Session lost, you have to login again.',\n not_found: 'Resource not found',\n title: 'We are sorry!',\n message: 'We had a problem trying to process your request.',\n code:'Code',\n unavailable:'Service unavailable, please try again in a few minutes.',\n connection_error:'Could not connect to server, please check your network connection.'\n }\n };\n const messagesEs = {\n auth_interceptor: {\n session_lost: 'Su sesión expiró, debe iniciar sesión nuevamente.',\n not_found: 'Recurso no encontrado',\n title: '¡Lo sentimos!',\n message: 'Tuvimos un problema al tratar de procesar su solicitud.',\n code: 'Código',\n unavailable: 'Servicio no disponible, inténtelo de nuevo en unos minutos.',\n connection_error: 'No se pudo conectar al servidor, verifique su conexión de red.'\n }\n };\n if (lang && lang==='en') {\n this.interceptorMessages = messagesEn;\n } else {\n this.interceptorMessages = messagesEs;\n }\n }\n return this.interceptorMessages;\n }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { CryptoService } from './services/crypto.service';\nimport { AlertComponent } from './alert/alert.component';\nimport { MessagesService } from './services/messages.service';\nimport { SessionService } from './services/session.service';\nimport { SsiSecurityCommonsComponent } from './ssi-security-commons.component';\nimport { MatButtonModule } from '@angular/material/button';\n\n\n@NgModule({\n declarations: [\n SsiSecurityCommonsComponent,\n AlertComponent\n ],\n imports: [\n MatSnackBarModule,\n MatDialogModule,\n MatButtonModule\n ],\n exports: [\n SsiSecurityCommonsComponent\n ],\n providers: [\n MessagesService,\n SessionService,\n CryptoService\n ]\n})\nexport class SsiSecurityCommonsModule {\n static forRoot(environment: any): ModuleWithProviders<SsiSecurityCommonsModule> {\n return {\n ngModule: SsiSecurityCommonsModule,\n providers: [{provide: 'environment', useValue: environment}]\n };\n }\n}\n","/* eslint-disable */\nimport { Injectable, Injector } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor,\n HttpErrorResponse,\n HttpResponse\n} from '@angular/common/http';\nimport { BehaviorSubject, Observable, throwError } from 'rxjs';\nimport { catchError, filter, map, switchMap, take, tap } from 'rxjs/operators';\nimport { MessagesService } from './messages.service';\nimport { CryptoService } from './crypto.service';\nimport { Router } from '@angular/router';\nimport { SessionService } from './session.service';\n\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n\n constructor(private cryptoService: CryptoService) {\n console.log('AuthInterceptor constructor');\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n //console.log('intercept');\n\n const token = window.localStorage.getItem('TOKEN');\n\n //console.log(token);\n //console.log(request);\n\n let encrypt = request.headers.get('encrypted');\n if(encrypt && encrypt === 'true'){\n let body = request.body;\n let bodyStr = JSON.stringify(body);\n var newBody = {\n encrypted: this.cryptoService.encrypt(bodyStr)\n }\n request = request.clone({\n body: newBody\n });\n }\n\n if (token) {\n request = request.clone({\n setHeaders: {\n Authorization: 'Bearer ' + token,\n }\n });\n }\n return next.handle(request);\n }\n}\n\n\n@Injectable()\nexport class ResponseInterceptor implements HttpInterceptor {\n\n private messages: MessagesService | undefined;\n private isRefreshing = false;\n private refreshTokenSubject: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n\n constructor(private injector: Injector,\n private router: Router,\n private cryptoService: CryptoService,\n private sessionService: SessionService) {\n //console.log('ResponseInterceptor constructor');\n setTimeout(() => {\n this.messages = this.injector.get(MessagesService);\n })\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n return next.handle(request).pipe(\n map((event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n //console.log(request.headers.get('encrypted'));\n let encrypt = request.headers.get('encrypted');\n if(encrypt && encrypt === 'true'){\n event = event.clone({body: this.decryptBody(event.body)});\n }\n }\n return event;\n }),\n catchError(error => {\n if (error instanceof HttpErrorResponse) {\n console.error(error);\n let nerror = error;\n /*let encrypt = request.headers.get('encrypted');\n if(encrypt && encrypt === 'true'){\n nerror = new HttpErrorResponse({\n error: this.decryptBody(error.error),\n headers: error.headers,\n status: error.status,\n statusText: error.statusText,\n url: error.url || request.urlWithParams || undefined,\n });\n }*/\n if (nerror.status === 401) {\n console.log(this.router.url);\n if (this.router.url != '/login' && this.router.url.indexOf('/login')<0) {\n console.log('401--->'+ request.url);\n return this.handle401Error(request, next);\n } else {\n return throwError(nerror);\n }\n } else {\n this.messages?.showErrorMessage(nerror);\n }\n }\n })) as Observable<HttpEvent<any>>;\n }\n\n decryptBody(body: any): any {\n //console.log(body);\n let encrypted = body.encrypted;\n let strJson = this.cryptoService.decrypt(encrypted);\n return JSON.parse(strJson);\n }\n\n\n private handle401Error(request: HttpRequest<any>, next: HttpHandler) {\n //console.log('handle401Error');\n //console.log(this.isRefreshing);\n if (!this.isRefreshing) {\n this.isRefreshing = true;\n this.refreshTokenSubject.next(null);\n const refreshToken = this.sessionService.getRefreshToken();\n //console.log(refreshToken);\n if (refreshToken){\n return this.sessionService.getNewToken(refreshToken).pipe(\n switchMap((res: any) => {\n console.log('refresh token response');\n console.log(res);\n this.isRefreshing = false;\n this.sessionService.setToken(res.data.accessToken);\n this.sessionService.setRefreshToken(res.data.refreshToken);\n this.refreshTokenSubject.next(res.data.accessToken);\n return next.handle(this.addTokenHeader(request, res.data.accessToken));\n }),\n catchError((err) => {\n this.isRefreshing = false;\n this.sessionService.logout();\n //this.router.navigate(['/login']);\n this.goToLogin();\n return throwError(err);\n })\n );\n }\n } else {\n return this.refreshTokenSubject.pipe(\n filter(token => token !== null),\n take(1),\n switchMap((token) => next.handle(this.addTokenHeader(request, token)))\n );\n }\n }\n\n private addTokenHeader(request: HttpRequest<any>, token: string) {\n return request.clone({ headers: request.headers.set('Authorization', 'Bearer ' + token) });\n }\n\n private goToLogin(): void {\n this.sessionService.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n const url = window.location.href;\n if (url.indexOf(loginUrl)<0) {\n window.location.href = loginUrl + '?continue='+encodeURIComponent(url);\n }\n }, (err) => {\n console.error(err);\n });\n }\n\n}\n\n\n\n\n","/*\n * Public API Surface of ssi-security-commons\n */\n\nexport * from './lib/ssi-security-commons.service';\nexport * from './lib/ssi-security-commons.component';\nexport * from './lib/ssi-security-commons.module';\nexport * from './lib/services/auth-interceptor.service';\nexport * from './lib/services/session.service';\nexport * from './lib/services/messages.service';\nexport * from './lib/user.model';\nexport * from './lib/services/crypto.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SessionService","i2","i3","i1.CryptoService","i3.SessionService"],"mappings":"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"}
|
|
@@ -104,7 +104,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
|
|
|
104
104
|
args: [MAT_DIALOG_DATA]
|
|
105
105
|
}] }]; } });
|
|
106
106
|
|
|
107
|
-
/* eslint-disable
|
|
107
|
+
/* eslint-disable max-lines-per-function */
|
|
108
108
|
class SessionService {
|
|
109
109
|
constructor(http, environment) {
|
|
110
110
|
this.http = http;
|
|
@@ -115,14 +115,11 @@ class SessionService {
|
|
|
115
115
|
this.storage = new CrossStorageClient(urlHub, { timeout: 5000 });
|
|
116
116
|
}
|
|
117
117
|
checkSessionData() {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
let token = undefined;
|
|
124
|
-
let refreshToken = undefined;
|
|
125
|
-
let self = this;
|
|
118
|
+
const promise = new Promise((resolve, reject) => {
|
|
119
|
+
let data;
|
|
120
|
+
let token;
|
|
121
|
+
let refreshToken;
|
|
122
|
+
const self = this;
|
|
126
123
|
this.storage.onConnect().then(function () {
|
|
127
124
|
return self.storage.get('USERDATA', 'TOKEN', 'REFRESH_TOKEN');
|
|
128
125
|
}).then(function (res) {
|
|
@@ -139,9 +136,9 @@ class SessionService {
|
|
|
139
136
|
else {
|
|
140
137
|
self.destroyCredentials();
|
|
141
138
|
self.destroyUserData();
|
|
142
|
-
self.getLoginUrl().subscribe(
|
|
143
|
-
console.log(
|
|
144
|
-
self.loginUrl =
|
|
139
|
+
self.getLoginUrl().subscribe(res1 => {
|
|
140
|
+
console.log(res1);
|
|
141
|
+
self.loginUrl = res1.data;
|
|
145
142
|
const url = window.location.href;
|
|
146
143
|
if (url.indexOf('/login') < 0 && url.indexOf('/forgot') < 0 && url.indexOf('/reset') < 0) {
|
|
147
144
|
window.location.href = self.loginUrl + '?continue=' + encodeURIComponent(url);
|
|
@@ -167,6 +164,10 @@ class SessionService {
|
|
|
167
164
|
setUserdata(userdata) {
|
|
168
165
|
this.userdata = userdata;
|
|
169
166
|
}
|
|
167
|
+
setTokens(token, refreshToken) {
|
|
168
|
+
this.token = token;
|
|
169
|
+
this.refreshToken = refreshToken;
|
|
170
|
+
}
|
|
170
171
|
getUserdata() {
|
|
171
172
|
return this.userdata;
|
|
172
173
|
}
|
|
@@ -272,6 +273,16 @@ class SessionService {
|
|
|
272
273
|
console.error(err);
|
|
273
274
|
});
|
|
274
275
|
}
|
|
276
|
+
loadSessionData() {
|
|
277
|
+
const data = window.localStorage.getItem('USERDATA');
|
|
278
|
+
const token = window.localStorage.getItem('TOKEN');
|
|
279
|
+
const refreshToken = window.localStorage.getItem('REFRESH_TOKEN');
|
|
280
|
+
if (data && token && refreshToken) {
|
|
281
|
+
const user = JSON.parse(data);
|
|
282
|
+
this.setTokens(token, refreshToken);
|
|
283
|
+
this.setUserdata(user);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
275
286
|
}
|
|
276
287
|
SessionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SessionService, deps: [{ token: i1$1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
277
288
|
SessionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SessionService });
|
|
@@ -499,10 +510,10 @@ class AuthInterceptor {
|
|
|
499
510
|
console.log('AuthInterceptor constructor');
|
|
500
511
|
}
|
|
501
512
|
intercept(request, next) {
|
|
502
|
-
console.log('intercept');
|
|
513
|
+
//console.log('intercept');
|
|
503
514
|
const token = window.localStorage.getItem('TOKEN');
|
|
504
|
-
console.log(token);
|
|
505
|
-
console.log(request);
|
|
515
|
+
//console.log(token);
|
|
516
|
+
//console.log(request);
|
|
506
517
|
let encrypt = request.headers.get('encrypted');
|
|
507
518
|
if (encrypt && encrypt === 'true') {
|
|
508
519
|
let body = request.body;
|
|
@@ -537,7 +548,7 @@ class ResponseInterceptor {
|
|
|
537
548
|
this.sessionService = sessionService;
|
|
538
549
|
this.isRefreshing = false;
|
|
539
550
|
this.refreshTokenSubject = new BehaviorSubject(null);
|
|
540
|
-
console.log('ResponseInterceptor constructor');
|
|
551
|
+
//console.log('ResponseInterceptor constructor');
|
|
541
552
|
setTimeout(() => {
|
|
542
553
|
this.messages = this.injector.get(MessagesService);
|
|
543
554
|
});
|
|
@@ -545,7 +556,7 @@ class ResponseInterceptor {
|
|
|
545
556
|
intercept(request, next) {
|
|
546
557
|
return next.handle(request).pipe(map((event) => {
|
|
547
558
|
if (event instanceof HttpResponse) {
|
|
548
|
-
console.log(request.headers.get('encrypted'));
|
|
559
|
+
//console.log(request.headers.get('encrypted'));
|
|
549
560
|
let encrypt = request.headers.get('encrypted');
|
|
550
561
|
if (encrypt && encrypt === 'true') {
|
|
551
562
|
event = event.clone({ body: this.decryptBody(event.body) });
|
|
@@ -583,21 +594,22 @@ class ResponseInterceptor {
|
|
|
583
594
|
}));
|
|
584
595
|
}
|
|
585
596
|
decryptBody(body) {
|
|
586
|
-
console.log(body);
|
|
597
|
+
//console.log(body);
|
|
587
598
|
let encrypted = body.encrypted;
|
|
588
599
|
let strJson = this.cryptoService.decrypt(encrypted);
|
|
589
600
|
return JSON.parse(strJson);
|
|
590
601
|
}
|
|
591
602
|
handle401Error(request, next) {
|
|
592
|
-
console.log('handle401Error');
|
|
593
|
-
console.log(this.isRefreshing);
|
|
603
|
+
//console.log('handle401Error');
|
|
604
|
+
//console.log(this.isRefreshing);
|
|
594
605
|
if (!this.isRefreshing) {
|
|
595
606
|
this.isRefreshing = true;
|
|
596
607
|
this.refreshTokenSubject.next(null);
|
|
597
608
|
const refreshToken = this.sessionService.getRefreshToken();
|
|
598
|
-
console.log(refreshToken);
|
|
609
|
+
//console.log(refreshToken);
|
|
599
610
|
if (refreshToken) {
|
|
600
611
|
return this.sessionService.getNewToken(refreshToken).pipe(switchMap((res) => {
|
|
612
|
+
console.log('refresh token response');
|
|
601
613
|
console.log(res);
|
|
602
614
|
this.isRefreshing = false;
|
|
603
615
|
this.sessionService.setToken(res.data.accessToken);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssi-security-commons.mjs","sources":["../../../projects/ssi-security-commons/src/lib/ssi-security-commons.service.ts","../../../projects/ssi-security-commons/src/lib/ssi-security-commons.component.ts","../../../projects/ssi-security-commons/src/lib/services/crypto.service.ts","../../../projects/ssi-security-commons/src/lib/alert/alert.component.ts","../../../projects/ssi-security-commons/src/lib/alert/alert.component.html","../../../projects/ssi-security-commons/src/lib/services/session.service.ts","../../../projects/ssi-security-commons/src/lib/services/messages.service.ts","../../../projects/ssi-security-commons/src/lib/ssi-security-commons.module.ts","../../../projects/ssi-security-commons/src/lib/services/auth-interceptor.service.ts","../../../projects/ssi-security-commons/src/public-api.ts","../../../projects/ssi-security-commons/src/ssi-security-commons.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SsiSecurityCommonsService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-ssi-security-commons',\n template: `\n <p>\n ssi-security-commons works!\n </p>\n `,\n styles: [\n ]\n})\nexport class SsiSecurityCommonsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport * as CryptoJS from 'crypto-js';\n\n@Injectable()\nexport class CryptoService {\n\n private configuration: any;\n private key: any;\n private secret = '&E)H@McQfThWmZq4';\n\n constructor() {\n this.configuration = {\n mode: CryptoJS.mode.ECB\n };\n const hash = CryptoJS.SHA1(this.secret);\n this.key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n }\n\n encrypt(text: string): string {\n return CryptoJS.AES.encrypt(text, this.key, this.configuration).toString();\n }\n\n decrypt(text: string): string {\n return CryptoJS.AES.decrypt(text, this.key, this.configuration).toString(CryptoJS.enc.Utf8);\n }\n\n encryptWithSecret(text: string, secret: string): string {\n const hash = CryptoJS.SHA1(secret);\n const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n return CryptoJS.AES.encrypt(text, key, this.configuration).toString();\n }\n\n decryptWithSecret(text: string, secret: string): string {\n const hash = CryptoJS.SHA1(secret);\n const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n return CryptoJS.AES.decrypt(text, key, this.configuration).toString(CryptoJS.enc.Utf8);\n }\n\n}\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nexport interface DialogData {\n title?: string;\n icon?: string;\n type?: string;\n message?: string;\n okText?: string;\n cancelText?: string;\n}\n\n@Component({\n selector: 'lib-app-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss']\n})\nexport class AlertComponent {\n\n constructor(\n public dialogRef: MatDialogRef<AlertComponent>,\n @Inject(MAT_DIALOG_DATA) public data: DialogData\n ) { }\n\n onConfirm(): void {\n this.dialogRef.close(true);\n }\n\n onCancel(): void {\n this.dialogRef.close(null);\n }\n}\n","<h1 mat-dialog-title>{{data.title?data.title:'Alert'}}</h1>\n<div mat-dialog-content class=\"alert-min-width\">\n <div>\n {{data.message}}\n </div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button *ngIf=\"data?.cancelText\" mat-button (click)=\"onCancel()\">{{data.cancelText ? data.cancelText : 'Cancel'}}</button>\n <button mat-button color=\"primary\" (click)=\"onConfirm()\">{{data.okText ? data.okText : 'OK'}}</button>\n</div>\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { User } from '../user.model';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CrossStorageClient } from 'cross-storage';\n\n\n@Injectable()\nexport class SessionService {\n\n userdata: User | undefined;\n token: string | undefined;\n refreshToken: string | undefined;\n endPoint: string;\n loginUrl = 'http://localhost:4200/login';\n storage: any;\n\n constructor(private http: HttpClient,\n @Inject('environment') environment: any) {\n this.endPoint = environment.endPoint;\n const urlHub = environment.sessionHub;\n console.log(urlHub);\n this.storage = new CrossStorageClient(urlHub, {timeout: 5000});\n }\n\n public checkSessionData(){\n var promise = new Promise((resolve, reject) => {\n //const data = window.localStorage.getItem('USERDATA');\n //const token = window.localStorage.getItem('TOKEN');\n //const refreshToken = window.localStorage.getItem('REFRESH_TOKEN');\n let data = undefined;\n let token = undefined;\n let refreshToken = undefined;\n\n let self = this;\n this.storage.onConnect().then(function() {\n return self.storage.get('USERDATA', 'TOKEN', 'REFRESH_TOKEN');\n }).then(function(res: any) {\n console.log(res); \n data = res[0];\n token = res[1];\n refreshToken = res[2];\n\n if (data && token && refreshToken) {\n const user = JSON.parse(data);\n self.saveCredentials(token, refreshToken);\n self.saveUserData(user);\n resolve('OK');\n } else {\n self.destroyCredentials();\n self.destroyUserData();\n self.getLoginUrl().subscribe(res => {\n console.log(res);\n self.loginUrl = res.data;\n const url = window.location.href;\n if (url.indexOf('/login')<0 && url.indexOf('/forgot')<0 && url.indexOf('/reset')<0) {\n window.location.href = self.loginUrl + '?continue='+encodeURIComponent(url);\n }\n resolve('NOK');\n }, (err) => {\n console.error(err);\n reject(err);\n });\n }\n\n }).catch(function(err: any) {\n console.error(err);\n reject(err);\n });\n });\n return promise;\n }\n\n public async reviewSessionData() {\n const value = <any>await this.checkSessionData();\n console.log(`async result: ${value}`);\n return value;\n }\n\n public setUserdata(userdata: any): void {\n this.userdata = userdata;\n }\n\n public getUserdata(): User | undefined {\n return this.userdata;\n }\n\n public setRefreshToken(refreshToken: any): void {\n this.refreshToken = refreshToken;\n window.localStorage.setItem('REFRESH_TOKEN', refreshToken);\n this.storage.onConnect().then(() => {\n return this.storage.set('REFRESH_TOKEN', refreshToken);\n });\n }\n\n public getRefreshToken(): string | undefined {\n return this.refreshToken;\n }\n\n public setToken(token: any): any {\n this.token = token;\n window.localStorage.setItem('TOKEN', token);\n this.storage.onConnect().then(() => {\n return this.storage.set('TOKEN', token);\n });\n }\n\n public getToken(): any {\n return this.token;\n }\n\n public destroyCredentials(): void {\n this.token = undefined;\n this.refreshToken = undefined;\n window.localStorage.removeItem('TOKEN');\n window.localStorage.removeItem('REFRESH_TOKEN');\n this.storage.onConnect().then(() => {\n return this.storage.del('TOKEN', 'REFRESH_TOKEN');\n })\n }\n\n public destroyUserData(): void {\n this.userdata = undefined;\n window.localStorage.removeItem('USERDATA');\n this.storage.onConnect().then(() => {\n return this.storage.del('USERDATA');\n });\n }\n\n public saveCredentials(token: any, refreshToken: any): void {\n this.token = token;\n this.refreshToken = refreshToken;\n window.localStorage.setItem('TOKEN', token);\n window.localStorage.setItem('REFRESH_TOKEN', refreshToken);\n this.storage.onConnect().then(() => {\n return this.storage.set('TOKEN', token);\n });\n this.storage.onConnect().then(() => {\n return this.storage.set('REFRESH_TOKEN', refreshToken);\n });\n }\n\n public saveUserData(userdata: any): void {\n this.userdata = userdata;\n window.localStorage.setItem('USERDATA', JSON.stringify(this.userdata));\n this.storage.onConnect().then(() => {\n return this.storage.set('USERDATA', JSON.stringify(this.userdata));\n });\n }\n\n public isLoggedIn(): boolean {\n return !!this.userdata;\n }\n\n logout(): Promise<any> {\n return new Promise((resolve, reject) => {\n this.logoutApi(this.userdata?.userId).subscribe(res => {\n console.log(res);\n this.destroyCredentials();\n this.destroyUserData();\n this.goToLogin();\n resolve(null);\n }, (err) => {\n this.destroyCredentials();\n this.destroyUserData();\n console.error(err);\n reject(err);\n });\n });\n }\n\n getNewToken(refreshToken: string): any {\n console.log('getNewToken');\n const httpOptions = {\n headers: new HttpHeaders({'Content-Type': 'application/json' })\n };\n return this.http.post(this.endPoint + '/auth/refresh-token', { refreshToken }, httpOptions);\n }\n\n getLoginUrl(): Observable<any> {\n return this.http.get<any>(this.endPoint + '/auth/login/url')\n .pipe(\n map(res => res));\n }\n\n getHomeUrl(): Observable<any> {\n return this.http.get<any>(this.endPoint + '/auth/home/url')\n .pipe(\n map(res => res));\n }\n\n logoutApi(userId: any): Observable<any> {\n return this.http.post<any>(this.endPoint + '/auth/logout', {userId})\n .pipe(\n map(res => res));\n }\n\n goToLogin(): void {\n this.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n window.location.href = loginUrl;\n }, (err) => {\n console.error(err);\n });\n }\n\n\n}\n\n","/* eslint-disable quote-props */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n// import { Router } from '@angular/router';\nimport { AlertComponent } from '../alert/alert.component';\nimport { SessionService } from './session.service';\n\n\n@Injectable()\nexport class MessagesService {\n\n private interceptorMessages: any;\n\n constructor(\n public auth: SessionService,\n // private router: Router,\n private snackBar: MatSnackBar,\n public dialog: MatDialog\n ) { }\n\n\n // eslint-disable-next-line max-lines-per-function\n showErrorMessage(error: HttpErrorResponse): void {\n console.log('error: ', error);\n const msgs: any = this.getInterceptorMessages();\n switch (error.status) {\n case 302: {\n this.messageSnackError(error);\n break;\n }\n case 400: {\n this.showSnackError(error.message, ['snack-error']);\n break;\n }\n case 403: {\n this.goNavigateLogin(msgs);\n break;\n }\n case 404: {\n this.showSnackError(msgs.auth_interceptor.not_found, ['snack-error']);\n break;\n }\n case 409: {\n this.messageAlertDialog(error, msgs);\n break;\n }\n case 412: {\n this.showSnackError(error.error.responseMessage, ['snack-error']);\n break;\n }\n case 428: {\n this.showSnackError(error.error.responseMessage, ['snack-error']);\n break;\n }\n case 500: {\n this.messageAlertDialog(error, msgs);\n break;\n }\n case 503: {\n this.showSnackError(msgs.auth_interceptor.unavailable, ['snack-error']);\n break;\n }\n case -1: {\n this.showSnackError(msgs.auth_interceptor.connection_error);\n break;\n }\n case 0: {\n this.showSnackError(msgs.auth_interceptor.connection_error);\n break;\n }\n }\n }\n\n messageSnackError(error: any): void {\n const errorMessage = error.error && error.error.responseMessage ? error.error.responseMessage :\n error.error.message ? error.error.message : error.message;\n this.showSnackError(errorMessage, ['snack-error']);\n }\n\n goNavigateLogin(msgs: any): void {\n // if (this.router.url !== '/login') {\n this.showSnackError(msgs.auth_interceptor.session_lost, ['snack-error']);\n // this.router.navigate(['/login']);\n this.auth.destroyCredentials();\n this.auth.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n const url = window.location.href;\n if (url.indexOf(loginUrl)<0) {\n window.location.href = loginUrl + '?continue='+encodeURIComponent(url);\n }\n }, (err) => {\n console.error(err);\n });\n // }\n }\n\n messageAlertDialog(error: any, msgs: any): void {\n console.log(error);\n let message = '';\n if (error.error.responseMessage) {\n message = error.error.responseMessage;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else if (error.error.message) {\n message = error.error.message;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else if (error.message) {\n message = error.message;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else {\n message = msgs.auth_interceptor.message;\n }\n this.dialog.open(AlertComponent, {\n disableClose: true,\n data: { title: msgs.auth_interceptor.title, message }\n });\n }\n\n showSnackError(message: any, panelClass: any[] = []): void {\n console.log(message);\n setTimeout(() => {\n this.snackBar.open(message, undefined, {\n duration: 5000,\n panelClass,\n verticalPosition: 'top'\n });\n });\n }\n\n setInterceptorMessages(message: any): void {\n this.interceptorMessages = message;\n }\n\n // eslint-disable-next-line max-lines-per-function\n getInterceptorMessages(): string {\n if (!this.interceptorMessages) {\n const lang = window.localStorage.getItem('LANG');\n const messagesEn = {\n auth_interceptor : {\n session_lost :'Session lost, you have to login again.',\n not_found: 'Resource not found',\n title: 'We are sorry!',\n message: 'We had a problem trying to process your request.',\n code:'Code',\n unavailable:'Service unavailable, please try again in a few minutes.',\n connection_error:'Could not connect to server, please check your network connection.'\n }\n };\n const messagesEs = {\n auth_interceptor: {\n session_lost: 'Su sesión expiró, debe iniciar sesión nuevamente.',\n not_found: 'Recurso no encontrado',\n title: '¡Lo sentimos!',\n message: 'Tuvimos un problema al tratar de procesar su solicitud.',\n code: 'Código',\n unavailable: 'Servicio no disponible, inténtelo de nuevo en unos minutos.',\n connection_error: 'No se pudo conectar al servidor, verifique su conexión de red.'\n }\n };\n if (lang && lang==='en') {\n this.interceptorMessages = messagesEn;\n } else {\n this.interceptorMessages = messagesEs;\n }\n }\n return this.interceptorMessages;\n }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { CryptoService } from './services/crypto.service';\nimport { AlertComponent } from './alert/alert.component';\nimport { MessagesService } from './services/messages.service';\nimport { SessionService } from './services/session.service';\nimport { SsiSecurityCommonsComponent } from './ssi-security-commons.component';\nimport { MatButtonModule } from '@angular/material/button';\n\n\n@NgModule({\n declarations: [\n SsiSecurityCommonsComponent,\n AlertComponent\n ],\n imports: [\n MatSnackBarModule,\n MatDialogModule,\n MatButtonModule\n ],\n exports: [\n SsiSecurityCommonsComponent\n ],\n providers: [\n MessagesService,\n SessionService,\n CryptoService\n ]\n})\nexport class SsiSecurityCommonsModule {\n static forRoot(environment: any): ModuleWithProviders<SsiSecurityCommonsModule> {\n return {\n ngModule: SsiSecurityCommonsModule,\n providers: [{provide: 'environment', useValue: environment}]\n };\n }\n}\n","/* eslint-disable */\nimport { Injectable, Injector } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor,\n HttpErrorResponse,\n HttpResponse\n} from '@angular/common/http';\nimport { BehaviorSubject, Observable, throwError } from 'rxjs';\nimport { catchError, filter, map, switchMap, take, tap } from 'rxjs/operators';\nimport { MessagesService } from './messages.service';\nimport { CryptoService } from './crypto.service';\nimport { Router } from '@angular/router';\nimport { SessionService } from './session.service';\n\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n\n constructor(private cryptoService: CryptoService) {\n console.log('AuthInterceptor constructor');\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n console.log('intercept');\n\n const token = window.localStorage.getItem('TOKEN');\n\n console.log(token);\n console.log(request);\n\n let encrypt = request.headers.get('encrypted');\n if(encrypt && encrypt === 'true'){\n let body = request.body;\n let bodyStr = JSON.stringify(body);\n var newBody = {\n encrypted: this.cryptoService.encrypt(bodyStr)\n }\n request = request.clone({\n body: newBody\n });\n }\n\n if (token) {\n request = request.clone({\n setHeaders: {\n Authorization: 'Bearer ' + token,\n }\n });\n }\n return next.handle(request);\n }\n}\n\n\n@Injectable()\nexport class ResponseInterceptor implements HttpInterceptor {\n\n private messages: MessagesService | undefined;\n private isRefreshing = false;\n private refreshTokenSubject: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n\n constructor(private injector: Injector,\n private router: Router,\n private cryptoService: CryptoService,\n private sessionService: SessionService) {\n console.log('ResponseInterceptor constructor');\n setTimeout(() => {\n this.messages = this.injector.get(MessagesService);\n })\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n return next.handle(request).pipe(\n map((event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n console.log(request.headers.get('encrypted'));\n let encrypt = request.headers.get('encrypted');\n if(encrypt && encrypt === 'true'){\n event = event.clone({body: this.decryptBody(event.body)});\n }\n }\n return event;\n }),\n catchError(error => {\n if (error instanceof HttpErrorResponse) {\n console.error(error);\n let nerror = error;\n /*let encrypt = request.headers.get('encrypted');\n if(encrypt && encrypt === 'true'){\n nerror = new HttpErrorResponse({\n error: this.decryptBody(error.error),\n headers: error.headers,\n status: error.status,\n statusText: error.statusText,\n url: error.url || request.urlWithParams || undefined,\n });\n }*/\n if (nerror.status === 401) {\n console.log(this.router.url);\n if (this.router.url != '/login' && this.router.url.indexOf('/login')<0) {\n console.log('401--->'+ request.url);\n return this.handle401Error(request, next);\n } else {\n return throwError(nerror);\n }\n } else {\n this.messages?.showErrorMessage(nerror);\n }\n }\n })) as Observable<HttpEvent<any>>;\n }\n\n decryptBody(body: any): any {\n console.log(body);\n let encrypted = body.encrypted;\n let strJson = this.cryptoService.decrypt(encrypted);\n return JSON.parse(strJson);\n }\n\n\n private handle401Error(request: HttpRequest<any>, next: HttpHandler) {\n console.log('handle401Error');\n console.log(this.isRefreshing);\n if (!this.isRefreshing) {\n this.isRefreshing = true;\n this.refreshTokenSubject.next(null);\n const refreshToken = this.sessionService.getRefreshToken();\n console.log(refreshToken);\n if (refreshToken){\n return this.sessionService.getNewToken(refreshToken).pipe(\n switchMap((res: any) => {\n console.log(res);\n this.isRefreshing = false;\n this.sessionService.setToken(res.data.accessToken);\n this.sessionService.setRefreshToken(res.data.refreshToken);\n this.refreshTokenSubject.next(res.data.accessToken);\n return next.handle(this.addTokenHeader(request, res.data.accessToken));\n }),\n catchError((err) => {\n this.isRefreshing = false;\n this.sessionService.logout();\n //this.router.navigate(['/login']);\n this.goToLogin();\n return throwError(err);\n })\n );\n }\n } else {\n return this.refreshTokenSubject.pipe(\n filter(token => token !== null),\n take(1),\n switchMap((token) => next.handle(this.addTokenHeader(request, token)))\n );\n }\n }\n\n private addTokenHeader(request: HttpRequest<any>, token: string) {\n return request.clone({ headers: request.headers.set('Authorization', 'Bearer ' + token) });\n }\n\n private goToLogin(): void {\n this.sessionService.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n const url = window.location.href;\n if (url.indexOf(loginUrl)<0) {\n window.location.href = loginUrl + '?continue='+encodeURIComponent(url);\n }\n }, (err) => {\n console.error(err);\n });\n }\n\n}\n\n\n\n\n","/*\n * Public API Surface of ssi-security-commons\n */\n\nexport * from './lib/ssi-security-commons.service';\nexport * from './lib/ssi-security-commons.component';\nexport * from './lib/ssi-security-commons.module';\nexport * from './lib/services/auth-interceptor.service';\nexport * from './lib/services/session.service';\nexport * from './lib/services/messages.service';\nexport * from './lib/user.model';\nexport * from './lib/services/crypto.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SessionService","i2","i3","i1.CryptoService","i3.SessionService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ssi-security-commons.mjs","sources":["../../../projects/ssi-security-commons/src/lib/ssi-security-commons.service.ts","../../../projects/ssi-security-commons/src/lib/ssi-security-commons.component.ts","../../../projects/ssi-security-commons/src/lib/services/crypto.service.ts","../../../projects/ssi-security-commons/src/lib/alert/alert.component.ts","../../../projects/ssi-security-commons/src/lib/alert/alert.component.html","../../../projects/ssi-security-commons/src/lib/services/session.service.ts","../../../projects/ssi-security-commons/src/lib/services/messages.service.ts","../../../projects/ssi-security-commons/src/lib/ssi-security-commons.module.ts","../../../projects/ssi-security-commons/src/lib/services/auth-interceptor.service.ts","../../../projects/ssi-security-commons/src/public-api.ts","../../../projects/ssi-security-commons/src/ssi-security-commons.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SsiSecurityCommonsService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-ssi-security-commons',\n template: `\n <p>\n ssi-security-commons works!\n </p>\n `,\n styles: [\n ]\n})\nexport class SsiSecurityCommonsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport * as CryptoJS from 'crypto-js';\n\n@Injectable()\nexport class CryptoService {\n\n private configuration: any;\n private key: any;\n private secret = '&E)H@McQfThWmZq4';\n\n constructor() {\n this.configuration = {\n mode: CryptoJS.mode.ECB\n };\n const hash = CryptoJS.SHA1(this.secret);\n this.key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n }\n\n encrypt(text: string): string {\n return CryptoJS.AES.encrypt(text, this.key, this.configuration).toString();\n }\n\n decrypt(text: string): string {\n return CryptoJS.AES.decrypt(text, this.key, this.configuration).toString(CryptoJS.enc.Utf8);\n }\n\n encryptWithSecret(text: string, secret: string): string {\n const hash = CryptoJS.SHA1(secret);\n const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n return CryptoJS.AES.encrypt(text, key, this.configuration).toString();\n }\n\n decryptWithSecret(text: string, secret: string): string {\n const hash = CryptoJS.SHA1(secret);\n const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n return CryptoJS.AES.decrypt(text, key, this.configuration).toString(CryptoJS.enc.Utf8);\n }\n\n}\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nexport interface DialogData {\n title?: string;\n icon?: string;\n type?: string;\n message?: string;\n okText?: string;\n cancelText?: string;\n}\n\n@Component({\n selector: 'lib-app-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss']\n})\nexport class AlertComponent {\n\n constructor(\n public dialogRef: MatDialogRef<AlertComponent>,\n @Inject(MAT_DIALOG_DATA) public data: DialogData\n ) { }\n\n onConfirm(): void {\n this.dialogRef.close(true);\n }\n\n onCancel(): void {\n this.dialogRef.close(null);\n }\n}\n","<h1 mat-dialog-title>{{data.title?data.title:'Alert'}}</h1>\n<div mat-dialog-content class=\"alert-min-width\">\n <div>\n {{data.message}}\n </div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button *ngIf=\"data?.cancelText\" mat-button (click)=\"onCancel()\">{{data.cancelText ? data.cancelText : 'Cancel'}}</button>\n <button mat-button color=\"primary\" (click)=\"onConfirm()\">{{data.okText ? data.okText : 'OK'}}</button>\n</div>\n","/* eslint-disable max-lines-per-function */\n/* eslint-disable arrow-body-style */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { User } from '../user.model';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CrossStorageClient } from 'cross-storage';\n\n\n@Injectable()\nexport class SessionService {\n\n userdata: User | undefined;\n token: string | undefined;\n refreshToken: string | undefined;\n endPoint: string;\n loginUrl = 'http://localhost:4200/login';\n storage: any;\n\n constructor(private http: HttpClient,\n @Inject('environment') environment: any) {\n this.endPoint = environment.endPoint;\n const urlHub = environment.sessionHub;\n console.log(urlHub);\n this.storage = new CrossStorageClient(urlHub, {timeout: 5000});\n }\n\n public checkSessionData(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n let data;\n let token;\n let refreshToken;\n const self = this;\n\n this.storage.onConnect().then(function () {\n return self.storage.get('USERDATA', 'TOKEN', 'REFRESH_TOKEN');\n }).then(function (res: any) {\n console.log(res);\n data = res[0];\n token = res[1];\n refreshToken = res[2];\n\n if (data && token && refreshToken) {\n const user = JSON.parse(data);\n self.saveCredentials(token, refreshToken);\n self.saveUserData(user);\n resolve('OK');\n } else {\n self.destroyCredentials();\n self.destroyUserData();\n self.getLoginUrl().subscribe(res1 => {\n console.log(res1);\n self.loginUrl = res1.data;\n const url = window.location.href;\n if (url.indexOf('/login')<0 && url.indexOf('/forgot')<0 && url.indexOf('/reset')<0) {\n window.location.href = self.loginUrl + '?continue='+encodeURIComponent(url);\n }\n resolve('NOK');\n }, (err) => {\n console.error(err);\n reject(err);\n });\n }\n\n }).catch(function (err: any) {\n console.error(err);\n reject(err);\n });\n });\n return promise;\n }\n\n public async reviewSessionData(): Promise<any> {\n const value = await this.checkSessionData() as any;\n console.log(`async result: ${value}`);\n return value;\n }\n\n public setUserdata(userdata: any): void {\n this.userdata = userdata;\n }\n\n public setTokens(token: any, refreshToken: any): void {\n this.token = token;\n this.refreshToken = refreshToken;\n }\n\n public getUserdata(): User | undefined {\n return this.userdata;\n }\n\n public setRefreshToken(refreshToken: any): void {\n this.refreshToken = refreshToken;\n window.localStorage.setItem('REFRESH_TOKEN', refreshToken);\n this.storage.onConnect().then(() => {\n return this.storage.set('REFRESH_TOKEN', refreshToken);\n });\n }\n\n public getRefreshToken(): string | undefined {\n return this.refreshToken;\n }\n\n public setToken(token: any): any {\n this.token = token;\n window.localStorage.setItem('TOKEN', token);\n this.storage.onConnect().then(() => {\n return this.storage.set('TOKEN', token);\n });\n }\n\n public getToken(): any {\n return this.token;\n }\n\n public destroyCredentials(): void {\n this.token = undefined;\n this.refreshToken = undefined;\n window.localStorage.removeItem('TOKEN');\n window.localStorage.removeItem('REFRESH_TOKEN');\n this.storage.onConnect().then(() => {\n return this.storage.del('TOKEN', 'REFRESH_TOKEN');\n });\n }\n\n public destroyUserData(): void {\n this.userdata = undefined;\n window.localStorage.removeItem('USERDATA');\n this.storage.onConnect().then(() => {\n return this.storage.del('USERDATA');\n });\n }\n\n public saveCredentials(token: any, refreshToken: any): void {\n this.token = token;\n this.refreshToken = refreshToken;\n window.localStorage.setItem('TOKEN', token);\n window.localStorage.setItem('REFRESH_TOKEN', refreshToken);\n this.storage.onConnect().then(() => {\n return this.storage.set('TOKEN', token);\n });\n this.storage.onConnect().then(() => {\n return this.storage.set('REFRESH_TOKEN', refreshToken);\n });\n }\n\n public saveUserData(userdata: any): void {\n this.userdata = userdata;\n window.localStorage.setItem('USERDATA', JSON.stringify(this.userdata));\n this.storage.onConnect().then(() => {\n return this.storage.set('USERDATA', JSON.stringify(this.userdata));\n });\n }\n\n public isLoggedIn(): boolean {\n return !!this.userdata;\n }\n\n logout(): Promise<any> {\n return new Promise((resolve, reject) => {\n this.logoutApi(this.userdata?.userId).subscribe(res => {\n console.log(res);\n this.destroyCredentials();\n this.destroyUserData();\n this.goToLogin();\n resolve(null);\n }, (err) => {\n this.destroyCredentials();\n this.destroyUserData();\n console.error(err);\n reject(err);\n });\n });\n }\n\n getNewToken(refreshToken: string): any {\n console.log('getNewToken');\n const httpOptions = {\n headers: new HttpHeaders({'Content-Type': 'application/json' })\n };\n return this.http.post(this.endPoint + '/auth/refresh-token', { refreshToken }, httpOptions);\n }\n\n getLoginUrl(): Observable<any> {\n return this.http.get<any>(this.endPoint + '/auth/login/url')\n .pipe(\n map(res => res));\n }\n\n getHomeUrl(): Observable<any> {\n return this.http.get<any>(this.endPoint + '/auth/home/url')\n .pipe(\n map(res => res));\n }\n\n logoutApi(userId: any): Observable<any> {\n return this.http.post<any>(this.endPoint + '/auth/logout', {userId})\n .pipe(\n map(res => res));\n }\n\n goToLogin(): void {\n this.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n window.location.href = loginUrl;\n }, (err) => {\n console.error(err);\n });\n }\n\n loadSessionData(): void {\n const data = window.localStorage.getItem('USERDATA');\n const token = window.localStorage.getItem('TOKEN');\n const refreshToken = window.localStorage.getItem('REFRESH_TOKEN');\n if (data && token && refreshToken) {\n const user = JSON.parse(data);\n this.setTokens(token, refreshToken);\n this.setUserdata(user);\n }\n }\n\n}\n\n","/* eslint-disable max-lines-per-function */\n/* eslint-disable quote-props */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n// import { Router } from '@angular/router';\nimport { AlertComponent } from '../alert/alert.component';\nimport { SessionService } from './session.service';\n\n\n@Injectable()\nexport class MessagesService {\n\n private interceptorMessages: any;\n\n constructor(\n public auth: SessionService,\n // private router: Router,\n private snackBar: MatSnackBar,\n public dialog: MatDialog\n ) { }\n\n\n // eslint-disable-next-line max-lines-per-function\n showErrorMessage(error: HttpErrorResponse): void {\n console.log('error: ', error);\n const msgs: any = this.getInterceptorMessages();\n switch (error.status) {\n case 302: {\n this.messageSnackError(error);\n break;\n }\n case 400: {\n this.showSnackError(error.message, ['snack-error']);\n break;\n }\n case 403: {\n this.goNavigateLogin(msgs);\n break;\n }\n case 404: {\n this.showSnackError(msgs.auth_interceptor.not_found, ['snack-error']);\n break;\n }\n case 409: {\n this.messageAlertDialog(error, msgs);\n break;\n }\n case 412: {\n this.showSnackError(error.error.responseMessage, ['snack-error']);\n break;\n }\n case 428: {\n this.showSnackError(error.error.responseMessage, ['snack-error']);\n break;\n }\n case 500: {\n this.messageAlertDialog(error, msgs);\n break;\n }\n case 503: {\n this.showSnackError(msgs.auth_interceptor.unavailable, ['snack-error']);\n break;\n }\n case -1: {\n this.showSnackError(msgs.auth_interceptor.connection_error);\n break;\n }\n case 0: {\n this.showSnackError(msgs.auth_interceptor.connection_error);\n break;\n }\n }\n }\n\n messageSnackError(error: any): void {\n const errorMessage = error.error && error.error.responseMessage ? error.error.responseMessage :\n error.error.message ? error.error.message : error.message;\n this.showSnackError(errorMessage, ['snack-error']);\n }\n\n goNavigateLogin(msgs: any): void {\n // if (this.router.url !== '/login') {\n this.showSnackError(msgs.auth_interceptor.session_lost, ['snack-error']);\n // this.router.navigate(['/login']);\n this.auth.destroyCredentials();\n this.auth.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n const url = window.location.href;\n if (url.indexOf(loginUrl)<0) {\n window.location.href = loginUrl + '?continue='+encodeURIComponent(url);\n }\n }, (err) => {\n console.error(err);\n });\n // }\n }\n\n messageAlertDialog(error: any, msgs: any): void {\n console.log(error);\n let message = '';\n if (error.error.responseMessage) {\n message = error.error.responseMessage;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else if (error.error.message) {\n message = error.error.message;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else if (error.message) {\n message = error.message;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else {\n message = msgs.auth_interceptor.message;\n }\n this.dialog.open(AlertComponent, {\n disableClose: true,\n data: { title: msgs.auth_interceptor.title, message }\n });\n }\n\n showSnackError(message: any, panelClass: any[] = []): void {\n console.log(message);\n setTimeout(() => {\n this.snackBar.open(message, undefined, {\n duration: 5000,\n panelClass,\n verticalPosition: 'top'\n });\n });\n }\n\n setInterceptorMessages(message: any): void {\n this.interceptorMessages = message;\n }\n\n // eslint-disable-next-line max-lines-per-function\n getInterceptorMessages(): string {\n if (!this.interceptorMessages) {\n const lang = window.localStorage.getItem('LANG');\n const messagesEn = {\n auth_interceptor : {\n session_lost :'Session lost, you have to login again.',\n not_found: 'Resource not found',\n title: 'We are sorry!',\n message: 'We had a problem trying to process your request.',\n code:'Code',\n unavailable:'Service unavailable, please try again in a few minutes.',\n connection_error:'Could not connect to server, please check your network connection.'\n }\n };\n const messagesEs = {\n auth_interceptor: {\n session_lost: 'Su sesión expiró, debe iniciar sesión nuevamente.',\n not_found: 'Recurso no encontrado',\n title: '¡Lo sentimos!',\n message: 'Tuvimos un problema al tratar de procesar su solicitud.',\n code: 'Código',\n unavailable: 'Servicio no disponible, inténtelo de nuevo en unos minutos.',\n connection_error: 'No se pudo conectar al servidor, verifique su conexión de red.'\n }\n };\n if (lang && lang==='en') {\n this.interceptorMessages = messagesEn;\n } else {\n this.interceptorMessages = messagesEs;\n }\n }\n return this.interceptorMessages;\n }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { CryptoService } from './services/crypto.service';\nimport { AlertComponent } from './alert/alert.component';\nimport { MessagesService } from './services/messages.service';\nimport { SessionService } from './services/session.service';\nimport { SsiSecurityCommonsComponent } from './ssi-security-commons.component';\nimport { MatButtonModule } from '@angular/material/button';\n\n\n@NgModule({\n declarations: [\n SsiSecurityCommonsComponent,\n AlertComponent\n ],\n imports: [\n MatSnackBarModule,\n MatDialogModule,\n MatButtonModule\n ],\n exports: [\n SsiSecurityCommonsComponent\n ],\n providers: [\n MessagesService,\n SessionService,\n CryptoService\n ]\n})\nexport class SsiSecurityCommonsModule {\n static forRoot(environment: any): ModuleWithProviders<SsiSecurityCommonsModule> {\n return {\n ngModule: SsiSecurityCommonsModule,\n providers: [{provide: 'environment', useValue: environment}]\n };\n }\n}\n","/* eslint-disable */\nimport { Injectable, Injector } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor,\n HttpErrorResponse,\n HttpResponse\n} from '@angular/common/http';\nimport { BehaviorSubject, Observable, throwError } from 'rxjs';\nimport { catchError, filter, map, switchMap, take, tap } from 'rxjs/operators';\nimport { MessagesService } from './messages.service';\nimport { CryptoService } from './crypto.service';\nimport { Router } from '@angular/router';\nimport { SessionService } from './session.service';\n\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n\n constructor(private cryptoService: CryptoService) {\n console.log('AuthInterceptor constructor');\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n //console.log('intercept');\n\n const token = window.localStorage.getItem('TOKEN');\n\n //console.log(token);\n //console.log(request);\n\n let encrypt = request.headers.get('encrypted');\n if(encrypt && encrypt === 'true'){\n let body = request.body;\n let bodyStr = JSON.stringify(body);\n var newBody = {\n encrypted: this.cryptoService.encrypt(bodyStr)\n }\n request = request.clone({\n body: newBody\n });\n }\n\n if (token) {\n request = request.clone({\n setHeaders: {\n Authorization: 'Bearer ' + token,\n }\n });\n }\n return next.handle(request);\n }\n}\n\n\n@Injectable()\nexport class ResponseInterceptor implements HttpInterceptor {\n\n private messages: MessagesService | undefined;\n private isRefreshing = false;\n private refreshTokenSubject: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n\n constructor(private injector: Injector,\n private router: Router,\n private cryptoService: CryptoService,\n private sessionService: SessionService) {\n //console.log('ResponseInterceptor constructor');\n setTimeout(() => {\n this.messages = this.injector.get(MessagesService);\n })\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n return next.handle(request).pipe(\n map((event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n //console.log(request.headers.get('encrypted'));\n let encrypt = request.headers.get('encrypted');\n if(encrypt && encrypt === 'true'){\n event = event.clone({body: this.decryptBody(event.body)});\n }\n }\n return event;\n }),\n catchError(error => {\n if (error instanceof HttpErrorResponse) {\n console.error(error);\n let nerror = error;\n /*let encrypt = request.headers.get('encrypted');\n if(encrypt && encrypt === 'true'){\n nerror = new HttpErrorResponse({\n error: this.decryptBody(error.error),\n headers: error.headers,\n status: error.status,\n statusText: error.statusText,\n url: error.url || request.urlWithParams || undefined,\n });\n }*/\n if (nerror.status === 401) {\n console.log(this.router.url);\n if (this.router.url != '/login' && this.router.url.indexOf('/login')<0) {\n console.log('401--->'+ request.url);\n return this.handle401Error(request, next);\n } else {\n return throwError(nerror);\n }\n } else {\n this.messages?.showErrorMessage(nerror);\n }\n }\n })) as Observable<HttpEvent<any>>;\n }\n\n decryptBody(body: any): any {\n //console.log(body);\n let encrypted = body.encrypted;\n let strJson = this.cryptoService.decrypt(encrypted);\n return JSON.parse(strJson);\n }\n\n\n private handle401Error(request: HttpRequest<any>, next: HttpHandler) {\n //console.log('handle401Error');\n //console.log(this.isRefreshing);\n if (!this.isRefreshing) {\n this.isRefreshing = true;\n this.refreshTokenSubject.next(null);\n const refreshToken = this.sessionService.getRefreshToken();\n //console.log(refreshToken);\n if (refreshToken){\n return this.sessionService.getNewToken(refreshToken).pipe(\n switchMap((res: any) => {\n console.log('refresh token response');\n console.log(res);\n this.isRefreshing = false;\n this.sessionService.setToken(res.data.accessToken);\n this.sessionService.setRefreshToken(res.data.refreshToken);\n this.refreshTokenSubject.next(res.data.accessToken);\n return next.handle(this.addTokenHeader(request, res.data.accessToken));\n }),\n catchError((err) => {\n this.isRefreshing = false;\n this.sessionService.logout();\n //this.router.navigate(['/login']);\n this.goToLogin();\n return throwError(err);\n })\n );\n }\n } else {\n return this.refreshTokenSubject.pipe(\n filter(token => token !== null),\n take(1),\n switchMap((token) => next.handle(this.addTokenHeader(request, token)))\n );\n }\n }\n\n private addTokenHeader(request: HttpRequest<any>, token: string) {\n return request.clone({ headers: request.headers.set('Authorization', 'Bearer ' + token) });\n }\n\n private goToLogin(): void {\n this.sessionService.getLoginUrl().subscribe(res => {\n console.log(res);\n const loginUrl = res.data;\n const url = window.location.href;\n if (url.indexOf(loginUrl)<0) {\n window.location.href = loginUrl + '?continue='+encodeURIComponent(url);\n }\n }, (err) => {\n console.error(err);\n });\n }\n\n}\n\n\n\n\n","/*\n * Public API Surface of ssi-security-commons\n */\n\nexport * from './lib/ssi-security-commons.service';\nexport * from './lib/ssi-security-commons.component';\nexport * from './lib/ssi-security-commons.module';\nexport * from './lib/services/auth-interceptor.service';\nexport * from './lib/services/session.service';\nexport * from './lib/services/messages.service';\nexport * from './lib/user.model';\nexport * from './lib/services/crypto.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SessionService","i2","i3","i1.CryptoService","i3.SessionService"],"mappings":"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"}
|
|
@@ -11,9 +11,10 @@ export declare class SessionService {
|
|
|
11
11
|
loginUrl: string;
|
|
12
12
|
storage: any;
|
|
13
13
|
constructor(http: HttpClient, environment: any);
|
|
14
|
-
checkSessionData(): Promise<
|
|
14
|
+
checkSessionData(): Promise<any>;
|
|
15
15
|
reviewSessionData(): Promise<any>;
|
|
16
16
|
setUserdata(userdata: any): void;
|
|
17
|
+
setTokens(token: any, refreshToken: any): void;
|
|
17
18
|
getUserdata(): User | undefined;
|
|
18
19
|
setRefreshToken(refreshToken: any): void;
|
|
19
20
|
getRefreshToken(): string | undefined;
|
|
@@ -30,6 +31,7 @@ export declare class SessionService {
|
|
|
30
31
|
getHomeUrl(): Observable<any>;
|
|
31
32
|
logoutApi(userId: any): Observable<any>;
|
|
32
33
|
goToLogin(): void;
|
|
34
|
+
loadSessionData(): void;
|
|
33
35
|
static ɵfac: i0.ɵɵFactoryDeclaration<SessionService, never>;
|
|
34
36
|
static ɵprov: i0.ɵɵInjectableDeclaration<SessionService>;
|
|
35
37
|
}
|