@progress-chef/platform-http-interceptor 0.0.7 → 0.0.9

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.
@@ -1,17 +1,17 @@
1
- import { Injectable } from '@angular/core';
2
1
  import { LocalStorageService, StorageKeys } from '@progress-chef/platform-storage-service';
3
2
  import { catchError, throwError } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@progress-chef/platform-shared-components";
6
- import * as i2 from "@angular/router";
7
3
  export class HttpAuthInterceptor {
8
- constructor(toastNotificationService, router) {
9
- this.toastNotificationService = toastNotificationService;
4
+ constructor(router, toastNotificationService, refreshTokenService) {
10
5
  this.router = router;
6
+ this.toastNotificationService = toastNotificationService;
7
+ this.refreshTokenService = refreshTokenService;
11
8
  this.authTokenSet = new Set();
12
9
  this.isSessionExpired = false;
13
10
  }
11
+ // private currentBaseUrlFromLocalStorage: string = 'currentServerBaseUrl';
12
+ // private refreshTokenExpireTimeStorageKey: string = 'refreshTokenExpireTime';
14
13
  intercept(request, next) {
14
+ this.manageTokenRefresh();
15
15
  let authToken = LocalStorageService.getItem(StorageKeys.AUTH_TOKEN);
16
16
  let authReq = request;
17
17
  if (authToken) {
@@ -64,10 +64,96 @@ export class HttpAuthInterceptor {
64
64
  return throwError(() => error);
65
65
  }));
66
66
  }
67
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpAuthInterceptor, deps: [{ token: i1.ToastNotificationService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
68
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpAuthInterceptor }); }
67
+ manageRefreshTokenExpireTime() {
68
+ const newExpireTime = this.getExpireAtTime();
69
+ const { halfwayTimeString } = this.handleCalulateHalfTime(newExpireTime);
70
+ LocalStorageService.setItem(StorageKeys.REFRESH_TOKEN_HALF_EXPRE_TIME, halfwayTimeString);
71
+ }
72
+ manageTokenRefresh() {
73
+ const { isHalfTimeGreater } = this.checkHalfTimeIsGreater();
74
+ if (isHalfTimeGreater) {
75
+ this.refreshToken();
76
+ this.manageRefreshTokenExpireTime();
77
+ // const newExpireTime = this.getExpireAtTime()
78
+ // const { halfwayTimeString } = this.handleCalulateHalfTime(newExpireTime)
79
+ // localStorage.setItem(this.refreshTokenExpireTimeStorageKey, halfwayTimeString)
80
+ // LocalStorageService.setItem(StorageKeys.REFRESH_TOKEN_HALF_EXPRE_TIME, halfwayTimeString)
81
+ }
82
+ }
83
+ refreshToken() {
84
+ // const baseUrl: string = localStorage.getItem(this.currentBaseUrlFromLocalStorage) as string;
85
+ const baseUrl = LocalStorageService.getItem(StorageKeys.CURRENT_SERVER_BASE_URL);
86
+ if (!baseUrl)
87
+ throw new Error('The backend or server base URL is missing in Local Storage');
88
+ this.refreshTokenService.refreshToken({ platformServiceApiBaseUrls: baseUrl });
89
+ }
90
+ getExpireAtTime() {
91
+ const isIdentityToken = LocalStorageService.getItem(StorageKeys.IDENTITY_TOKEN);
92
+ if (!isIdentityToken)
93
+ throw new Error('identity token is missing in the local storage');
94
+ const { expireAt } = isIdentityToken;
95
+ const date = new Date(expireAt * 1000);
96
+ const hours = date.getUTCHours().toString().padStart(2, '0');
97
+ const minutes = date.getUTCMinutes().toString().padStart(2, '0');
98
+ const seconds = date.getUTCSeconds().toString().padStart(2, '0');
99
+ const latestRefreshTokenExpireTime = `${hours}:${minutes}:${seconds}`; //10:00:00
100
+ return latestRefreshTokenExpireTime;
101
+ }
102
+ getCurrentTime() {
103
+ const now = new Date();
104
+ const options = { timeZone: 'Asia/Kolkata' };
105
+ const formattedTime = now.toLocaleString('en-IN', { hour12: true, ...options });
106
+ const [time, period] = formattedTime.split(', ')[1].split(' ');
107
+ const [hours, minutes, seconds] = time.split(':').map(Number);
108
+ return { hours, minutes, seconds, period };
109
+ }
110
+ timeToSeconds(hours, minutes, seconds) {
111
+ return hours * 3600 + minutes * 60 + seconds;
112
+ }
113
+ secondsToTimeString(seconds) {
114
+ const hours = Math.floor(seconds / 3600) % 12 || 12;
115
+ const minutes = Math.floor((seconds % 3600) / 60);
116
+ const secondsPart = seconds % 60;
117
+ return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${secondsPart.toString().padStart(2, '0')}`;
118
+ }
119
+ handleCalulateHalfTime(expireTime, isHalfTime = false) {
120
+ const [expireHours, expireMinutes, expireSeconds] = expireTime.split(':').map(Number);
121
+ const { hours: currentHours, minutes: currentMinutes, seconds: currentSeconds, period: currentPeriod } = this.getCurrentTime();
122
+ const expireTimeInSeconds = this.timeToSeconds(expireHours, expireMinutes, expireSeconds);
123
+ const currentTimeInSeconds = this.timeToSeconds(currentHours, currentMinutes, currentSeconds);
124
+ let halfwayTimeInSeconds;
125
+ if (isHalfTime) {
126
+ halfwayTimeInSeconds = expireTimeInSeconds + currentTimeInSeconds;
127
+ }
128
+ else {
129
+ halfwayTimeInSeconds = Math.floor((expireTimeInSeconds + currentTimeInSeconds) / 2);
130
+ }
131
+ if (halfwayTimeInSeconds < 0) {
132
+ halfwayTimeInSeconds += 12 * 3600;
133
+ }
134
+ else if (halfwayTimeInSeconds >= 12 * 3600) {
135
+ halfwayTimeInSeconds -= 12 * 3600;
136
+ }
137
+ const halfwayTimeString = this.secondsToTimeString(halfwayTimeInSeconds);
138
+ let isHalfTimeGreater = false;
139
+ if (halfwayTimeString.endsWith('AM') && expireTime.endsWith('PM')) {
140
+ isHalfTimeGreater = false;
141
+ }
142
+ else if (halfwayTimeString.endsWith('PM') && expireTime.endsWith('AM')) {
143
+ isHalfTimeGreater = true;
144
+ }
145
+ else {
146
+ isHalfTimeGreater = halfwayTimeString > expireTime;
147
+ }
148
+ return { halfwayTimeString, isHalfTimeGreater };
149
+ }
150
+ checkHalfTimeIsGreater() {
151
+ // const getRefreshTokenHalfTime: string = localStorage.getItem(this.refreshTokenExpireTimeStorageKey) as string;
152
+ const getRefreshTokenHalfTime = LocalStorageService.getItem(StorageKeys.REFRESH_TOKEN_HALF_EXPRE_TIME);
153
+ if (!getRefreshTokenHalfTime)
154
+ throw new Error('Refresh token half time is missing');
155
+ const { isHalfTimeGreater, halfwayTimeString } = this.handleCalulateHalfTime(getRefreshTokenHalfTime, true);
156
+ return { isHalfTimeGreater, halfwayTimeString };
157
+ }
69
158
  }
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpAuthInterceptor, decorators: [{
71
- type: Injectable
72
- }], ctorParameters: function () { return [{ type: i1.ToastNotificationService }, { type: i2.Router }]; } });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1hdXRoLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGxhdGZvcm0taHR0cC1pbnRlcmNlcHRvci9zcmMvbGliL2h0dHAtYXV0aC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRixPQUFPLEVBQWMsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQUcxRCxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCLFlBQW9CLHdCQUFrRCxFQUFVLE1BQWM7UUFBMUUsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFGOUYsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztJQUN5RSxDQUFDO0lBRW5HLFNBQVMsQ0FBQyxPQUE2QixFQUFFLElBQWlCO1FBQ3hELElBQUksU0FBUyxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEUsSUFBSSxPQUFPLEdBQUksT0FBTyxDQUFDO1FBQ3ZCLElBQUksU0FBUyxFQUFFO1lBQ2IsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ3RCLFVBQVUsRUFBRTtvQkFDVixhQUFhLEVBQUUsVUFBVSxTQUFTLEVBQUU7aUJBQ3JDO2FBQ0YsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO2FBQy9CO1lBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbEM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM5QixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUU7WUFDdEMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtnQkFDeEIsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDdEUsSUFBSSxTQUFTLEtBQUssTUFBTSxJQUFJLFNBQVMsS0FBSyxPQUFPLEVBQUU7b0JBQ2pELG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3RELG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQzVEO2dCQUNELG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3pFLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3RFLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3ZELG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3ZELG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzNELG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsQ0FBQztnQkFDcEUscUJBQXFCO2dCQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO29CQUMxQixJQUFJLENBQUMsd0JBQXdCLENBQUMscUJBQXFCLENBQUM7d0JBQ2xELE9BQU8sRUFBRSx3QkFBd0I7cUJBQ2xDLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2lCQUM5QjtnQkFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7YUFDakM7WUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO2dCQUM5QyxJQUFJLENBQUMsd0JBQXdCLENBQUMscUJBQXFCLENBQUM7b0JBQ2xELE9BQU8sRUFBRSwyQ0FBMkM7b0JBQ3BELElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtvQkFDcEMsUUFBUSxFQUFFLElBQUk7aUJBQ2YsQ0FBQyxDQUFBO2FBQ0g7WUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO2dCQUN4QixJQUFJLENBQUMsd0JBQXdCLENBQUMscUJBQXFCLENBQUM7b0JBQ2xELE9BQU8sRUFBRSx5Q0FBeUM7b0JBQ2xELElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtvQkFDcEMsUUFBUSxFQUFFLElBQUk7aUJBQ2YsQ0FBQyxDQUFBO2FBQ0g7WUFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNoQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzsrR0E1RFUsbUJBQW1CO21IQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgSHR0cEV2ZW50LFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwUmVxdWVzdFxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUb2FzdE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICdAcHJvZ3Jlc3MtY2hlZi9wbGF0Zm9ybS1zaGFyZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBTdG9yYWdlS2V5cyB9IGZyb20gJ0Bwcm9ncmVzcy1jaGVmL3BsYXRmb3JtLXN0b3JhZ2Utc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjYXRjaEVycm9yLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIdHRwQXV0aEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgYXV0aFRva2VuU2V0ID0gbmV3IFNldCgpO1xuICBpc1Nlc3Npb25FeHBpcmVkID0gZmFsc2U7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9hc3ROb3RpZmljYXRpb25TZXJ2aWNlOiBUb2FzdE5vdGlmaWNhdGlvblNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHsgfVxuXG4gIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDx1bmtub3duPiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDx1bmtub3duPj4ge1xuICAgIGxldCBhdXRoVG9rZW4gPSBMb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oU3RvcmFnZUtleXMuQVVUSF9UT0tFTik7XG4gICAgbGV0IGF1dGhSZXEgPSAgcmVxdWVzdDtcbiAgICBpZiAoYXV0aFRva2VuKSB7XG4gICAgICBhdXRoUmVxID0gcmVxdWVzdC5jbG9uZSh7XG4gICAgICAgIHNldEhlYWRlcnM6IHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YXV0aFRva2VufWBcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIGlmICghdGhpcy5hdXRoVG9rZW5TZXQuaGFzKGF1dGhUb2tlbikpIHtcbiAgICAgICAgdGhpcy5pc1Nlc3Npb25FeHBpcmVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmF1dGhUb2tlblNldC5hZGQoYXV0aFRva2VuKTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKGF1dGhSZXEpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgICAgICAgY29uc3QgbG9naW5UeXBlID0gTG9jYWxTdG9yYWdlU2VydmljZS5nZXRJdGVtKFN0b3JhZ2VLZXlzLkxPR0lOX1RZUEUpO1xuICAgICAgICAgIGlmIChsb2dpblR5cGUgPT09ICdzYW1sJyB8fCBsb2dpblR5cGUgPT09ICdvYXV0aCcpIHtcbiAgICAgICAgICAgIExvY2FsU3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbShTdG9yYWdlS2V5cy5VU0VSX05BTUUpO1xuICAgICAgICAgICAgTG9jYWxTdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKFN0b3JhZ2VLZXlzLklTX1JFTUVNQkVSX01FKTsgXG4gICAgICAgICAgfVxuICAgICAgICAgIExvY2FsU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbShTdG9yYWdlS2V5cy5JU19VU0VSX09SR19BTkRfUk9MRV9TRVQsIGZhbHNlKTtcbiAgICAgICAgICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oU3RvcmFnZUtleXMuSVNfVVNFUl9BVVRIRU5USUNBVEVELCBmYWxzZSk7XG4gICAgICAgICAgTG9jYWxTdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKFN0b3JhZ2VLZXlzLkFVVEhfVE9LRU4pO1xuICAgICAgICAgIExvY2FsU3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbShTdG9yYWdlS2V5cy5MT0dJTl9UWVBFKTtcbiAgICAgICAgICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUl0ZW0oU3RvcmFnZUtleXMuSURFTlRJVFlfVE9LRU4pO1xuICAgICAgICAgIExvY2FsU3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbShTdG9yYWdlS2V5cy5VU0VSX09SR19BTkRfUk9MRV9UT0tFTik7XG4gICAgICAgICAgLy8gY2FsbCBsb2dvdXQgYWN0aW9uXG4gICAgICAgICAgaWYgKCF0aGlzLmlzU2Vzc2lvbkV4cGlyZWQpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3ROb3RpZmljYXRpb25TZXJ2aWNlLnNob3dUb2FzdE5vdGlmaWNhdGlvbih7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6ICdUaGUgc2Vzc2lvbiBoYXMgZW5kZWQuJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmlzU2Vzc2lvbkV4cGlyZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9sb2dpbiddKVxuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDAgfHwgZXJyb3Iuc3RhdHVzID09PSA1MDQpIHtcbiAgICAgICAgICB0aGlzLnRvYXN0Tm90aWZpY2F0aW9uU2VydmljZS5zaG93VG9hc3ROb3RpZmljYXRpb24oe1xuICAgICAgICAgICAgY29udGVudDogYFVuYWJsZSB0byByZWFjaCBzZXJ2ZXIuIFBsZWFzZSB0cnkgYWdhaW4uYCxcbiAgICAgICAgICAgIHR5cGU6IHsgc3R5bGU6ICdlcnJvcicsIGljb246IHRydWUgfSxcbiAgICAgICAgICAgIGNsb3NhYmxlOiB0cnVlXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA1MDApIHtcbiAgICAgICAgICB0aGlzLnRvYXN0Tm90aWZpY2F0aW9uU2VydmljZS5zaG93VG9hc3ROb3RpZmljYXRpb24oe1xuICAgICAgICAgICAgY29udGVudDogYFNvbWV0aGluZyB3ZW50IHdyb25nLiBQbGVhc2UgdHJ5IGFnYWluLmAsXG4gICAgICAgICAgICB0eXBlOiB7IHN0eWxlOiAnZXJyb3InLCBpY29uOiB0cnVlIH0sXG4gICAgICAgICAgICBjbG9zYWJsZTogdHJ1ZVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpXG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1hdXRoLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGxhdGZvcm0taHR0cC1pbnRlcmNlcHRvci9zcmMvbGliL2h0dHAtYXV0aC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0YsT0FBTyxFQUFjLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUQsTUFBTSxPQUFPLG1CQUFtQjtJQUc5QixZQUNVLE1BQWMsRUFDZCx3QkFBa0QsRUFDbEQsbUJBQXdDO1FBRnhDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFMbEQsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztJQUtyQixDQUFDO0lBRUwsMkVBQTJFO0lBQzNFLCtFQUErRTtJQUMvRSxTQUFTLENBQUMsT0FBNkIsRUFBRSxJQUFpQjtRQUV4RCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BFLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN0QixJQUFJLFNBQVMsRUFBRTtZQUNiLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUN0QixVQUFVLEVBQUU7b0JBQ1YsYUFBYSxFQUFFLFVBQVUsU0FBUyxFQUFFO2lCQUNyQzthQUNGLENBQUMsQ0FBQTtZQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDckMsSUFB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LHVCQUF1QixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO0lBQ2xELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEh0dHBFcnJvclJlc3BvbnNlLFxuICBIdHRwRXZlbnQsXG4gIEh0dHBIYW5kbGVyLFxuICBIdHRwSW50ZXJjZXB0b3IsXG4gIEh0dHBSZXF1ZXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFJlZnJlc2hUb2tlblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXN0L3BsYXRmb3JtLXJlZnJlc2gtdG9rZW4tc2VydmljZS9pbmRleCc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVG9hc3ROb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQHByb2dyZXNzLWNoZWYvcGxhdGZvcm0tc2hhcmVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSwgU3RvcmFnZUtleXMgfSBmcm9tICdAcHJvZ3Jlc3MtY2hlZi9wbGF0Zm9ybS1zdG9yYWdlLXNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY2F0Y2hFcnJvciwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY2xhc3MgSHR0cEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIGF1dGhUb2tlblNldCA9IG5ldyBTZXQoKTtcbiAgaXNTZXNzaW9uRXhwaXJlZCA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgdG9hc3ROb3RpZmljYXRpb25TZXJ2aWNlOiBUb2FzdE5vdGlmaWNhdGlvblNlcnZpY2UsIFxuICAgIHByaXZhdGUgcmVmcmVzaFRva2VuU2VydmljZTogUmVmcmVzaFRva2VuU2VydmljZSxcbiAgKSB7IH1cblxuICAvLyBwcml2YXRlIGN1cnJlbnRCYXNlVXJsRnJvbUxvY2FsU3RvcmFnZTogc3RyaW5nID0gJ2N1cnJlbnRTZXJ2ZXJCYXNlVXJsJztcbiAgLy8gcHJpdmF0ZSByZWZyZXNoVG9rZW5FeHBpcmVUaW1lU3RvcmFnZUtleTogc3RyaW5nID0gJ3JlZnJlc2hUb2tlbkV4cGlyZVRpbWUnO1xuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8dW5rbm93bj4+IHtcblxuICAgIHRoaXMubWFuYWdlVG9rZW5SZWZyZXNoKCk7XG4gICAgbGV0IGF1dGhUb2tlbiA9IExvY2FsU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbShTdG9yYWdlS2V5cy5BVVRIX1RPS0VOKTtcbiAgICBsZXQgYXV0aFJlcSA9IHJlcXVlc3Q7XG4gICAgaWYgKGF1dGhUb2tlbikge1xuICAgICAgYXV0aFJlcSA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2F1dGhUb2tlbn1gXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICBpZiAoIXRoaXMuYXV0aFRva2VuU2V0LmhhcyhhdXRoVG9rZW4pKSB7XG4gICAgICAgIHRoaXMuaXNTZXNzaW9uRXhwaXJlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5hdXRoVG9rZW5TZXQuYWRkKGF1dGhUb2tlbik7XG4gICAgfVxuICAgIHJldHVybiBuZXh0LmhhbmRsZShhdXRoUmVxKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgICAgIGNvbnN0IGxvZ2luVHlwZSA9IExvY2FsU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbShTdG9yYWdlS2V5cy5MT0dJTl9UWVBFKTtcbiAgICAgICAgICBpZiAobG9naW5UeXBlID09PSAnc2FtbCcgfHwgbG9naW5UeXBlID09PSAnb2F1dGgnKSB7XG4gICAgICAgICAgICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUl0ZW0oU3RvcmFnZUtleXMuVVNFUl9OQU1FKTtcbiAgICAgICAgICAgIExvY2FsU3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbShTdG9yYWdlS2V5cy5JU19SRU1FTUJFUl9NRSk7IFxuICAgICAgICAgIH1cbiAgICAgICAgICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oU3RvcmFnZUtleXMuSVNfVVNFUl9PUkdfQU5EX1JPTEVfU0VULCBmYWxzZSk7XG4gICAgICAgICAgTG9jYWxTdG9yYWdlU2VydmljZS5zZXRJdGVtKFN0b3JhZ2VLZXlzLklTX1VTRVJfQVVUSEVOVElDQVRFRCwgZmFsc2UpO1xuICAgICAgICAgIExvY2FsU3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbShTdG9yYWdlS2V5cy5BVVRIX1RPS0VOKTtcbiAgICAgICAgICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUl0ZW0oU3RvcmFnZUtleXMuTE9HSU5fVFlQRSk7XG4gICAgICAgICAgTG9jYWxTdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKFN0b3JhZ2VLZXlzLklERU5USVRZX1RPS0VOKTtcbiAgICAgICAgICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUl0ZW0oU3RvcmFnZUtleXMuVVNFUl9PUkdfQU5EX1JPTEVfVE9LRU4pO1xuICAgICAgICAgIC8vIGNhbGwgbG9nb3V0IGFjdGlvblxuICAgICAgICAgIGlmICghdGhpcy5pc1Nlc3Npb25FeHBpcmVkKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0Tm90aWZpY2F0aW9uU2VydmljZS5zaG93VG9hc3ROb3RpZmljYXRpb24oe1xuICAgICAgICAgICAgICBjb250ZW50OiAnVGhlIHNlc3Npb24gaGFzIGVuZGVkLidcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5pc1Nlc3Npb25FeHBpcmVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSAwIHx8IGVycm9yLnN0YXR1cyA9PT0gNTA0KSB7XG4gICAgICAgICAgdGhpcy50b2FzdE5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd1RvYXN0Tm90aWZpY2F0aW9uKHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IGBVbmFibGUgdG8gcmVhY2ggc2VydmVyLiBQbGVhc2UgdHJ5IGFnYWluLmAsXG4gICAgICAgICAgICB0eXBlOiB7IHN0eWxlOiAnZXJyb3InLCBpY29uOiB0cnVlIH0sXG4gICAgICAgICAgICBjbG9zYWJsZTogdHJ1ZVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNTAwKSB7XG4gICAgICAgICAgdGhpcy50b2FzdE5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd1RvYXN0Tm90aWZpY2F0aW9uKHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IGBTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHRyeSBhZ2Fpbi5gLFxuICAgICAgICAgICAgdHlwZTogeyBzdHlsZTogJ2Vycm9yJywgaWNvbjogdHJ1ZSB9LFxuICAgICAgICAgICAgY2xvc2FibGU6IHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbWFuYWdlUmVmcmVzaFRva2VuRXhwaXJlVGltZSgpIHtcbiAgICBjb25zdCBuZXdFeHBpcmVUaW1lID0gdGhpcy5nZXRFeHBpcmVBdFRpbWUoKVxuICAgIGNvbnN0IHsgaGFsZndheVRpbWVTdHJpbmcgfSA9IHRoaXMuaGFuZGxlQ2FsdWxhdGVIYWxmVGltZShuZXdFeHBpcmVUaW1lKVxuICAgIExvY2FsU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbShTdG9yYWdlS2V5cy5SRUZSRVNIX1RPS0VOX0hBTEZfRVhQUkVfVElNRSwgaGFsZndheVRpbWVTdHJpbmcpXG4gIH1cblxuICBtYW5hZ2VUb2tlblJlZnJlc2goKSB7XG4gICAgY29uc3QgeyBpc0hhbGZUaW1lR3JlYXRlciB9ID0gdGhpcy5jaGVja0hhbGZUaW1lSXNHcmVhdGVyKCk7XG4gICAgaWYgKGlzSGFsZlRpbWVHcmVhdGVyKSB7XG4gICAgICB0aGlzLnJlZnJlc2hUb2tlbigpO1xuICAgICAgdGhpcy5tYW5hZ2VSZWZyZXNoVG9rZW5FeHBpcmVUaW1lKCk7XG4gICAgICAvLyBjb25zdCBuZXdFeHBpcmVUaW1lID0gdGhpcy5nZXRFeHBpcmVBdFRpbWUoKVxuICAgICAgLy8gY29uc3QgeyBoYWxmd2F5VGltZVN0cmluZyB9ID0gdGhpcy5oYW5kbGVDYWx1bGF0ZUhhbGZUaW1lKG5ld0V4cGlyZVRpbWUpXG4gICAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnJlZnJlc2hUb2tlbkV4cGlyZVRpbWVTdG9yYWdlS2V5LCBoYWxmd2F5VGltZVN0cmluZylcbiAgICAgIC8vIExvY2FsU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbShTdG9yYWdlS2V5cy5SRUZSRVNIX1RPS0VOX0hBTEZfRVhQUkVfVElNRSwgaGFsZndheVRpbWVTdHJpbmcpXG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaFRva2VuKCkge1xuICAgIC8vIGNvbnN0IGJhc2VVcmw6IHN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuY3VycmVudEJhc2VVcmxGcm9tTG9jYWxTdG9yYWdlKSBhcyBzdHJpbmc7XG4gICAgY29uc3QgYmFzZVVybCA9IExvY2FsU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbShTdG9yYWdlS2V5cy5DVVJSRU5UX1NFUlZFUl9CQVNFX1VSTCk7XG4gICAgaWYgKCFiYXNlVXJsKSB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBiYWNrZW5kIG9yIHNlcnZlciBiYXNlIFVSTCBpcyBtaXNzaW5nIGluIExvY2FsIFN0b3JhZ2UnKTtcbiAgICB0aGlzLnJlZnJlc2hUb2tlblNlcnZpY2UucmVmcmVzaFRva2VuKHsgcGxhdGZvcm1TZXJ2aWNlQXBpQmFzZVVybHM6IGJhc2VVcmwgfSk7XG4gIH1cblxuICBnZXRFeHBpcmVBdFRpbWUoKSB7XG4gICAgY29uc3QgaXNJZGVudGl0eVRva2VuID0gTG9jYWxTdG9yYWdlU2VydmljZS5nZXRJdGVtKFN0b3JhZ2VLZXlzLklERU5USVRZX1RPS0VOKTtcbiAgICBpZiAoIWlzSWRlbnRpdHlUb2tlbikgdGhyb3cgbmV3IEVycm9yKCdpZGVudGl0eSB0b2tlbiBpcyBtaXNzaW5nIGluIHRoZSBsb2NhbCBzdG9yYWdlJyk7XG4gICAgY29uc3QgeyBleHBpcmVBdCB9ID0gaXNJZGVudGl0eVRva2VuO1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShleHBpcmVBdCAqIDEwMDApO1xuICAgIGNvbnN0IGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIGNvbnN0IHNlY29uZHMgPSBkYXRlLmdldFVUQ1NlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgY29uc3QgbGF0ZXN0UmVmcmVzaFRva2VuRXhwaXJlVGltZSA9IGAke2hvdXJzfToke21pbnV0ZXN9OiR7c2Vjb25kc31gOyAvLzEwOjAwOjAwXG4gICAgcmV0dXJuIGxhdGVzdFJlZnJlc2hUb2tlbkV4cGlyZVRpbWU7XG4gIH1cblxuICBnZXRDdXJyZW50VGltZSgpIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHRpbWVab25lOiAnQXNpYS9Lb2xrYXRhJyB9O1xuICAgIGNvbnN0IGZvcm1hdHRlZFRpbWUgPSBub3cudG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJywgeyBob3VyMTI6IHRydWUsIC4uLm9wdGlvbnMgfSk7XG4gICAgY29uc3QgW3RpbWUsIHBlcmlvZF0gPSBmb3JtYXR0ZWRUaW1lLnNwbGl0KCcsICcpWzFdLnNwbGl0KCcgJyk7XG4gICAgY29uc3QgW2hvdXJzLCBtaW51dGVzLCBzZWNvbmRzXSA9IHRpbWUuc3BsaXQoJzonKS5tYXAoTnVtYmVyKTtcbiAgICByZXR1cm4geyBob3VycywgbWludXRlcywgc2Vjb25kcywgcGVyaW9kIH07XG4gIH1cblxuICB0aW1lVG9TZWNvbmRzKGhvdXJzOiBudW1iZXIsIG1pbnV0ZXM6IG51bWJlciwgc2Vjb25kczogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGhvdXJzICogMzYwMCArIG1pbnV0ZXMgKiA2MCArIHNlY29uZHM7XG4gIH1cblxuICBzZWNvbmRzVG9UaW1lU3RyaW5nKHNlY29uZHM6IG51bWJlcikge1xuICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gMzYwMCkgJSAxMiB8fCAxMjtcbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcigoc2Vjb25kcyAlIDM2MDApIC8gNjApO1xuICAgIGNvbnN0IHNlY29uZHNQYXJ0ID0gc2Vjb25kcyAlIDYwO1xuICAgIHJldHVybiBgJHtob3Vycy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7bWludXRlcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7c2Vjb25kc1BhcnQudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gIH1cblxuICBoYW5kbGVDYWx1bGF0ZUhhbGZUaW1lKGV4cGlyZVRpbWU6IHN0cmluZywgaXNIYWxmVGltZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgY29uc3QgW2V4cGlyZUhvdXJzLCBleHBpcmVNaW51dGVzLCBleHBpcmVTZWNvbmRzXSA9IGV4cGlyZVRpbWUuc3BsaXQoJzonKS5tYXAoTnVtYmVyKTtcbiAgICBjb25zdCB7IGhvdXJzOiBjdXJyZW50SG91cnMsIG1pbnV0ZXM6IGN1cnJlbnRNaW51dGVzLCBzZWNvbmRzOiBjdXJyZW50U2Vjb25kcywgcGVyaW9kOiBjdXJyZW50UGVyaW9kIH0gPSB0aGlzLmdldEN1cnJlbnRUaW1lKCk7XG5cbiAgICBjb25zdCBleHBpcmVUaW1lSW5TZWNvbmRzID0gdGhpcy50aW1lVG9TZWNvbmRzKGV4cGlyZUhvdXJzLCBleHBpcmVNaW51dGVzLCBleHBpcmVTZWNvbmRzKTtcbiAgICBjb25zdCBjdXJyZW50VGltZUluU2Vjb25kcyA9IHRoaXMudGltZVRvU2Vjb25kcyhjdXJyZW50SG91cnMsIGN1cnJlbnRNaW51dGVzLCBjdXJyZW50U2Vjb25kcyk7XG5cbiAgICBsZXQgaGFsZndheVRpbWVJblNlY29uZHM6IG51bWJlcjtcbiAgICBpZiAoaXNIYWxmVGltZSkge1xuICAgICAgaGFsZndheVRpbWVJblNlY29uZHMgPSBleHBpcmVUaW1lSW5TZWNvbmRzICsgY3VycmVudFRpbWVJblNlY29uZHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbGZ3YXlUaW1lSW5TZWNvbmRzID0gTWF0aC5mbG9vcigoZXhwaXJlVGltZUluU2Vjb25kcyArIGN1cnJlbnRUaW1lSW5TZWNvbmRzKSAvIDIpO1xuICAgIH1cblxuICAgIGlmIChoYWxmd2F5VGltZUluU2Vjb25kcyA8IDApIHtcbiAgICAgIGhhbGZ3YXlUaW1lSW5TZWNvbmRzICs9IDEyICogMzYwMDtcbiAgICB9IGVsc2UgaWYgKGhhbGZ3YXlUaW1lSW5TZWNvbmRzID49IDEyICogMzYwMCkge1xuICAgICAgaGFsZndheVRpbWVJblNlY29uZHMgLT0gMTIgKiAzNjAwO1xuICAgIH1cblxuICAgIGNvbnN0IGhhbGZ3YXlUaW1lU3RyaW5nID0gdGhpcy5zZWNvbmRzVG9UaW1lU3RyaW5nKGhhbGZ3YXlUaW1lSW5TZWNvbmRzKTtcblxuICAgIGxldCBpc0hhbGZUaW1lR3JlYXRlciA9IGZhbHNlO1xuICAgIGlmIChoYWxmd2F5VGltZVN0cmluZy5lbmRzV2l0aCgnQU0nKSAmJiBleHBpcmVUaW1lLmVuZHNXaXRoKCdQTScpKSB7XG4gICAgICBpc0hhbGZUaW1lR3JlYXRlciA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoaGFsZndheVRpbWVTdHJpbmcuZW5kc1dpdGgoJ1BNJykgJiYgZXhwaXJlVGltZS5lbmRzV2l0aCgnQU0nKSkge1xuICAgICAgaXNIYWxmVGltZUdyZWF0ZXIgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpc0hhbGZUaW1lR3JlYXRlciA9IGhhbGZ3YXlUaW1lU3RyaW5nID4gZXhwaXJlVGltZTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBoYWxmd2F5VGltZVN0cmluZywgaXNIYWxmVGltZUdyZWF0ZXIgfTtcbiAgfVxuXG4gIGNoZWNrSGFsZlRpbWVJc0dyZWF0ZXIoKSB7XG4gICAgLy8gY29uc3QgZ2V0UmVmcmVzaFRva2VuSGFsZlRpbWU6IHN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMucmVmcmVzaFRva2VuRXhwaXJlVGltZVN0b3JhZ2VLZXkpIGFzIHN0cmluZztcbiAgICBjb25zdCBnZXRSZWZyZXNoVG9rZW5IYWxmVGltZSA9IExvY2FsU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbShTdG9yYWdlS2V5cy5SRUZSRVNIX1RPS0VOX0hBTEZfRVhQUkVfVElNRSlcbiAgICBpZiAoIWdldFJlZnJlc2hUb2tlbkhhbGZUaW1lKSB0aHJvdyBuZXcgRXJyb3IoJ1JlZnJlc2ggdG9rZW4gaGFsZiB0aW1lIGlzIG1pc3NpbmcnKTtcbiAgICBjb25zdCB7IGlzSGFsZlRpbWVHcmVhdGVyLCBoYWxmd2F5VGltZVN0cmluZyB9ID0gdGhpcy5oYW5kbGVDYWx1bGF0ZUhhbGZUaW1lKGdldFJlZnJlc2hUb2tlbkhhbGZUaW1lLCB0cnVlKTtcbiAgICByZXR1cm4geyBpc0hhbGZUaW1lR3JlYXRlciwgaGFsZndheVRpbWVTdHJpbmcgfTtcbiAgfVxufVxuIl19
@@ -1,18 +1,18 @@
1
- import * as i0 from '@angular/core';
2
- import { Injectable } from '@angular/core';
3
1
  import { LocalStorageService, StorageKeys } from '@progress-chef/platform-storage-service';
4
2
  import { catchError, throwError } from 'rxjs';
5
- import * as i1 from '@progress-chef/platform-shared-components';
6
- import * as i2 from '@angular/router';
7
3
 
8
4
  class HttpAuthInterceptor {
9
- constructor(toastNotificationService, router) {
10
- this.toastNotificationService = toastNotificationService;
5
+ constructor(router, toastNotificationService, refreshTokenService) {
11
6
  this.router = router;
7
+ this.toastNotificationService = toastNotificationService;
8
+ this.refreshTokenService = refreshTokenService;
12
9
  this.authTokenSet = new Set();
13
10
  this.isSessionExpired = false;
14
11
  }
12
+ // private currentBaseUrlFromLocalStorage: string = 'currentServerBaseUrl';
13
+ // private refreshTokenExpireTimeStorageKey: string = 'refreshTokenExpireTime';
15
14
  intercept(request, next) {
15
+ this.manageTokenRefresh();
16
16
  let authToken = LocalStorageService.getItem(StorageKeys.AUTH_TOKEN);
17
17
  let authReq = request;
18
18
  if (authToken) {
@@ -65,12 +65,98 @@ class HttpAuthInterceptor {
65
65
  return throwError(() => error);
66
66
  }));
67
67
  }
68
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpAuthInterceptor, deps: [{ token: i1.ToastNotificationService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
69
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpAuthInterceptor }); }
68
+ manageRefreshTokenExpireTime() {
69
+ const newExpireTime = this.getExpireAtTime();
70
+ const { halfwayTimeString } = this.handleCalulateHalfTime(newExpireTime);
71
+ LocalStorageService.setItem(StorageKeys.REFRESH_TOKEN_HALF_EXPRE_TIME, halfwayTimeString);
72
+ }
73
+ manageTokenRefresh() {
74
+ const { isHalfTimeGreater } = this.checkHalfTimeIsGreater();
75
+ if (isHalfTimeGreater) {
76
+ this.refreshToken();
77
+ this.manageRefreshTokenExpireTime();
78
+ // const newExpireTime = this.getExpireAtTime()
79
+ // const { halfwayTimeString } = this.handleCalulateHalfTime(newExpireTime)
80
+ // localStorage.setItem(this.refreshTokenExpireTimeStorageKey, halfwayTimeString)
81
+ // LocalStorageService.setItem(StorageKeys.REFRESH_TOKEN_HALF_EXPRE_TIME, halfwayTimeString)
82
+ }
83
+ }
84
+ refreshToken() {
85
+ // const baseUrl: string = localStorage.getItem(this.currentBaseUrlFromLocalStorage) as string;
86
+ const baseUrl = LocalStorageService.getItem(StorageKeys.CURRENT_SERVER_BASE_URL);
87
+ if (!baseUrl)
88
+ throw new Error('The backend or server base URL is missing in Local Storage');
89
+ this.refreshTokenService.refreshToken({ platformServiceApiBaseUrls: baseUrl });
90
+ }
91
+ getExpireAtTime() {
92
+ const isIdentityToken = LocalStorageService.getItem(StorageKeys.IDENTITY_TOKEN);
93
+ if (!isIdentityToken)
94
+ throw new Error('identity token is missing in the local storage');
95
+ const { expireAt } = isIdentityToken;
96
+ const date = new Date(expireAt * 1000);
97
+ const hours = date.getUTCHours().toString().padStart(2, '0');
98
+ const minutes = date.getUTCMinutes().toString().padStart(2, '0');
99
+ const seconds = date.getUTCSeconds().toString().padStart(2, '0');
100
+ const latestRefreshTokenExpireTime = `${hours}:${minutes}:${seconds}`; //10:00:00
101
+ return latestRefreshTokenExpireTime;
102
+ }
103
+ getCurrentTime() {
104
+ const now = new Date();
105
+ const options = { timeZone: 'Asia/Kolkata' };
106
+ const formattedTime = now.toLocaleString('en-IN', { hour12: true, ...options });
107
+ const [time, period] = formattedTime.split(', ')[1].split(' ');
108
+ const [hours, minutes, seconds] = time.split(':').map(Number);
109
+ return { hours, minutes, seconds, period };
110
+ }
111
+ timeToSeconds(hours, minutes, seconds) {
112
+ return hours * 3600 + minutes * 60 + seconds;
113
+ }
114
+ secondsToTimeString(seconds) {
115
+ const hours = Math.floor(seconds / 3600) % 12 || 12;
116
+ const minutes = Math.floor((seconds % 3600) / 60);
117
+ const secondsPart = seconds % 60;
118
+ return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${secondsPart.toString().padStart(2, '0')}`;
119
+ }
120
+ handleCalulateHalfTime(expireTime, isHalfTime = false) {
121
+ const [expireHours, expireMinutes, expireSeconds] = expireTime.split(':').map(Number);
122
+ const { hours: currentHours, minutes: currentMinutes, seconds: currentSeconds, period: currentPeriod } = this.getCurrentTime();
123
+ const expireTimeInSeconds = this.timeToSeconds(expireHours, expireMinutes, expireSeconds);
124
+ const currentTimeInSeconds = this.timeToSeconds(currentHours, currentMinutes, currentSeconds);
125
+ let halfwayTimeInSeconds;
126
+ if (isHalfTime) {
127
+ halfwayTimeInSeconds = expireTimeInSeconds + currentTimeInSeconds;
128
+ }
129
+ else {
130
+ halfwayTimeInSeconds = Math.floor((expireTimeInSeconds + currentTimeInSeconds) / 2);
131
+ }
132
+ if (halfwayTimeInSeconds < 0) {
133
+ halfwayTimeInSeconds += 12 * 3600;
134
+ }
135
+ else if (halfwayTimeInSeconds >= 12 * 3600) {
136
+ halfwayTimeInSeconds -= 12 * 3600;
137
+ }
138
+ const halfwayTimeString = this.secondsToTimeString(halfwayTimeInSeconds);
139
+ let isHalfTimeGreater = false;
140
+ if (halfwayTimeString.endsWith('AM') && expireTime.endsWith('PM')) {
141
+ isHalfTimeGreater = false;
142
+ }
143
+ else if (halfwayTimeString.endsWith('PM') && expireTime.endsWith('AM')) {
144
+ isHalfTimeGreater = true;
145
+ }
146
+ else {
147
+ isHalfTimeGreater = halfwayTimeString > expireTime;
148
+ }
149
+ return { halfwayTimeString, isHalfTimeGreater };
150
+ }
151
+ checkHalfTimeIsGreater() {
152
+ // const getRefreshTokenHalfTime: string = localStorage.getItem(this.refreshTokenExpireTimeStorageKey) as string;
153
+ const getRefreshTokenHalfTime = LocalStorageService.getItem(StorageKeys.REFRESH_TOKEN_HALF_EXPRE_TIME);
154
+ if (!getRefreshTokenHalfTime)
155
+ throw new Error('Refresh token half time is missing');
156
+ const { isHalfTimeGreater, halfwayTimeString } = this.handleCalulateHalfTime(getRefreshTokenHalfTime, true);
157
+ return { isHalfTimeGreater, halfwayTimeString };
158
+ }
70
159
  }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpAuthInterceptor, decorators: [{
72
- type: Injectable
73
- }], ctorParameters: function () { return [{ type: i1.ToastNotificationService }, { type: i2.Router }]; } });
74
160
 
