ssi-security-commons 0.0.15 → 0.0.18

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.
@@ -62,7 +62,7 @@ export class ResponseInterceptor {
62
62
  if (event instanceof HttpResponse) {
63
63
  //console.log(request.headers.get('encrypted'));
64
64
  let encrypt = request.headers.get('encrypted');
65
- if (encrypt && encrypt === 'true') {
65
+ if (encrypt && encrypt === 'true' && event.body.encrypted) {
66
66
  event = event.clone({ body: this.decryptBody(event.body) });
67
67
  }
68
68
  }
@@ -104,7 +104,6 @@ export class ResponseInterceptor {
104
104
  }));
105
105
  }
106
106
  decryptBody(body) {
107
- //console.log(body);
108
107
  let encrypted = body.encrypted;
109
108
  let strJson = this.cryptoService.decrypt(encrypted);
110
109
  return JSON.parse(strJson);
@@ -160,4 +159,4 @@ ResponseInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0",
160
159
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ResponseInterceptor, decorators: [{
161
160
  type: Injectable
162
161
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i2.Router }, { type: i1.CryptoService }, { type: i3.SessionService }]; } });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcmNlcHRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3NpLXNlY3VyaXR5LWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9hdXRoLWludGVyY2VwdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUtMLGlCQUFpQixFQUNqQixZQUFZLEVBQ2IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBTyxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFPckQsTUFBTSxPQUFPLGVBQWU7SUFFMUIsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUVwRCwyQkFBMkI7UUFFM0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkQscUJBQXFCO1FBQ3JCLHVCQUF1QjtRQUV2QixJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQyxJQUFHLE9BQU8sSUFBSSxPQUFPLEtBQUssTUFBTSxFQUFDO1lBQy9CLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDeEIsSUFBSSxP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Q0FBQztTQUNMO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUF5QixFQUFFLEtBQWE7UUFDN0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxTQUFTLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQzFCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2pDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBQyxDQUFDLEVBQUU7Z0JBQzNCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsR0FBRyxZQUFZLEdBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDeEU7UUFDSCxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztnSEEzSFUsbUJBQW1CO29IQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSHR0cFJlcXVlc3QsXG4gIEh0dHBIYW5kbGVyLFxuICBIdHRwRXZlbnQsXG4gIEh0dHBJbnRlcmNlcHRvcixcbiAgSHR0cEVycm9yUmVzcG9uc2UsXG4gIEh0dHBSZXNwb25zZVxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lc3NhZ2VzU2VydmljZSB9IGZyb20gJy4vbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBDcnlwdG9TZXJ2aWNlIH0gZnJvbSAnLi9jcnlwdG8uc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjcnlwdG9TZXJ2aWNlOiBDcnlwdG9TZXJ2aWNlKSB7XG4gICAgY29uc29sZS5sb2coJ0F1dGhJbnRlcmNlcHRvciBjb25zdHJ1Y3RvcicpO1xuICB9XG5cbiAgaW50ZXJjZXB0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuXG4gICAgLy9jb25zb2xlLmxvZygnaW50ZXJjZXB0Jyk7XG5cbiAgICBjb25zdCB0b2tlbiA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnVE9LRU4nKTtcblxuICAgIC8vY29uc29sZS5sb2codG9rZW4pO1xuICAgIC8vY29uc29sZS5sb2cocmVxdWVzdCk7XG5cbiAgICBsZXQgZW5jcnlwdCA9IHJlcXVlc3QuaGVhZGVycy5nZXQoJ2VuY3J5cHRlZCcpO1xuICAgIGlmKGVuY3J5cHQgJiYgZW5jcnlwdCA9PT0gJ3RydWUnKXtcbiAgICAgIGxldCBib2R5ID0gcmVxdWVzdC5ib2R5O1xuICAgICAgbGV0IGJvZHlTdHIgPSBKU09OLnN0cmluZ2lmeShib2R5KTtcbiAgICAgIHZhciBuZXdCb2R5ID0ge1xuICAgICAgICBlbmNyeXB0ZWQ6IHRoaXMuY3J5cHRvU2VydmljZS5lbmNyeXB0KGJvZHlTdHIpXG4gICAgICB9XG4gICAgICByZXF1ZXN0ID0gcmVxdWVzdC5jbG9uZSh7XG4gICAgICAgIGJvZHk6IG5ld0JvZHlcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0b2tlbikge1xuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAnICsgdG9rZW4sXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCk7XG4gIH1cbn1cblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVzcG9uc2VJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgcHJpdmF0ZSBtZXNzYWdlczogTWVzc2FnZXNTZXJ2aWNlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGlzUmVmcmVzaGluZyA9IGZhbHNlO1xuICBwcml2YXRlIHJlZnJlc2hUb2tlblN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBjcnlwdG9TZXJ2aWNlOiBDcnlwdG9TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2Vzc2lvblNlcnZpY2U6IFNlc3Npb25TZXJ2aWNlKSB7XG4gICAgLy9jb25zb2xlLmxvZygnUmVzcG9uc2VJbnRlcmNlcHRvciBjb25zdHJ1Y3RvcicpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5tZXNzYWdlcyA9IHRoaXMuaW5qZWN0b3IuZ2V0KE1lc3NhZ2VzU2VydmljZSk7XG4gICAgfSlcbiAgfVxuXG4gIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcblxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KS5waXBlKFxuICAgICAgbWFwKChldmVudDogSHR0cEV2ZW50PGFueT4pID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2cocmVxdWVzdC5oZWFkZXJzLmdldCgnZW5jcnlwdGVkJykpO1xuICAgICAgICAgICAgbGV0IGVuY3J5cHQgPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCdlbmNyeXB0ZWQnKTtcbiAgICAgICAgICAgIGlmKGVuY3J5cHQgJiYgZW5jcnlwdCA9PT0gJ3RydWUnKXtcbiAgICAgICAgICAgICAgZXZlbnQgPSBldmVudC5jbG9uZSh7Ym9keTogdGhpcy5kZWNyeXB0Qm9keShldmVudC5ib2R5KX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICBsZXQgbmVycm9yID0gZXJyb3I7XG4gICAgICAgICAgICAvKmxldCBlbmNyeXB0ID0gcmVxdWVzdC5oZWFkZXJzLmdldCgnZW5jcnlwdGVkJyk7XG4gICAgICAgICAgICBpZihlbmNyeXB0ICYmIGVuY3J5cHQgPT09ICd0cnVlJyl7XG4gICAgICAgICAgICAgIG5lcnJvciA9IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7XG4gICAgICAgICAgICAgICAgZXJyb3I6IHRoaXMuZGVjcnlwdEJvZHkoZXJyb3IuZXJyb3IpLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGVycm9yLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiBlcnJvci5zdGF0dXMsXG4gICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogZXJyb3Iuc3RhdHVzVGV4dCxcbiAgICAgICAgICAgICAgICB1cmw6IGVycm9yLnVybCB8fCByZXF1ZXN0LnVybFdpdGhQYXJhbXMgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0qL1xuICAgICAgICAgICAgaWYgKG5lcnJvci5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnJvdXRlci51cmwpO1xuICAgICAgICAgICAgICBpZiAodGhpcy5yb3V0ZXIudXJsICE9ICcvbG9naW4nICYmIHRoaXMucm91dGVyLnVybC5pbmRleE9mKCcvbG9naW4nKTwwKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnNDAxLS0tPicrIHJlcXVlc3QudXJsKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZTQwMUVycm9yKHJlcXVlc3QsIG5leHQpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKG5lcnJvcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGxldCBza2lwRXJyb3IgPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCdza2lwRXJyb3InKTtcbiAgICAgICAgICAgICAgaWYoc2tpcEVycm9yICYmIHNraXBFcnJvcj09PSd0cnVlJyl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IobmVycm9yKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzPy5zaG93RXJyb3JNZXNzYWdlKG5lcnJvcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpIGFzIE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+O1xuICB9XG5cbiAgZGVjcnlwdEJvZHkoYm9keTogYW55KTogYW55IHtcbiAgICAvL2NvbnNvbGUubG9nKGJvZHkpO1xuICAgIGxldCBlbmNyeXB0ZWQgPSBib2R5LmVuY3J5cHRlZDtcbiAgICBsZXQgc3RySnNvbiA9IHRoaXMuY3J5cHRvU2VydmljZS5kZWNyeXB0KGVuY3J5cHRlZCk7XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RySnNvbik7XG4gIH1cblxuXG4gIHByaXZhdGUgaGFuZGxlNDAxRXJyb3IocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpIHtcbiAgICAvL2NvbnNvbGUubG9nKCdoYW5kbGU0MDFFcnJvcicpO1xuICAgIC8vY29uc29sZS5sb2codGhpcy5pc1JlZnJlc2hpbmcpO1xuICAgIGlmICghdGhpcy5pc1JlZnJlc2hpbmcpIHtcbiAgICAgICAgdGhpcy5pc1JlZnJlc2hpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgY29uc3QgcmVmcmVzaFRva2VuID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRSZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhyZWZyZXNoVG9rZW4pO1xuICAgICAgICBpZiAocmVmcmVzaFRva2VuKXtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldE5ld1Rva2VuKHJlZnJlc2hUb2tlbikucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZWZyZXNoIHRva2VuIHJlc3BvbnNlJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0VG9rZW4ocmVzLmRhdGEuYWNjZXNzVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldFJlZnJlc2hUb2tlbihyZXMuZGF0YS5yZWZyZXNoVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QubmV4dChyZXMuZGF0YS5hY2Nlc3NUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZSh0aGlzLmFkZFRva2VuSGVhZGVyKHJlcXVlc3QsIHJlcy5kYXRhLmFjY2Vzc1Rva2VuKSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2UubG9nb3V0KCk7XG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ29Ub0xvZ2luKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0LnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIodG9rZW4gPT4gdG9rZW4gIT09IG51bGwpLFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgodG9rZW4pID0+IG5leHQuaGFuZGxlKHRoaXMuYWRkVG9rZW5IZWFkZXIocmVxdWVzdCwgdG9rZW4pKSlcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZFRva2VuSGVhZGVyKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIHRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVxdWVzdC5jbG9uZSh7IGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmVhcmVyICcgKyB0b2tlbikgfSk7XG4gIH1cblxuICBwcml2YXRlIGdvVG9Mb2dpbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldExvZ2luVXJsKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgY29uc3QgbG9naW5VcmwgPSByZXMuZGF0YTtcbiAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgaWYgKHVybC5pbmRleE9mKGxvZ2luVXJsKTwwKSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbG9naW5VcmwgKyAnP2NvbnRpbnVlPScrZW5jb2RlVVJJQ29tcG9uZW50KHVybCk7XG4gICAgICB9XG4gICAgfSwgKGVycikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIH0pO1xuICB9XG5cbn1cblxuXG5cblxuIl19
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcmNlcHRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3NpLXNlY3VyaXR5LWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9hdXRoLWludGVyY2VwdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUtMLGlCQUFpQixFQUNqQixZQUFZLEVBQ2IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBTyxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFPckQsTUFBTSxPQUFPLGVBQWU7SUFFMUIsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUVwRCwyQkFBMkI7UUFFM0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkQscUJBQXFCO1FBQ3JCLHVCQUF1QjtRQUV2QixJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQyxJQUFHLE9BQU8sSUFBSSxPQUFPLEtBQUssTUFBTSxFQUFDO1lBQy9CLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDeEIsSUFBSSxP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LENBQUMsQ0FBQyxDQUN6RSxDQUFDO1NBQ0w7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLE9BQXlCLEVBQUUsS0FBYTtRQUM3RCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLFNBQVMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoRCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDMUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDakMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFDLENBQUMsRUFBRTtnQkFDM0IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxHQUFHLFlBQVksR0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN4RTtRQUNILENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2dIQTFIVSxtQkFBbUI7b0hBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwUmVxdWVzdCxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBFdmVudCxcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgSHR0cFJlc3BvbnNlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi9tZXNzYWdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IENyeXB0b1NlcnZpY2UgfSBmcm9tICcuL2NyeXB0by5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi5zZXJ2aWNlJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNyeXB0b1NlcnZpY2U6IENyeXB0b1NlcnZpY2UpIHtcbiAgICBjb25zb2xlLmxvZygnQXV0aEludGVyY2VwdG9yIGNvbnN0cnVjdG9yJyk7XG4gIH1cblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG5cbiAgICAvL2NvbnNvbGUubG9nKCdpbnRlcmNlcHQnKTtcblxuICAgIGNvbnN0IHRva2VuID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdUT0tFTicpO1xuXG4gICAgLy9jb25zb2xlLmxvZyh0b2tlbik7XG4gICAgLy9jb25zb2xlLmxvZyhyZXF1ZXN0KTtcblxuICAgIGxldCBlbmNyeXB0ID0gcmVxdWVzdC5oZWFkZXJzLmdldCgnZW5jcnlwdGVkJyk7XG4gICAgaWYoZW5jcnlwdCAmJiBlbmNyeXB0ID09PSAndHJ1ZScpe1xuICAgICAgbGV0IGJvZHkgPSByZXF1ZXN0LmJvZHk7XG4gICAgICBsZXQgYm9keVN0ciA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgICAgdmFyIG5ld0JvZHkgPSB7XG4gICAgICAgIGVuY3J5cHRlZDogdGhpcy5jcnlwdG9TZXJ2aWNlLmVuY3J5cHQoYm9keVN0cilcbiAgICAgIH1cbiAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHtcbiAgICAgICAgYm9keTogbmV3Qm9keVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRva2VuKSB7XG4gICAgICByZXF1ZXN0ID0gcmVxdWVzdC5jbG9uZSh7XG4gICAgICAgIHNldEhlYWRlcnM6IHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiAnQmVhcmVyICcgKyB0b2tlbixcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KTtcbiAgfVxufVxuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZXNwb25zZUludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICBwcml2YXRlIG1lc3NhZ2VzOiBNZXNzYWdlc1NlcnZpY2UgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgcmVmcmVzaFRva2VuU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGNyeXB0b1NlcnZpY2U6IENyeXB0b1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZTogU2Vzc2lvblNlcnZpY2UpIHtcbiAgICAvL2NvbnNvbGUubG9nKCdSZXNwb25zZUludGVyY2VwdG9yIGNvbnN0cnVjdG9yJyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1lc3NhZ2VzID0gdGhpcy5pbmplY3Rvci5nZXQoTWVzc2FnZXNTZXJ2aWNlKTtcbiAgICB9KVxuICB9XG5cbiAgaW50ZXJjZXB0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuXG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpLnBpcGUoXG4gICAgICBtYXAoKGV2ZW50OiBIdHRwRXZlbnQ8YW55PikgPT4ge1xuICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhyZXF1ZXN0LmhlYWRlcnMuZ2V0KCdlbmNyeXB0ZWQnKSk7XG4gICAgICAgICAgICBsZXQgZW5jcnlwdCA9IHJlcXVlc3QuaGVhZGVycy5nZXQoJ2VuY3J5cHRlZCcpO1xuICAgICAgICAgICAgaWYoZW5jcnlwdCAmJiBlbmNyeXB0ID09PSAndHJ1ZScgJiYgZXZlbnQuYm9keS5lbmNyeXB0ZWQpe1xuICAgICAgICAgICAgICBldmVudCA9IGV2ZW50LmNsb25lKHtib2R5OiB0aGlzLmRlY3J5cHRCb2R5KGV2ZW50LmJvZHkpfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBldmVudDtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIGxldCBuZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgIC8qbGV0IGVuY3J5cHQgPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCdlbmNyeXB0ZWQnKTtcbiAgICAgICAgICAgIGlmKGVuY3J5cHQgJiYgZW5jcnlwdCA9PT0gJ3RydWUnKXtcbiAgICAgICAgICAgICAgbmVycm9yID0gbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtcbiAgICAgICAgICAgICAgICBlcnJvcjogdGhpcy5kZWNyeXB0Qm9keShlcnJvci5lcnJvciksXG4gICAgICAgICAgICAgICAgaGVhZGVyczogZXJyb3IuaGVhZGVycyxcbiAgICAgICAgICAgICAgICBzdGF0dXM6IGVycm9yLnN0YXR1cyxcbiAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiBlcnJvci5zdGF0dXNUZXh0LFxuICAgICAgICAgICAgICAgIHVybDogZXJyb3IudXJsIHx8IHJlcXVlc3QudXJsV2l0aFBhcmFtcyB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSovXG4gICAgICAgICAgICBpZiAobmVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMucm91dGVyLnVybCk7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlci51cmwgIT0gJy9sb2dpbicgJiYgdGhpcy5yb3V0ZXIudXJsLmluZGV4T2YoJy9sb2dpbicpPDApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCc0MDEtLS0+JysgcmVxdWVzdC51cmwpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlNDAxRXJyb3IocmVxdWVzdCwgbmV4dCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IobmVycm9yKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbGV0IHNraXBFcnJvciA9IHJlcXVlc3QuaGVhZGVycy5nZXQoJ3NraXBFcnJvcicpO1xuICAgICAgICAgICAgICBpZihza2lwRXJyb3IgJiYgc2tpcEVycm9yPT09J3RydWUnKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihuZXJyb3IpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXM/LnNob3dFcnJvck1lc3NhZ2UobmVycm9yKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSkgYXMgT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj47XG4gIH1cblxuICBkZWNyeXB0Qm9keShib2R5OiBhbnkpOiBhbnkge1xuICAgIGxldCBlbmNyeXB0ZWQgPSBib2R5LmVuY3J5cHRlZDtcbiAgICBsZXQgc3RySnNvbiA9IHRoaXMuY3J5cHRvU2VydmljZS5kZWNyeXB0KGVuY3J5cHRlZCk7XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RySnNvbik7XG4gIH1cblxuXG4gIHByaXZhdGUgaGFuZGxlNDAxRXJyb3IocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpIHtcbiAgICAvL2NvbnNvbGUubG9nKCdoYW5kbGU0MDFFcnJvcicpO1xuICAgIC8vY29uc29sZS5sb2codGhpcy5pc1JlZnJlc2hpbmcpO1xuICAgIGlmICghdGhpcy5pc1JlZnJlc2hpbmcpIHtcbiAgICAgICAgdGhpcy5pc1JlZnJlc2hpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgY29uc3QgcmVmcmVzaFRva2VuID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRSZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhyZWZyZXNoVG9rZW4pO1xuICAgICAgICBpZiAocmVmcmVzaFRva2VuKXtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldE5ld1Rva2VuKHJlZnJlc2hUb2tlbikucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZWZyZXNoIHRva2VuIHJlc3BvbnNlJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0VG9rZW4ocmVzLmRhdGEuYWNjZXNzVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldFJlZnJlc2hUb2tlbihyZXMuZGF0YS5yZWZyZXNoVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QubmV4dChyZXMuZGF0YS5hY2Nlc3NUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZSh0aGlzLmFkZFRva2VuSGVhZGVyKHJlcXVlc3QsIHJlcy5kYXRhLmFjY2Vzc1Rva2VuKSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2UubG9nb3V0KCk7XG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ29Ub0xvZ2luKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0LnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIodG9rZW4gPT4gdG9rZW4gIT09IG51bGwpLFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgodG9rZW4pID0+IG5leHQuaGFuZGxlKHRoaXMuYWRkVG9rZW5IZWFkZXIocmVxdWVzdCwgdG9rZW4pKSlcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZFRva2VuSGVhZGVyKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIHRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVxdWVzdC5jbG9uZSh7IGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmVhcmVyICcgKyB0b2tlbikgfSk7XG4gIH1cblxuICBwcml2YXRlIGdvVG9Mb2dpbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldExvZ2luVXJsKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgY29uc3QgbG9naW5VcmwgPSByZXMuZGF0YTtcbiAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgaWYgKHVybC5pbmRleE9mKGxvZ2luVXJsKTwwKSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbG9naW5VcmwgKyAnP2NvbnRpbnVlPScrZW5jb2RlVVJJQ29tcG9uZW50KHVybCk7XG4gICAgICB9XG4gICAgfSwgKGVycikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIH0pO1xuICB9XG5cbn1cblxuXG5cblxuIl19
@@ -1,4 +1,4 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Inject, Injectable } from '@angular/core';
2
2
  // import { Router } from '@angular/router';
