jconsumer-shared 1.2.15 → 1.2.16

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.
@@ -92,9 +92,54 @@ export class AccountService {
92
92
  resolve(_this.sharedService.getAccountInfo());
93
93
  }
94
94
  else {
95
+ const uniqueId = _this.sharedService.getUniqueID();
96
+ const cacheKey = 'account_info_data_' + uniqueId;
97
+ const cachedAccountStr = localStorage.getItem(cacheKey);
98
+ let cachedAccount = null;
99
+ if (cachedAccountStr) {
100
+ try {
101
+ cachedAccount = JSON.parse(cachedAccountStr);
102
+ _this.sharedService.setAccountInfo(cachedAccount);
103
+ const accountProfile = _this.getJson(cachedAccount['businessProfile']);
104
+ _this.titleService.setTitle(accountProfile.businessName);
105
+ if (accountProfile.logo && accountProfile.logo.url) {
106
+ _this.setIcon(accountProfile.logo.url);
107
+ }
108
+ _this.metaService.addTags([
109
+ { name: 'description', content: accountProfile.businessDesc },
110
+ { property: 'og:title', content: accountProfile.businessName },
111
+ { property: 'og:site_name', content: accountProfile.businessName },
112
+ { property: 'og:description', content: accountProfile.businessDesc },
113
+ { property: 'og:image', content: (accountProfile.logo?.url) || '' },
114
+ { property: 'og:url', content: window.location.href }
115
+ ]);
116
+ // Cache configuration loading
117
+ const configCacheKey = 'account_config_' + uniqueId;
118
+ const cachedConfigStr = localStorage.getItem(configCacheKey);
119
+ if (cachedConfigStr) {
120
+ try {
121
+ _this.sharedService.setAccountConfig(JSON.parse(cachedConfigStr));
122
+ }
123
+ catch (e) { }
124
+ }
125
+ resolve(cachedAccount);
126
+ }
127
+ catch (e) { }
128
+ }
95
129
  _this.getAccountInfoPromise().then((account) => {
130
+ try {
131
+ localStorage.setItem(cacheKey, JSON.stringify(account));
132
+ }
133
+ catch (e) { }
96
134
  _this.getAccountConfiguration().then((config) => {
97
- _this.sharedService.setAccountConfig(config);
135
+ if (config) {
136
+ const configCacheKey = 'account_config_' + uniqueId;
137
+ try {
138
+ localStorage.setItem(configCacheKey, JSON.stringify(config));
139
+ }
140
+ catch (e) { }
141
+ _this.sharedService.setAccountConfig(config);
142
+ }
98
143
  });
99
144
  _this.sharedService.setAccountInfo(account);
100
145
  const accountProfile = _this.getJson(account['businessProfile']);
@@ -104,19 +149,20 @@ export class AccountService {
104
149
  }
105
150
  _this.metaService.addTags([
106
151
  { name: 'description', content: accountProfile.businessDesc },
107
- { name: 'og:title', content: accountProfile.businessName },
108
- { name: 'og:site_name', content: accountProfile.businessName },
109
- { name: 'og:description', content: accountProfile.businessDesc },
110
- { name: 'og:image', content: (accountProfile.logo && accountProfile.logo.url) ? accountProfile.logo.url : '' }
111
- // <meta property="og:url" content="https://yourwebsite.com/page-url">
112
- // <meta property="og:image" content="https://yourwebsite.com/image.jpg">
113
- // {name: 'keywords', content: 'Angular, Universal, Example'},
114
- // {name: 'robots', content: 'index, follow'}
152
+ { property: 'og:title', content: accountProfile.businessName },
153
+ { property: 'og:site_name', content: accountProfile.businessName },
154
+ { property: 'og:description', content: accountProfile.businessDesc },
155
+ { property: 'og:image', content: (accountProfile.logo?.url) || '' },
156
+ { property: 'og:url', content: window.location.href }
115
157
  ]);
116
- resolve(_this.sharedService.getAccountInfo());
158
+ if (!cachedAccount) {
159
+ resolve(account);
160
+ }
117
161
  }).catch((error) => {
118
162
  console.log(error);
119
- resolve(_this.sharedService.getAccountInfo());
163
+ if (!cachedAccount) {
164
+ resolve(_this.sharedService.getAccountInfo());
165
+ }
120
166
  });
121
167
  }
122
168
  });
@@ -167,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
167
213
  providedIn: 'root'
168
214
  }]