75
161
  /*
76
162
  * Public API Surface of platform-http-interceptor
@@ -1 +1 @@
1
- {"version":3,"file":"progress-chef-platform-http-interceptor.mjs","sources":["../../../projects/platform-http-interceptor/src/lib/http-auth.interceptor.ts","../../../projects/platform-http-interceptor/src/public-api.ts","../../../projects/platform-http-interceptor/src/progress-chef-platform-http-interceptor.ts"],"sourcesContent":["import {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest\n} from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ToastNotificationService } from '@progress-chef/platform-shared-components';\nimport { LocalStorageService, StorageKeys } from '@progress-chef/platform-storage-service';\nimport { Observable, catchError, throwError } from 'rxjs';\n\n@Injectable()\nexport class HttpAuthInterceptor implements HttpInterceptor {\n authTokenSet = new Set();\n isSessionExpired = false;\n constructor(private toastNotificationService: ToastNotificationService, private router: Router) { }\n\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n let authToken = LocalStorageService.getItem(StorageKeys.AUTH_TOKEN);\n let authReq = request;\n if (authToken) {\n authReq = request.clone({\n setHeaders: {\n Authorization: `Bearer ${authToken}`\n }\n })\n if (!this.authTokenSet.has(authToken)) {\n this.isSessionExpired = false;\n }\n this.authTokenSet.add(authToken);\n }\n return next.handle(authReq).pipe(\n catchError((error: HttpErrorResponse) => {\n if (error.status === 401) {\n const loginType = LocalStorageService.getItem(StorageKeys.LOGIN_TYPE);\n if (loginType === 'saml' || loginType === 'oauth') {\n LocalStorageService.removeItem(StorageKeys.USER_NAME);\n LocalStorageService.removeItem(StorageKeys.IS_REMEMBER_ME); \n }\n LocalStorageService.setItem(StorageKeys.IS_USER_ORG_AND_ROLE_SET, false);\n LocalStorageService.setItem(StorageKeys.IS_USER_AUTHENTICATED, false);\n LocalStorageService.removeItem(StorageKeys.AUTH_TOKEN);\n LocalStorageService.removeItem(StorageKeys.LOGIN_TYPE);\n LocalStorageService.removeItem(StorageKeys.IDENTITY_TOKEN);\n LocalStorageService.removeItem(StorageKeys.USER_ORG_AND_ROLE_TOKEN);\n // call logout action\n if (!this.isSessionExpired) {\n this.toastNotificationService.showToastNotification({\n content: 'The session has ended.'\n });\n this.isSessionExpired = true;\n }\n \n this.router.navigate(['/login'])\n }\n if (error.status === 0 || error.status === 504) {\n this.toastNotificationService.showToastNotification({\n content: `Unable to reach server. Please try again.`,\n type: { style: 'error', icon: true },\n closable: true\n })\n }\n if (error.status === 500) {\n this.toastNotificationService.showToastNotification({\n content: `Something went wrong. Please try again.`,\n type: { style: 'error', icon: true },\n closable: true\n })\n }\n return throwError(() => error)\n })\n );\n }\n}\n","/*\n * Public API Surface of platform-http-interceptor\n */\n\nexport * from './lib/http-auth.interceptor';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"progress-chef-platform-http-interceptor.mjs","sources":["../../../projects/platform-http-interceptor/src/lib/http-auth.interceptor.ts","../../../projects/platform-http-interceptor/src/public-api.ts","../../../projects/platform-http-interceptor/src/progress-chef-platform-http-interceptor.ts"],"sourcesContent":["import {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest\n} from '@angular/common/http';\nimport { RefreshTokenService } from '../../../../dist/platform-refresh-token-service/index';\nimport { Router } from '@angular/router';\nimport { ToastNotificationService } from '@progress-chef/platform-shared-components';\nimport { LocalStorageService, StorageKeys } from '@progress-chef/platform-storage-service';\nimport { Observable, catchError, throwError } from 'rxjs';\n\nexport class HttpAuthInterceptor implements HttpInterceptor {\n authTokenSet = new Set();\n isSessionExpired = false;\n constructor(\n private router: Router,\n private toastNotificationService: ToastNotificationService, \n private refreshTokenService: RefreshTokenService,\n ) { }\n\n // private currentBaseUrlFromLocalStorage: string = 'currentServerBaseUrl';\n // private refreshTokenExpireTimeStorageKey: string = 'refreshTokenExpireTime';\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n\n this.manageTokenRefresh();\n let authToken = LocalStorageService.getItem(StorageKeys.AUTH_TOKEN);\n let authReq = request;\n if (authToken) {\n authReq = request.clone({\n setHeaders: {\n Authorization: `Bearer ${authToken}`\n }\n })\n if (!this.authTokenSet.has(authToken)) {\n this.isSessionExpired = false;\n }\n this.authTokenSet.add(authToken);\n }\n return next.handle(authReq).pipe(\n catchError((error: HttpErrorResponse) => {\n if (error.status === 401) {\n const loginType = LocalStorageService.getItem(StorageKeys.LOGIN_TYPE);\n if (loginType === 'saml' || loginType === 'oauth') {\n LocalStorageService.removeItem(StorageKeys.USER_NAME);\n LocalStorageService.removeItem(StorageKeys.IS_REMEMBER_ME); \n }\n LocalStorageService.setItem(StorageKeys.IS_USER_ORG_AND_ROLE_SET, false);\n LocalStorageService.setItem(StorageKeys.IS_USER_AUTHENTICATED, false);\n LocalStorageService.removeItem(StorageKeys.AUTH_TOKEN);\n LocalStorageService.removeItem(StorageKeys.LOGIN_TYPE);\n LocalStorageService.removeItem(StorageKeys.IDENTITY_TOKEN);\n LocalStorageService.removeItem(StorageKeys.USER_ORG_AND_ROLE_TOKEN);\n // call logout action\n if (!this.isSessionExpired) {\n this.toastNotificationService.showToastNotification({\n content: 'The session has ended.'\n });\n this.isSessionExpired = true;\n }\n \n this.router.navigate(['/login'])\n }\n if (error.status === 0 || error.status === 504) {\n this.toastNotificationService.showToastNotification({\n content: `Unable to reach server. Please try again.`,\n type: { style: 'error', icon: true },\n closable: true\n })\n }\n if (error.status === 500) {\n this.toastNotificationService.showToastNotification({\n content: `Something went wrong. Please try again.`,\n type: { style: 'error', icon: true },\n closable: true\n })\n }\n return throwError(() => error)\n })\n );\n }\n\n manageRefreshTokenExpireTime() {\n const newExpireTime = this.getExpireAtTime()\n const { halfwayTimeString } = this.handleCalulateHalfTime(newExpireTime)\n LocalStorageService.setItem(StorageKeys.REFRESH_TOKEN_HALF_EXPRE_TIME, halfwayTimeString)\n }\n\n manageTokenRefresh() {\n const { isHalfTimeGreater } = this.checkHalfTimeIsGreater();\n if (isHalfTimeGreater) {\n this.refreshToken();\n this.manageRefreshTokenExpireTime();\n // const newExpireTime = this.getExpireAtTime()\n // const { halfwayTimeString } = this.handleCalulateHalfTime(newExpireTime)\n // localStorage.setItem(this.refreshTokenExpireTimeStorageKey, halfwayTimeString)\n // LocalStorageService.setItem(StorageKeys.REFRESH_TOKEN_HALF_EXPRE_TIME, halfwayTimeString)\n }\n }\n\n refreshToken() {\n // const baseUrl: string = localStorage.getItem(this.currentBaseUrlFromLocalStorage) as string;\n const baseUrl = LocalStorageService.getItem(StorageKeys.CURRENT_SERVER_BASE_URL);\n if (!baseUrl) throw new Error('The backend or server base URL is missing in Local Storage');\n this.refreshTokenService.refreshToken({ platformServiceApiBaseUrls: baseUrl });\n }\n\n getExpireAtTime() {\n const isIdentityToken = LocalStorageService.getItem(StorageKeys.IDENTITY_TOKEN);\n if (!isIdentityToken) throw new Error('identity token is missing in the local storage');\n const { expireAt } = isIdentityToken;\n const date = new Date(expireAt * 1000);\n const hours = date.getUTCHours().toString().padStart(2, '0');\n const minutes = date.getUTCMinutes().toString().padStart(2, '0');\n const seconds = date.getUTCSeconds().toString().padStart(2, '0');\n const latestRefreshTokenExpireTime = `${hours}:${minutes}:${seconds}`; //10:00:00\n return latestRefreshTokenExpireTime;\n }\n\n getCurrentTime() {\n const now = new Date();\n const options = { timeZone: 'Asia/Kolkata' };\n const formattedTime = now.toLocaleString('en-IN', { hour12: true, ...options });\n const [time, period] = formattedTime.split(', ')[1].split(' ');\n const [hours, minutes, seconds] = time.split(':').map(Number);\n return { hours, minutes, seconds, period };\n }\n\n timeToSeconds(hours: number, minutes: number, seconds: number) {\n return hours * 3600 + minutes * 60 + seconds;\n }\n\n secondsToTimeString(seconds: number) {\n const hours = Math.floor(seconds / 3600) % 12 || 12;\n const minutes = Math.floor((seconds % 3600) / 60);\n const secondsPart = seconds % 60;\n return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${secondsPart.toString().padStart(2, '0')}`;\n }\n\n handleCalulateHalfTime(expireTime: string, isHalfTime: boolean = false) {\n const [expireHours, expireMinutes, expireSeconds] = expireTime.split(':').map(Number);\n const { hours: currentHours, minutes: currentMinutes, seconds: currentSeconds, period: currentPeriod } = this.getCurrentTime();\n\n const expireTimeInSeconds = this.timeToSeconds(expireHours, expireMinutes, expireSeconds);\n const currentTimeInSeconds = this.timeToSeconds(currentHours, currentMinutes, currentSeconds);\n\n let halfwayTimeInSeconds: number;\n if (isHalfTime) {\n halfwayTimeInSeconds = expireTimeInSeconds + currentTimeInSeconds;\n } else {\n halfwayTimeInSeconds = Math.floor((expireTimeInSeconds + currentTimeInSeconds) / 2);\n }\n\n if (halfwayTimeInSeconds < 0) {\n halfwayTimeInSeconds += 12 * 3600;\n } else if (halfwayTimeInSeconds >= 12 * 3600) {\n halfwayTimeInSeconds -= 12 * 3600;\n }\n\n const halfwayTimeString = this.secondsToTimeString(halfwayTimeInSeconds);\n\n let isHalfTimeGreater = false;\n if (halfwayTimeString.endsWith('AM') && expireTime.endsWith('PM')) {\n isHalfTimeGreater = false;\n } else if (halfwayTimeString.endsWith('PM') && expireTime.endsWith('AM')) {\n isHalfTimeGreater = true;\n } else {\n isHalfTimeGreater = halfwayTimeString > expireTime;\n }\n\n return { halfwayTimeString, isHalfTimeGreater };\n }\n\n checkHalfTimeIsGreater() {\n // const getRefreshTokenHalfTime: string = localStorage.getItem(this.refreshTokenExpireTimeStorageKey) as string;\n const getRefreshTokenHalfTime = LocalStorageService.getItem(StorageKeys.REFRESH_TOKEN_HALF_EXPRE_TIME)\n if (!getRefreshTokenHalfTime) throw new Error('Refresh token half time is missing');\n const { isHalfTimeGreater, halfwayTimeString } = this.handleCalulateHalfTime(getRefreshTokenHalfTime, true);\n return { isHalfTimeGreater, halfwayTimeString };\n }\n}\n","/*\n * Public API Surface of platform-http-interceptor\n */\n\nexport * from './lib/http-auth.interceptor';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAaa,mBAAmB,CAAA;AAG9B,IAAA,WAAA,CACU,MAAc,EACd,wBAAkD,EAClD,mBAAwC,EAAA;QAFxC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;QAClD,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AALlD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QACzB,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;KAKpB;;;IAIL,SAAS,CAAC,OAA6B,EAAE,IAAiB,EAAA;QAExD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACpE,IAAI,OAAO,GAAG,OAAO,CAAC;AACtB,QAAA,IAAI,SAAS,EAAE;AACb,YAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;AACtB,gBAAA,UAAU,EAAE;oBACV,aAAa,EAAE,CAAU,OAAA,EAAA,SAAS,CAAE,CAAA;AACrC,iBAAA;AACF,aAAA,CAAC,CAAA;YACF,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AACrC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC/B,aAAA;AACD,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAClC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAC9B,UAAU,CAAC,CAAC,KAAwB,KAAI;AACtC,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;gBACxB,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACtE,gBAAA,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAAO,EAAE;AACjD,oBAAA,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACtD,oBAAA,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AAC5D,iBAAA;gBACD,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;gBACzE,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;AACtE,gBAAA,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACvD,gBAAA,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACvD,gBAAA,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AAC3D,gBAAA,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;;AAEpE,gBAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,oBAAA,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC;AAClD,wBAAA,OAAO,EAAE,wBAAwB;AAClC,qBAAA,CAAC,CAAC;AACH,oBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC9B,iBAAA;gBAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;AACjC,aAAA;YACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;AAC9C,gBAAA,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC;AAClD,oBAAA,OAAO,EAAE,CAA2C,yCAAA,CAAA;oBACpD,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;AACpC,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC,CAAA;AACH,aAAA;AACD,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;AACxB,gBAAA,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC;AAClD,oBAAA,OAAO,EAAE,CAAyC,uCAAA,CAAA;oBAClD,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;AACpC,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC,CAAA;AACH,aAAA;AACD,YAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,CAAA;SAC/B,CAAC,CACH,CAAC;KACH;IAED,4BAA4B,GAAA;AAC1B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAC5C,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAA;QACxE,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,6BAA6B,EAAE,iBAAiB,CAAC,CAAA;KAC1F;IAED,kBAAkB,GAAA;QAChB,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC5D,QAAA,IAAI,iBAAiB,EAAE;YACrB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,4BAA4B,EAAE,CAAC;;;;;AAKrC,SAAA;KACF;IAED,YAAY,GAAA;;QAEV,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC5F,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,0BAA0B,EAAE,OAAO,EAAE,CAAC,CAAC;KAChF;IAED,eAAe,GAAA;QACb,MAAM,eAAe,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AAChF,QAAA,IAAI,CAAC,eAAe;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;AACxF,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;AACvC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACjE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjE,MAAM,4BAA4B,GAAG,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAC;AACtE,QAAA,OAAO,4BAA4B,CAAC;KACrC;IAED,cAAc,GAAA;AACZ,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;AACvB,QAAA,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AAC7C,QAAA,MAAM,aAAa,GAAG,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAChF,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/D,QAAA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;KAC5C;AAED,IAAA,aAAa,CAAC,KAAa,EAAE,OAAe,EAAE,OAAe,EAAA;QAC3D,OAAO,KAAK,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC;KAC9C;AAED,IAAA,mBAAmB,CAAC,OAAe,EAAA;AACjC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;AACpD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;AAClD,QAAA,MAAM,WAAW,GAAG,OAAO,GAAG,EAAE,CAAC;AACjC,QAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,WAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;KACjI;AAED,IAAA,sBAAsB,CAAC,UAAkB,EAAE,UAAA,GAAsB,KAAK,EAAA;AACpE,QAAA,MAAM,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtF,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAE/H,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AAC1F,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;AAE9F,QAAA,IAAI,oBAA4B,CAAC;AACjC,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,oBAAoB,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;AACnE,SAAA;AAAM,aAAA;AACL,YAAA,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,mBAAmB,GAAG,oBAAoB,IAAI,CAAC,CAAC,CAAC;AACrF,SAAA;QAED,IAAI,oBAAoB,GAAG,CAAC,EAAE;AAC5B,YAAA,oBAAoB,IAAI,EAAE,GAAG,IAAI,CAAC;AACnC,SAAA;AAAM,aAAA,IAAI,oBAAoB,IAAI,EAAE,GAAG,IAAI,EAAE;AAC5C,YAAA,oBAAoB,IAAI,EAAE,GAAG,IAAI,CAAC;AACnC,SAAA;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;QAEzE,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACjE,iBAAiB,GAAG,KAAK,CAAC;AAC3B,SAAA;AAAM,aAAA,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACxE,iBAAiB,GAAG,IAAI,CAAC;AAC1B,SAAA;AAAM,aAAA;AACL,YAAA,iBAAiB,GAAG,iBAAiB,GAAG,UAAU,CAAC;AACpD,SAAA;AAED,QAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;KACjD;IAED,sBAAsB,GAAA;;QAEpB,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAA;AACtG,QAAA,IAAI,CAAC,uBAAuB;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;AACpF,QAAA,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;AAC5G,QAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;KACjD;AACF;;ACrLD;;AAEG;;ACFH;;AAEG;;;;"}
@@ -1,15 +1,34 @@
1
1
  import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