3
3
  import { AlertComponent } from '../alert/alert.component';
4
4
  import * as i0 from "@angular/core";
@@ -8,14 +8,16 @@ import * as i3 from "@angular/material/dialog";
8
8
  export class MessagesService {
9
9
  constructor(auth,
10
10
  // private router: Router,
11
- snackBar, dialog) {
11
+ snackBar, dialog, environment) {
12
12
  this.auth = auth;
13
13
  this.snackBar = snackBar;
14
14
  this.dialog = dialog;
15
+ this.applicationId = environment.applicationId;
15
16
  }
16
17
  // eslint-disable-next-line max-lines-per-function
17
18
  showErrorMessage(error) {
18
19
  console.log('error: ', error);
20
+ this.registerLog(error);
19
21
  const msgs = this.getInterceptorMessages();
20
22
  switch (error.status) {
21
23
  case 302: {
@@ -163,10 +165,34 @@ export class MessagesService {
163
165
  }
164
166
  return this.interceptorMessages;
165
167
  }
168
+ registerLog(error) {
169
+ const u = this.auth.getUserdata();
170
+ const param = {
171
+ httpStatus: error.status,
172
+ httpStatusText: error.statusText,
173
+ errorMessage: error.message,
174
+ currentUrl: window.location.href,
175
+ requestUrl: error.url ? error.url : undefined,
176
+ userId: u ? u.userId : undefined,
177
+ applicationId: this.applicationId,
178
+ requestDate: new Date()
179
+ };
180
+ this.auth.registerException(param).subscribe({
181
+ next: (response) => {
182
+ console.log('registerException', response);
183
+ },
184
+ error: (err) => {
185
+ console.error('registerException', err);
186
+ }
187
+ });
188
+ }
166
189
  }
167
- MessagesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MessagesService, deps: [{ token: i1.SessionService }, { token: i2.MatSnackBar }, { token: i3.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
190
+ MessagesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MessagesService, deps: [{ token: i1.SessionService }, { token: i2.MatSnackBar }, { token: i3.MatDialog }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
168
191
  MessagesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MessagesService });
169
192
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MessagesService, decorators: [{
170
193
  type: Injectable
171
- }], ctorParameters: function () { return [{ type: i1.SessionService }, { type: i2.MatSnackBar }, { type: i3.MatDialog }]; } });
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NzaS1zZWN1cml0eS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvbWVzc2FnZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLDRDQUE0QztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBSzFELE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQ1MsSUFBb0I7SUFDM0IsMEJBQTBCO0lBQ2xCLFFBQXFCLEVBQ3RCLE1BQWlCO1FBSGpCLFNBQUksR0FBSixJQUFJLENBQWdCO1FBRW5CLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBVztJQUN0QixDQUFDO0lBR0wsa0RBQWtEO0lBQ2xELGdCQUFnQixDQUFDLEtBQXdCO1FBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE1BQU0sSUFBSSxHQUFRLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2hELFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNwQixLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUIsTUFBTTthQUNQO1lBQ0QsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDUixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUNwRCxNQUFNO2FBQ1A7WUFDRCxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLE1BQU07YUFDUDtZQUNELEtBQUss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VUFBVSxHQUFHO2dCQUNqQixnQkFBZ0IsRUFBRTtvQkFDaEIsWUFBWSxFQUFFLG1EQUFtRDtvQkFDakUsU0FBUyxFQUFFLHVCQUF1QjtvQkFDbEMsS0FBSyxFQUFFLGVBQWU7b0JBQ3RCLE9BQU8sRUFBRSx5REFBeUQ7b0JBQ2xFLElBQUksRUFBRSxRQUFRO29CQUNkLFdBQVcsRUFBRSw2REFBNkQ7b0JBQzFFLGdCQUFnQixFQUFFLGdFQUFnRTtpQkFDbkY7YUFDRixDQUFDO1lBQ0YsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFHLElBQUksRUFBRTtnQkFDdkIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFVBQVUsQ0FBQzthQUN2QztpQkFBTTtnQkFDTCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxDQUFDO2FBQ3ZDO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDOzs0R0FoS1UsZUFBZTtnSEFBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGluZXMtcGVyLWZ1bmN0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBxdW90ZS1wcm9wcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG4vLyBpbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWxlcnRDb21wb25lbnQgfSBmcm9tICcuLi9hbGVydC9hbGVydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VzU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRvck1lc3NhZ2VzOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGF1dGg6IFNlc3Npb25TZXJ2aWNlLFxuICAgIC8vIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nXG4gICkgeyB9XG5cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxpbmVzLXBlci1mdW5jdGlvblxuICBzaG93RXJyb3JNZXNzYWdlKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdlcnJvcjogJywgZXJyb3IpO1xuICAgIGNvbnN0IG1zZ3M6IGFueSA9IHRoaXMuZ2V0SW50ZXJjZXB0b3JNZXNzYWdlcygpO1xuICAgIHN3aXRjaCAoZXJyb3Iuc3RhdHVzKSB7XG4gICAgICBjYXNlIDMwMjoge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTbmFja0Vycm9yKGVycm9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDQwMDoge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKGVycm9yLm1lc3NhZ2UsIFsnc25hY2stZXJyb3InXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MDM6IHtcbiAgICAgICAgdGhpcy5nb05hdmlnYXRlTG9naW4obXNncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MDQ6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3Iubm90X2ZvdW5kLCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgNDA5OiB7XG4gICAgICAgIHRoaXMubWVzc2FnZUFsZXJ0RGlhbG9nKGVycm9yLCBtc2dzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDQxMjoge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKGVycm9yLmVycm9yLnJlc3BvbnNlTWVzc2FnZSwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDQyODoge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKGVycm9yLmVycm9yLnJlc3BvbnNlTWVzc2FnZSwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDUwMDoge1xuICAgICAgICB0aGlzLm1lc3NhZ2VBbGVydERpYWxvZyhlcnJvciwgbXNncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA1MDM6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3IudW5hdmFpbGFibGUsIFsnc25hY2stZXJyb3InXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAtMToge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKG1zZ3MuYXV0aF9pbnRlcmNlcHRvci5jb25uZWN0aW9uX2Vycm9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDA6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29ubmVjdGlvbl9lcnJvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1lc3NhZ2VTbmFja0Vycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvci5lcnJvciAmJiBlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UgPyBlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UgOlxuICAgICAgZXJyb3IuZXJyb3IubWVzc2FnZSA/IGVycm9yLmVycm9yLm1lc3NhZ2UgOiBlcnJvci5tZXNzYWdlO1xuICAgIHRoaXMuc2hvd1NuYWNrRXJyb3IoZXJyb3JNZXNzYWdlLCBbJ3NuYWNrLWVycm9yJ10pO1xuICB9XG5cbiAgZ29OYXZpZ2F0ZUxvZ2luKG1zZ3M6IGFueSk6IHZvaWQge1xuICAgIC8vIGlmICh0aGlzLnJvdXRlci51cmwgIT09ICcvbG9naW4nKSB7XG4gICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3Iuc2Vzc2lvbl9sb3N0LCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ2luJ10pO1xuICAgIHRoaXMuYXV0aC5kZXN0cm95Q3JlZGVudGlhbHMoKTtcbiAgICB0aGlzLmF1dGguZ2V0TG9naW5VcmwoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICBjb25zdCBsb2dpblVybCA9IHJlcy5kYXRhO1xuICAgICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICBpZiAodXJsLmluZGV4T2YobG9naW5VcmwpPDApIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBsb2dpblVybCArICc/Y29udGludWU9JytlbmNvZGVVUklDb21wb25lbnQodXJsKTtcbiAgICAgIH1cbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgfSk7XG4gICAgLy8gfVxuICB9XG5cbiAgbWVzc2FnZUFsZXJ0RGlhbG9nKGVycm9yOiBhbnksIG1zZ3M6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICBsZXQgbWVzc2FnZSA9ICcnO1xuICAgIGlmIChlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UgPSBlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2U7XG4gICAgICBpZiAoZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQpXG4gICAgICB7bWVzc2FnZSA9IG1lc3NhZ2UgKyAnXFxuXFxuJyttc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29kZSsnOiAnICsgZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQ7fVxuICAgIH0gZWxzZSBpZiAoZXJyb3IuZXJyb3IubWVzc2FnZSkge1xuICAgICAgbWVzc2FnZSA9IGVycm9yLmVycm9yLm1lc3NhZ2U7XG4gICAgICBpZiAoZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQpXG4gICAgICB7bWVzc2FnZSA9IG1lc3NhZ2UgKyAnXFxuXFxuJyttc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29kZSsnOiAnICsgZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQ7fVxuICAgIH0gIGVsc2UgaWYgKGVycm9yLm1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgaWYgKGVycm9yLmVycm9yLmV4Y2VwdGlvbklkKVxuICAgICAge21lc3NhZ2UgPSBtZXNzYWdlICsgJ1xcblxcbicrbXNncy5hdXRoX2ludGVyY2VwdG9yLmNvZGUrJzogJyArIGVycm9yLmVycm9yLmV4Y2VwdGlvbklkO31cbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZSA9IG1zZ3MuYXV0aF9pbnRlcmNlcHRvci5tZXNzYWdlO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZy5vcGVuKEFsZXJ0Q29tcG9uZW50LCB7XG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBkYXRhOiB7IHRpdGxlOiBtc2dzLmF1dGhfaW50ZXJjZXB0b3IudGl0bGUsIG1lc3NhZ2UgfVxuICAgIH0pO1xuICB9XG5cbiAgc2hvd1NuYWNrRXJyb3IobWVzc2FnZTogYW55LCBwYW5lbENsYXNzOiBhbnlbXSA9IFtdKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2cobWVzc2FnZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwgdW5kZWZpbmVkLCB7XG4gICAgICAgIGR1cmF0aW9uOiA1MDAwLFxuICAgICAgICBwYW5lbENsYXNzLFxuICAgICAgICB2ZXJ0aWNhbFBvc2l0aW9uOiAndG9wJ1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRJbnRlcmNlcHRvck1lc3NhZ2VzKG1lc3NhZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JNZXNzYWdlcyA9IG1lc3NhZ2U7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxpbmVzLXBlci1mdW5jdGlvblxuICBnZXRJbnRlcmNlcHRvck1lc3NhZ2VzKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmludGVyY2VwdG9yTWVzc2FnZXMpIHtcbiAgICAgIGNvbnN0IGxhbmcgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0xBTkcnKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VzRW4gPSB7XG4gICAgICAgIGF1dGhfaW50ZXJjZXB0b3IgOiB7XG4gICAgICAgICAgc2Vzc2lvbl9sb3N0IDonU2Vzc2lvbiBsb3N0LCB5b3UgaGF2ZSB0byBsb2dpbiBhZ2Fpbi4nLFxuICAgICAgICAgIG5vdF9mb3VuZDogJ1Jlc291cmNlIG5vdCBmb3VuZCcsXG4gICAgICAgICAgdGl0bGU6ICdXZSBhcmUgc29ycnkhJyxcbiAgICAgICAgICBtZXNzYWdlOiAnV2UgaGFkIGEgcHJvYmxlbSB0cnlpbmcgdG8gcHJvY2VzcyB5b3VyIHJlcXVlc3QuJyxcbiAgICAgICAgICBjb2RlOidDb2RlJyxcbiAgICAgICAgICB1bmF2YWlsYWJsZTonU2VydmljZSB1bmF2YWlsYWJsZSwgcGxlYXNlIHRyeSBhZ2FpbiBpbiBhIGZldyBtaW51dGVzLicsXG4gICAgICAgICAgY29ubmVjdGlvbl9lcnJvcjonQ291bGQgbm90IGNvbm5lY3QgdG8gc2VydmVyLCBwbGVhc2UgY2hlY2sgeW91ciBuZXR3b3JrIGNvbm5lY3Rpb24uJ1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgbWVzc2FnZXNFcyA9IHtcbiAgICAgICAgYXV0aF9pbnRlcmNlcHRvcjoge1xuICAgICAgICAgIHNlc3Npb25fbG9zdDogJ1N1IHNlc2nDs24gZXhwaXLDsywgZGViZSBpbmljaWFyIHNlc2nDs24gbnVldmFtZW50ZS4nLFxuICAgICAgICAgIG5vdF9mb3VuZDogJ1JlY3Vyc28gbm8gZW5jb250cmFkbycsXG4gICAgICAgICAgdGl0bGU6ICfCoUxvIHNlbnRpbW9zIScsXG4gICAgICAgICAgbWVzc2FnZTogJ1R1dmltb3MgdW4gcHJvYmxlbWEgYWwgdHJhdGFyIGRlIHByb2Nlc2FyIHN1IHNvbGljaXR1ZC4nLFxuICAgICAgICAgIGNvZGU6ICdDw7NkaWdvJyxcbiAgICAgICAgICB1bmF2YWlsYWJsZTogJ1NlcnZpY2lvIG5vIGRpc3BvbmlibGUsIGludMOpbnRlbG8gZGUgbnVldm8gZW4gdW5vcyBtaW51dG9zLicsXG4gICAgICAgICAgY29ubmVjdGlvbl9lcnJvcjogJ05vIHNlIHB1ZG8gY29uZWN0YXIgYWwgc2Vydmlkb3IsIHZlcmlmaXF1ZSBzdSBjb25leGnDs24gZGUgcmVkLidcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGlmIChsYW5nICYmIGxhbmc9PT0nZW4nKSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0b3JNZXNzYWdlcyA9IG1lc3NhZ2VzRW47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmludGVyY2VwdG9yTWVzc2FnZXMgPSBtZXNzYWdlc0VzO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbnRlcmNlcHRvck1lc3NhZ2VzO1xuICB9XG5cbn1cbiJdfQ==
194
+ }], ctorParameters: function () { return [{ type: i1.SessionService }, { type: i2.MatSnackBar }, { type: i3.MatDialog }, { type: undefined, decorators: [{
195
+ type: Inject,
196
+ args: ['environment']
197
+ }] }]; } });
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NzaS1zZWN1cml0eS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvbWVzc2FnZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCw0Q0FBNEM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQU0xRCxNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUNTLElBQW9CO0lBQzNCLDBCQUEwQjtJQUNsQixRQUFxQixFQUN0QixNQUFpQixFQUNELFdBQWdCO1FBSmhDLFNBQUksR0FBSixJQUFJLENBQWdCO1FBRW5CLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUd4QixJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDakQsQ0FBQztJQUdELGtEQUFrRDtJQUNsRCxnQkFBZ0IsQ0FBQyxLQUF3QjtRQUN2QyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxHQUFRLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2hELFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNwQixLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUIsTUFBTTthQUNQO1lBQ0QsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDUixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dC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QUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsV0FBVyxFQUFFLElBQUksSUFBSSxFQUFFO1NBQ3hCLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUMzQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM3QyxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDMUMsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OzRHQTVMVSxlQUFlLG9HQVVoQixhQUFhO2dIQVZaLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7MEJBV04sTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxpbmVzLXBlci1mdW5jdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcXVvdGUtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG4vLyBpbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWxlcnRDb21wb25lbnQgfSBmcm9tICcuLi9hbGVydC9hbGVydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRnJvbnRFbmRFeGNlcHRpb24gfSBmcm9tICcuLi91c2VyLm1vZGVsJztcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uLnNlcnZpY2UnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNZXNzYWdlc1NlcnZpY2Uge1xuXG4gIHByaXZhdGUgaW50ZXJjZXB0b3JNZXNzYWdlczogYW55O1xuICBhcHBsaWNhdGlvbklkOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGF1dGg6IFNlc3Npb25TZXJ2aWNlLFxuICAgIC8vIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgZW52aXJvbm1lbnQ6IGFueVxuICApIHtcbiAgICB0aGlzLmFwcGxpY2F0aW9uSWQgPSBlbnZpcm9ubWVudC5hcHBsaWNhdGlvbklkO1xuICB9XG5cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxpbmVzLXBlci1mdW5jdGlvblxuICBzaG93RXJyb3JNZXNzYWdlKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdlcnJvcjogJywgZXJyb3IpO1xuICAgIHRoaXMucmVnaXN0ZXJMb2coZXJyb3IpO1xuICAgIGNvbnN0IG1zZ3M6IGFueSA9IHRoaXMuZ2V0SW50ZXJjZXB0b3JNZXNzYWdlcygpO1xuICAgIHN3aXRjaCAoZXJyb3Iuc3RhdHVzKSB7XG4gICAgICBjYXNlIDMwMjoge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTbmFja0Vycm9yKGVycm9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDQwMDoge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKGVycm9yLm1lc3NhZ2UsIFsnc25hY2stZXJyb3InXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MDM6IHtcbiAgICAgICAgdGhpcy5nb05hdmlnYXRlTG9naW4obXNncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MDQ6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3Iubm90X2ZvdW5kLCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgNDA5OiB7XG4gICAgICAgIHRoaXMubWVzc2FnZUFsZXJ0RGlhbG9nKGVycm9yLCBtc2dzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDQxMjoge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKGVycm9yLmVycm9yLnJlc3BvbnNlTWVzc2FnZSwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDQyODoge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKGVycm9yLmVycm9yLnJlc3BvbnNlTWVzc2FnZSwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDUwMDoge1xuICAgICAgICB0aGlzLm1lc3NhZ2VBbGVydERpYWxvZyhlcnJvciwgbXNncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA1MDM6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3IudW5hdmFpbGFibGUsIFsnc25hY2stZXJyb3InXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAtMToge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKG1zZ3MuYXV0aF9pbnRlcmNlcHRvci5jb25uZWN0aW9uX2Vycm9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDA6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29ubmVjdGlvbl9lcnJvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1lc3NhZ2VTbmFja0Vycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvci5lcnJvciAmJiBlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UgPyBlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UgOlxuICAgICAgZXJyb3IuZXJyb3IubWVzc2FnZSA/IGVycm9yLmVycm9yLm1lc3NhZ2UgOiBlcnJvci5tZXNzYWdlO1xuICAgIHRoaXMuc2hvd1NuYWNrRXJyb3IoZXJyb3JNZXNzYWdlLCBbJ3NuYWNrLWVycm9yJ10pO1xuICB9XG5cbiAgZ29OYXZpZ2F0ZUxvZ2luKG1zZ3M6IGFueSk6IHZvaWQge1xuICAgIC8vIGlmICh0aGlzLnJvdXRlci51cmwgIT09ICcvbG9naW4nKSB7XG4gICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3Iuc2Vzc2lvbl9sb3N0LCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ2luJ10pO1xuICAgIHRoaXMuYXV0aC5kZXN0cm95Q3JlZGVudGlhbHMoKTtcbiAgICB0aGlzLmF1dGguZ2V0TG9naW5VcmwoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICBjb25zdCBsb2dpblVybCA9IHJlcy5kYXRhO1xuICAgICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICBpZiAodXJsLmluZGV4T2YobG9naW5VcmwpPDApIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBsb2dpblVybCArICc/Y29udGludWU9JytlbmNvZGVVUklDb21wb25lbnQodXJsKTtcbiAgICAgIH1cbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgfSk7XG4gICAgLy8gfVxuICB9XG5cbiAgbWVzc2FnZUFsZXJ0RGlhbG9nKGVycm9yOiBhbnksIG1zZ3M6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICBsZXQgbWVzc2FnZSA9ICcnO1xuICAgIGlmIChlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UgPSBlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2U7XG4gICAgICBpZiAoZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQpXG4gICAgICB7bWVzc2FnZSA9IG1lc3NhZ2UgKyAnXFxuXFxuJyttc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29kZSsnOiAnICsgZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQ7fVxuICAgIH0gZWxzZSBpZiAoZXJyb3IuZXJyb3IubWVzc2FnZSkge1xuICAgICAgbWVzc2FnZSA9IGVycm9yLmVycm9yLm1lc3NhZ2U7XG4gICAgICBpZiAoZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQpXG4gICAgICB7bWVzc2FnZSA9IG1lc3NhZ2UgKyAnXFxuXFxuJyttc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29kZSsnOiAnICsgZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQ7fVxuICAgIH0gIGVsc2UgaWYgKGVycm9yLm1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgaWYgKGVycm9yLmVycm9yLmV4Y2VwdGlvbklkKVxuICAgICAge21lc3NhZ2UgPSBtZXNzYWdlICsgJ1xcblxcbicrbXNncy5hdXRoX2ludGVyY2VwdG9yLmNvZGUrJzogJyArIGVycm9yLmVycm9yLmV4Y2VwdGlvbklkO31cbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZSA9IG1zZ3MuYXV0aF9pbnRlcmNlcHRvci5tZXNzYWdlO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZy5vcGVuKEFsZXJ0Q29tcG9uZW50LCB7XG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBkYXRhOiB7IHRpdGxlOiBtc2dzLmF1dGhfaW50ZXJjZXB0b3IudGl0bGUsIG1lc3NhZ2UgfVxuICAgIH0pO1xuICB9XG5cbiAgc2hvd1NuYWNrRXJyb3IobWVzc2FnZTogYW55LCBwYW5lbENsYXNzOiBhbnlbXSA9IFtdKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2cobWVzc2FnZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwgdW5kZWZpbmVkLCB7XG4gICAgICAgIGR1cmF0aW9uOiA1MDAwLFxuICAgICAgICBwYW5lbENsYXNzLFxuICAgICAgICB2ZXJ0aWNhbFBvc2l0aW9uOiAndG9wJ1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRJbnRlcmNlcHRvck1lc3NhZ2VzKG1lc3NhZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JNZXNzYWdlcyA9IG1lc3NhZ2U7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxpbmVzLXBlci1mdW5jdGlvblxuICBnZXRJbnRlcmNlcHRvck1lc3NhZ2VzKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmludGVyY2VwdG9yTWVzc2FnZXMpIHtcbiAgICAgIGNvbnN0IGxhbmcgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0xBTkcnKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VzRW4gPSB7XG4gICAgICAgIGF1dGhfaW50ZXJjZXB0b3IgOiB7XG4gICAgICAgICAgc2Vzc2lvbl9sb3N0IDonU2Vzc2lvbiBsb3N0LCB5b3UgaGF2ZSB0byBsb2dpbiBhZ2Fpbi4nLFxuICAgICAgICAgIG5vdF9mb3VuZDogJ1Jlc291cmNlIG5vdCBmb3VuZCcsXG4gICAgICAgICAgdGl0bGU6ICdXZSBhcmUgc29ycnkhJyxcbiAgICAgICAgICBtZXNzYWdlOiAnV2UgaGFkIGEgcHJvYmxlbSB0cnlpbmcgdG8gcHJvY2VzcyB5b3VyIHJlcXVlc3QuJyxcbiAgICAgICAgICBjb2RlOidDb2RlJyxcbiAgICAgICAgICB1bmF2YWlsYWJsZTonU2VydmljZSB1bmF2YWlsYWJsZSwgcGxlYXNlIHRyeSBhZ2FpbiBpbiBhIGZldyBtaW51dGVzLicsXG4gICAgICAgICAgY29ubmVjdGlvbl9lcnJvcjonQ291bGQgbm90IGNvbm5lY3QgdG8gc2VydmVyLCBwbGVhc2UgY2hlY2sgeW91ciBuZXR3b3JrIGNvbm5lY3Rpb24uJ1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgbWVzc2FnZXNFcyA9IHtcbiAgICAgICAgYXV0aF9pbnRlcmNlcHRvcjoge1xuICAgICAgICAgIHNlc3Npb25fbG9zdDogJ1N1IHNlc2nDs24gZXhwaXLDsywgZGViZSBpbmljaWFyIHNlc2nDs24gbnVldmFtZW50ZS4nLFxuICAgICAgICAgIG5vdF9mb3VuZDogJ1JlY3Vyc28gbm8gZW5jb250cmFkbycsXG4gICAgICAgICAgdGl0bGU6ICfCoUxvIHNlbnRpbW9zIScsXG4gICAgICAgICAgbWVzc2FnZTogJ1R1dmltb3MgdW4gcHJvYmxlbWEgYWwgdHJhdGFyIGRlIHByb2Nlc2FyIHN1IHNvbGljaXR1ZC4nLFxuICAgICAgICAgIGNvZGU6ICdDw7NkaWdvJyxcbiAgICAgICAgICB1bmF2YWlsYWJsZTogJ1NlcnZpY2lvIG5vIGRpc3BvbmlibGUsIGludMOpbnRlbG8gZGUgbnVldm8gZW4gdW5vcyBtaW51dG9zLicsXG4gICAgICAgICAgY29ubmVjdGlvbl9lcnJvcjogJ05vIHNlIHB1ZG8gY29uZWN0YXIgYWwgc2Vydmlkb3IsIHZlcmlmaXF1ZSBzdSBjb25leGnDs24gZGUgcmVkLidcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGlmIChsYW5nICYmIGxhbmc9PT0nZW4nKSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0b3JNZXNzYWdlcyA9IG1lc3NhZ2VzRW47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmludGVyY2VwdG9yTWVzc2FnZXMgPSBtZXNzYWdlc0VzO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbnRlcmNlcHRvck1lc3NhZ2VzO1xuICB9XG5cblxuICByZWdpc3RlckxvZyhlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiB2b2lkIHtcbiAgICBjb25zdCB1ID0gdGhpcy5hdXRoLmdldFVzZXJkYXRhKCk7XG4gICAgY29uc3QgcGFyYW06IEZyb250RW5kRXhjZXB0aW9uID0ge1xuICAgICAgaHR0cFN0YXR1czogZXJyb3Iuc3RhdHVzLFxuICAgICAgaHR0cFN0YXR1c1RleHQ6IGVycm9yLnN0YXR1c1RleHQsXG4gICAgICBlcnJvck1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICBjdXJyZW50VXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICAgIHJlcXVlc3RVcmw6IGVycm9yLnVybD9lcnJvci51cmw6IHVuZGVmaW5lZCxcbiAgICAgIHVzZXJJZDogdT91LnVzZXJJZDogdW5kZWZpbmVkLFxuICAgICAgYXBwbGljYXRpb25JZDogdGhpcy5hcHBsaWNhdGlvbklkLFxuICAgICAgcmVxdWVzdERhdGU6IG5ldyBEYXRlKClcbiAgICB9O1xuICAgIHRoaXMuYXV0aC5yZWdpc3RlckV4Y2VwdGlvbihwYXJhbSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygncmVnaXN0ZXJFeGNlcHRpb24nLCByZXNwb25zZSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdyZWdpc3RlckV4Y2VwdGlvbicsIGVycik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxufVxuIl19
@@ -241,6 +241,11 @@ export class SessionService {
241
241
  return this.http.post(this.endPoint + '/security/option/user', param)
242
242
  .pipe(map(res => res));
243
243
  }