169
215
  }], ctorParameters: () => [{ type: i1.Title }, { type: i1.Meta }, { type: i2.ServiceMeta }, { type: i3.SharedService }] });
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvamNvbnN1bWVyLXNoYXJlZC9zcmMvbGliL2FjY291bnQtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVEzQyxNQUFNLE9BQU8sY0FBYztJQVNmO0lBQ0E7SUFDQTtJQUNBO0lBVlYsYUFBYSxDQUFNO0lBQ25CLGNBQWMsQ0FBTTtJQUNwQixnQkFBZ0IsQ0FBTTtJQUN0QixXQUFXLENBQU07SUFDakIsTUFBTSxHQUFRLEVBQUUsQ0FBQztJQUVqQixZQUNVLFlBQW1CLEVBQ25CLFdBQWlCLEVBQ2pCLFdBQXdCLEVBQ3hCLGFBQTRCO1FBSDVCLGlCQUFZLEdBQVosWUFBWSxDQUFPO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFNO1FBQ2pCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQUksQ0FBQztJQUUzQyxjQUFjLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFDRCxTQUFTLENBQUMsTUFBTTtRQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxRQUFRO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFDRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFj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QUFDLFVBQVUsT0FBTztZQUNsQyxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUM1RCxDQUFDLFdBQWdCLEVBQUUsRUFBRTtnQkFDbkIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZCLENBQUMsQ0FDRixDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO3dHQS9KVSxjQUFjOzRHQUFkLGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWV0YSwgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgU2hhcmVkU2VydmljZSB9IGZyb20gJy4vc2hhcmVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlTWV0YSB9IGZyb20gJy4vc2VydmljZS1tZXRhJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFjY291bnRTZXJ2aWNlIHtcclxuXHJcbiAgYWNjb3VudENvbmZpZzogYW55O1xyXG4gIGFjdGl2ZUxvY2F0aW9uOiBhbnk7XHJcbiAgYWNjb3VudExvY2F0aW9uczogYW55O1xyXG4gIGFjdGl2ZVN0b3JlOiBhbnk7XHJcbiAgc3RvcmVzOiBhbnkgPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHRpdGxlU2VydmljZTogVGl0bGUsXHJcbiAgICBwcml2YXRlIG1ldGFTZXJ2aWNlOiBNZXRhLFxyXG4gICAgcHJpdmF0ZSBzZXJ2aWNlTWV0YTogU2VydmljZU1ldGEsXHJcbiAgICBwcml2YXRlIHNoYXJlZFNlcnZpY2U6IFNoYXJlZFNlcnZpY2UpIHsgfVxyXG5cclxuICBzZXRBY3RpdmVTdG9yZShzdG9yZTogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZVN0b3JlID0gc3RvcmU7XHJcbiAgfVxyXG5cclxuICBnZXRBY3RpdmVTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZVN0b3JlO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWNjb3VudENvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLmFjY291bnRDb25maWc7XHJcbiAgfVxyXG4gIHNldFN0b3JlcyhzdG9yZXMpIHtcclxuICAgIHRoaXMuc3RvcmVzID0gc3RvcmVzO1xyXG4gIH1cclxuICBnZXRTdG9yZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZXM7XHJcbiAgfVxyXG4gIHNldEFjdGl2ZUxvY2F0aW9uKGxvY2F0aW9uKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUxvY2F0aW9uID0gbG9jYXRpb247XHJcbiAgfVxyXG4gIGdldEFjdGl2ZUxvY2F0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlTG9jYXRpb247XHJcbiAgfVxyXG4gIHNldEFjY291bnRMb2NhdGlvbnMobG9jYXRpb25zKSB7XHJcbiAgICB0aGlzLmFjY291bnRMb2NhdGlvbnMgPSBsb2NhdGlvbnM7XHJcbiAgfVxyXG4gIGdldEFjY291bnRMb2NhdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY2NvdW50TG9jYXRpb25zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIE1ldGhvZCB3aGljaCByZXR1cm5zIHRoZSBKc29uc1xyXG4gICAgKiBAcGFyYW0gYWNjb3VudFVuaXF1ZUlkIFRoZSBVbmlxdWUgSWQgd2hpY2ggcmVwcmVzZW50cyBTMyBCdWNrZXQgZm9yIGEgcGFydGljdWxhciBBY2NvdW50XHJcbiAgICAqIEBwYXJhbSBsaXN0T2ZVcmxUeXBlcyBUeXBlIG9mIHRoZSBVcmwgZWcuIHNlcnZpY2VzLCBidXNpbmVzc1Byb2ZpbGUgZXRjLlxyXG4gICAgKiBAcmV0dXJucyB7IFwic2VydmljZXNcIjogJ3NlcnZpY2VzLmpzb24nLCBcImJ1c2luZXNzUHJvZmlsZVwiOiBidXNpbmVzc3Byb2ZpbGUuanNvbn1cclxuICAqL1xyXG4gIGdldEpzb25zYnlUeXBlcyhhY2NvdW50VW5pcXVlSWQ6IGFueSwgdXNlcklkOiBhbnksIGxpc3RPZlVybFR5cGVzOiBhbnkpIHtcclxuICAgIGxldCBwYXRoID0gJ3Byb3ZpZGVyL2FjY291bnQvc2V0dGluZ3MvY29uZmlnLycgKyBhY2NvdW50VW5pcXVlSWQ7XHJcbiAgICBpZiAodXNlcklkKSB7XHJcbiAgICAgIHBhdGggPSBwYXRoICsgJy8nICsgdXNlcklkO1xyXG4gICAgfVxyXG4gICAgcGF0aCA9IHBhdGggKyAnLycgKyBsaXN0T2ZVcmxUeXBlcztcclxuICAgIHJldHVybiB0aGlzLnNlcnZpY2VNZXRhLmh0dHBHZXQocGF0aCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICogXHJcbiAgKiBAcGFyYW0ganNvblN0cl9PYmogXHJcbiAgKi9cclxuICBnZXRKc29uKGpzb25TdHJfT2JqOiBhbnkpIHtcclxuICAgIGlmIChqc29uU3RyX09iaikge1xyXG4gICAgICBpZiAodHlwZW9mIGpzb25TdHJfT2JqID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgIHJldHVybiBqc29uU3RyX09iajtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShqc29uU3RyX09iaik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBzZXRJY29uKHVybCkge1xyXG4gICAgbGV0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyksXHJcbiAgICAgIG9sZExpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHluYW1pYy1mYXZpY29uJyk7XHJcbiAgICBsaW5rLmlkID0gJ2R5bmFtaWMtZmF2aWNvbic7XHJcbiAgICBsaW5rLnJlbCA9ICdzaG9ydGN1dCBpY29uJztcclxuICAgIGxpbmsuaHJlZiA9IHVybDtcclxuICAgIGlmIChvbGRMaW5rKSB7XHJcbiAgICAgIGRvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQob2xkTGluayk7XHJcbiAgICB9XHJcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspO1xyXG4gIH1cclxuICBnZXRBY2NvdW50SW5mb0J5SWQoKSB7XHJcbiAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICBpZiAoX3RoaXMuc2hhcmVkU2VydmljZS5nZXRBY2NvdW50SW5mbygpKSB7XHJcbiAgICAgICAgcmVzb2x2ZShfdGhpcy5zaGFyZWRTZXJ2aWNlLmdldEFjY291bnRJbmZvKCkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIF90aGlzLmdldEFjY291bnRJbmZvUHJvbWlzZSgpLnRoZW4oKGFjY291bnQpID0+IHtcclxuICAgICAgICAgIF90aGlzLmdldEFjY291bnRDb25maWd1cmF0aW9uKCkudGhlbigoY29uZmlnOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgX3RoaXMuc2hhcmVkU2VydmljZS5zZXRBY2NvdW50Q29uZmlnKGNvbmZpZyk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgX3RoaXMuc2hhcmVkU2VydmljZS5zZXRBY2NvdW50SW5mbyhhY2NvdW50KTtcclxuICAgICAgICAgIGNvbnN0IGFjY291bnRQcm9maWxlID0gX3RoaXMuZ2V0SnNvbihhY2NvdW50WydidXNpbmVzc1Byb2ZpbGUnXSk7XHJcbiAgICAgICAgICBfdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUoYWNjb3VudFByb2ZpbGUuYnVzaW5lc3NOYW1lKTtcclxuICAgICAgICAgIGlmIChhY2NvdW50UHJvZmlsZS5sb2dvICYmIGFjY291bnRQcm9maWxlLmxvZ28udXJsKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnNldEljb24oYWNjb3VudFByb2ZpbGUubG9nby51cmwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgX3RoaXMubWV0YVNlcnZpY2UuYWRkVGFncyhbXHJcbiAgICAgICAgICAgIHsgbmFtZTogJ2Rlc2NyaXB0aW9uJywgY29udGVudDogYWNjb3VudFByb2ZpbGUuYnVzaW5lc3NEZXNjIH0sXHJcbiAgICAgICAgICAgIHsgbmFtZTogJ29nOnRpdGxlJywgY29udGVudDogYWNjb3VudFByb2ZpbGUuYnVzaW5lc3NOYW1lIH0sXHJcbiAgICAgICAgICAgIHsgbmFtZTogJ29nOnNpdGVfbmFtZScsIGNvbnRlbnQ6IGFjY291bnRQcm9maWxlLmJ1c2luZXNzTmFtZSB9LFxyXG4gICAgICAgICAgICB7IG5hbWU6ICdvZzpkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IGFjY291bnRQcm9maWxlLmJ1c2luZXNzRGVzYyB9LFxyXG4gICAgICAgICAgICB7IG5hbWU6ICdvZzppbWFnZScsIGNvbnRlbnQ6IChhY2NvdW50UHJvZmlsZS5sb2dvICYmIGFjY291bnRQcm9maWxlLmxvZ28udXJsKSA/IGFjY291bnRQcm9maWxlLmxvZ28udXJsIDogJycgfVxyXG4gICAgICAgICAgICAvLyA8bWV0YSBwcm9wZXJ0eT1cIm9nOnVybFwiIGNvbnRlbnQ9XCJodHRwczovL3lvdXJ3ZWJzaXRlLmNvbS9wYWdlLXVybFwiPlxyXG4gICAgICAgICAgICAvLyA8bWV0YSBwcm9wZXJ0eT1cIm9nOmltYWdlXCIgY29udGVudD1cImh0dHBzOi8veW91cndlYnNpdGUuY29tL2ltYWdlLmpwZ1wiPlxyXG4gICAgICAgICAgICAvLyB7bmFtZTogJ2tleXdvcmRzJywgY29udGVudDogJ0FuZ3VsYXIsIFVuaXZlcnNhbCwgRXhhbXBsZSd9LFxyXG4gICAgICAgICAgICAvLyB7bmFtZTogJ3JvYm90cycsIGNvbnRlbnQ6ICdpbmRleCwgZm9sbG93J31cclxuICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgcmVzb2x2ZShfdGhpcy5zaGFyZWRTZXJ2aWNlLmdldEFjY291bnRJbmZvKCkpO1xyXG4gICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgcmVzb2x2ZShfdGhpcy5zaGFyZWRTZXJ2aWNlLmdldEFjY291bnRJbmZvKCkpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRBY2NvdW50SW5mb1Byb21pc2UoKSB7XHJcbiAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICBsZXQgYWNjb3VudFMzTGlzdCA9ICdzZXR0aW5ncyxjb3Vwb24scHJvdmlkZXJDb3Vwb24sYXBwb2ludG1lbnRzZXR0aW5ncyx0ZXJtaW5vbG9naWVzLGxvY2F0aW9uLGJ1c2luZXNzUHJvZmlsZSx2aXJ0dWFsRmllbGRzLHNlcnZpY2VzLGFwcHRTZXJ2aWNlcyxkb25hdGlvblNlcnZpY2VzLGRlcGFydG1lbnRQcm92aWRlcnMsZ2FsbGVyeSc7XHJcbiAgICAgIF90aGlzLmdldEpzb25zYnlUeXBlcyhfdGhpcy5zaGFyZWRTZXJ2aWNlLmdldFVuaXF1ZUlEKCksIG51bGwsIGFjY291bnRTM0xpc3QpLnN1YnNjcmliZShcclxuICAgICAgICAoYWNjb3VudDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKGFjY291bnQpXHJcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSlcclxuICB9XHJcbiAgZ2V0QWNjb3VudENvbmZpZ3VyYXRpb24oKSB7XHJcbiAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcclxuICAgICAgX3RoaXMuZ2V0VUlBY2NvdW50Q29uZmlnKCkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChjb25maWc6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmVzb2x2ZShjb25maWcpO1xyXG4gICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG4gIC8qKlxyXG4gICAgICogXHJcbiAgICAgKi9cclxuICBnZXRVSUFjY291bnRDb25maWcoKSB7XHJcbiAgICBjb25zdCBwYXRoID0gdGhpcy5zaGFyZWRTZXJ2aWNlLmdldENvbmZpZ1BhdGgoKSArIHRoaXMuc2hhcmVkU2VydmljZS5nZXRVbmlxdWVJRCgpICsgJy9hY2NvdW50X2NvbmZpZy5qc29uP3Q9JyArIG5ldyBEYXRlKCk7XHJcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlTWV0YS5odHRwR2V0KHBhdGgpO1xyXG4gIH1cclxuICBcclxuICBnZXRVc2VySW5mb3JtYXRpb24odW5pcXVlSWQsIHVzZXJJZCkge1xyXG4gICAgY29uc3QgX3RoaXMgPSB0aGlzO1xyXG4gICAgbGV0IGxpc3RPZlR5cGVzID0gJ3Byb3ZpZGVyQnVzaW5lc3NQcm9maWxlLHByb3ZpZGVyVmlydHVhbEZpZWxkcyc7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcclxuICAgICAgX3RoaXMuZ2V0SnNvbnNieVR5cGVzKHVuaXF1ZUlkLCB1c2VySWQsIGxpc3RPZlR5cGVzKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHVzZXJBY2NvdW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJlc29sdmUodXNlckFjY291bnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIl19
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvamNvbnN1bWVyLXNoYXJlZC9zcmMvbGliL2FjY291bnQtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVEzQyxNQUFNLE9BQU8sY0FBYztJQVNmO0lBQ0E7SUFDQTtJQUNBO0lBVlYsYUFBYSxDQUFNO0lBQ25CLGNBQWMsQ0FBTTtJQUNwQixnQkFBZ0IsQ0FBTTtJQUN0QixXQUFXLENBQU07SUFDakIsTUFBTSxHQUFRLEVBQUUsQ0FBQztJQUVqQixZQUNVLFlBQW1CLEVBQ25CLFdBQWlCLEVBQ2pCLFdBQXdCLEVBQ3hCLGFBQTRCO1FBSDVCLGlCQUFZLEdBQVosWUFBWSxDQUFPO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFNO1FBQ2pCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQUksQ0FBQztJQUUzQyxjQUFjLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFDRCxTQUFTLENBQUMsTUFBTTtRQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxRQUFRO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFDRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFj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LEdBQUcsK0NBQStDLENBQUM7UUFDbEUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFVLE9BQU87WUFDbEMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FDNUQsQ0FBQyxXQUFnQixFQUFFLEVBQUU7Z0JBQ25CLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN2QixDQUFDLENBQ0YsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzt3R0FoTlUsY0FBYzs0R0FBZCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1ldGEsIFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2VydmljZU1ldGEgfSBmcm9tICcuL3NlcnZpY2UtbWV0YSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY2NvdW50U2VydmljZSB7XHJcblxyXG4gIGFjY291bnRDb25maWc6IGFueTtcclxuICBhY3RpdmVMb2NhdGlvbjogYW55O1xyXG4gIGFjY291bnRMb2NhdGlvbnM6IGFueTtcclxuICBhY3RpdmVTdG9yZTogYW55O1xyXG4gIHN0b3JlczogYW55ID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFRpdGxlLFxyXG4gICAgcHJpdmF0ZSBtZXRhU2VydmljZTogTWV0YSxcclxuICAgIHByaXZhdGUgc2VydmljZU1ldGE6IFNlcnZpY2VNZXRhLFxyXG4gICAgcHJpdmF0ZSBzaGFyZWRTZXJ2aWNlOiBTaGFyZWRTZXJ2aWNlKSB7IH1cclxuXHJcbiAgc2V0QWN0aXZlU3RvcmUoc3RvcmU6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVTdG9yZSA9IHN0b3JlO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWN0aXZlU3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVTdG9yZTtcclxuICB9XHJcblxyXG4gIGdldEFjY291bnRDb25maWcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY2NvdW50Q29uZmlnO1xyXG4gIH1cclxuICBzZXRTdG9yZXMoc3RvcmVzKSB7XHJcbiAgICB0aGlzLnN0b3JlcyA9IHN0b3JlcztcclxuICB9XHJcbiAgZ2V0U3RvcmVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmVzO1xyXG4gIH1cclxuICBzZXRBY3RpdmVMb2NhdGlvbihsb2NhdGlvbikge1xyXG4gICAgdGhpcy5hY3RpdmVMb2NhdGlvbiA9IGxvY2F0aW9uO1xyXG4gIH1cclxuICBnZXRBY3RpdmVMb2NhdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZUxvY2F0aW9uO1xyXG4gIH1cclxuICBzZXRBY2NvdW50TG9jYXRpb25zKGxvY2F0aW9ucykge1xyXG4gICAgdGhpcy5hY2NvdW50TG9jYXRpb25zID0gbG9jYXRpb25zO1xyXG4gIH1cclxuICBnZXRBY2NvdW50TG9jYXRpb25zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWNjb3VudExvY2F0aW9ucztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBNZXRob2Qgd2hpY2ggcmV0dXJucyB0aGUgSnNvbnNcclxuICAgICogQHBhcmFtIGFjY291bnRVbmlxdWVJZCBUaGUgVW5pcXVlIElkIHdoaWNoIHJlcHJlc2VudHMgUzMgQnVja2V0IGZvciBhIHBhcnRpY3VsYXIgQWNjb3VudFxyXG4gICAgKiBAcGFyYW0gbGlzdE9mVXJsVHlwZXMgVHlwZSBvZiB0aGUgVXJsIGVnLiBzZXJ2aWNlcywgYnVzaW5lc3NQcm9maWxlIGV0Yy5cclxuICAgICogQHJldHVybnMgeyBcInNlcnZpY2VzXCI6ICdzZXJ2aWNlcy5qc29uJywgXCJidXNpbmVzc1Byb2ZpbGVcIjogYnVzaW5lc3Nwcm9maWxlLmpzb259XHJcbiAgKi9cclxuICBnZXRKc29uc2J5VHlwZXMoYWNjb3VudFVuaXF1ZUlkOiBhbnksIHVzZXJJZDogYW55LCBsaXN0T2ZVcmxUeXBlczogYW55KSB7XHJcbiAgICBsZXQgcGF0aCA9ICdwcm92aWRlci9hY2NvdW50L3NldHRpbmdzL2NvbmZpZy8nICsgYWNjb3VudFVuaXF1ZUlkO1xyXG4gICAgaWYgKHVzZXJJZCkge1xyXG4gICAgICBwYXRoID0gcGF0aCArICcvJyArIHVzZXJJZDtcclxuICAgIH1cclxuICAgIHBhdGggPSBwYXRoICsgJy8nICsgbGlzdE9mVXJsVHlwZXM7XHJcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlTWV0YS5odHRwR2V0KHBhdGgpO1xyXG4gIH1cclxuICAvKipcclxuICAqIFxyXG4gICogQHBhcmFtIGpzb25TdHJfT2JqIFxyXG4gICovXHJcbiAgZ2V0SnNvbihqc29uU3RyX09iajogYW55KSB7XHJcbiAgICBpZiAoanNvblN0cl9PYmopIHtcclxuICAgICAgaWYgKHR5cGVvZiBqc29uU3RyX09iaiA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICByZXR1cm4ganNvblN0cl9PYmo7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoanNvblN0cl9PYmopO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgc2V0SWNvbih1cmwpIHtcclxuICAgIGxldCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpLFxyXG4gICAgICBvbGRMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R5bmFtaWMtZmF2aWNvbicpO1xyXG4gICAgbGluay5pZCA9ICdkeW5hbWljLWZhdmljb24nO1xyXG4gICAgbGluay5yZWwgPSAnc2hvcnRjdXQgaWNvbic7XHJcbiAgICBsaW5rLmhyZWYgPSB1cmw7XHJcbiAgICBpZiAob2xkTGluaykge1xyXG4gICAgICBkb2N1bWVudC5oZWFkLnJlbW92ZUNoaWxkKG9sZExpbmspO1xyXG4gICAgfVxyXG4gICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChsaW5rKTtcclxuICB9XHJcbiAgZ2V0QWNjb3VudEluZm9CeUlkKCkge1xyXG4gICAgY29uc3QgX3RoaXMgPSB0aGlzO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgaWYgKF90aGlzLnNoYXJlZFNlcnZpY2UuZ2V0QWNjb3VudEluZm8oKSkge1xyXG4gICAgICAgIHJlc29sdmUoX3RoaXMuc2hhcmVkU2VydmljZS5nZXRBY2NvdW50SW5mbygpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCB1bmlxdWVJZCA9IF90aGlzLnNoYXJlZFNlcnZpY2UuZ2V0VW5pcXVlSUQoKTtcclxuICAgICAgICBjb25zdCBjYWNoZUtleSA9ICdhY2NvdW50X2luZm9fZGF0YV8nICsgdW5pcXVlSWQ7XHJcbiAgICAgICAgY29uc3QgY2FjaGVkQWNjb3VudFN0ciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGNhY2hlS2V5KTtcclxuICAgICAgICBsZXQgY2FjaGVkQWNjb3VudDogYW55ID0gbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKGNhY2hlZEFjY291bnRTdHIpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNhY2hlZEFjY291bnQgPSBKU09OLnBhcnNlKGNhY2hlZEFjY291bnRTdHIpO1xyXG4gICAgICAgICAgICBfdGhpcy5zaGFyZWRTZXJ2aWNlLnNldEFjY291bnRJbmZvKGNhY2hlZEFjY291bnQpO1xyXG4gICAgICAgICAgICBjb25zdCBhY2NvdW50UHJvZmlsZSA9IF90aGlzLmdldEpzb24oY2FjaGVkQWNjb3VudFsnYnVzaW5lc3NQcm9maWxlJ10pO1xyXG4gICAgICAgICAgICBfdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUoYWNjb3VudFByb2ZpbGUuYnVzaW5lc3NOYW1lKTtcclxuICAgICAgICAgICAgaWYgKGFjY291bnRQcm9maWxlLmxvZ28gJiYgYWNjb3VudFByb2ZpbGUubG9nby51cmwpIHtcclxuICAgICAgICAgICAgICBfdGhpcy5zZXRJY29uKGFjY291bnRQcm9maWxlLmxvZ28udXJsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBfdGhpcy5tZXRhU2VydmljZS5hZGRUYWdzKFtcclxuICAgICAgICAgICAgICB7IG5hbWU6ICdkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IGFjY291bnRQcm9maWxlLmJ1c2luZXNzRGVzYyB9LFxyXG4gICAgICAgICAgICAgIHsgcHJvcGVydHk6ICdvZzp0aXRsZScsIGNvbnRlbnQ6IGFjY291bnRQcm9maWxlLmJ1c2luZXNzTmFtZSB9LFxyXG4gICAgICAgICAgICAgIHsgcHJvcGVydHk6ICdvZzpzaXRlX25hbWUnLCBjb250ZW50OiBhY2NvdW50UHJvZmlsZS5idXNpbmVzc05hbWUgfSxcclxuICAgICAgICAgICAgICB7IHByb3BlcnR5OiAnb2c6ZGVzY3JpcHRpb24nLCBjb250ZW50OiBhY2NvdW50UHJvZmlsZS5idXNpbmVzc0Rlc2MgfSxcclxuICAgICAgICAgICAgICB7IHByb3BlcnR5OiAnb2c6aW1hZ2UnLCBjb250ZW50OiAoYWNjb3VudFByb2ZpbGUubG9nbz8udXJsKSB8fCAnJyB9LFxyXG4gICAgICAgICAgICAgIHsgcHJvcGVydHk6ICdvZzp1cmwnLCBjb250ZW50OiB3aW5kb3cubG9jYXRpb24uaHJlZiB9XHJcbiAgICAgICAgICAgIF0pO1xyXG5cclxuICAgICAgICAgICAgLy8gQ2FjaGUgY29uZmlndXJhdGlvbiBsb2FkaW5nXHJcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ0NhY2hlS2V5ID0gJ2FjY291bnRfY29uZmlnXycgKyB1bmlxdWVJZDtcclxuICAgICAgICAgICAgY29uc3QgY2FjaGVkQ29uZmlnU3RyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oY29uZmlnQ2FjaGVLZXkpO1xyXG4gICAgICAgICAgICBpZiAoY2FjaGVkQ29uZmlnU3RyKSB7XHJcbiAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIF90aGlzLnNoYXJlZFNlcnZpY2Uuc2V0QWNjb3VudENvbmZpZyhKU09OLnBhcnNlKGNhY2hlZENvbmZpZ1N0cikpO1xyXG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJlc29sdmUoY2FjaGVkQWNjb3VudCk7XHJcbiAgICAgICAgICB9IGNhdGNoKGUpIHt9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBfdGhpcy5nZXRBY2NvdW50SW5mb1Byb21pc2UoKS50aGVuKChhY2NvdW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGNhY2hlS2V5LCBKU09OLnN0cmluZ2lmeShhY2NvdW50KSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7fVxyXG5cclxuICAgICAgICAgIF90aGlzLmdldEFjY291bnRDb25maWd1cmF0aW9uKCkudGhlbigoY29uZmlnOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbmZpZykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNvbmZpZ0NhY2hlS2V5ID0gJ2FjY291bnRfY29uZmlnXycgKyB1bmlxdWVJZDtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oY29uZmlnQ2FjaGVLZXksIEpTT04uc3RyaW5naWZ5KGNvbmZpZykpO1xyXG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XHJcbiAgICAgICAgICAgICAgX3RoaXMuc2hhcmVkU2VydmljZS5zZXRBY2NvdW50Q29uZmlnKGNvbmZpZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIF90aGlzLnNoYXJlZFNlcnZpY2Uuc2V0QWNjb3VudEluZm8oYWNjb3VudCk7XHJcbiAgICAgICAgICBjb25zdCBhY2NvdW50UHJvZmlsZSA9IF90aGlzLmdldEpzb24oYWNjb3VudFsnYnVzaW5lc3NQcm9maWxlJ10pO1xyXG4gICAgICAgICAgX3RoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKGFjY291bnRQcm9maWxlLmJ1c2luZXNzTmFtZSk7XHJcbiAgICAgICAgICBpZiAoYWNjb3VudFByb2ZpbGUubG9nbyAmJiBhY2NvdW50UHJvZmlsZS5sb2dvLnVybCkge1xyXG4gICAgICAgICAgICBfdGhpcy5zZXRJY29uKGFjY291bnRQcm9maWxlLmxvZ28udXJsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIF90aGlzLm1ldGFTZXJ2aWNlLmFkZFRhZ3MoW1xyXG4gICAgICAgICAgICB7IG5hbWU6ICdkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IGFjY291bnRQcm9maWxlLmJ1c2luZXNzRGVzYyB9LFxyXG4gICAgICAgICAgICB7IHByb3BlcnR5OiAnb2c6dGl0bGUnLCBjb250ZW50OiBhY2NvdW50UHJvZmlsZS5idXNpbmVzc05hbWUgfSxcclxuICAgICAgICAgICAgeyBwcm9wZXJ0eTogJ29nOnNpdGVfbmFtZScsIGNvbnRlbnQ6IGFjY291bnRQcm9maWxlLmJ1c2luZXNzTmFtZSB9LFxyXG4gICAgICAgICAgICB7IHByb3BlcnR5OiAnb2c6ZGVzY3JpcHRpb24nLCBjb250ZW50OiBhY2NvdW50UHJvZmlsZS5idXNpbmVzc0Rlc2MgfSxcclxuICAgICAgICAgICAgeyBwcm9wZXJ0eTogJ29nOmltYWdlJywgY29udGVudDogKGFjY291bnRQcm9maWxlLmxvZ28/LnVybCkgfHwgJycgfSxcclxuICAgICAgICAgICAgeyBwcm9wZXJ0eTogJ29nOnVybCcsIGNvbnRlbnQ6IHdpbmRvdy5sb2NhdGlvbi5ocmVmIH1cclxuICAgICAgICAgIF0pO1xyXG5cclxuICAgICAgICAgIGlmICghY2FjaGVkQWNjb3VudCkge1xyXG4gICAgICAgICAgICByZXNvbHZlKGFjY291bnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgaWYgKCFjYWNoZWRBY2NvdW50KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoX3RoaXMuc2hhcmVkU2VydmljZS5nZXRBY2NvdW50SW5mbygpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldEFjY291bnRJbmZvUHJvbWlzZSgpIHtcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgIGxldCBhY2NvdW50UzNMaXN0ID0gJ3NldHRpbmdzLGNvdXBvbixwcm92aWRlckNvdXBvbixhcHBvaW50bWVudHNldHRpbmdzLHRlcm1pbm9sb2dpZXMsbG9jYXRpb24sYnVzaW5lc3NQcm9maWxlLHZpcnR1YWxGaWVsZHMsc2VydmljZXMsYXBwdFNlcnZpY2VzLGRvbmF0aW9uU2VydmljZXMsZGVwYXJ0bWVudFByb3ZpZGVycyxnYWxsZXJ5JztcclxuICAgICAgX3RoaXMuZ2V0SnNvbnNieVR5cGVzKF90aGlzLnNoYXJlZFNlcnZpY2UuZ2V0VW5pcXVlSUQoKSwgbnVsbCwgYWNjb3VudFMzTGlzdCkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChhY2NvdW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJlc29sdmUoYWNjb3VudClcclxuICAgICAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KVxyXG4gIH1cclxuICBnZXRBY2NvdW50Q29uZmlndXJhdGlvbigpIHtcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xyXG4gICAgICBfdGhpcy5nZXRVSUFjY291bnRDb25maWcoKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGNvbmZpZzogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKGNvbmZpZyk7XHJcbiAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICB9KVxyXG4gICAgfSlcclxuICB9XHJcbiAgLyoqXHJcbiAgICAgKiBcclxuICAgICAqL1xyXG4gIGdldFVJQWNjb3VudENvbmZpZygpIHtcclxuICAgIGNvbnN0IHBhdGggPSB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0Q29uZmlnUGF0aCgpICsgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldFVuaXF1ZUlEKCkgKyAnL2FjY291bnRfY29uZmlnLmpzb24/dD0nICsgbmV3IERhdGUoKTtcclxuICAgIHJldHVybiB0aGlzLnNlcnZpY2VNZXRhLmh0dHBHZXQocGF0aCk7XHJcbiAgfVxyXG4gIFxyXG4gIGdldFVzZXJJbmZvcm1hdGlvbih1bmlxdWVJZCwgdXNlcklkKSB7XHJcbiAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgbGlzdE9mVHlwZXMgPSAncHJvdmlkZXJCdXNpbmVzc1Byb2ZpbGUscHJvdmlkZXJWaXJ0dWFsRmllbGRzJztcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xyXG4gICAgICBfdGhpcy5nZXRKc29uc2J5VHlwZXModW5pcXVlSWQsIHVzZXJJZCwgbGlzdE9mVHlwZXMpLnN1YnNjcmliZShcclxuICAgICAgICAodXNlckFjY291bnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmVzb2x2ZSh1c2VyQWNjb3VudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -724,9 +724,54 @@ class AccountService {
724
724
  resolve(_this.sharedService.getAccountInfo());
725
725
  }