2
+ import { RefreshTokenService } from '../../../../dist/platform-refresh-token-service/index';
2
3
  import { Router } from '@angular/router';
3
4
  import { ToastNotificationService } from '@progress-chef/platform-shared-components';
4
5
  import { Observable } from 'rxjs';
5
- import * as i0 from "@angular/core";
6
6
  export declare class HttpAuthInterceptor implements HttpInterceptor {
7
- private toastNotificationService;
8
7
  private router;
8
+ private toastNotificationService;
9
+ private refreshTokenService;
9
10
  authTokenSet: Set<unknown>;
10
11
  isSessionExpired: boolean;
11
- constructor(toastNotificationService: ToastNotificationService, router: Router);
12
+ constructor(router: Router, toastNotificationService: ToastNotificationService, refreshTokenService: RefreshTokenService);
12
13
  intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
13
- static ɵfac: i0.ɵɵFactoryDeclaration<HttpAuthInterceptor, never>;
14
- static ɵprov: i0.ɵɵInjectableDeclaration<HttpAuthInterceptor>;
14
+ manageRefreshTokenExpireTime(): void;
15
+ manageTokenRefresh(): void;
16
+ refreshToken(): void;
17
+ getExpireAtTime(): string;
18
+ getCurrentTime(): {
19
+ hours: number;
20
+ minutes: number;
21
+ seconds: number;
22
+ period: string;
23
+ };
24
+ timeToSeconds(hours: number, minutes: number, seconds: number): number;
25
+ secondsToTimeString(seconds: number): string;
26
+ handleCalulateHalfTime(expireTime: string, isHalfTime?: boolean): {
27
+ halfwayTimeString: string;
28
+ isHalfTimeGreater: boolean;
29
+ };
30
+ checkHalfTimeIsGreater(): {
31
+ isHalfTimeGreater: boolean;
32
+ halfwayTimeString: string;
33
+ };
15
34
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress-chef/platform-http-interceptor",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^16.2.0",
6
6
  "@angular/core": "^16.2.0"