244
+ registerException(param) {
245
+ const headers = new HttpHeaders().set('skipError', 'true');
246
+ return this.http.post(this.endPoint + '/auth/exception/log', param, { headers })
247
+ .pipe(map(res => res));
248
+ }
244
249
  }
245
250
  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 });
246
251
  SessionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SessionService });
@@ -250,4 +255,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
250
255
  type: Inject,
251
256
  args: ['environment']
252
257
  }] }]; } });
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3NpLXNlY3VyaXR5LWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9zZXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLHFDQUFxQztBQUNyQyx5REFBeUQ7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRy9ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUluRCxNQUFNLE9BQU8sY0FBYztJQVV6QixZQUFvQixJQUFnQixFQUNYLFdBQWdCO1FBRHJCLFNBQUksR0FBSixJQUFJLENBQVk7UUFKcEMsYUFBUSxHQUFHLDZCQUE2QixDQUFDO1FBTXZDLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFDL0MsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztRQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzlDLElBQUksSUFBSSxDQUFDO1lBQ1QsSUFBSSxLQUFLLENBQUM7WUFDVixJQUFJLFlBQVksQ0FBQztZQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7WUFFbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQztZQUNoRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFRO2dCQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNkLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2YsWUFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFdEIsSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLFlBQVksRUFBRTtvQkFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO3dCQUN2QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hCLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO3dCQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ25CLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDZCxDQUFDLENBQUMsQ0FBQztpQkFDSjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUN2QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7d0JBQzFCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO3dCQUNqQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUMsQ0FBQyxFQUFFOzRCQUNsRixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksR0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQzt5QkFDN0U7d0JBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNqQixDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTt3QkFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUNuQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2QsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7WUFFSCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFRO2dCQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUI7UUFDNUIsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQVMsQ0FBQztRQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLFdBQVcsQ0FBQyxRQUFhO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBVSxFQUFFLFlBQWlCO1FBQzVDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRU0sZUFBZSxDQUFDLFlBQWlCO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDakMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sZUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFVO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDakMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFVLEVBQUUsWUFBaUI7UUFDbEQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDakMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDakMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sWUFBWSxDQUFDLFFBQWE7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3BELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hCLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNULElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25CLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLFlBQW9CO1FBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0IsTUFBTSxXQUFXLEdBQUc7WUFDbEIsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUMsY0FBYyxFQUFFLGtCQUFrQixFQUFFLENBQUM7U0FDaEUsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxxQkFBcUIsRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxJQUFJLENBQUMsUUFBUSxHQUFHLGlCQUFpQixDQUFDO2FBQ3pELElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDO2FBQ3hELElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBVztRQUNuQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFNLElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBYyxFQUFFLEVBQUMsTUFBTSxFQUFDLENBQUM7YUFDakUsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztZQUMxQixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDbEMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGVBQWU7UUFDcEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbEUsSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLFlBQVksRUFBRTtZQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBVyxFQUFFLGFBQWtCO1FBQ2pELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU0sSUFBSSxDQUFDLFFBQVEsR0FBRyxvQkFBb0IsYUFBYSxJQUFJLE1BQU0sRUFBRSxDQUFDO2FBQ3JGLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdkQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDbEYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDakIsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFO3dCQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDZjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFOzRCQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUNsQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDOzRCQUMxQixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7NEJBQy9CLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDaEIsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7NEJBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzs0QkFDbkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNoQixDQUFDLENBQUMsQ0FBQztxQkFDSjtnQkFDSCxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNuQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFHRCxtQ0FBbUM7SUFDNUIsY0FBYyxDQUFDLGFBQTRCLEVBQUUsSUFBbUIsRUFBRSxRQUF1QixFQUFFLFVBQXlCLEVBQUUsY0FBNkIsRUFBRSxXQUEyQjtRQUNyTCxNQUFNLEtBQUssR0FBRztZQUNaLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU07WUFDN0IsYUFBYTtZQUNiLElBQUk7WUFDSixRQUFRO1lBQ1IsVUFBVTtZQUNWLGNBQWM7WUFDZCxXQUFXO1NBQ1osQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU0sSUFBSSxDQUFDLFFBQVEsR0FBRyx1QkFBdUIsRUFBRSxLQUFLLENBQUM7YUFDdkUsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQzs7MkdBL1FVLGNBQWMsNENBV2YsYUFBYTsrR0FYWixjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLFVBQVU7OzBCQVlOLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1saW5lcy1wZXItZnVuY3Rpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIGFycm93LWJvZHktc3R5bGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi91c2VyLm1vZGVsJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENyb3NzU3RvcmFnZUNsaWVudCB9IGZyb20gJ2Nyb3NzLXN0b3JhZ2UnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZXNzaW9uU2VydmljZSB7XG5cbiAgdXNlcmRhdGE6IFVzZXIgfCB1bmRlZmluZWQ7XG4gIHRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBlbmRQb2ludDogc3RyaW5nO1xuICBsb2dpblVybCA9ICdodHRwOi8vbG9jYWxob3N0OjQyMDAvbG9naW4nO1xuICBzdG9yYWdlOiBhbnk7XG4gIGFwcGxpY2F0aW9uSWQ6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBlbnZpcm9ubWVudDogYW55KSB7XG4gICAgdGhpcy5lbmRQb2ludCA9IGVudmlyb25tZW50LmVuZFBvaW50O1xuICAgIHRoaXMuYXBwbGljYXRpb25JZCA9IGVudmlyb25tZW50LmFwcGxpY2F0aW9uSWQ7XG4gICAgY29uc3QgdXJsSHViID0gZW52aXJvbm1lbnQuc2Vzc2lvbkh1YjtcbiAgICBjb25zb2xlLmxvZyh1cmxIdWIpO1xuICAgIHRoaXMuc3RvcmFnZSA9IG5ldyBDcm9zc1N0b3JhZ2VDbGllbnQodXJsSHViLCB7dGltZW91dDogNTAwMH0pO1xuICB9XG5cbiAgcHVibGljIGNoZWNrU2Vzc2lvbkRhdGEoKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbGV0IGRhdGE7XG4gICAgICBsZXQgdG9rZW47XG4gICAgICBsZXQgcmVmcmVzaFRva2VuO1xuICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuc3RvcmFnZS5vbkNvbm5lY3QoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHNlbGYuc3RvcmFnZS5nZXQoJ1VTRVJEQVRBJywgJ1RPS0VOJywgJ1JFRlJFU0hfVE9LRU4nKTtcbiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgIGRhdGEgPSByZXNbMF07XG4gICAgICAgIHRva2VuID0gcmVzWzFdO1xuICAgICAgICByZWZyZXNoVG9rZW4gPSByZXNbMl07XG5cbiAgICAgICAgaWYgKGRhdGEgJiYgdG9rZW4gJiYgcmVmcmVzaFRva2VuKSB7XG4gICAgICAgICAgY29uc3QgdXNlciA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICAgICAgc2VsZi5zYXZlQ3JlZGVudGlhbHModG9rZW4sIHJlZnJlc2hUb2tlbik7XG4gICAgICAgICAgc2VsZi5zYXZlVXNlckRhdGEodXNlcik7XG4gICAgICAgICAgc2VsZi5jaGVja0FwcFBlcm1pc3Npb25zKCkudGhlbigocmVzMSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2cocmVzMSk7XG4gICAgICAgICAgICByZXNvbHZlKCdPSycpO1xuICAgICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlbGYuZGVzdHJveUNyZWRlbnRpYWxzKCk7XG4gICAgICAgICAgc2VsZi5kZXN0cm95VXNlckRhdGEoKTtcbiAgICAgICAgICBzZWxmLmdldExvZ2luVXJsKCkuc3Vic2NyaWJlKHJlczEgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2cocmVzMSk7XG4gICAgICAgICAgICBzZWxmLmxvZ2luVXJsID0gcmVzMS5kYXRhO1xuICAgICAgICAgICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICAgICAgICBpZiAodXJsLmluZGV4T2YoJy9sb2dpbicpPDAgJiYgdXJsLmluZGV4T2YoJy9mb3Jnb3QnKTwwICYmIHVybC5pbmRleE9mKCcvcmVzZXQnKTwwKSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc2VsZi5sb2dpblVybCArICc/Y29udGludWU9JytlbmNvZGVVUklDb21wb25lbnQodXJsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc29sdmUoJ05PSycpO1xuICAgICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnI6IGFueSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmV2aWV3U2Vzc2lvbkRhdGEoKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMuY2hlY2tTZXNzaW9uRGF0YSgpIGFzIGFueTtcbiAgICBjb25zb2xlLmxvZyhgYXN5bmMgcmVzdWx0OiAke3ZhbHVlfWApO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRVc2VyZGF0YSh1c2VyZGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy51c2VyZGF0YSA9IHVzZXJkYXRhO1xuICB9XG5cbiAgcHVibGljIHNldFRva2Vucyh0b2tlbjogYW55LCByZWZyZXNoVG9rZW46IGFueSk6IHZvaWQge1xuICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgICB0aGlzLnJlZnJlc2hUb2tlbiA9IHJlZnJlc2hUb2tlbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVc2VyZGF0YSgpOiBVc2VyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy51c2VyZGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSZWZyZXNoVG9rZW4ocmVmcmVzaFRva2VuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2hUb2tlbiA9IHJlZnJlc2hUb2tlbjtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1JFRlJFU0hfVE9LRU4nLCByZWZyZXNoVG9rZW4pO1xuICAgIHRoaXMuc3RvcmFnZS5vbkNvbm5lY3QoKS50aGVuKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2Uuc2V0KCdSRUZSRVNIX1RPS0VOJywgcmVmcmVzaFRva2VuKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZWZyZXNoVG9rZW4oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW47XG4gIH1cblxuICBwdWJsaWMgc2V0VG9rZW4odG9rZW46IGFueSk6IGFueSB7XG4gICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnVE9LRU4nLCB0b2tlbik7XG4gICAgdGhpcy5zdG9yYWdlLm9uQ29ubmVjdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5zZXQoJ1RPS0VOJywgdG9rZW4pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFRva2VuKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW47XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveUNyZWRlbnRpYWxzKCk6IHZvaWQge1xuICAgIHRoaXMudG9rZW4gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZWZyZXNoVG9rZW4gPSB1bmRlZmluZWQ7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdUT0tFTicpO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnUkVGUkVTSF9UT0tFTicpO1xuICAgIHRoaXMuc3RvcmFnZS5vbkNvbm5lY3QoKS50aGVuKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZGVsKCdUT0tFTicsICdSRUZSRVNIX1RPS0VOJyk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveVVzZXJEYXRhKCk6IHZvaWQge1xuICAgIHRoaXMudXNlcmRhdGEgPSB1bmRlZmluZWQ7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdVU0VSREFUQScpO1xuICAgIHRoaXMuc3RvcmFnZS5vbkNvbm5lY3QoKS50aGVuKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZGVsKCdVU0VSREFUQScpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNhdmVDcmVkZW50aWFscyh0b2tlbjogYW55LCByZWZyZXNoVG9rZW46IGFueSk6IHZvaWQge1xuICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgICB0aGlzLnJlZnJlc2hUb2tlbiA9IHJlZnJlc2hUb2tlbjtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1RPS0VOJywgdG9rZW4pO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnUkVGUkVTSF9UT0tFTicsIHJlZnJlc2hUb2tlbik7XG4gICAgdGhpcy5zdG9yYWdlLm9uQ29ubmVjdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5zZXQoJ1RPS0VOJywgdG9rZW4pO1xuICAgIH0pO1xuICAgIHRoaXMuc3RvcmFnZS5vbkNvbm5lY3QoKS50aGVuKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2Uuc2V0KCdSRUZSRVNIX1RPS0VOJywgcmVmcmVzaFRva2VuKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlVXNlckRhdGEodXNlcmRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudXNlcmRhdGEgPSB1c2VyZGF0YTtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1VTRVJEQVRBJywgSlNPTi5zdHJpbmdpZnkodGhpcy51c2VyZGF0YSkpO1xuICAgIHRoaXMuc3RvcmFnZS5vbkNvbm5lY3QoKS50aGVuKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2Uuc2V0KCdVU0VSREFUQScsIEpTT04uc3RyaW5naWZ5KHRoaXMudXNlcmRhdGEpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpc0xvZ2dlZEluKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMudXNlcmRhdGE7XG4gIH1cblxuICBsb2dvdXQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5sb2dvdXRBcGkodGhpcy51c2VyZGF0YT8udXNlcklkKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgICAgdGhpcy5kZXN0cm95Q3JlZGVudGlhbHMoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95VXNlckRhdGEoKTtcbiAgICAgICAgdGhpcy5nb1RvTG9naW4oKTtcbiAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5kZXN0cm95Q3JlZGVudGlhbHMoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95VXNlckRhdGEoKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0TmV3VG9rZW4ocmVmcmVzaFRva2VuOiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnNvbGUubG9nKCdnZXROZXdUb2tlbicpO1xuICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5lbmRQb2ludCArICcvYXV0aC9yZWZyZXNoLXRva2VuJywgeyByZWZyZXNoVG9rZW4gfSwgaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0TG9naW5VcmwoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHRoaXMuZW5kUG9pbnQgKyAnL2F1dGgvbG9naW4vdXJsJylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHJlcykpO1xuICB9XG5cbiAgZ2V0SG9tZVVybCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odGhpcy5lbmRQb2ludCArICcvYXV0aC9ob21lL3VybCcpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG4gIGxvZ291dEFwaSh1c2VySWQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odGhpcy5lbmRQb2ludCArICcvYXV0aC9sb2dvdXQnLCB7dXNlcklkfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHJlcykpO1xuICB9XG5cbiAgZ29Ub0xvZ2luKCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0TG9naW5VcmwoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICBjb25zdCBsb2dpblVybCA9IHJlcy5kYXRhO1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBsb2dpblVybDtcbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbG9hZFNlc3Npb25EYXRhKCk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGEgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1VTRVJEQVRBJyk7XG4gICAgY29uc3QgdG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1RPS0VOJyk7XG4gICAgY29uc3QgcmVmcmVzaFRva2VuID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdSRUZSRVNIX1RPS0VOJyk7XG4gICAgaWYgKGRhdGEgJiYgdG9rZW4gJiYgcmVmcmVzaFRva2VuKSB7XG4gICAgICBjb25zdCB1c2VyID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgIHRoaXMuc2V0VG9rZW5zKHRva2VuLCByZWZyZXNoVG9rZW4pO1xuICAgICAgdGhpcy5zZXRVc2VyZGF0YSh1c2VyKTtcbiAgICB9XG4gIH1cblxuICB1c2VySGFzT3B0aW9uc0luQXBwKHVzZXJJZDogYW55LCBhcHBsaWNhdGlvbklkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odGhpcy5lbmRQb2ludCArIGAvc2VjdXJpdHkvb3B0aW9uLyR7YXBwbGljYXRpb25JZH0vJHt1c2VySWR9YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHJlcykpO1xuICB9XG5cbiAgY2hlY2tBcHBQZXJtaXNzaW9ucygpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnVzZXJkYXRhPy51c2VySWQsIHRoaXMuYXBwbGljYXRpb25JZCk7XG4gICAgICBpZiAodGhpcy5hcHBsaWNhdGlvbklkKSB7XG4gICAgICAgIHRoaXMudXNlckhhc09wdGlvbnNJbkFwcCh0aGlzLnVzZXJkYXRhPy51c2VySWQsIHRoaXMuYXBwbGljYXRpb25JZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgICAgICBpZiAocmVzLmRhdGEpIHtcbiAgICAgICAgICAgIHJlc29sdmUoJ29rJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0SG9tZVVybCgpLnN1YnNjcmliZShyZXMxID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzMSk7XG4gICAgICAgICAgICAgIGNvbnN0IGhvbWVVcmwgPSByZXMxLmRhdGE7XG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaG9tZVVybDtcbiAgICAgICAgICAgICAgcmVqZWN0KCdub2snKTtcbiAgICAgICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICByZWplY3QoJ25vaycpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIHJlamVjdCgnbm9rJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSgnb2snKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgcHVibGljIGdldE9wdGlvbnNVc2VyKGFwcGxpY2F0aW9uSWQ6IG51bWJlciB8IG51bGwsIHR5cGU6IHN0cmluZyB8IG51bGwsIGxhbmd1YWdlOiBzdHJpbmcgfCBudWxsLCBlbnRpdHlDb2RlOiBzdHJpbmcgfCBudWxsLCBwYXJlbnRPcHRpb25JZDogbnVtYmVyIHwgbnVsbCwgaW5jbHVkZURhdGE6IGJvb2xlYW4gfCBudWxsKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBwYXJhbSA9IHtcbiAgICAgIHVzZXJJZDogdGhpcy51c2VyZGF0YT8udXNlcklkLFxuICAgICAgYXBwbGljYXRpb25JZCxcbiAgICAgIHR5cGUsXG4gICAgICBsYW5ndWFnZSxcbiAgICAgIGVudGl0eUNvZGUsXG4gICAgICBwYXJlbnRPcHRpb25JZCxcbiAgICAgIGluY2x1ZGVEYXRhXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih0aGlzLmVuZFBvaW50ICsgJy9zZWN1cml0eS9vcHRpb24vdXNlcicsIHBhcmFtKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gcmVzKSk7XG4gIH1cblxufVxuXG4iXX0=
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3NpLXNlY3VyaXR5LWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9zZXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLHFDQUFxQztBQUNyQyx5REFBeUQ7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRy9ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUluRCxNQUFNLE9BQU8sY0FBYztJQVV6QixZQUFvQixJQUFnQixFQUNYLFdBQWdCO1FBRHJCLFNBQUksR0FBSixJQUFJLENBQVk7UUFKcEMsYUFBUSxHQUFHLDZCQUE2QixDQUFDO1FBTXZDLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFDL0MsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztRQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzlDLElBQUksSUFBSSxDQUFDO1lBQ1QsSUFBSSxLQUFLLENBQUM7WUFDVixJQUFJ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T0FBTyxFQUFDLENBQUM7YUFDaEYsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQzs7MkdBdFJVLGNBQWMsNENBV2YsYUFBYTsrR0FYWixjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLFVBQVU7OzBCQVlOLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1saW5lcy1wZXItZnVuY3Rpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIGFycm93LWJvZHktc3R5bGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEZyb250RW5kRXhjZXB0aW9uLCBVc2VyIH0gZnJvbSAnLi4vdXNlci5tb2RlbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDcm9zc1N0b3JhZ2VDbGllbnQgfSBmcm9tICdjcm9zcy1zdG9yYWdlJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2Vzc2lvblNlcnZpY2Uge1xuXG4gIHVzZXJkYXRhOiBVc2VyIHwgdW5kZWZpbmVkO1xuICB0b2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZWZyZXNoVG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZW5kUG9pbnQ6IHN0cmluZztcbiAgbG9naW5VcmwgPSAnaHR0cDovL2xvY2FsaG9zdDo0MjAwL2xvZ2luJztcbiAgc3RvcmFnZTogYW55O1xuICBhcHBsaWNhdGlvbklkOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgZW52aXJvbm1lbnQ6IGFueSkge1xuICAgIHRoaXMuZW5kUG9pbnQgPSBlbnZpcm9ubWVudC5lbmRQb2ludDtcbiAgICB0aGlzLmFwcGxpY2F0aW9uSWQgPSBlbnZpcm9ubWVudC5hcHBsaWNhdGlvbklkO1xuICAgIGNvbnN0IHVybEh1YiA9IGVudmlyb25tZW50LnNlc3Npb25IdWI7XG4gICAgY29uc29sZS5sb2codXJsSHViKTtcbiAgICB0aGlzLnN0b3JhZ2UgPSBuZXcgQ3Jvc3NTdG9yYWdlQ2xpZW50KHVybEh1Yiwge3RpbWVvdXQ6IDUwMDB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja1Nlc3Npb25EYXRhKCk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGxldCBkYXRhO1xuICAgICAgbGV0IHRva2VuO1xuICAgICAgbGV0IHJlZnJlc2hUb2tlbjtcbiAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICB0aGlzLnN0b3JhZ2Uub25Db25uZWN0KCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBzZWxmLnN0b3JhZ2UuZ2V0KCdVU0VSREFUQScsICdUT0tFTicsICdSRUZSRVNIX1RPS0VOJyk7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXM6IGFueSkge1xuICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgICBkYXRhID0gcmVzWzBdO1xuICAgICAgICB0b2tlbiA9IHJlc1sxXTtcbiAgICAgICAgcmVmcmVzaFRva2VuID0gcmVzWzJdO1xuXG4gICAgICAgIGlmIChkYXRhICYmIHRva2VuICYmIHJlZnJlc2hUb2tlbikge1xuICAgICAgICAgIGNvbnN0IHVzZXIgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgICAgIHNlbGYuc2F2ZUNyZWRlbnRpYWxzKHRva2VuLCByZWZyZXNoVG9rZW4pO1xuICAgICAgICAgIHNlbGYuc2F2ZVVzZXJEYXRhKHVzZXIpO1xuICAgICAgICAgIHNlbGYuY2hlY2tBcHBQZXJtaXNzaW9ucygpLnRoZW4oKHJlczEpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlczEpO1xuICAgICAgICAgICAgcmVzb2x2ZSgnT0snKTtcbiAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWxmLmRlc3Ryb3lDcmVkZW50aWFscygpO1xuICAgICAgICAgIHNlbGYuZGVzdHJveVVzZXJEYXRhKCk7XG4gICAgICAgICAgc2VsZi5nZXRMb2dpblVybCgpLnN1YnNjcmliZShyZXMxID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlczEpO1xuICAgICAgICAgICAgc2VsZi5sb2dpblVybCA9IHJlczEuZGF0YTtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCcvbG9naW4nKTwwICYmIHVybC5pbmRleE9mKCcvZm9yZ290Jyk8MCAmJiB1cmwuaW5kZXhPZignL3Jlc2V0Jyk8MCkge1xuICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHNlbGYubG9naW5VcmwgKyAnP2NvbnRpbnVlPScrZW5jb2RlVVJJQ29tcG9uZW50KHVybCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKCdOT0snKTtcbiAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyOiBhbnkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJldmlld1Nlc3Npb25EYXRhKCk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgdmFsdWUgPSBhd2FpdCB0aGlzLmNoZWNrU2Vzc2lvbkRhdGEoKSBhcyBhbnk7XG4gICAgY29uc29sZS5sb2coYGFzeW5jIHJlc3VsdDogJHt2YWx1ZX1gKTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgc2V0VXNlcmRhdGEodXNlcmRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudXNlcmRhdGEgPSB1c2VyZGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRUb2tlbnModG9rZW46IGFueSwgcmVmcmVzaFRva2VuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgdGhpcy5yZWZyZXNoVG9rZW4gPSByZWZyZXNoVG9rZW47XG4gIH1cblxuICBwdWJsaWMgZ2V0VXNlcmRhdGEoKTogVXNlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudXNlcmRhdGE7XG4gIH1cblxuICBwdWJsaWMgc2V0UmVmcmVzaFRva2VuKHJlZnJlc2hUb2tlbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoVG9rZW4gPSByZWZyZXNoVG9rZW47XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdSRUZSRVNIX1RPS0VOJywgcmVmcmVzaFRva2VuKTtcbiAgICB0aGlzLnN0b3JhZ2Uub25Db25uZWN0KCkudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLnNldCgnUkVGUkVTSF9UT0tFTicsIHJlZnJlc2hUb2tlbik7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVmcmVzaFRva2VuKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuO1xuICB9XG5cbiAgcHVibGljIHNldFRva2VuKHRva2VuOiBhbnkpOiBhbnkge1xuICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1RPS0VOJywgdG9rZW4pO1xuICAgIHRoaXMuc3RvcmFnZS5vbkNvbm5lY3QoKS50aGVuKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2Uuc2V0KCdUT0tFTicsIHRva2VuKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUb2tlbigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnRva2VuO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3lDcmVkZW50aWFscygpOiB2b2lkIHtcbiAgICB0aGlzLnRva2VuID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucmVmcmVzaFRva2VuID0gdW5kZWZpbmVkO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnVE9LRU4nKTtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ1JFRlJFU0hfVE9LRU4nKTtcbiAgICB0aGlzLnN0b3JhZ2Uub25Db25uZWN0KCkudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmRlbCgnVE9LRU4nLCAnUkVGUkVTSF9UT0tFTicpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3lVc2VyRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJkYXRhID0gdW5kZWZpbmVkO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnVVNFUkRBVEEnKTtcbiAgICB0aGlzLnN0b3JhZ2Uub25Db25uZWN0KCkudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmRlbCgnVVNFUkRBVEEnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlQ3JlZGVudGlhbHModG9rZW46IGFueSwgcmVmcmVzaFRva2VuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgdGhpcy5yZWZyZXNoVG9rZW4gPSByZWZyZXNoVG9rZW47XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdUT0tFTicsIHRva2VuKTtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1JFRlJFU0hfVE9LRU4nLCByZWZyZXNoVG9rZW4pO1xuICAgIHRoaXMuc3RvcmFnZS5vbkNvbm5lY3QoKS50aGVuKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2Uuc2V0KCdUT0tFTicsIHRva2VuKTtcbiAgICB9KTtcbiAgICB0aGlzLnN0b3JhZ2Uub25Db25uZWN0KCkudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLnNldCgnUkVGUkVTSF9UT0tFTicsIHJlZnJlc2hUb2tlbik7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZVVzZXJEYXRhKHVzZXJkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJkYXRhID0gdXNlcmRhdGE7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdVU0VSREFUQScsIEpTT04uc3RyaW5naWZ5KHRoaXMudXNlcmRhdGEpKTtcbiAgICB0aGlzLnN0b3JhZ2Uub25Db25uZWN0KCkudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLnNldCgnVVNFUkRBVEEnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnVzZXJkYXRhKSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaXNMb2dnZWRJbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnVzZXJkYXRhO1xuICB9XG5cbiAgbG9nb3V0KCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMubG9nb3V0QXBpKHRoaXMudXNlcmRhdGE/LnVzZXJJZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgIHRoaXMuZGVzdHJveUNyZWRlbnRpYWxzKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveVVzZXJEYXRhKCk7XG4gICAgICAgIHRoaXMuZ29Ub0xvZ2luKCk7XG4gICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMuZGVzdHJveUNyZWRlbnRpYWxzKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveVVzZXJEYXRhKCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldE5ld1Rva2VuKHJlZnJlc2hUb2tlbjogc3RyaW5nKTogYW55IHtcbiAgICBjb25zb2xlLmxvZygnZ2V0TmV3VG9rZW4nKTtcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZW5kUG9pbnQgKyAnL2F1dGgvcmVmcmVzaC10b2tlbicsIHsgcmVmcmVzaFRva2VuIH0sIGh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldExvZ2luVXJsKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih0aGlzLmVuZFBvaW50ICsgJy9hdXRoL2xvZ2luL3VybCcpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG4gIGdldEhvbWVVcmwoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHRoaXMuZW5kUG9pbnQgKyAnL2F1dGgvaG9tZS91cmwnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gcmVzKSk7XG4gIH1cblxuICBsb2dvdXRBcGkodXNlcklkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHRoaXMuZW5kUG9pbnQgKyAnL2F1dGgvbG9nb3V0Jywge3VzZXJJZH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG4gIGdvVG9Mb2dpbigpOiB2b2lkIHtcbiAgICB0aGlzLmdldExvZ2luVXJsKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgY29uc3QgbG9naW5VcmwgPSByZXMuZGF0YTtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbG9naW5Vcmw7XG4gICAgfSwgKGVycikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGxvYWRTZXNzaW9uRGF0YSgpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdVU0VSREFUQScpO1xuICAgIGNvbnN0IHRva2VuID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdUT0tFTicpO1xuICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnUkVGUkVTSF9UT0tFTicpO1xuICAgIGlmIChkYXRhICYmIHRva2VuICYmIHJlZnJlc2hUb2tlbikge1xuICAgICAgY29uc3QgdXNlciA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICB0aGlzLnNldFRva2Vucyh0b2tlbiwgcmVmcmVzaFRva2VuKTtcbiAgICAgIHRoaXMuc2V0VXNlcmRhdGEodXNlcik7XG4gICAgfVxuICB9XG5cbiAgdXNlckhhc09wdGlvbnNJbkFwcCh1c2VySWQ6IGFueSwgYXBwbGljYXRpb25JZDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHRoaXMuZW5kUG9pbnQgKyBgL3NlY3VyaXR5L29wdGlvbi8ke2FwcGxpY2F0aW9uSWR9LyR7dXNlcklkfWApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG4gIGNoZWNrQXBwUGVybWlzc2lvbnMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc29sZS5sb2codGhpcy51c2VyZGF0YT8udXNlcklkLCB0aGlzLmFwcGxpY2F0aW9uSWQpO1xuICAgICAgaWYgKHRoaXMuYXBwbGljYXRpb25JZCkge1xuICAgICAgICB0aGlzLnVzZXJIYXNPcHRpb25zSW5BcHAodGhpcy51c2VyZGF0YT8udXNlcklkLCB0aGlzLmFwcGxpY2F0aW9uSWQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgICAgaWYgKHJlcy5kYXRhKSB7XG4gICAgICAgICAgICByZXNvbHZlKCdvaycpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdldEhvbWVVcmwoKS5zdWJzY3JpYmUocmVzMSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlczEpO1xuICAgICAgICAgICAgICBjb25zdCBob21lVXJsID0gcmVzMS5kYXRhO1xuICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGhvbWVVcmw7XG4gICAgICAgICAgICAgIHJlamVjdCgnbm9rJyk7XG4gICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgcmVqZWN0KCdub2snKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICByZWplY3QoJ25vaycpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUoJ29rJyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gIHB1YmxpYyBnZXRPcHRpb25zVXNlcihhcHBsaWNhdGlvbklkOiBudW1iZXIgfCBudWxsLCB0eXBlOiBzdHJpbmcgfCBudWxsLCBsYW5ndWFnZTogc3RyaW5nIHwgbnVsbCwgZW50aXR5Q29kZTogc3RyaW5nIHwgbnVsbCwgcGFyZW50T3B0aW9uSWQ6IG51bWJlciB8IG51bGwsIGluY2x1ZGVEYXRhOiBib29sZWFuIHwgbnVsbCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgcGFyYW0gPSB7XG4gICAgICB1c2VySWQ6IHRoaXMudXNlcmRhdGE/LnVzZXJJZCxcbiAgICAgIGFwcGxpY2F0aW9uSWQsXG4gICAgICB0eXBlLFxuICAgICAgbGFuZ3VhZ2UsXG4gICAgICBlbnRpdHlDb2RlLFxuICAgICAgcGFyZW50T3B0aW9uSWQsXG4gICAgICBpbmNsdWRlRGF0YVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odGhpcy5lbmRQb2ludCArICcvc2VjdXJpdHkvb3B0aW9uL3VzZXInLCBwYXJhbSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHJlcykpO1xuICB9XG5cbiAgcmVnaXN0ZXJFeGNlcHRpb24ocGFyYW06IEZyb250RW5kRXhjZXB0aW9uKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdza2lwRXJyb3InLCAndHJ1ZScpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHRoaXMuZW5kUG9pbnQgKyAnL2F1dGgvZXhjZXB0aW9uL2xvZycsIHBhcmFtLCB7aGVhZGVyc30pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMpKTtcbiAgfVxuXG59XG5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NzaS1zZWN1cml0eS1jb21tb25zL3NyYy9saWIvdXNlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBVc2VyIHtcbiAgZnVsbG5hbWU6IHN0cmluZztcbiAgbGFuZ3VhZ2U6IHN0cmluZztcbiAgcGVyc29uSWQ6IG51bWJlcjtcbiAgcm9sZXM6IHN0cmluZ1tdO1xuICB1c2VySWQ6IG51bWJlcjtcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgd29ya1BsYWNlOiBXb3JrUGxhY2U7XG4gIGNoYW5uZWw6IENoYW5uZWw7XG4gIHVzZXJUeXBlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYW5uZWwge1xuICBjaGFubmVsQ29kZTogc3RyaW5nO1xuICBjaGFubmVsRGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3JrUGxhY2Uge1xuICB3b3JrUGxhY2VDb2RlOiBzdHJpbmc7XG4gIHdvcmtQbGFjZURlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NzaS1zZWN1cml0eS1jb21tb25zL3NyYy9saWIvdXNlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBVc2VyIHtcbiAgZnVsbG5hbWU6IHN0cmluZztcbiAgbGFuZ3VhZ2U6IHN0cmluZztcbiAgcGVyc29uSWQ6IG51bWJlcjtcbiAgcm9sZXM6IHN0cmluZ1tdO1xuICB1c2VySWQ6IG51bWJlcjtcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgd29ya1BsYWNlOiBXb3JrUGxhY2U7XG4gIGNoYW5uZWw6IENoYW5uZWw7XG4gIHVzZXJUeXBlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYW5uZWwge1xuICBjaGFubmVsQ29kZTogc3RyaW5nO1xuICBjaGFubmVsRGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3JrUGxhY2Uge1xuICB3b3JrUGxhY2VDb2RlOiBzdHJpbmc7XG4gIHdvcmtQbGFjZURlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGNpdHlDb2RlOiBzdHJpbmc7XG4gIGNpdHlEZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZyb250RW5kRXhjZXB0aW9uIHtcbiAgaHR0cFN0YXR1cz86IG51bWJlcjtcbiAgaHR0cFN0YXR1c1RleHQ/OiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZT86IHN0cmluZztcbiAgcmVxdWVzdEJvZHk/OiBzdHJpbmc7XG4gIHJlc3BvbnNlQm9keT86IHN0cmluZztcbiAgdXNlcklkPzogbnVtYmVyO1xuICByZXF1ZXN0RGF0ZT86IERhdGU7XG4gIGFwcGxpY2F0aW9uTmFtZT86IHN0cmluZztcbiAgYXBwbGljYXRpb25JZD86IG51bWJlcjtcbiAgcmVxdWVzdFVybD86IHN0cmluZztcbiAgY3VycmVudFVybD86IHN0cmluZztcbn1cbiJdfQ==
@@ -336,6 +336,11 @@ class SessionService {
336
336
  return this.http.post(this.endPoint + '/security/option/user', param)
337
337
  .pipe(map(res => res));
338
338
  }