726
726
  else {
727
+ const uniqueId = _this.sharedService.getUniqueID();
728
+ const cacheKey = 'account_info_data_' + uniqueId;
729
+ const cachedAccountStr = localStorage.getItem(cacheKey);
730
+ let cachedAccount = null;
731
+ if (cachedAccountStr) {
732
+ try {
733
+ cachedAccount = JSON.parse(cachedAccountStr);
734
+ _this.sharedService.setAccountInfo(cachedAccount);
735
+ const accountProfile = _this.getJson(cachedAccount['businessProfile']);
736
+ _this.titleService.setTitle(accountProfile.businessName);
737
+ if (accountProfile.logo && accountProfile.logo.url) {
738
+ _this.setIcon(accountProfile.logo.url);
739
+ }
740
+ _this.metaService.addTags([
741
+ { name: 'description', content: accountProfile.businessDesc },
742
+ { property: 'og:title', content: accountProfile.businessName },
743
+ { property: 'og:site_name', content: accountProfile.businessName },
744
+ { property: 'og:description', content: accountProfile.businessDesc },
745
+ { property: 'og:image', content: (accountProfile.logo?.url) || '' },
746
+ { property: 'og:url', content: window.location.href }
747
+ ]);
748
+ // Cache configuration loading
749
+ const configCacheKey = 'account_config_' + uniqueId;
750
+ const cachedConfigStr = localStorage.getItem(configCacheKey);
751
+ if (cachedConfigStr) {
752
+ try {
753
+ _this.sharedService.setAccountConfig(JSON.parse(cachedConfigStr));
754
+ }
755
+ catch (e) { }
756
+ }
757
+ resolve(cachedAccount);
758
+ }
759
+ catch (e) { }
760
+ }
727
761
  _this.getAccountInfoPromise().then((account) => {
762
+ try {
763
+ localStorage.setItem(cacheKey, JSON.stringify(account));
764
+ }
765
+ catch (e) { }
728
766
  _this.getAccountConfiguration().then((config) => {
729
- _this.sharedService.setAccountConfig(config);
767
+ if (config) {
768
+ const configCacheKey = 'account_config_' + uniqueId;
769
+ try {
770
+ localStorage.setItem(configCacheKey, JSON.stringify(config));
771
+ }
772
+ catch (e) { }
773
+ _this.sharedService.setAccountConfig(config);
774
+ }
730
775
  });
731
776
  _this.sharedService.setAccountInfo(account);
732
777
  const accountProfile = _this.getJson(account['businessProfile']);
@@ -736,19 +781,20 @@ class AccountService {
736
781
  }
737
782
  _this.metaService.addTags([
738
783
  { name: 'description', content: accountProfile.businessDesc },
739
- { name: 'og:title', content: accountProfile.businessName },
740
- { name: 'og:site_name', content: accountProfile.businessName },
741
- { name: 'og:description', content: accountProfile.businessDesc },
742
- { name: 'og:image', content: (accountProfile.logo && accountProfile.logo.url) ? accountProfile.logo.url : '' }
743
- // <meta property="og:url" content="https://yourwebsite.com/page-url">
744
- // <meta property="og:image" content="https://yourwebsite.com/image.jpg">
745
- // {name: 'keywords', content: 'Angular, Universal, Example'},
746
- // {name: 'robots', content: 'index, follow'}
784
+ { property: 'og:title', content: accountProfile.businessName },
785
+ { property: 'og:site_name', content: accountProfile.businessName },
786
+ { property: 'og:description', content: accountProfile.businessDesc },
787
+ { property: 'og:image', content: (accountProfile.logo?.url) || '' },
788
+ { property: 'og:url', content: window.location.href }
747
789
  ]);
748
- resolve(_this.sharedService.getAccountInfo());
790
+ if (!cachedAccount) {
791
+ resolve(account);
792
+ }
749
793
  }).catch((error) => {
750
794
  console.log(error);
751
- resolve(_this.sharedService.getAccountInfo());
795
+ if (!cachedAccount) {
796
+ resolve(_this.sharedService.getAccountInfo());
797
+ }
752
798
  });
753
799
  }
754
800
  });