339
+ registerException(param) {
340
+ const headers = new HttpHeaders().set('skipError', 'true');
341
+ return this.http.post(this.endPoint + '/auth/exception/log', param, { headers })
342
+ .pipe(map(res => res));
343
+ }
339
344
  }
340
345
  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 });
341
346
  SessionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SessionService });
@@ -351,14 +356,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
351
356
  class MessagesService {
352
357
  constructor(auth,
353
358
  // private router: Router,
354
- snackBar, dialog) {
359
+ snackBar, dialog, environment) {
355
360
  this.auth = auth;
356
361
  this.snackBar = snackBar;
357
362
  this.dialog = dialog;
363
+ this.applicationId = environment.applicationId;
358
364
  }
359
365
  // eslint-disable-next-line max-lines-per-function
360
366
  showErrorMessage(error) {
361
367
  console.log('error: ', error);
368
+ this.registerLog(error);
362
369
  const msgs = this.getInterceptorMessages();
363
370
  switch (error.status) {
364
371
  case 302: {
@@ -506,12 +513,38 @@ class MessagesService {
506
513
  }
507
514
  return this.interceptorMessages;
508
515
  }
516
+ registerLog(error) {
517
+ const u = this.auth.getUserdata();
518
+ const param = {
519
+ httpStatus: error.status,
520
+ httpStatusText: error.statusText,
521
+ errorMessage: error.message,
522
+ currentUrl: window.location.href,
523
+ requestUrl: error.url ? error.url : undefined,
524
+ userId: u ? u.userId : undefined,
525
+ applicationId: this.applicationId,
526
+ requestDate: new Date()
527
+ };
528
+ this.auth.registerException(param).subscribe({
529
+ next: (response) => {
530
+ console.log('registerException', response);
531
+ },
532
+ error: (err) => {
533
+ console.error('registerException', err);
534
+ }
535
+ });
536
+ }
509
537
  }
510
- MessagesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MessagesService, deps: [{ token: SessionService }, { token: i2$1.MatSnackBar }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
538
+ MessagesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MessagesService, deps: [{ token: SessionService }, { token: i2$1.MatSnackBar }, { token: i1.MatDialog }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
511
539
  MessagesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MessagesService });
512
540
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MessagesService, decorators: [{
513
541
  type: Injectable
514
- }], ctorParameters: function () { return [{ type: SessionService }, { type: i2$1.MatSnackBar }, { type: i1.MatDialog }]; } });
542
+ }], ctorParameters: function () {
543
+ return [{ type: SessionService }, { type: i2$1.MatSnackBar }, { type: i1.MatDialog }, { type: undefined, decorators: [{
544
+ type: Inject,
545
+ args: ['environment']
546
+ }] }];
547
+ } });
515
548
 
516
549
  class SsiSecurityCommonsModule {
517
550
  static forRoot(environment) {
@@ -613,7 +646,7 @@ class ResponseInterceptor {
613
646
  if (event instanceof HttpResponse) {
614
647
  //console.log(request.headers.get('encrypted'));
615
648
  let encrypt = request.headers.get('encrypted');
616
- if (encrypt && encrypt === 'true') {
649
+ if (encrypt && encrypt === 'true' && event.body.encrypted) {
617
650
  event = event.clone({ body: this.decryptBody(event.body) });
618
651
  }
619
652
  }
@@ -656,7 +689,6 @@ class ResponseInterceptor {
656
689
  }));
657
690
  }
658
691
  decryptBody(body) {
659
- //console.log(body);
660
692
  let encrypted = body.encrypted;
661
693
  let strJson = this.cryptoService.decrypt(encrypted);
662
694
  return JSON.parse(strJson);
@@ -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}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-ssi-security-commons',\n template: ` <p>ssi-security-commons works!</p>\n `,\n styles: [\n ]\n})\nexport class SsiSecurityCommonsComponent {\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 applicationId: any;\n\n constructor(private http: HttpClient,\n @Inject('environment') environment: any) {\n this.endPoint = environment.endPoint;\n this.applicationId = environment.applicationId;\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 self.checkAppPermissions().then((res1) => {\n console.log(res1);\n resolve('OK');\n }, (err) => {\n console.error(err);\n reject(err);\n });\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 public 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 userHasOptionsInApp(userId: any, applicationId: any): Observable<any> {\n return this.http.get<any>(this.endPoint + `/security/option/${applicationId}/${userId}`)\n .pipe(\n map(res => res));\n }\n\n checkAppPermissions(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n console.log(this.userdata?.userId, this.applicationId);\n if (this.applicationId) {\n this.userHasOptionsInApp(this.userdata?.userId, this.applicationId).subscribe(res => {\n console.log(res);\n if (res.data) {\n resolve('ok');\n } else {\n this.getHomeUrl().subscribe(res1 => {\n console.log(res1);\n const homeUrl = res1.data;\n window.location.href = homeUrl;\n reject('nok');\n }, (err) => {\n console.error(err);\n reject('nok');\n });\n }\n }, (err) => {\n console.error(err);\n reject('nok');\n });\n } else {\n resolve('ok');\n }\n });\n return promise;\n }\n\n\n // eslint-disable-next-line max-len\n public getOptionsUser(applicationId: number | null, type: string | null, language: string | null, entityCode: string | null, parentOptionId: number | null, includeData: boolean | null): Observable<any> {\n const param = {\n userId: this.userdata?.userId,\n applicationId,\n type,\n language,\n entityCode,\n parentOptionId,\n includeData\n };\n return this.http.post<any>(this.endPoint + '/security/option/user', param)\n .pipe(\n map(res => res));\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 let skipError = request.headers.get('skipError');\n if(skipError && skipError==='true'){\n return throwError(nerror);\n } else {\n this.messages?.showErrorMessage(nerror);\n }\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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"}
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}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-ssi-security-commons',\n template: ` <p>ssi-security-commons works!</p>\n `,\n styles: [\n ]\n})\nexport class SsiSecurityCommonsComponent {\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 { FrontEndException, 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 applicationId: any;\n\n constructor(private http: HttpClient,\n @Inject('environment') environment: any) {\n this.endPoint = environment.endPoint;\n this.applicationId = environment.applicationId;\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 self.checkAppPermissions().then((res1) => {\n console.log(res1);\n resolve('OK');\n }, (err) => {\n console.error(err);\n reject(err);\n });\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 public 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 userHasOptionsInApp(userId: any, applicationId: any): Observable<any> {\n return this.http.get<any>(this.endPoint + `/security/option/${applicationId}/${userId}`)\n .pipe(\n map(res => res));\n }\n\n checkAppPermissions(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n console.log(this.userdata?.userId, this.applicationId);\n if (this.applicationId) {\n this.userHasOptionsInApp(this.userdata?.userId, this.applicationId).subscribe(res => {\n console.log(res);\n if (res.data) {\n resolve('ok');\n } else {\n this.getHomeUrl().subscribe(res1 => {\n console.log(res1);\n const homeUrl = res1.data;\n window.location.href = homeUrl;\n reject('nok');\n }, (err) => {\n console.error(err);\n reject('nok');\n });\n }\n }, (err) => {\n console.error(err);\n reject('nok');\n });\n } else {\n resolve('ok');\n }\n });\n return promise;\n }\n\n\n // eslint-disable-next-line max-len\n public getOptionsUser(applicationId: number | null, type: string | null, language: string | null, entityCode: string | null, parentOptionId: number | null, includeData: boolean | null): Observable<any> {\n const param = {\n userId: this.userdata?.userId,\n applicationId,\n type,\n language,\n entityCode,\n parentOptionId,\n includeData\n };\n return this.http.post<any>(this.endPoint + '/security/option/user', param)\n .pipe(\n map(res => res));\n }\n\n registerException(param: FrontEndException): Observable<any> {\n const headers = new HttpHeaders().set('skipError', 'true');\n return this.http.post<any>(this.endPoint + '/auth/exception/log', param, {headers})\n .pipe(\n map(res => res));\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 { Inject, 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 { FrontEndException } from '../user.model';\nimport { SessionService } from './session.service';\n\n\n@Injectable()\nexport class MessagesService {\n\n private interceptorMessages: any;\n applicationId: any;\n\n constructor(\n public auth: SessionService,\n // private router: Router,\n private snackBar: MatSnackBar,\n public dialog: MatDialog,\n @Inject('environment') environment: any\n ) {\n this.applicationId = environment.applicationId;\n }\n\n\n // eslint-disable-next-line max-lines-per-function\n showErrorMessage(error: HttpErrorResponse): void {\n console.log('error: ', error);\n this.registerLog(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 registerLog(error: HttpErrorResponse): void {\n const u = this.auth.getUserdata();\n const param: FrontEndException = {\n httpStatus: error.status,\n httpStatusText: error.statusText,\n errorMessage: error.message,\n currentUrl: window.location.href,\n requestUrl: error.url?error.url: undefined,\n userId: u?u.userId: undefined,\n applicationId: this.applicationId,\n requestDate: new Date()\n };\n this.auth.registerException(param).subscribe({\n next: (response) => {\n console.log('registerException', response);\n },\n error: (err: any) => {\n console.error('registerException', err);\n }\n });\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' && event.body.encrypted){\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 let skipError = request.headers.get('skipError');\n if(skipError && skipError==='true'){\n return throwError(nerror);\n } else {\n this.messages?.showErrorMessage(nerror);\n }\n }\n }\n })) as Observable<HttpEvent<any>>;\n }\n\n decryptBody(body: any): any {\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.CryptoService","i2","i3.SessionService"],"mappings":"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"}
@@ -329,6 +329,11 @@ class SessionService {
329
329
  return this.http.post(this.endPoint + '/security/option/user', param)
330
330
  .pipe(map(res => res));
331
331
  }
332
+ registerException(param) {
333
+ const headers = new HttpHeaders().set('skipError', 'true');
334
+ return this.http.post(this.endPoint + '/auth/exception/log', param, { headers })
335
+ .pipe(map(res => res));
336
+ }
332
337
  }
333
338
  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 });
334
339
  SessionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SessionService });
@@ -342,14 +347,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
342
347
  class MessagesService {
343
348
  constructor(auth,
344
349
  // private router: Router,
345
- snackBar, dialog) {
350
+ snackBar, dialog, environment) {
346
351
  this.auth = auth;
347
352
  this.snackBar = snackBar;
348
353
  this.dialog = dialog;
354
+ this.applicationId = environment.applicationId;
349
355
  }
350
356
  // eslint-disable-next-line max-lines-per-function
351
357
  showErrorMessage(error) {
352
358
  console.log('error: ', error);
359
+ this.registerLog(error);
353
360
  const msgs = this.getInterceptorMessages();
354
361
  switch (error.status) {
355
362
  case 302: {
@@ -497,12 +504,36 @@ class MessagesService {
497
504
  }
498
505
  return this.interceptorMessages;
499
506
  }
507
+ registerLog(error) {
508
+ const u = this.auth.getUserdata();
509
+ const param = {
510
+ httpStatus: error.status,
511
+ httpStatusText: error.statusText,
512
+ errorMessage: error.message,
513
+ currentUrl: window.location.href,
514
+ requestUrl: error.url ? error.url : undefined,
515
+ userId: u ? u.userId : undefined,
516
+ applicationId: this.applicationId,
517
+ requestDate: new Date()
518
+ };
519
+ this.auth.registerException(param).subscribe({
520
+ next: (response) => {
521
+ console.log('registerException', response);
522
+ },
523
+ error: (err) => {
524
+ console.error('registerException', err);
525
+ }
526
+ });
527
+ }
500
528
  }
501
- MessagesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MessagesService, deps: [{ token: SessionService }, { token: i2$1.MatSnackBar }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
529
+ MessagesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MessagesService, deps: [{ token: SessionService }, { token: i2$1.MatSnackBar }, { token: i1.MatDialog }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
502
530
  MessagesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MessagesService });
503
531
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MessagesService, decorators: [{
504
532
  type: Injectable
505
- }], ctorParameters: function () { return [{ type: SessionService }, { type: i2$1.MatSnackBar }, { type: i1.MatDialog }]; } });
533
+ }], ctorParameters: function () { return [{ type: SessionService }, { type: i2$1.MatSnackBar }, { type: i1.MatDialog }, { type: undefined, decorators: [{
534
+ type: Inject,
535
+ args: ['environment']
536
+ }] }]; } });
506
537
 
507
538
  class SsiSecurityCommonsModule {
508
539
  static forRoot(environment) {
@@ -604,7 +635,7 @@ class ResponseInterceptor {
604
635
  if (event instanceof HttpResponse) {
605
636
  //console.log(request.headers.get('encrypted'));
606
637
  let encrypt = request.headers.get('encrypted');
607
- if (encrypt && encrypt === 'true') {
638
+ if (encrypt && encrypt === 'true' && event.body.encrypted) {
608
639
  event = event.clone({ body: this.decryptBody(event.body) });
609
640
  }
610
641
  }
@@ -646,7 +677,6 @@ class ResponseInterceptor {
646
677
  }));
647
678
  }
648
679
  decryptBody(body) {
649
- //console.log(body);
650
680
  let encrypted = body.encrypted;
651
681
  let strJson = this.cryptoService.decrypt(encrypted);
652
682
  return JSON.parse(strJson);
@@ -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}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-ssi-security-commons',\n template: ` <p>ssi-security-commons works!</p>\n `,\n styles: [\n ]\n})\nexport class SsiSecurityCommonsComponent {\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 applicationId: any;\n\n constructor(private http: HttpClient,\n @Inject('environment') environment: any) {\n this.endPoint = environment.endPoint;\n this.applicationId = environment.applicationId;\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 self.checkAppPermissions().then((res1) => {\n console.log(res1);\n resolve('OK');\n }, (err) => {\n console.error(err);\n reject(err);\n });\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 public 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 userHasOptionsInApp(userId: any, applicationId: any): Observable<any> {\n return this.http.get<any>(this.endPoint + `/security/option/${applicationId}/${userId}`)\n .pipe(\n map(res => res));\n }\n\n checkAppPermissions(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n console.log(this.userdata?.userId, this.applicationId);\n if (this.applicationId) {\n this.userHasOptionsInApp(this.userdata?.userId, this.applicationId).subscribe(res => {\n console.log(res);\n if (res.data) {\n resolve('ok');\n } else {\n this.getHomeUrl().subscribe(res1 => {\n console.log(res1);\n const homeUrl = res1.data;\n window.location.href = homeUrl;\n reject('nok');\n }, (err) => {\n console.error(err);\n reject('nok');\n });\n }\n }, (err) => {\n console.error(err);\n reject('nok');\n });\n } else {\n resolve('ok');\n }\n });\n return promise;\n }\n\n\n // eslint-disable-next-line max-len\n public getOptionsUser(applicationId: number | null, type: string | null, language: string | null, entityCode: string | null, parentOptionId: number | null, includeData: boolean | null): Observable<any> {\n const param = {\n userId: this.userdata?.userId,\n applicationId,\n type,\n language,\n entityCode,\n parentOptionId,\n includeData\n };\n return this.http.post<any>(this.endPoint + '/security/option/user', param)\n .pipe(\n map(res => res));\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 let skipError = request.headers.get('skipError');\n if(skipError && skipError==='true'){\n return throwError(nerror);\n } else {\n this.messages?.showErrorMessage(nerror);\n }\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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"}
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}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-ssi-security-commons',\n template: ` <p>ssi-security-commons works!</p>\n `,\n styles: [\n ]\n})\nexport class SsiSecurityCommonsComponent {\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 { FrontEndException, 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 applicationId: any;\n\n constructor(private http: HttpClient,\n @Inject('environment') environment: any) {\n this.endPoint = environment.endPoint;\n this.applicationId = environment.applicationId;\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 self.checkAppPermissions().then((res1) => {\n console.log(res1);\n resolve('OK');\n }, (err) => {\n console.error(err);\n reject(err);\n });\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 public 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 userHasOptionsInApp(userId: any, applicationId: any): Observable<any> {\n return this.http.get<any>(this.endPoint + `/security/option/${applicationId}/${userId}`)\n .pipe(\n map(res => res));\n }\n\n checkAppPermissions(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n console.log(this.userdata?.userId, this.applicationId);\n if (this.applicationId) {\n this.userHasOptionsInApp(this.userdata?.userId, this.applicationId).subscribe(res => {\n console.log(res);\n if (res.data) {\n resolve('ok');\n } else {\n this.getHomeUrl().subscribe(res1 => {\n console.log(res1);\n const homeUrl = res1.data;\n window.location.href = homeUrl;\n reject('nok');\n }, (err) => {\n console.error(err);\n reject('nok');\n });\n }\n }, (err) => {\n console.error(err);\n reject('nok');\n });\n } else {\n resolve('ok');\n }\n });\n return promise;\n }\n\n\n // eslint-disable-next-line max-len\n public getOptionsUser(applicationId: number | null, type: string | null, language: string | null, entityCode: string | null, parentOptionId: number | null, includeData: boolean | null): Observable<any> {\n const param = {\n userId: this.userdata?.userId,\n applicationId,\n type,\n language,\n entityCode,\n parentOptionId,\n includeData\n };\n return this.http.post<any>(this.endPoint + '/security/option/user', param)\n .pipe(\n map(res => res));\n }\n\n registerException(param: FrontEndException): Observable<any> {\n const headers = new HttpHeaders().set('skipError', 'true');\n return this.http.post<any>(this.endPoint + '/auth/exception/log', param, {headers})\n .pipe(\n map(res => res));\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 { Inject, 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 { FrontEndException } from '../user.model';\nimport { SessionService } from './session.service';\n\n\n@Injectable()\nexport class MessagesService {\n\n private interceptorMessages: any;\n applicationId: any;\n\n constructor(\n public auth: SessionService,\n // private router: Router,\n private snackBar: MatSnackBar,\n public dialog: MatDialog,\n @Inject('environment') environment: any\n ) {\n this.applicationId = environment.applicationId;\n }\n\n\n // eslint-disable-next-line max-lines-per-function\n showErrorMessage(error: HttpErrorResponse): void {\n console.log('error: ', error);\n this.registerLog(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 registerLog(error: HttpErrorResponse): void {\n const u = this.auth.getUserdata();\n const param: FrontEndException = {\n httpStatus: error.status,\n httpStatusText: error.statusText,\n errorMessage: error.message,\n currentUrl: window.location.href,\n requestUrl: error.url?error.url: undefined,\n userId: u?u.userId: undefined,\n applicationId: this.applicationId,\n requestDate: new Date()\n };\n this.auth.registerException(param).subscribe({\n next: (response) => {\n console.log('registerException', response);\n },\n error: (err: any) => {\n console.error('registerException', err);\n }\n });\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' && event.body.encrypted){\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 let skipError = request.headers.get('skipError');\n if(skipError && skipError==='true'){\n return throwError(nerror);\n } else {\n this.messages?.showErrorMessage(nerror);\n }\n }\n }\n })) as Observable<HttpEvent<any>>;\n }\n\n decryptBody(body: any): any {\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.CryptoService","i2","i3.SessionService"],"mappings":"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"}
@@ -8,7 +8,8 @@ export declare class MessagesService {
8
8
  private snackBar;
9
9
  dialog: MatDialog;
10
10
  private interceptorMessages;
11
- constructor(auth: SessionService, snackBar: MatSnackBar, dialog: MatDialog);
11
+ applicationId: any;
12
+ constructor(auth: SessionService, snackBar: MatSnackBar, dialog: MatDialog, environment: any);
12
13
  showErrorMessage(error: HttpErrorResponse): void;
13
14
  messageSnackError(error: any): void;
14
15
  goNavigateLogin(msgs: any): void;
@@ -16,6 +17,7 @@ export declare class MessagesService {
16
17
  showSnackError(message: any, panelClass?: any[]): void;
17
18
  setInterceptorMessages(message: any): void;
18
19
  getInterceptorMessages(): string;
20
+ registerLog(error: HttpErrorResponse): void;
19
21
  static ɵfac: i0.ɵɵFactoryDeclaration<MessagesService, never>;
20
22
  static ɵprov: i0.ɵɵInjectableDeclaration<MessagesService>;
21
23
  }
@@ -1,5 +1,5 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
- import { User } from '../user.model';
2
+ import { FrontEndException, User } from '../user.model';
3
3
  import { Observable } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class SessionService {
@@ -36,6 +36,7 @@ export declare class SessionService {
36
36
  userHasOptionsInApp(userId: any, applicationId: any): Observable<any>;
37
37
  checkAppPermissions(): Promise<any>;
38
38
  getOptionsUser(applicationId: number | null, type: string | null, language: string | null, entityCode: string | null, parentOptionId: number | null, includeData: boolean | null): Observable<any>;
39
+ registerException(param: FrontEndException): Observable<any>;
39
40
  static ɵfac: i0.ɵɵFactoryDeclaration<SessionService, never>;
40
41
  static ɵprov: i0.ɵɵInjectableDeclaration<SessionService>;
41
42
  }
@@ -16,4 +16,19 @@ export interface Channel {
16
16
  export interface WorkPlace {
17
17
  workPlaceCode: string;
18
18
  workPlaceDescription: string;
19
+ cityCode: string;
20
+ cityDescription: string;
21
+ }
22
+ export interface FrontEndException {
23
+ httpStatus?: number;
24
+ httpStatusText?: string;
25
+ errorMessage?: string;
26
+ requestBody?: string;
27
+ responseBody?: string;
28
+ userId?: number;
29
+ requestDate?: Date;
30
+ applicationName?: string;
31
+ applicationId?: number;
32
+ requestUrl?: string;
33
+ currentUrl?: string;
19
34
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ssi-security-commons",
3
- "version": "0.0.15",
3
+ "version": "0.0.18",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.3.0",
6
6
  "@angular/core": "^13.3.0",