@alauda-fe/common 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/api/auth-api.service.d.ts +14 -0
  2. package/api/platform-ui.service.d.ts +1 -0
  3. package/api/public-api.d.ts +1 -0
  4. package/array-form-table/form/component.d.ts +7 -3
  5. package/assets/icons/icon-refresh-drag.svg +1 -0
  6. package/authorization/interceptor.service.d.ts +2 -0
  7. package/authorization/public-api.d.ts +1 -0
  8. package/authorization/session-manage.service.d.ts +2 -4
  9. package/authorization/state.service.d.ts +9 -8
  10. package/authorization/storage-token.d.ts +4 -10
  11. package/core/abstract/base-nested-form-control.d.ts +1 -1
  12. package/core/directives/feature-gate.directive.d.ts +2 -1
  13. package/core/directives/scroll-to-first-invalid.directive.d.ts +1 -1
  14. package/core/pipes/minimum-format.pipe.d.ts +1 -1
  15. package/core/services/feature-gate.service.d.ts +2 -1
  16. package/core/types/commons.d.ts +2 -0
  17. package/core/types/k8s/crd.d.ts +64 -0
  18. package/core/types/resource-definitions.d.ts +3 -3
  19. package/core/utils/cache-store.d.ts +15 -13
  20. package/core/utils/common.d.ts +1 -0
  21. package/core/utils/version.d.ts +1 -1
  22. package/effect-directive/event.directive.d.ts +36 -0
  23. package/esm2022/api/auth-api.service.mjs +34 -0
  24. package/esm2022/api/platform-ui.service.mjs +2 -1
  25. package/esm2022/api/public-api.mjs +2 -1
  26. package/esm2022/array-form-table/form/component.mjs +30 -15
  27. package/esm2022/authorization/interceptor.service.mjs +32 -10
  28. package/esm2022/authorization/public-api.mjs +2 -1
  29. package/esm2022/authorization/session-manage.service.mjs +11 -24
  30. package/esm2022/authorization/state.service.mjs +51 -23
  31. package/esm2022/authorization/storage-token.mjs +12 -88
  32. package/esm2022/core/directives/feature-gate.directive.mjs +7 -4
  33. package/esm2022/core/guards/feature.guard.mjs +3 -2
  34. package/esm2022/core/pipes/minimum-format.pipe.mjs +4 -3
  35. package/esm2022/core/services/feature-gate.service.mjs +4 -3
  36. package/esm2022/core/types/commons.mjs +1 -1
  37. package/esm2022/core/types/k8s/crd.mjs +8 -1
  38. package/esm2022/core/types/resource-definitions.mjs +2 -2
  39. package/esm2022/core/utils/cache-store.mjs +51 -29
  40. package/esm2022/core/utils/common.mjs +9 -1
  41. package/esm2022/effect-directive/event.directive.mjs +79 -4
  42. package/esm2022/k8s-resource-list/footer/component.mjs +7 -5
  43. package/esm2022/multi-search/multi-search-tags/component.mjs +2 -2
  44. package/esm2022/multi-search/types.mjs +1 -1
  45. package/esm2022/page-scaffold/page-header/account-menu/component/component.mjs +3 -8
  46. package/esm2022/pod-status/component.mjs +34 -55
  47. package/esm2022/searchable-selector/component.mjs +2 -2
  48. package/k8s-resource-list/k8s-resource-paged-list.d.ts +2 -2
  49. package/multi-search/types.d.ts +1 -0
  50. package/package.json +1 -1
  51. package/pod-status/component.d.ts +1 -3
  52. package/styles/tailwind-preset.scss +1 -1
  53. package/table/component.d.ts +1 -1
  54. package/table/helper.d.ts +1 -1
  55. package/table/module.d.ts +1 -1
@@ -4,13 +4,16 @@
4
4
  */
5
5
  import { HttpClient } from '@angular/common/http';
6
6
  import { Injectable, inject } from '@angular/core';
7
- import { EMPTY, of, catchError, map, shareReplay, switchMap, tap, pipe, } from 'rxjs';
8
- import { NOT_NOTIFY_ON_ERROR_HEADERS, publishRef, getTopWindow, skipError, } from '../core/public-api';
7
+ import { EMPTY, of, catchError, map, shareReplay, switchMap, tap, pipe, timeout, timer, fromEvent, merge, } from 'rxjs';
8
+ import { NOT_NOTIFY_ON_ERROR_HEADERS, publishRef, getTopWindow, skipError, getGlobalEnvironments, TRUE, } from '../core/public-api';
9
9
  import { getInitUrl } from './app-init-url';
10
+ import { HEARTBEAT_POLLING } from './session-manage.service';
11
+ import { cleanStorageToken, readStorageAliveRecord, readStorageToken, refreshStorageAliveRecord, writeStorageToken, } from './storage-token';
10
12
  import * as i0 from "@angular/core";
11
13
  export const STORAGE_TYPE_KEY = 'token_storage';
12
14
  export const CODE_KEY = 'code';
13
- export const ID_TOKEN = 'id_token';
15
+ export const ID_TOKEN_KEY = 'id_token';
16
+ const LOADING_CACHE = 15_000;
14
17
  const LOGIN_API = '/console/api/v2/token/login';
15
18
  const LOGOUT_API = '/console/api/v2/token/logout';
16
19
  const CALLBACK_API = '/console/api/v2/token/callback';
@@ -26,21 +29,39 @@ export class AuthorizationStateService {
26
29
  ...token,
27
30
  info,
28
31
  })))))), tap(state => {
29
- this.stateSnapshot = state;
30
32
  if (!state.info) {
31
33
  this.logout(true);
32
34
  }
35
+ this.stateSnapshot = state;
33
36
  this.payloadSnapshot = state.info;
34
37
  }), shareReplay(1));
35
38
  this.checkTokenCache$ = null;
36
39
  this.stateSnapshot = null;
40
+ if (getGlobalEnvironments('CLOSE_BROWSER_END_SESSION') === TRUE) {
41
+ this.state$
42
+ .pipe(switchMap(state => {
43
+ const aliveRecord = readStorageAliveRecord();
44
+ if (!aliveRecord ||
45
+ Date.now() - aliveRecord > HEARTBEAT_POLLING + LOADING_CACHE) {
46
+ this.logout();
47
+ return EMPTY;
48
+ }
49
+ return of(state);
50
+ }), switchMap(() => {
51
+ return merge(timer(0, HEARTBEAT_POLLING), fromEvent(window, 'beforeunload'));
52
+ }))
53
+ .subscribe(refreshStorageAliveRecord);
54
+ }
37
55
  }
38
56
  logout(specificUrl = false) {
39
- this.redirectToDex(specificUrl && location.href);
40
- }
41
- logoutAudit() {
42
- return this.http.get(LOGOUT_API, {
57
+ this.http
58
+ .get(LOGOUT_API, {
43
59
  headers: NOT_NOTIFY_ON_ERROR_HEADERS,
60
+ })
61
+ .pipe(timeout(1000))
62
+ .subscribe(() => {
63
+ cleanStorageToken();
64
+ this.redirectToDex(specificUrl && location.href);
44
65
  });
45
66
  }
46
67
  async redirectToDex(redirectUrl = null) {
@@ -64,7 +85,9 @@ export class AuthorizationStateService {
64
85
  if (this.refreshTokenCache$) {
65
86
  return this.refreshTokenCache$;
66
87
  }
67
- this.refreshTokenCache$ = this.http.get(TOKEN_REFRESH_API).pipe(tap(() => {
88
+ this.refreshTokenCache$ = this.http
89
+ .get(TOKEN_REFRESH_API)
90
+ .pipe(tap(() => {
68
91
  this.refreshTokenCache$ = null;
69
92
  }), catchError(() => {
70
93
  this.logout(true);
@@ -94,6 +117,9 @@ export class AuthorizationStateService {
94
117
  }
95
118
  return this.state$.pipe(map(state => state.info || {}));
96
119
  }
120
+ getTokenByStorage() {
121
+ return readStorageToken();
122
+ }
97
123
  getAuthConfiguration() {
98
124
  return this.http
99
125
  .get(LOGIN_API)
@@ -106,32 +132,32 @@ export class AuthorizationStateService {
106
132
  getExistedToken(config) {
107
133
  return this.getTokenFromLocal(config).pipe(catchError(error => {
108
134
  console.error(error);
109
- return of({ expireAt: '', issuedAt: '' });
135
+ return of({});
110
136
  }));
111
137
  }
112
138
  getTokenFromLocal(config) {
113
139
  const { queryParams, hashParams } = this.getParams();
114
140
  const code = queryParams[CODE_KEY] || hashParams[CODE_KEY];
115
- const idToken = queryParams[ID_TOKEN] || hashParams[ID_TOKEN];
116
- if (code) {
117
- return this.getTokenByCode(code, config.state);
118
- }
119
- if (idToken) {
120
- return this.getCookieByToken(idToken);
141
+ const idToken = queryParams[ID_TOKEN_KEY] || hashParams[ID_TOKEN_KEY];
142
+ if (!code && !idToken) {
143
+ return of(null);
121
144
  }
122
- return of(null);
145
+ refreshStorageAliveRecord();
146
+ return code
147
+ ? this.setCookieByCode(code, config.state)
148
+ : this.setCookieByToken(idToken);
123
149
  }
124
- getTokenByCode(code, state) {
150
+ setCookieByCode(code, state) {
125
151
  return this.http
126
152
  .get(CALLBACK_API, {
127
153
  params: { code, state },
128
154
  })
129
155
  .pipe(mapTokenResponse());
130
156
  }
131
- getCookieByToken(idToken) {
157
+ setCookieByToken(idToken) {
132
158
  return this.http
133
159
  .get(CALLBACK_API, {
134
- params: { idToken },
160
+ params: { id_token: idToken },
135
161
  })
136
162
  .pipe(mapTokenResponse());
137
163
  }
@@ -148,7 +174,7 @@ export class AuthorizationStateService {
148
174
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthorizationStateService, [{
149
175
  type: Injectable,
150
176
  args: [{ providedIn: 'root' }]
151
- }], null, null); })();
177
+ }], () => [], null); })();
152
178
  function replaceRedirectUrl(dexUrl, redirectUrl) {
153
179
  const [path, queryParams] = dexUrl.split('?');
154
180
  const replacedQueryParams = queryParams
@@ -183,11 +209,13 @@ function parseParams(query) {
183
209
  }, {});
184
210
  }
185
211
  function mapTokenResponse() {
186
- return pipe(map(({ token_type, token_storage, expire_at, issued_at }) => ({
212
+ return pipe(tap(({ id_token: idToken }) => {
213
+ writeStorageToken(idToken);
214
+ }), map(({ token_type, token_storage, expire_at, issued_at }) => ({
187
215
  storageType: token_storage,
188
216
  tokenType: token_type,
189
217
  expireAt: expire_at,
190
218
  issuedAt: issued_at,
191
219
  })));
192
220
  }
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3N0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxLQUFLLEVBRUwsRUFBRSxFQUNGLFVBQVUsRUFDVixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxHQUFHLEVBQ0gsSUFBSSxHQUNMLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUVMLDJCQUEyQixFQUMzQixVQUFVLEVBQ1YsWUFBWSxFQUNaLFNBQVMsR0FDVixNQUFNLG9CQUFvQixDQUFDO0FBRzVCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFvQjVDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztBQUNoRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFFbkMsTUFBTSxTQUFTLEdBQUcsNkJBQTZCLENBQUM7QUFDaEQsTUFBTSxVQUFVLEdBQUcsOEJBQThCLENBQUM7QUFDbEQsTUFBTSxZQUFZLEdBQUcsZ0NBQWdDLENBQUM7QUFDdEQsTUFBTSxpQkFBaUIsR0FBRywrQkFBK0IsQ0FBQztBQUMxRCxNQUFNLGNBQWMsR0FBRyw0QkFBNEIsQ0FBQztBQUNwRCxNQUFNLHFCQUFxQixHQUFHLGdDQUFnQyxDQUFDO0FBRS9ELE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLDBCQUEwQixDQUFDLENBQUMsQ0FBQztBQUc1RSxNQUFN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QyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdEMsT0FBTztZQUNMLEdBQUcsR0FBRztZQUNOLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSztTQUNiLENBQUM7SUFDSixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDVCxDQUFDO0FBRUQsU0FBUyxnQkFBZ0I7SUFDdkIsT0FBTyxJQUFJLENBQ1QsR0FBRyxDQUNELENBQUMsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkUsV0FBVyxFQUFFLGFBQWE7UUFDMUIsU0FBUyxFQUFFLFVBQVU7UUFDckIsUUFBUSxFQUFFLFNBQVM7UUFDbkIsUUFBUSxFQUFFLFNBQVM7S0FDcEIsQ0FBQyxDQUNILENBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICogQG1vZHVsZSBhdXRob3JpemF0aW9uXG4gKi9cblxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRU1QVFksXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBjYXRjaEVycm9yLFxuICBtYXAsXG4gIHNoYXJlUmVwbGF5LFxuICBzd2l0Y2hNYXAsXG4gIHRhcCxcbiAgcGlwZSxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIFN0cmluZ01hcCxcbiAgTk9UX05PVElGWV9PTl9FUlJPUl9IRUFERVJTLFxuICBwdWJsaXNoUmVmLFxuICBnZXRUb3BXaW5kb3csXG4gIHNraXBFcnJvcixcbn0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IEFjY291bnRJbmZvIH0gZnJvbSAnLi4vcGFnZS1zY2FmZm9sZC9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHsgZ2V0SW5pdFVybCB9IGZyb20gJy4vYXBwLWluaXQtdXJsJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRob3JpemF0aW9uU3RhdGUge1xuICBleHBpcmVBdD86IHN0cmluZztcbiAgaXNzdWVkQXQ/OiBzdHJpbmc7XG4gIHN0YXRlPzogc3RyaW5nO1xuICBhdXRoVXJsPzogc3RyaW5nO1xuICBsb2dvdXRVcmw/OiBzdHJpbmc7XG4gIGluZm8/OiBBY2NvdW50SW5mbztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUb2tlblJlc3BvbnNlIHtcbiAgdG9rZW5fc3RvcmFnZTogU3RvcmFnZVR5cGU7XG4gIHRva2VuX3R5cGU6IHN0cmluZztcbiAgZXhwaXJlX2F0OiBzdHJpbmc7XG4gIGlzc3VlZF9hdDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBTdG9yYWdlVHlwZSA9ICdsb2NhbCcgfCAnc2Vzc2lvbic7XG5cbmV4cG9ydCBjb25zdCBTVE9SQUdFX1RZUEVfS0VZID0gJ3Rva2VuX3N0b3JhZ2UnO1xuZXhwb3J0IGNvbnN0IENPREVfS0VZID0gJ2NvZGUnO1xuZXhwb3J0IGNvbnN0IElEX1RPS0VOID0gJ2lkX3Rva2VuJztcblxuY29uc3QgTE9HSU5fQVBJID0gJy9jb25zb2xlL2FwaS92Mi90b2tlbi9sb2dpbic7XG5jb25zdCBMT0dPVVRfQVBJID0gJy9jb25zb2xlL2FwaS92Mi90b2tlbi9sb2dvdXQnO1xuY29uc3QgQ0FMTEJBQ0tfQVBJID0gJy9jb25zb2xlL2FwaS92Mi90b2tlbi9jYWxsYmFjayc7XG5jb25zdCBUT0tFTl9SRUZSRVNIX0FQSSA9ICcvY29uc29sZS9hcGkvdjIvdG9rZW4vcmVmcmVzaCc7XG5jb25zdCBUT0tFTl9JTkZPX0FQSSA9ICcvY29uc29sZS9hcGkvdjIvdG9rZW4vaW5mbyc7XG5jb25zdCBFWFRFUk5BTF9SRURJUkVDVF9BUEkgPSAnL2NvbnNvbGUvYXBpL3YyL3Rva2VuL3JlZGlyZWN0JztcblxuY29uc3QgUkVESVJFQ1RfVVJJUyA9IG5ldyBTZXQoWydyZWRpcmVjdF91cmknLCAncG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpJ10pO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhvcml6YXRpb25TdGF0ZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0ZSQgPSB0aGlzLmdldEF1dGhDb25maWd1cmF0aW9uKCkucGlwZShcbiAgICBzd2l0Y2hNYXAoY29uZmlnID0+XG4gICAgICB0aGlzLmdldEV4aXN0ZWRUb2tlbihjb25maWcpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCh0b2tlbiA9PlxuICAgICAgICAgIHRoaXMuaHR0cC5nZXQ8QWNjb3VudEluZm8+KFRPS0VOX0lORk9fQVBJLCB7fSkucGlwZShcbiAgICAgICAgICAgIHNraXBFcnJvcihudWxsKSxcbiAgICAgICAgICAgIG1hcChpbmZvID0+ICh7XG4gICAgICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICAgICAgLi4udG9rZW4sXG4gICAgICAgICAgICAgIGluZm8sXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgICB0YXAoc3RhdGUgPT4ge1xuICAgICAgdGhpcy5zdGF0ZVNuYXBzaG90ID0gc3RhdGU7XG4gICAgICBpZiAoIXN0YXRlLmluZm8pIHtcbiAgICAgICAgdGhpcy5sb2dvdXQodHJ1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLnBheWxvYWRTbmFwc2hvdCA9IHN0YXRlLmluZm87XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICk7XG5cbiAgcHJpdmF0ZSBjaGVja1Rva2VuQ2FjaGUkOiBPYnNlcnZhYmxlPHVua25vd24+ID0gbnVsbDtcbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW5DYWNoZSQ6IE9ic2VydmFibGU8dW5rbm93bj47XG4gIHN0YXRlU25hcHNob3Q6IEF1dGhvcml6YXRpb25TdGF0ZSA9IG51bGw7XG5cbiAgcGF5bG9hZFNuYXBzaG90OiBBY2NvdW50SW5mbztcblxuICBsb2dvdXQoc3BlY2lmaWNVcmwgPSBmYWxzZSkge1xuICAgIHRoaXMucmVkaXJlY3RUb0RleChzcGVjaWZpY1VybCAmJiBsb2NhdGlvbi5ocmVmKTtcbiAgfVxuXG4gIGxvZ291dEF1ZGl0KCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KExPR09VVF9BUEksIHtcbiAgICAgIGhlYWRlcnM6IE5PVF9OT1RJRllfT05fRVJST1JfSEVBREVSUyxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlZGlyZWN0VG9EZXgocmVkaXJlY3RVcmw6IHN0cmluZyA9IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuc3RhdGVTbmFwc2hvdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhyZWYgPSByZXBsYWNlUmVkaXJlY3RVcmwoXG4gICAgICB0aGlzLnN0YXRlU25hcHNob3QuYXV0aFVybCxcbiAgICAgIC8vIGF1dGhVcmwg5Lit55qEIHJlZGlyZWN0VXJsIOaYr+aguei3r+eUse+8jOaguei3r+eUseS6jOasoemHjeWumuWQkeWbniBwb3J0YWwg5pe25Lya5Lii5aSxIGNvZGUg5a+86Ie055m75b2V5aSx6LSlXG4gICAgICAvLyDlpoLmnpzlkI7mnJ/mnInlrprliLbljJbopoHmsYLpu5jorqTpppbpobXkuI3mmK8gcG9ydGFs77yM5Y+v5Lul5pS55Zue5LmL5YmN55qE5pa55qGI77yM5L2/55So5rWP6KeI5Zmo5a+86Iiq5omT5byAIGxvZ291dFVybO+8jOeEtuWQjiBkZXgg6YeN5a6a5ZCR5Yiw5qC56Lev55Sx77yM5qC56Lev55Sx6YeN5a6a5ZCR5Yiw6buY6K6k6aaW6aG177yM6aaW6aG15YaN5bCGIGF1dGhVcmwg5Lit55qEIHJlZGlyZWN0VXJsIOabv+aNouS4uuW9k+WJjSB1cmwg6Lez6L2s5YiwIGRleCDov5vooYznmbvlvZXvvJtcbiAgICAgIC8vIOacgOWlveeOr+Wig+WPmOmHj+WinuWKoOm7mOiupOmmlumhteWcsOWdgOaIluiAhSBkZXggcmVkaXJlY3RVcmwg55u05o6l5piv5q2j56Gu5Zyw5Z2AXG4gICAgICByZWRpcmVjdFVybCB8fCBsb2NhdGlvbi5vcmlnaW4gKyAnL2NvbnNvbGUtcG9ydGFsJyxcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGdldFRvcFdpbmRvdygpLmxvY2F0aW9uLmhyZWYgPSBocmVmO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gc2hvdWxkIG5ldmVyIGhhcHBlbiwganVzdCBmb3Igcm9idXN0bmVzcyBpbiBjYXNlIG9mIGNyb3NzLW9yaWdpbiBpZnJhbWVcbiAgICAgIGxvY2F0aW9uLmhyZWYgPSBocmVmO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hUb2tlbigpIHtcbiAgICBpZiAodGhpcy5yZWZyZXNoVG9rZW5DYWNoZSQpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlbkNhY2hlJDtcbiAgICB9XG5cbiAgICB0aGlzLnJlZnJlc2hUb2tlbkNhY2hlJCA9IHRoaXMuaHR0cC5nZXQoVE9LRU5fUkVGUkVTSF9BUEkpLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbkNhY2hlJCA9IG51bGw7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvZ291dCh0cnVlKTtcbiAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgfSksXG4gICAgICBwdWJsaXNoUmVmKCksXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlbkNhY2hlJDtcbiAgfVxuXG4gIGNoZWNrVG9rZW4oKSB7XG4gICAgaWYgKCF0aGlzLmNoZWNrVG9rZW5DYWNoZSQpIHtcbiAgICAgIHRoaXMuY2hlY2tUb2tlbkNhY2hlJCA9IHRoaXMuaHR0cC5nZXQoVE9LRU5fSU5GT19BUEkpLnBpcGUoXG4gICAgICAgIHRhcCh7XG4gICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGVja1Rva2VuQ2FjaGUkID0gbnVsbDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrVG9rZW5DYWNoZSQgPSBudWxsO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICBwdWJsaXNoUmVmKCksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jaGVja1Rva2VuQ2FjaGUkO1xuICB9XG5cbiAgZ2V0VG9rZW5QYXlsb2FkPFQ+KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlJC5waXBlKG1hcChzdGF0ZSA9PiBzdGF0ZS5pbmZvIGFzIFQpKTtcbiAgfVxuXG4gIGdldEFjY291bnRJbmZvKCkge1xuICAgIGlmICh0aGlzLnBheWxvYWRTbmFwc2hvdCkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMucGF5bG9hZFNuYXBzaG90KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUkLnBpcGUobWFwKHN0YXRlID0+IHN0YXRlLmluZm8gfHwge30pKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXV0aENvbmZpZ3VyYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDx7IGF1dGhfdXJsOiBzdHJpbmc7IHN0YXRlOiBzdHJpbmc7IGxvZ291dF91cmw6IHN0cmluZyB9PihMT0dJTl9BUEkpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiAoe1xuICAgICAgICAgIGF1dGhVcmw6IHJlcy5hdXRoX3VybCxcbiAgICAgICAgICBzdGF0ZTogcmVzLnN0YXRlLFxuICAgICAgICAgIGxvZ291dFVybDogcmVzLmxvZ291dF91cmwgfHwgJycsXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEV4aXN0ZWRUb2tlbihjb25maWc6IEF1dGhvcml6YXRpb25TdGF0ZSkge1xuICAgIHJldHVybiB0aGlzLmdldFRva2VuRnJvbUxvY2FsKGNvbmZpZykucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIG9mKHsgZXhwaXJlQXQ6ICcnLCBpc3N1ZWRBdDogJycgfSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb2tlbkZyb21Mb2NhbChcbiAgICBjb25maWc6IEF1dGhvcml6YXRpb25TdGF0ZSxcbiAgKTogT2JzZXJ2YWJsZTx7IGV4cGlyZUF0Pzogc3RyaW5nOyBpc3N1ZWRBdD86IHN0cmluZyB9PiB7XG4gICAgY29uc3QgeyBxdWVyeVBhcmFtcywgaGFzaFBhcmFtcyB9ID0gdGhpcy5nZXRQYXJhbXMoKTtcblxuICAgIGNvbnN0IGNvZGUgPSBxdWVyeVBhcmFtc1tDT0RFX0tFWV0gfHwgaGFzaFBhcmFtc1tDT0RFX0tFWV07XG4gICAgY29uc3QgaWRUb2tlbiA9IHF1ZXJ5UGFyYW1zW0lEX1RPS0VOXSB8fCBoYXNoUGFyYW1zW0lEX1RPS0VOXTtcblxuICAgIGlmIChjb2RlKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRUb2tlbkJ5Q29kZShjb2RlLCBjb25maWcuc3RhdGUpO1xuICAgIH1cblxuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDb29raWVCeVRva2VuKGlkVG9rZW4pO1xuICAgIH1cblxuICAgIHJldHVybiBvZihudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VG9rZW5CeUNvZGUoY29kZTogc3RyaW5nLCBzdGF0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxUb2tlblJlc3BvbnNlPihDQUxMQkFDS19BUEksIHtcbiAgICAgICAgcGFyYW1zOiB7IGNvZGUsIHN0YXRlIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwVG9rZW5SZXNwb25zZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29va2llQnlUb2tlbihpZFRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PFRva2VuUmVzcG9uc2U+KENBTExCQUNLX0FQSSwge1xuICAgICAgICBwYXJhbXM6IHsgaWRUb2tlbiB9LFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcFRva2VuUmVzcG9uc2UoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhcmFtcygpIHtcbiAgICBjb25zdCBpbml0VXJsID0gZ2V0SW5pdFVybCgpO1xuXG4gICAgY29uc3QgaW5pdExvY2F0aW9uID0gbmV3IFVSTChpbml0VXJsKTtcblxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gcGFyc2VQYXJhbXMoXG4gICAgICBpbml0TG9jYXRpb24uc2VhcmNoID8gaW5pdExvY2F0aW9uLnNlYXJjaC5zbGljZSgxKSA6ICcnLFxuICAgICk7XG5cbiAgICBjb25zdCBoYXNoUGFyYW1zID0gcGFyc2VQYXJhbXMoXG4gICAgICBpbml0TG9jYXRpb24uaGFzaCA/IGluaXRMb2NhdGlvbi5oYXNoLnNsaWNlKDEpIDogJycsXG4gICAgKTtcblxuICAgIHJldHVybiB7IHF1ZXJ5UGFyYW1zLCBoYXNoUGFyYW1zIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVwbGFjZVJlZGlyZWN0VXJsKGRleFVybDogc3RyaW5nLCByZWRpcmVjdFVybDogc3RyaW5nKSB7XG4gIGNvbnN0IFtwYXRoLCBxdWVyeVBhcmFtc10gPSBkZXhVcmwuc3BsaXQoJz8nKTtcblxuICBjb25zdCByZXBsYWNlZFF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXNcbiAgICAuc3BsaXQoJyYnKVxuICAgIC5tYXAocGFpciA9PiB7XG4gICAgICBjb25zdCBba2V5LCB2YWx1ZV0gPSBwYWlyLnNwbGl0KCc9Jyk7XG4gICAgICByZXR1cm4gUkVESVJFQ1RfVVJJUy5oYXMoa2V5KVxuICAgICAgICA/IGAke2tleX09JHtlbmNvZGVVUklDb21wb25lbnQocmVkaXJlY3RVcmwpfWBcbiAgICAgICAgOiBgJHtrZXl9PSR7dmFsdWV9YDtcbiAgICB9KVxuICAgIC5qb2luKCcmJyk7XG5cbiAgcmV0dXJuIGAke3BhdGh9PyR7cmVwbGFjZWRRdWVyeVBhcmFtc31gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVkaXJlY3RTU09FbnRyeShlbnRyeTogc3RyaW5nKSB7XG4gIGNvbnN0IGhhc1F1ZXJ5ID0gZW50cnkuaW5jbHVkZXMoJz8nKTtcblxuICBpZiAoaGFzUXVlcnkpIHtcbiAgICBjb25zdCBbdXJsLCBxdWVyeV0gPSBlbnRyeS5zcGxpdCgnPycpO1xuICAgIHJldHVybiBgJHtFWFRFUk5BTF9SRURJUkVDVF9BUEl9P3JlZGlyZWN0X3VybD0ke3VybH0mJHtxdWVyeX1gO1xuICB9XG5cbiAgcmV0dXJuIGAke0VYVEVSTkFMX1JFRElSRUNUX0FQSX0/cmVkaXJlY3RfdXJsPSR7ZW50cnl9YDtcbn1cblxuZnVuY3Rpb24gcGFyc2VQYXJhbXMocXVlcnk6IHN0cmluZyk6IFN0cmluZ01hcCB7XG4gIGlmICghcXVlcnkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICByZXR1cm4gcXVlcnkuc3BsaXQoJyYnKS5yZWR1Y2UoKGFjYywgcGFyYW0pID0+IHtcbiAgICBjb25zdCBba2V5LCB2YWx1ZV0gPSBwYXJhbS5zcGxpdCgnPScpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIFtrZXldOiB2YWx1ZSxcbiAgICB9O1xuICB9LCB7fSk7XG59XG5cbmZ1bmN0aW9uIG1hcFRva2VuUmVzcG9uc2UoKSB7XG4gIHJldHVybiBwaXBlKFxuICAgIG1hcChcbiAgICAgICh7IHRva2VuX3R5cGUsIHRva2VuX3N0b3JhZ2UsIGV4cGlyZV9hdCwgaXNzdWVkX2F0IH06IFRva2VuUmVzcG9uc2UpID0+ICh7XG4gICAgICAgIHN0b3JhZ2VUeXBlOiB0b2tlbl9zdG9yYWdlLFxuICAgICAgICB0b2tlblR5cGU6IHRva2VuX3R5cGUsXG4gICAgICAgIGV4cGlyZUF0OiBleHBpcmVfYXQsXG4gICAgICAgIGlzc3VlZEF0OiBpc3N1ZWRfYXQsXG4gICAgICB9KSxcbiAgICApLFxuICApO1xufVxuIl19
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3N0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxLQUFLLEVBRUwsRUFBRSxFQUNGLFVBQVUsRUFDVixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxHQUFHLEVBQ0gsSUFBSSxFQUNKLE9BQU8sRUFDUCxLQUFLLEVBQ0wsU0FBUyxFQUNULEtBQUssR0FDTixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFFTCwyQkFBMkIsRUFDM0IsVUFBVSxFQUNWLFlBQVksRUFDWixTQUFTLEVBQ1QscUJBQXFCLEVBQ3JCLElBQUksR0FDTCxNQUFNLG9CQUFvQixDQUFDO0FBRzVCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIseUJBQXlCLEVBQ3pCLGlCQUFpQixHQUNsQixNQUFNLGlCQUFpQixDQUFDOztBQW1CekIsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUM7QUFDL0IsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQztBQUV2QyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUM7QUFFN0IsTUFBTSxTQUFTLEdBQUcsNkJBQTZCLENBQUM7QUFDaEQsTUFBTSxVQUFV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QUFLLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXRDLE9BQU87WUFDTCxHQUFHLEdBQUc7WUFDTixDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7U0FDYixDQUFDO0lBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1QsQ0FBQztBQUVELFNBQVMsZ0JBQWdCO0lBQ3ZCLE9BQU8sSUFBSSxDQUNULEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBaUIsRUFBRSxFQUFFO1FBQzNDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FDRCxDQUFDLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLFdBQVcsRUFBRSxhQUFhO1FBQzFCLFNBQVMsRUFBRSxVQUFVO1FBQ3JCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLFFBQVEsRUFBRSxTQUFTO0tBQ3BCLENBQUMsQ0FDSCxDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgYXV0aG9yaXphdGlvblxuICovXG5cbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEVNUFRZLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgY2F0Y2hFcnJvcixcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG4gIHBpcGUsXG4gIHRpbWVvdXQsXG4gIHRpbWVyLFxuICBmcm9tRXZlbnQsXG4gIG1lcmdlLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgU3RyaW5nTWFwLFxuICBOT1RfTk9USUZZX09OX0VSUk9SX0hFQURFUlMsXG4gIHB1Ymxpc2hSZWYsXG4gIGdldFRvcFdpbmRvdyxcbiAgc2tpcEVycm9yLFxuICBnZXRHbG9iYWxFbnZpcm9ubWVudHMsXG4gIFRSVUUsXG59IGZyb20gJy4uL2NvcmUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBBY2NvdW50SW5mbyB9IGZyb20gJy4uL3BhZ2Utc2NhZmZvbGQvcHVibGljLWFwaSc7XG5cbmltcG9ydCB7IGdldEluaXRVcmwgfSBmcm9tICcuL2FwcC1pbml0LXVybCc7XG5pbXBvcnQgeyBIRUFSVEJFQVRfUE9MTElORyB9IGZyb20gJy4vc2Vzc2lvbi1tYW5hZ2Uuc2VydmljZSc7XG5pbXBvcnQge1xuICBjbGVhblN0b3JhZ2VUb2tlbixcbiAgcmVhZFN0b3JhZ2VBbGl2ZVJlY29yZCxcbiAgcmVhZFN0b3JhZ2VUb2tlbixcbiAgcmVmcmVzaFN0b3JhZ2VBbGl2ZVJlY29yZCxcbiAgd3JpdGVTdG9yYWdlVG9rZW4sXG59IGZyb20gJy4vc3RvcmFnZS10b2tlbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXphdGlvblN0YXRlIHtcbiAgZXhwaXJlQXQ/OiBzdHJpbmc7XG4gIGlzc3VlZEF0Pzogc3RyaW5nO1xuICBzdGF0ZT86IHN0cmluZztcbiAgYXV0aFVybD86IHN0cmluZztcbiAgbG9nb3V0VXJsPzogc3RyaW5nO1xuICBpbmZvPzogQWNjb3VudEluZm87XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5SZXNwb25zZSB7XG4gIHRva2VuX3N0b3JhZ2U6IHN0cmluZztcbiAgdG9rZW5fdHlwZTogc3RyaW5nO1xuICBleHBpcmVfYXQ6IHN0cmluZztcbiAgaXNzdWVkX2F0OiBzdHJpbmc7XG4gIGlkX3Rva2VuPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgU1RPUkFHRV9UWVBFX0tFWSA9ICd0b2tlbl9zdG9yYWdlJztcbmV4cG9ydCBjb25zdCBDT0RFX0tFWSA9ICdjb2RlJztcbmV4cG9ydCBjb25zdCBJRF9UT0tFTl9LRVkgPSAnaWRfdG9rZW4nO1xuXG5jb25zdCBMT0FESU5HX0NBQ0hFID0gMTVfMDAwO1xuXG5jb25zdCBMT0dJTl9BUEkgPSAnL2NvbnNvbGUvYXBpL3YyL3Rva2VuL2xvZ2luJztcbmNvbnN0IExPR09VVF9BUEkgPSAnL2NvbnNvbGUvYXBpL3YyL3Rva2VuL2xvZ291dCc7XG5jb25zdCBDQUxMQkFDS19BUEkgPSAnL2NvbnNvbGUvYXBpL3YyL3Rva2VuL2NhbGxiYWNrJztcbmNvbnN0IFRPS0VOX1JFRlJFU0hfQVBJID0gJy9jb25zb2xlL2FwaS92Mi90b2tlbi9yZWZyZXNoJztcbmNvbnN0IFRPS0VOX0lORk9fQVBJID0gJy9jb25zb2xlL2FwaS92Mi90b2tlbi9pbmZvJztcbmNvbnN0IEVYVEVSTkFMX1JFRElSRUNUX0FQSSA9ICcvY29uc29sZS9hcGkvdjIvdG9rZW4vcmVkaXJlY3QnO1xuXG5jb25zdCBSRURJUkVDVF9VUklTID0gbmV3IFNldChbJ3JlZGlyZWN0X3VyaScsICdwb3N0X2xvZ291dF9yZWRpcmVjdF91cmknXSk7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXV0aG9yaXphdGlvblN0YXRlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHN0YXRlJCA9IHRoaXMuZ2V0QXV0aENvbmZpZ3VyYXRpb24oKS5waXBlKFxuICAgIHN3aXRjaE1hcChjb25maWcgPT5cbiAgICAgIHRoaXMuZ2V0RXhpc3RlZFRva2VuKGNvbmZpZykucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHRva2VuID0+XG4gICAgICAgICAgdGhpcy5odHRwLmdldDxBY2NvdW50SW5mbz4oVE9LRU5fSU5GT19BUEksIHt9KS5waXBlKFxuICAgICAgICAgICAgc2tpcEVycm9yKG51bGwpLFxuICAgICAgICAgICAgbWFwKGluZm8gPT4gKHtcbiAgICAgICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgICAgICAuLi50b2tlbixcbiAgICAgICAgICAgICAgaW5mbyxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApLFxuICAgIHRhcChzdGF0ZSA9PiB7XG4gICAgICBpZiAoIXN0YXRlLmluZm8pIHtcbiAgICAgICAgdGhpcy5sb2dvdXQodHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3RhdGVTbmFwc2hvdCA9IHN0YXRlO1xuICAgICAgdGhpcy5wYXlsb2FkU25hcHNob3QgPSBzdGF0ZS5pbmZvO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICApO1xuXG4gIHByaXZhdGUgY2hlY2tUb2tlbkNhY2hlJDogT2JzZXJ2YWJsZTx1bmtub3duPiA9IG51bGw7XG4gIHByaXZhdGUgcmVmcmVzaFRva2VuQ2FjaGUkOiBPYnNlcnZhYmxlPFRva2VuUmVzcG9uc2U+O1xuICBzdGF0ZVNuYXBzaG90OiBBdXRob3JpemF0aW9uU3RhdGUgPSBudWxsO1xuXG4gIHBheWxvYWRTbmFwc2hvdDogQWNjb3VudEluZm87XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKGdldEdsb2JhbEVudmlyb25tZW50cygnQ0xPU0VfQlJPV1NFUl9FTkRfU0VTU0lPTicpID09PSBUUlVFKSB7XG4gICAgICB0aGlzLnN0YXRlJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoc3RhdGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWxpdmVSZWNvcmQgPSByZWFkU3RvcmFnZUFsaXZlUmVjb3JkKCk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICFhbGl2ZVJlY29yZCB8fFxuICAgICAgICAgICAgICBEYXRlLm5vdygpIC0gYWxpdmVSZWNvcmQgPiBIRUFSVEJFQVRfUE9MTElORyArIExPQURJTkdfQ0FDSEVcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLmxvZ291dCgpO1xuICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb2Yoc3RhdGUpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAgICAgICAgIHRpbWVyKDAsIEhFQVJUQkVBVF9QT0xMSU5HKSxcbiAgICAgICAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ2JlZm9yZXVubG9hZCcpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKHJlZnJlc2hTdG9yYWdlQWxpdmVSZWNvcmQpO1xuICAgIH1cbiAgfVxuXG4gIGxvZ291dChzcGVjaWZpY1VybCA9IGZhbHNlKSB7XG4gICAgdGhpcy5odHRwXG4gICAgICAuZ2V0KExPR09VVF9BUEksIHtcbiAgICAgICAgaGVhZGVyczogTk9UX05PVElGWV9PTl9FUlJPUl9IRUFERVJTLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHRpbWVvdXQoMTAwMCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY2xlYW5TdG9yYWdlVG9rZW4oKTtcbiAgICAgICAgdGhpcy5yZWRpcmVjdFRvRGV4KHNwZWNpZmljVXJsICYmIGxvY2F0aW9uLmhyZWYpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlZGlyZWN0VG9EZXgocmVkaXJlY3RVcmw6IHN0cmluZyA9IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuc3RhdGVTbmFwc2hvdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhyZWYgPSByZXBsYWNlUmVkaXJlY3RVcmwoXG4gICAgICB0aGlzLnN0YXRlU25hcHNob3QuYXV0aFVybCxcbiAgICAgIC8vIGF1dGhVcmwg5Lit55qEIHJlZGlyZWN0VXJsIOaYr+aguei3r+eUse+8jOaguei3r+eUseS6jOasoemHjeWumuWQkeWbniBwb3J0YWwg5pe25Lya5Lii5aSxIGNvZGUg5a+86Ie055m75b2V5aSx6LSlXG4gICAgICAvLyDlpoLmnpzlkI7mnJ/mnInlrprliLbljJbopoHmsYLpu5jorqTpppbpobXkuI3mmK8gcG9ydGFs77yM5Y+v5Lul5pS55Zue5LmL5YmN55qE5pa55qGI77yM5L2/55So5rWP6KeI5Zmo5a+86Iiq5omT5byAIGxvZ291dFVybO+8jOeEtuWQjiBkZXgg6YeN5a6a5ZCR5Yiw5qC56Lev55Sx77yM5qC56Lev55Sx6YeN5a6a5ZCR5Yiw6buY6K6k6aaW6aG177yM6aaW6aG15YaN5bCGIGF1dGhVcmwg5Lit55qEIHJlZGlyZWN0VXJsIOabv+aNouS4uuW9k+WJjSB1cmwg6Lez6L2s5YiwIGRleCDov5vooYznmbvlvZXvvJtcbiAgICAgIC8vIOacgOWlveeOr+Wig+WPmOmHj+WinuWKoOm7mOiupOmmlumhteWcsOWdgOaIluiAhSBkZXggcmVkaXJlY3RVcmwg55u05o6l5piv5q2j56Gu5Zyw5Z2AXG4gICAgICByZWRpcmVjdFVybCB8fCBsb2NhdGlvbi5vcmlnaW4gKyAnL2NvbnNvbGUtcG9ydGFsJyxcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGdldFRvcFdpbmRvdygpLmxvY2F0aW9uLmhyZWYgPSBocmVmO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gc2hvdWxkIG5ldmVyIGhhcHBlbiwganVzdCBmb3Igcm9idXN0bmVzcyBpbiBjYXNlIG9mIGNyb3NzLW9yaWdpbiBpZnJhbWVcbiAgICAgIGxvY2F0aW9uLmhyZWYgPSBocmVmO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hUb2tlbigpIHtcbiAgICBpZiAodGhpcy5yZWZyZXNoVG9rZW5DYWNoZSQpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlbkNhY2hlJDtcbiAgICB9XG5cbiAgICB0aGlzLnJlZnJlc2hUb2tlbkNhY2hlJCA9IHRoaXMuaHR0cFxuICAgICAgLmdldDxUb2tlblJlc3BvbnNlPihUT0tFTl9SRUZSRVNIX0FQSSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuQ2FjaGUkID0gbnVsbDtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9nb3V0KHRydWUpO1xuICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgfSksXG4gICAgICAgIHB1Ymxpc2hSZWYoKSxcbiAgICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW5DYWNoZSQ7XG4gIH1cblxuICBjaGVja1Rva2VuKCkge1xuICAgIGlmICghdGhpcy5jaGVja1Rva2VuQ2FjaGUkKSB7XG4gICAgICB0aGlzLmNoZWNrVG9rZW5DYWNoZSQgPSB0aGlzLmh0dHAuZ2V0KFRPS0VOX0lORk9fQVBJKS5waXBlKFxuICAgICAgICB0YXAoe1xuICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tUb2tlbkNhY2hlJCA9IG51bGw7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGVja1Rva2VuQ2FjaGUkID0gbnVsbDtcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAgcHVibGlzaFJlZigpLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tUb2tlbkNhY2hlJDtcbiAgfVxuXG4gIGdldFRva2VuUGF5bG9hZDxUPigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSQucGlwZShtYXAoc3RhdGUgPT4gc3RhdGUuaW5mbyBhcyBUKSk7XG4gIH1cblxuICBnZXRBY2NvdW50SW5mbygpIHtcbiAgICBpZiAodGhpcy5wYXlsb2FkU25hcHNob3QpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLnBheWxvYWRTbmFwc2hvdCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0YXRlJC5waXBlKG1hcChzdGF0ZSA9PiBzdGF0ZS5pbmZvIHx8IHt9KSk7XG4gIH1cblxuICBnZXRUb2tlbkJ5U3RvcmFnZSgpIHtcbiAgICByZXR1cm4gcmVhZFN0b3JhZ2VUb2tlbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBdXRoQ29uZmlndXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PHsgYXV0aF91cmw6IHN0cmluZzsgc3RhdGU6IHN0cmluZzsgbG9nb3V0X3VybDogc3RyaW5nIH0+KExPR0lOX0FQSSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+ICh7XG4gICAgICAgICAgYXV0aFVybDogcmVzLmF1dGhfdXJsLFxuICAgICAgICAgIHN0YXRlOiByZXMuc3RhdGUsXG4gICAgICAgICAgbG9nb3V0VXJsOiByZXMubG9nb3V0X3VybCB8fCAnJyxcbiAgICAgICAgfSkpLFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXhpc3RlZFRva2VuKGNvbmZpZzogQXV0aG9yaXphdGlvblN0YXRlKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5Gcm9tTG9jYWwoY29uZmlnKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICByZXR1cm4gb2Yoe30gYXMgQXV0aG9yaXphdGlvblN0YXRlKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFRva2VuRnJvbUxvY2FsKFxuICAgIGNvbmZpZzogQXV0aG9yaXphdGlvblN0YXRlLFxuICApOiBPYnNlcnZhYmxlPEF1dGhvcml6YXRpb25TdGF0ZT4ge1xuICAgIGNvbnN0IHsgcXVlcnlQYXJhbXMsIGhhc2hQYXJhbXMgfSA9IHRoaXMuZ2V0UGFyYW1zKCk7XG5cbiAgICBjb25zdCBjb2RlID0gcXVlcnlQYXJhbXNbQ09ERV9LRVldIHx8IGhhc2hQYXJhbXNbQ09ERV9LRVldO1xuICAgIGNvbnN0IGlkVG9rZW4gPSBxdWVyeVBhcmFtc1tJRF9UT0tFTl9LRVldIHx8IGhhc2hQYXJhbXNbSURfVE9LRU5fS0VZXTtcblxuICAgIGlmICghY29kZSAmJiAhaWRUb2tlbikge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cblxuICAgIHJlZnJlc2hTdG9yYWdlQWxpdmVSZWNvcmQoKTtcblxuICAgIHJldHVybiBjb2RlXG4gICAgICA/IHRoaXMuc2V0Q29va2llQnlDb2RlKGNvZGUsIGNvbmZpZy5zdGF0ZSlcbiAgICAgIDogdGhpcy5zZXRDb29raWVCeVRva2VuKGlkVG9rZW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb29raWVCeUNvZGUoY29kZTogc3RyaW5nLCBzdGF0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxUb2tlblJlc3BvbnNlPihDQUxMQkFDS19BUEksIHtcbiAgICAgICAgcGFyYW1zOiB7IGNvZGUsIHN0YXRlIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwVG9rZW5SZXNwb25zZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29va2llQnlUb2tlbihpZFRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PFRva2VuUmVzcG9uc2U+KENBTExCQUNLX0FQSSwge1xuICAgICAgICBwYXJhbXM6IHsgaWRfdG9rZW46IGlkVG9rZW4gfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUb2tlblJlc3BvbnNlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbXMoKSB7XG4gICAgY29uc3QgaW5pdFVybCA9IGdldEluaXRVcmwoKTtcblxuICAgIGNvbnN0IGluaXRMb2NhdGlvbiA9IG5ldyBVUkwoaW5pdFVybCk7XG5cbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHBhcnNlUGFyYW1zKFxuICAgICAgaW5pdExvY2F0aW9uLnNlYXJjaCA/IGluaXRMb2NhdGlvbi5zZWFyY2guc2xpY2UoMSkgOiAnJyxcbiAgICApO1xuXG4gICAgY29uc3QgaGFzaFBhcmFtcyA9IHBhcnNlUGFyYW1zKFxuICAgICAgaW5pdExvY2F0aW9uLmhhc2ggPyBpbml0TG9jYXRpb24uaGFzaC5zbGljZSgxKSA6ICcnLFxuICAgICk7XG5cbiAgICByZXR1cm4geyBxdWVyeVBhcmFtcywgaGFzaFBhcmFtcyB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VSZWRpcmVjdFVybChkZXhVcmw6IHN0cmluZywgcmVkaXJlY3RVcmw6IHN0cmluZykge1xuICBjb25zdCBbcGF0aCwgcXVlcnlQYXJhbXNdID0gZGV4VXJsLnNwbGl0KCc/Jyk7XG5cbiAgY29uc3QgcmVwbGFjZWRRdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zXG4gICAgLnNwbGl0KCcmJylcbiAgICAubWFwKHBhaXIgPT4ge1xuICAgICAgY29uc3QgW2tleSwgdmFsdWVdID0gcGFpci5zcGxpdCgnPScpO1xuICAgICAgcmV0dXJuIFJFRElSRUNUX1VSSVMuaGFzKGtleSlcbiAgICAgICAgPyBgJHtrZXl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHJlZGlyZWN0VXJsKX1gXG4gICAgICAgIDogYCR7a2V5fT0ke3ZhbHVlfWA7XG4gICAgfSlcbiAgICAuam9pbignJicpO1xuXG4gIHJldHVybiBgJHtwYXRofT8ke3JlcGxhY2VkUXVlcnlQYXJhbXN9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZGlyZWN0U1NPRW50cnkoZW50cnk6IHN0cmluZykge1xuICBjb25zdCBoYXNRdWVyeSA9IGVudHJ5LmluY2x1ZGVzKCc/Jyk7XG5cbiAgaWYgKGhhc1F1ZXJ5KSB7XG4gICAgY29uc3QgW3VybCwgcXVlcnldID0gZW50cnkuc3BsaXQoJz8nKTtcbiAgICByZXR1cm4gYCR7RVhURVJOQUxfUkVESVJFQ1RfQVBJfT9yZWRpcmVjdF91cmw9JHt1cmx9JiR7cXVlcnl9YDtcbiAgfVxuXG4gIHJldHVybiBgJHtFWFRFUk5BTF9SRURJUkVDVF9BUEl9P3JlZGlyZWN0X3VybD0ke2VudHJ5fWA7XG59XG5cbmZ1bmN0aW9uIHBhcnNlUGFyYW1zKHF1ZXJ5OiBzdHJpbmcpOiBTdHJpbmdNYXAge1xuICBpZiAoIXF1ZXJ5KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcmV0dXJuIHF1ZXJ5LnNwbGl0KCcmJykucmVkdWNlKChhY2MsIHBhcmFtKSA9PiB7XG4gICAgY29uc3QgW2tleSwgdmFsdWVdID0gcGFyYW0uc3BsaXQoJz0nKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5hY2MsXG4gICAgICBba2V5XTogdmFsdWUsXG4gICAgfTtcbiAgfSwge30pO1xufVxuXG5mdW5jdGlvbiBtYXBUb2tlblJlc3BvbnNlKCkge1xuICByZXR1cm4gcGlwZShcbiAgICB0YXAoKHsgaWRfdG9rZW46IGlkVG9rZW4gfTogVG9rZW5SZXNwb25zZSkgPT4ge1xuICAgICAgd3JpdGVTdG9yYWdlVG9rZW4oaWRUb2tlbik7XG4gICAgfSksXG4gICAgbWFwKFxuICAgICAgKHsgdG9rZW5fdHlwZSwgdG9rZW5fc3RvcmFnZSwgZXhwaXJlX2F0LCBpc3N1ZWRfYXQgfTogVG9rZW5SZXNwb25zZSkgPT4gKHtcbiAgICAgICAgc3RvcmFnZVR5cGU6IHRva2VuX3N0b3JhZ2UsXG4gICAgICAgIHRva2VuVHlwZTogdG9rZW5fdHlwZSxcbiAgICAgICAgZXhwaXJlQXQ6IGV4cGlyZV9hdCxcbiAgICAgICAgaXNzdWVkQXQ6IGlzc3VlZF9hdCxcbiAgICAgIH0pLFxuICAgICksXG4gICk7XG59XG4iXX0=
@@ -1,98 +1,22 @@
1
- import { ID_TOKEN_KEY, REFRESH_TOKEN_KEY, STORAGE_TYPE_KEY, } from './state.service';
2
- let sessionTokenShareChannel;
3
- const SESSION_TOKEN_SHARE_CHANNEL = 'SESSION_TOKEN_SHARE_CHANNEL';
4
- const SESSION_CLOSE_TIMESTAMP = 'session_close_timestamp';
5
- const recordSessionTimestamp = () => {
6
- sessionStorage.setItem(SESSION_CLOSE_TIMESTAMP, Date.now().toString());
7
- };
8
- const getStorage = (storageType) => storageType === 'session' ? sessionStorage : localStorage;
9
- export function readStorageType() {
10
- return (localStorage.getItem(STORAGE_TYPE_KEY) === 'session' ? 'session' : 'local');
11
- }
1
+ import { ID_TOKEN_KEY } from './state.service';
2
+ const APP_ALIVE_RECORD = 'app_alive_record';
12
3
  export function cleanStorageToken() {
13
4
  localStorage.removeItem(ID_TOKEN_KEY);
14
- localStorage.removeItem(REFRESH_TOKEN_KEY);
15
- sessionStorage.removeItem(ID_TOKEN_KEY);
16
- sessionStorage.removeItem(REFRESH_TOKEN_KEY);
17
5
  }
18
6
  export function writeStorageToken(token) {
19
- cleanStorageToken();
20
- sessionStorage.removeItem(SESSION_CLOSE_TIMESTAMP);
21
- const storage = getStorage(token.storageType);
22
- storage.setItem(ID_TOKEN_KEY, token.idToken);
23
- storage.setItem(REFRESH_TOKEN_KEY, token.refreshToken);
24
- localStorage.setItem(STORAGE_TYPE_KEY, token.storageType);
25
- if (token.storageType === 'session') {
26
- setupSessionTokenShareChannel();
27
- }
28
- else {
29
- closeSessionTokenShareChannel();
7
+ if (!token) {
8
+ return;
30
9
  }
10
+ cleanStorageToken();
11
+ localStorage.setItem(ID_TOKEN_KEY, token);
31
12
  }
32
13
  export function readStorageToken() {
33
- const storageType = readStorageType();
34
- if (storageType === 'session') {
35
- const sessionTimestamp = sessionStorage.getItem(SESSION_CLOSE_TIMESTAMP);
36
- sessionStorage.removeItem(SESSION_CLOSE_TIMESTAMP);
37
- if (sessionTimestamp &&
38
- Date.now() - parseInt(sessionTimestamp) > 30 * 1000) {
39
- // 浏览器恢复标签时清除 session token
40
- cleanStorageToken();
41
- console.warn('session timeout');
42
- }
43
- setupSessionTokenShareChannel();
44
- }
45
- const storage = getStorage(storageType);
46
- return {
47
- storageType,
48
- idToken: storage.getItem(ID_TOKEN_KEY),
49
- refreshToken: storage.getItem(REFRESH_TOKEN_KEY),
50
- };
14
+ return localStorage.getItem(ID_TOKEN_KEY);
51
15
  }
52
- export function asyncReadStorageToken() {
53
- const storageToken = readStorageToken();
54
- if (storageToken.storageType === 'session' && !storageToken.idToken) {
55
- return new Promise(resolve => {
56
- const timer = window.setTimeout(() => {
57
- console.warn('request session token timeout');
58
- sessionTokenShareChannel.removeEventListener('message', receiveSessionToken);
59
- resolve({});
60
- }, 50);
61
- function receiveSessionToken({ data, }) {
62
- if (data.type === 'provide') {
63
- window.clearTimeout(timer);
64
- sessionTokenShareChannel.removeEventListener('message', receiveSessionToken);
65
- writeStorageToken(data.token);
66
- resolve(data.token);
67
- }
68
- }
69
- sessionTokenShareChannel.addEventListener('message', receiveSessionToken);
70
- sessionTokenShareChannel.postMessage({ type: 'request' });
71
- });
72
- }
73
- return Promise.resolve(storageToken);
74
- }
75
- function setupSessionTokenShareChannel() {
76
- if (sessionTokenShareChannel) {
77
- return;
78
- }
79
- sessionTokenShareChannel = new BroadcastChannel(SESSION_TOKEN_SHARE_CHANNEL);
80
- sessionTokenShareChannel.addEventListener('message', ({ data }) => {
81
- if (data.type === 'request') {
82
- sessionTokenShareChannel.postMessage({
83
- type: 'provide',
84
- token: readStorageToken(),
85
- });
86
- }
87
- });
88
- window.addEventListener('beforeunload', recordSessionTimestamp);
16
+ export function refreshStorageAliveRecord() {
17
+ localStorage.setItem(APP_ALIVE_RECORD, Date.now().toString());
89
18
  }
90
- function closeSessionTokenShareChannel() {
91
- if (!sessionTokenShareChannel) {
92
- return;
93
- }
94
- sessionTokenShareChannel.close();
95
- sessionTokenShareChannel = null;
96
- window.removeEventListener('beforeunload', recordSessionTimestamp);
19
+ export function readStorageAliveRecord() {
20
+ return parseInt(localStorage.getItem(APP_ALIVE_RECORD));
97
21
  }
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3N0b3JhZ2UtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixpQkFBaUIsRUFDakIsZ0JBQWdCLEdBRWpCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsSUFBSSx3QkFBMEMsQ0FBQztBQUUvQyxNQUFNLDJCQUEyQixHQUFHLDZCQUE2QixDQUFDO0FBRWxFLE1BQU0sdUJBQXVCLEdBQUcseUJBQXlCLENBQUM7QUFFMUQsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLEVBQUU7SUFDbEMsY0FBYyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLFdBQXdCLEVBQVcsRUFBRSxDQUN2RCxXQUFXLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztBQWU1RCxNQUFNLFVBQVUsZUFBZTtJQUM3QixPQUFPLENBQ0wsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQzVELENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IsWUFBWSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN0QyxZQUFZLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFM0MsY0FBYyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxjQUFjLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVE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LENBQUMsQ0FBQztZQUUxRSx3QkFBd0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVELFNBQVMsNkJBQTZCO0lBQ3BDLElBQUksd0JBQXdCLEVBQUUsQ0FBQztRQUM3QixPQUFPO0lBQ1QsQ0FBQztJQUVELHdCQUF3QixHQUFHLElBQUksZ0JBQWdCLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUU3RSx3QkFBd0IsQ0FBQyxnQkFBZ0IsQ0FDdkMsU0FBUyxFQUNULENBQUMsRUFBRSxJQUFJLEVBQXVDLEVBQUUsRUFBRTtRQUNoRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDNUIsd0JBQXdCLENBQUMsV0FBVyxDQUFDO2dCQUNuQyxJQUFJLEVBQUUsU0FBUztnQkFDZixLQUFLLEVBQUUsZ0JBQWdCLEVBQUU7YUFDRCxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUMsQ0FDRixDQUFDO0lBRUYsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRCxTQUFTLDZCQUE2QjtJQUNwQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUM5QixPQUFPO0lBQ1QsQ0FBQztJQUVELHdCQUF3QixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pDLHdCQUF3QixHQUFHLElBQUksQ0FBQztJQUVoQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLHNCQUFzQixDQUFDLENBQUM7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElEX1RPS0VOX0tFWSxcbiAgUkVGUkVTSF9UT0tFTl9LRVksXG4gIFNUT1JBR0VfVFlQRV9LRVksXG4gIFN0b3JhZ2VUeXBlLFxufSBmcm9tICcuL3N0YXRlLnNlcnZpY2UnO1xuXG5sZXQgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsOiBCcm9hZGNhc3RDaGFubmVsO1xuXG5jb25zdCBTRVNTSU9OX1RPS0VOX1NIQVJFX0NIQU5ORUwgPSAnU0VTU0lPTl9UT0tFTl9TSEFSRV9DSEFOTkVMJztcblxuY29uc3QgU0VTU0lPTl9DTE9TRV9USU1FU1RBTVAgPSAnc2Vzc2lvbl9jbG9zZV90aW1lc3RhbXAnO1xuXG5jb25zdCByZWNvcmRTZXNzaW9uVGltZXN0YW1wID0gKCkgPT4ge1xuICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFNFU1NJT05fQ0xPU0VfVElNRVNUQU1QLCBEYXRlLm5vdygpLnRvU3RyaW5nKCkpO1xufTtcblxuY29uc3QgZ2V0U3RvcmFnZSA9IChzdG9yYWdlVHlwZTogU3RvcmFnZVR5cGUpOiBTdG9yYWdlID0+XG4gIHN0b3JhZ2VUeXBlID09PSAnc2Vzc2lvbicgPyBzZXNzaW9uU3RvcmFnZSA6IGxvY2FsU3RvcmFnZTtcblxudHlwZSBTZXNzaW9uVG9rZW5TaGFyZURhdGEgPVxuICB8IHtcbiAgICAgIHR5cGU6ICdwcm92aWRlJztcbiAgICAgIHRva2VuOiBTdG9yYWdlVG9rZW47XG4gICAgfVxuICB8IHsgdHlwZTogJ3JlcXVlc3QnIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZVRva2VuIHtcbiAgc3RvcmFnZVR5cGU6IFN0b3JhZ2VUeXBlO1xuICBpZFRva2VuOiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFN0b3JhZ2VUeXBlKCkge1xuICByZXR1cm4gKFxuICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfVFlQRV9LRVkpID09PSAnc2Vzc2lvbicgPyAnc2Vzc2lvbicgOiAnbG9jYWwnXG4gICkgYXMgU3RvcmFnZVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhblN0b3JhZ2VUb2tlbigpIHtcbiAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oSURfVE9LRU5fS0VZKTtcbiAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oUkVGUkVTSF9UT0tFTl9LRVkpO1xuXG4gIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oSURfVE9LRU5fS0VZKTtcbiAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShSRUZSRVNIX1RPS0VOX0tFWSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVN0b3JhZ2VUb2tlbih0b2tlbjogU3RvcmFnZVRva2VuKSB7XG4gIGNsZWFuU3RvcmFnZVRva2VuKCk7XG4gIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oU0VTU0lPTl9DTE9TRV9USU1FU1RBTVApO1xuXG4gIGNvbnN0IHN0b3JhZ2UgPSBnZXRTdG9yYWdlKHRva2VuLnN0b3JhZ2VUeXBlKTtcblxuICBzdG9yYWdlLnNldEl0ZW0oSURfVE9LRU5fS0VZLCB0b2tlbi5pZFRva2VuKTtcbiAgc3RvcmFnZS5zZXRJdGVtKFJFRlJFU0hfVE9LRU5fS0VZLCB0b2tlbi5yZWZyZXNoVG9rZW4pO1xuICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX1RZUEVfS0VZLCB0b2tlbi5zdG9yYWdlVHlwZSk7XG5cbiAgaWYgKHRva2VuLnN0b3JhZ2VUeXBlID09PSAnc2Vzc2lvbicpIHtcbiAgICBzZXR1cFNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbCgpO1xuICB9IGVsc2Uge1xuICAgIGNsb3NlU2Vzc2lvblRva2VuU2hhcmVDaGFubmVsKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRTdG9yYWdlVG9rZW4oKTogUGFydGlhbDxTdG9yYWdlVG9rZW4+IHtcbiAgY29uc3Qgc3RvcmFnZVR5cGUgPSByZWFkU3RvcmFnZVR5cGUoKTtcblxuICBpZiAoc3RvcmFnZVR5cGUgPT09ICdzZXNzaW9uJykge1xuICAgIGNvbnN0IHNlc3Npb25UaW1lc3RhbXAgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFNFU1NJT05fQ0xPU0VfVElNRVNUQU1QKTtcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFNFU1NJT05fQ0xPU0VfVElNRVNUQU1QKTtcblxuICAgIGlmIChcbiAgICAgIHNlc3Npb25UaW1lc3RhbXAgJiZcbiAgICAgIERhdGUubm93KCkgLSBwYXJzZUludChzZXNzaW9uVGltZXN0YW1wKSA+IDMwICogMTAwMFxuICAgICkge1xuICAgICAgLy8g5rWP6KeI5Zmo5oGi5aSN5qCH562+5pe25riF6ZmkIHNlc3Npb24gdG9rZW5cbiAgICAgIGNsZWFuU3RvcmFnZVRva2VuKCk7XG4gICAgICBjb25zb2xlLndhcm4oJ3Nlc3Npb24gdGltZW91dCcpO1xuICAgIH1cblxuICAgIHNldHVwU2Vzc2lvblRva2VuU2hhcmVDaGFubmVsKCk7XG4gIH1cblxuICBjb25zdCBzdG9yYWdlID0gZ2V0U3RvcmFnZShzdG9yYWdlVHlwZSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdG9yYWdlVHlwZSxcbiAgICBpZFRva2VuOiBzdG9yYWdlLmdldEl0ZW0oSURfVE9LRU5fS0VZKSxcbiAgICByZWZyZXNoVG9rZW46IHN0b3JhZ2UuZ2V0SXRlbShSRUZSRVNIX1RPS0VOX0tFWSksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3luY1JlYWRTdG9yYWdlVG9rZW4oKTogUHJvbWlzZTxQYXJ0aWFsPFN0b3JhZ2VUb2tlbj4+IHtcbiAgY29uc3Qgc3RvcmFnZVRva2VuID0gcmVhZFN0b3JhZ2VUb2tlbigpO1xuXG4gIGlmIChzdG9yYWdlVG9rZW4uc3RvcmFnZVR5cGUgPT09ICdzZXNzaW9uJyAmJiAhc3RvcmFnZVRva2VuLmlkVG9rZW4pIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBjb25zdCB0aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdyZXF1ZXN0IHNlc3Npb24gdG9rZW4gdGltZW91dCcpO1xuXG4gICAgICAgIHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICdtZXNzYWdlJyxcbiAgICAgICAgICByZWNlaXZlU2Vzc2lvblRva2VuLFxuICAgICAgICApO1xuICAgICAgICByZXNvbHZlKHt9KTtcbiAgICAgIH0sIDUwKTtcblxuICAgICAgZnVuY3Rpb24gcmVjZWl2ZVNlc3Npb25Ub2tlbih7XG4gICAgICAgIGRhdGEsXG4gICAgICB9OiBNZXNzYWdlRXZlbnQ8U2Vzc2lvblRva2VuU2hhcmVEYXRhPikge1xuICAgICAgICBpZiAoZGF0YS50eXBlID09PSAncHJvdmlkZScpIHtcbiAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICdtZXNzYWdlJyxcbiAgICAgICAgICAgIHJlY2VpdmVTZXNzaW9uVG9rZW4sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHdyaXRlU3RvcmFnZVRva2VuKGRhdGEudG9rZW4pO1xuICAgICAgICAgIHJlc29sdmUoZGF0YS50b2tlbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCByZWNlaXZlU2Vzc2lvblRva2VuKTtcblxuICAgICAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLnBvc3RNZXNzYWdlKHsgdHlwZTogJ3JlcXVlc3QnIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShzdG9yYWdlVG9rZW4pO1xufVxuXG5mdW5jdGlvbiBzZXR1cFNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbCgpIHtcbiAgaWYgKHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbCA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKFNFU1NJT05fVE9LRU5fU0hBUkVfQ0hBTk5FTCk7XG5cbiAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgJ21lc3NhZ2UnLFxuICAgICh7IGRhdGEgfTogTWVzc2FnZUV2ZW50PFNlc3Npb25Ub2tlblNoYXJlRGF0YT4pID0+IHtcbiAgICAgIGlmIChkYXRhLnR5cGUgPT09ICdyZXF1ZXN0Jykge1xuICAgICAgICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgIHR5cGU6ICdwcm92aWRlJyxcbiAgICAgICAgICB0b2tlbjogcmVhZFN0b3JhZ2VUb2tlbigpLFxuICAgICAgICB9IGFzIFNlc3Npb25Ub2tlblNoYXJlRGF0YSk7XG4gICAgICB9XG4gICAgfSxcbiAgKTtcblxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgcmVjb3JkU2Vzc2lvblRpbWVzdGFtcCk7XG59XG5cbmZ1bmN0aW9uIGNsb3NlU2Vzc2lvblRva2VuU2hhcmVDaGFubmVsKCkge1xuICBpZiAoIXNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbC5jbG9zZSgpO1xuICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwgPSBudWxsO1xuXG4gIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCByZWNvcmRTZXNzaW9uVGltZXN0YW1wKTtcbn1cbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3N0b3JhZ2UtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7QUFFNUMsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixZQUFZLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBYTtJQUM3QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPO0lBQ1QsQ0FBQztJQUNELGlCQUFpQixFQUFFLENBQUM7SUFFcEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0I7SUFDOUIsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCO0lBQ3ZDLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0I7SUFDcEMsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElEX1RPS0VOX0tFWSB9IGZyb20gJy4vc3RhdGUuc2VydmljZSc7XG5cbmNvbnN0IEFQUF9BTElWRV9SRUNPUkQgPSAnYXBwX2FsaXZlX3JlY29yZCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhblN0b3JhZ2VUb2tlbigpIHtcbiAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oSURfVE9LRU5fS0VZKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlU3RvcmFnZVRva2VuKHRva2VuOiBzdHJpbmcpIHtcbiAgaWYgKCF0b2tlbikge1xuICAgIHJldHVybjtcbiAgfVxuICBjbGVhblN0b3JhZ2VUb2tlbigpO1xuXG4gIGxvY2FsU3RvcmFnZS5zZXRJdGVtKElEX1RPS0VOX0tFWSwgdG9rZW4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFN0b3JhZ2VUb2tlbigpOiBzdHJpbmcge1xuICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oSURfVE9LRU5fS0VZKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZnJlc2hTdG9yYWdlQWxpdmVSZWNvcmQoKSB7XG4gIGxvY2FsU3RvcmFnZS5zZXRJdGVtKEFQUF9BTElWRV9SRUNPUkQsIERhdGUubm93KCkudG9TdHJpbmcoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkU3RvcmFnZUFsaXZlUmVjb3JkKCk6IG51bWJlciB7XG4gIHJldHVybiBwYXJzZUludChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShBUFBfQUxJVkVfUkVDT1JEKSk7XG59XG4iXX0=
@@ -30,6 +30,7 @@ export class FeatureGateDirective {
30
30
  this.crd = crd;
31
31
  this.featureName = null;
32
32
  this.cluster = null;
33
+ this.negate = false;
33
34
  this.thenTemplateRef = null;
34
35
  this.elseTemplateRef = null;
35
36
  this.subscription = null;
@@ -40,8 +41,7 @@ export class FeatureGateDirective {
40
41
  this.container.createEmbeddedView(this.thenTemplateRef);
41
42
  return;
42
43
  }
43
- this.subscription = this.featureGate
44
- .isEnabled(this.featureName, this.cluster)
44
+ this.subscription = this.featureGate[this.negate ? 'isNegateEnabled' : 'isEnabled'](this.featureName, this.cluster)
45
45
  .pipe(distinctUntilChanged())
46
46
  .subscribe(enabled => {
47
47
  this.container.clear();
@@ -60,7 +60,7 @@ export class FeatureGateDirective {
60
60
  }
61
61
  }
62
62
  static { this.ɵfac = function FeatureGateDirective_Factory(t) { return new (t || FeatureGateDirective)(i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i1.FeatureGateService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.TemplateRef)); }; }
63
- static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: FeatureGateDirective, selectors: [["", "aclFeatureGate", ""]], inputs: { featureName: [0, "aclFeatureGate", "featureName"], cluster: [0, "aclFeatureGateCluster", "cluster"], then: [0, "aclFeatureGateThen", "then"], else: [0, "aclFeatureGateElse", "else"] }, standalone: true }); }
63
+ static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: FeatureGateDirective, selectors: [["", "aclFeatureGate", ""]], inputs: { featureName: [0, "aclFeatureGate", "featureName"], cluster: [0, "aclFeatureGateCluster", "cluster"], negate: [0, "aclFeatureGateNegate", "negate"], then: [0, "aclFeatureGateThen", "then"], else: [0, "aclFeatureGateElse", "else"] }, standalone: true }); }
64
64
  }
65
65
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FeatureGateDirective, [{
66
66
  type: Directive,
@@ -71,6 +71,9 @@ export class FeatureGateDirective {
71
71
  }], cluster: [{
72
72
  type: Input,
73
73
  args: ['aclFeatureGateCluster']
74
+ }], negate: [{
75
+ type: Input,
76
+ args: ['aclFeatureGateNegate']
74
77
  }], then: [{
75
78
  type: Input,
76
79
  args: ['aclFeatureGateThen']
@@ -84,4 +87,4 @@ function assertTemplate(property, templateRef) {
84
87
  throw new Error(`${property} must be a TemplateRef, but received '${stringify(templateRef)}'.`);
85
88
  }
86
89
  }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1nYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb3JlL2RpcmVjdGl2ZXMvZmVhdHVyZS1nYXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxLQUFLLEVBR0wsV0FBVyxFQUNYLGdCQUFnQjtBQUNoQiw0QkFBNEI7QUFDNUIsVUFBVSxJQUFJLFNBQVMsR0FDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnQixvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBRXRFOzs7OztHQUtHO0FBRUgsTUFBTSxPQUFPLG9CQUFvQjtJQU8vQixJQUVJLElBQUksQ0FBQyxXQUE4QjtRQUNyQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUM7SUFDckMsQ0FBQztJQUVELElBQ0ksSUFBSSxDQUFDLFdBQThCO1FBQ3JDLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztJQUNyQyxDQUFDO0lBT0QsWUFDbUIsU0FBMkIsRUFDM0IsV0FBK0IsRUFDL0IsR0FBc0IsRUFDdkMsV0FBOEI7UUFIYixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUExQnpDLGdCQUFXLEdBQVcsSUFBSSxDQUFDO1FBRzNCLFlBQU8sR0FBVyxJQUFJLENBQUM7UUFlZixvQkFBZSxHQUFzQixJQUFJLENBQUM7UUFDMUMsb0JBQWUsR0FBc0IsSUFBSSxDQUFDO1FBRTFDLGlCQUFZLEdBQWlCLElBQUksQ0FBQztRQVF4QyxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztJQUNyQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDeEQsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXO2FBQ2pDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDekMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDNUIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMxRCxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMxRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztxRkExRFUsb0JBQW9CO29FQUFwQixvQkFBb0I7O2lGQUFwQixvQkFBb0I7Y0FEaEMsU0FBUztlQUFDLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7NElBRzNELFdBQVc7a0JBRFYsS0FBSzttQkFBQyxnQkFBZ0I7WUFJdkIsT0FBTztrQkFETixLQUFLO21CQUFDLHVCQUF1QjtZQUsxQixJQUFJO2tCQUZQLEtBQUs7bUJBQUMsb0JBQW9CO1lBUXZCLElBQUk7a0JBRFAsS0FBSzttQkFBQyxvQkFBb0I7O0FBK0M3QixTQUFTLGNBQWMsQ0FDckIsUUFBZ0IsRUFDaEIsV0FBb0M7SUFFcEMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsQ0FDNUIsQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLGtCQUFrQixDQUMvQyxDQUFDO0lBQ0YsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLFFBQVEseUNBQXlDLFNBQVMsQ0FDM0QsV0FBVyxDQUNaLElBQUksQ0FDTixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICogQG1vZHVsZSB1dGlsc1xuICovXG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIC8vIGNzcGVsbDogZGlzYWJsZS1uZXh0LWxpbmVcbiAgybVzdHJpbmdpZnkgYXMgc3RyaW5naWZ5LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRmVhdHVyZUdhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmVhdHVyZS1nYXRlLnNlcnZpY2UnO1xuXG4vKipcbiAqIEBleGFtcGxlXG4gKiBgYGBcbiAqIDxuZy1jb250YWluZXIgKmFjbEZlYXR1cmVHYXRlPVwiZ2F0ZS1uYW1lXCI+PC9uZy1jb250YWluZXI+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2FjbEZlYXR1cmVHYXRlXScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBGZWF0dXJlR2F0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCdhY2xGZWF0dXJlR2F0ZScpXG4gIGZlYXR1cmVOYW1lOiBzdHJpbmcgPSBudWxsO1xuXG4gIEBJbnB1dCgnYWNsRmVhdHVyZUdhdGVDbHVzdGVyJylcbiAgY2x1c3Rlcjogc3RyaW5nID0gbnVsbDtcblxuICBASW5wdXQoJ2FjbEZlYXR1cmVHYXRlVGhlbicpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLXRoZW5hYmxlXG4gIHNldCB0aGVuKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx2b2lkPikge1xuICAgIGFzc2VydFRlbXBsYXRlKCdhY2xGZWF0dXJlR2F0ZVRoZW4nLCB0ZW1wbGF0ZVJlZik7XG4gICAgdGhpcy50aGVuVGVtcGxhdGVSZWYgPSB0ZW1wbGF0ZVJlZjtcbiAgfVxuXG4gIEBJbnB1dCgnYWNsRmVhdHVyZUdhdGVFbHNlJylcbiAgc2V0IGVsc2UodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHZvaWQ+KSB7XG4gICAgYXNzZXJ0VGVtcGxhdGUoJ2FjbFZlcnNpb25HYXRlRWxzZScsIHRlbXBsYXRlUmVmKTtcbiAgICB0aGlzLmVsc2VUZW1wbGF0ZVJlZiA9IHRlbXBsYXRlUmVmO1xuICB9XG5cbiAgcHJpdmF0ZSB0aGVuVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHZvaWQ+ID0gbnVsbDtcbiAgcHJpdmF0ZSBlbHNlVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHZvaWQ+ID0gbnVsbDtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmQ6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx2b2lkPixcbiAgKSB7XG4gICAgdGhpcy50aGVuVGVtcGxhdGVSZWYgPSB0ZW1wbGF0ZVJlZjtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5mZWF0dXJlTmFtZSkge1xuICAgICAgdGhpcy5jb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGhlblRlbXBsYXRlUmVmKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZmVhdHVyZUdhdGVcbiAgICAgIC5pc0VuYWJsZWQodGhpcy5mZWF0dXJlTmFtZSwgdGhpcy5jbHVzdGVyKVxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoZW5hYmxlZCA9PiB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyLmNsZWFyKCk7XG4gICAgICAgIGlmIChlbmFibGVkKSB7XG4gICAgICAgICAgdGhpcy5jb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGhlblRlbXBsYXRlUmVmKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmVsc2VUZW1wbGF0ZVJlZikge1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLmVsc2VUZW1wbGF0ZVJlZik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jcmQubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VGVtcGxhdGUoXG4gIHByb3BlcnR5OiBzdHJpbmcsXG4gIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCxcbik6IHZvaWQge1xuICBjb25zdCBpc1RlbXBsYXRlUmVmT3JOdWxsID0gISEoXG4gICAgIXRlbXBsYXRlUmVmIHx8IHRlbXBsYXRlUmVmLmNyZWF0ZUVtYmVkZGVkVmlld1xuICApO1xuICBpZiAoIWlzVGVtcGxhdGVSZWZPck51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHtwcm9wZXJ0eX0gbXVzdCBiZSBhIFRlbXBsYXRlUmVmLCBidXQgcmVjZWl2ZWQgJyR7c3RyaW5naWZ5KFxuICAgICAgICB0ZW1wbGF0ZVJlZixcbiAgICAgICl9Jy5gLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1nYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb3JlL2RpcmVjdGl2ZXMvZmVhdHVyZS1nYXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxLQUFLLEVBR0wsV0FBVyxFQUNYLGdCQUFnQjtBQUNoQiw0QkFBNEI7QUFDNUIsVUFBVSxJQUFJLFNBQVMsR0FDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnQixvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBRXRFOzs7OztHQUtHO0FBRUgsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQixJQUNJLElBQUksQ0FBQyxXQUE4QjtRQUNyQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUM7SUFDckMsQ0FBQztJQUVELElBQ0ksSUFBSSxDQUFDLFdBQThCO1FBQ3JDLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztJQUNyQyxDQUFDO0lBT0QsWUFDbUIsU0FBMkIsRUFDM0IsV0FBK0IsRUFDL0IsR0FBc0IsRUFDdkMsV0FBOEI7UUFIYixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUE1QnpDLGdCQUFXLEdBQVcsSUFBSSxDQUFDO1FBRzNCLFlBQU8sR0FBVyxJQUFJLENBQUM7UUFHdkIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQWNoQixvQkFBZSxHQUFzQixJQUFJLENBQUM7UUFDMUMsb0JBQWUsR0FBc0IsSUFBSSxDQUFDO1FBRTFDLGlCQUFZLEdBQWlCLElBQUksQ0FBQztRQVF4QyxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztJQUNyQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDeEQsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQzlDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQzlCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2FBQzVCLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDMUQsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDMUQsQ0FBQztZQUNELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7cUZBN0RVLG9CQUFvQjtvRUFBcEIsb0JBQW9COztpRkFBcEIsb0JBQW9CO2NBRGhDLFNBQVM7ZUFBQyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFOzRJQUczRCxXQUFXO2tCQURWLEtBQUs7bUJBQUMsZ0JBQWdCO1lBSXZCLE9BQU87a0JBRE4sS0FBSzttQkFBQyx1QkFBdUI7WUFJOUIsTUFBTTtrQkFETCxLQUFLO21CQUFDLHNCQUFzQjtZQUl6QixJQUFJO2tCQURQLEtBQUs7bUJBQUMsb0JBQW9CO1lBT3ZCLElBQUk7a0JBRFAsS0FBSzttQkFBQyxvQkFBb0I7O0FBZ0Q3QixTQUFTLGNBQWMsQ0FDckIsUUFBZ0IsRUFDaEIsV0FBb0M7SUFFcEMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsQ0FDNUIsQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLGtCQUFrQixDQUMvQyxDQUFDO0lBQ0YsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLFFBQVEseUNBQXlDLFNBQVMsQ0FDM0QsV0FBVyxDQUNaLElBQUksQ0FDTixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICogQG1vZHVsZSB1dGlsc1xuICovXG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIC8vIGNzcGVsbDogZGlzYWJsZS1uZXh0LWxpbmVcbiAgybVzdHJpbmdpZnkgYXMgc3RyaW5naWZ5LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRmVhdHVyZUdhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmVhdHVyZS1nYXRlLnNlcnZpY2UnO1xuXG4vKipcbiAqIEBleGFtcGxlXG4gKiBgYGBcbiAqIDxuZy1jb250YWluZXIgKmFjbEZlYXR1cmVHYXRlPVwiZ2F0ZS1uYW1lXCI+PC9uZy1jb250YWluZXI+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2FjbEZlYXR1cmVHYXRlXScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBGZWF0dXJlR2F0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCdhY2xGZWF0dXJlR2F0ZScpXG4gIGZlYXR1cmVOYW1lOiBzdHJpbmcgPSBudWxsO1xuXG4gIEBJbnB1dCgnYWNsRmVhdHVyZUdhdGVDbHVzdGVyJylcbiAgY2x1c3Rlcjogc3RyaW5nID0gbnVsbDtcblxuICBASW5wdXQoJ2FjbEZlYXR1cmVHYXRlTmVnYXRlJylcbiAgbmVnYXRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdhY2xGZWF0dXJlR2F0ZVRoZW4nKVxuICBzZXQgdGhlbih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dm9pZD4pIHtcbiAgICBhc3NlcnRUZW1wbGF0ZSgnYWNsRmVhdHVyZUdhdGVUaGVuJywgdGVtcGxhdGVSZWYpO1xuICAgIHRoaXMudGhlblRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XG4gIH1cblxuICBASW5wdXQoJ2FjbEZlYXR1cmVHYXRlRWxzZScpXG4gIHNldCBlbHNlKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx2b2lkPikge1xuICAgIGFzc2VydFRlbXBsYXRlKCdhY2xWZXJzaW9uR2F0ZUVsc2UnLCB0ZW1wbGF0ZVJlZik7XG4gICAgdGhpcy5lbHNlVGVtcGxhdGVSZWYgPSB0ZW1wbGF0ZVJlZjtcbiAgfVxuXG4gIHByaXZhdGUgdGhlblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx2b2lkPiA9IG51bGw7XG4gIHByaXZhdGUgZWxzZVRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx2b2lkPiA9IG51bGw7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3JkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dm9pZD4sXG4gICkge1xuICAgIHRoaXMudGhlblRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuZmVhdHVyZU5hbWUpIHtcbiAgICAgIHRoaXMuY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRoZW5UZW1wbGF0ZVJlZik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmZlYXR1cmVHYXRlW1xuICAgICAgdGhpcy5uZWdhdGUgPyAnaXNOZWdhdGVFbmFibGVkJyA6ICdpc0VuYWJsZWQnXG4gICAgXSh0aGlzLmZlYXR1cmVOYW1lLCB0aGlzLmNsdXN0ZXIpXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZShlbmFibGVkID0+IHtcbiAgICAgICAgdGhpcy5jb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50aGVuVGVtcGxhdGVSZWYpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZWxzZVRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgdGhpcy5jb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuZWxzZVRlbXBsYXRlUmVmKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNyZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRUZW1wbGF0ZShcbiAgcHJvcGVydHk6IHN0cmluZyxcbiAgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsLFxuKTogdm9pZCB7XG4gIGNvbnN0IGlzVGVtcGxhdGVSZWZPck51bGwgPSAhIShcbiAgICAhdGVtcGxhdGVSZWYgfHwgdGVtcGxhdGVSZWYuY3JlYXRlRW1iZWRkZWRWaWV3XG4gICk7XG4gIGlmICghaXNUZW1wbGF0ZVJlZk9yTnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke3Byb3BlcnR5fSBtdXN0IGJlIGEgVGVtcGxhdGVSZWYsIGJ1dCByZWNlaXZlZCAnJHtzdHJpbmdpZnkoXG4gICAgICAgIHRlbXBsYXRlUmVmLFxuICAgICAgKX0nLmAsXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -29,13 +29,14 @@ export class FeatureGuard {
29
29
  const data = {
30
30
  featureName: '',
31
31
  guard_url: DEFAULT_FEATURE_FORBIDDEN_URL,
32
+ negate: false,
32
33
  ...route.data,
33
34
  };
34
35
  let currentCluster;
35
36
  if (this.getCluster) {
36
37
  currentCluster = this.getCluster(route);
37
38
  }
38
- return this.featureGate.isEnabled(data.featureName, currentCluster).pipe(map(enabled => {
39
+ return this.featureGate[data.negate ? 'isNegateEnabled' : 'isEnabled'](data.featureName, currentCluster).pipe(map(enabled => {
39
40
  if (enabled)
40
41
  return true;
41
42
  const errorUrl = `${data.guard_url}/${data.featureName}`;
@@ -55,4 +56,4 @@ export class FeatureGuard {
55
56
  }, {
56
57
  type: Optional
57
58
  }] }], null); })();
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb3JlL2d1YXJkcy9mZWF0dXJlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPN0UsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7OztBQUloRixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxtQkFBbUIsQ0FBQztBQUVqRSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FDbkQsOEJBQThCLENBQy9CLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUVILE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFlBQ21CLFdBQStCLEVBQy9CLGdCQUF5QyxFQUd6QyxVQUE2QjtRQUo3QixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF5QjtRQUd6QyxlQUFVLEdBQVYsVUFBVSxDQUFtQjtJQUM3QyxDQUFDO0lBRUosZ0JBQWdCLENBQ2QsVUFBa0MsRUFDbEMsS0FBMEI7UUFFMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVyxDQUNULEtBQTZCLEVBQzdCLEtBQTBCO1FBRTFCLE1BQU0sSUFBSSxHQUFHO1lBQ1gsV0FBVyxFQUFFLEVBQUU7WUFDZixTQUFTLEVBQUUsNkJBQTZCO1lBQ3hDLEdBQUcsS0FBSyxDQUFDLElBQUk7U0FDZCxDQUFDO1FBRUYsSUFBSSxjQUFzQixDQUFDO1FBRTNCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUN0RSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDWixJQUFJLE9BQU87Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDekIsTUFBTSxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV6RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDcEQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs2RUF6Q1UsWUFBWSwyRkFJYixtQkFBbUI7dUVBSmxCLFlBQVksV0FBWixZQUFZLG1CQURDLE1BQU07O2lGQUNuQixZQUFZO2NBRHhCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O3NCQUs3QixNQUFNO3VCQUFDLG1CQUFtQjs7c0JBQzFCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgQ2FuQWN0aXZhdGUsXG4gIENhbkFjdGl2YXRlQ2hpbGQsXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBtYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRmVhdHVyZUdhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmVhdHVyZS1nYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lsZW50bHlOYXZpZ2F0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zaWxlbnRseS1uYXZpZ2F0ZS5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgR2V0Q3VycmVudENsdXN0ZXIgPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpID0+IHN0cmluZztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRkVBVFVSRV9GT1JCSURERU5fVVJMID0gJ2ZlYXR1cmUtZm9yYmlkZGVuJztcblxuZXhwb3J0IGNvbnN0IEdFVF9DVVJSRU5UX0NMVVNURVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48R2V0Q3VycmVudENsdXN0ZXI+KFxuICAnR2V0IGN1cnJlbnQgY2x1c3RlciBmdW5jdGlvbicsXG4pO1xuXG4vKipcbiAqIGBgYHRzXG4gKiBkYXRhOiB7XG4gKiAgcGF0aDogJ2hvbWUnLFxuICogIGNhbkFjdGl2YXRlOiBbIEZlYXR1cmVHdWFyZCBdLFxuICogIGRhdGE6IHsgZmVhdHVyZU5hbWU6ICdhY2UzJywgZ3VhcmRfdXJsOiAneHh4JyAgfVxuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRmVhdHVyZUd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzaWxlbnRseU5hdmlnYXRlOiBTaWxlbnRseU5hdmlnYXRlU2VydmljZSxcbiAgICBASW5qZWN0KEdFVF9DVVJSRU5UX0NMVVNURVIpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdldENsdXN0ZXI6IEdldEN1cnJlbnRDbHVzdGVyLFxuICApIHt9XG5cbiAgY2FuQWN0aXZhdGVDaGlsZChcbiAgICBjaGlsZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYW5BY3RpdmF0ZShjaGlsZFJvdXRlLCBzdGF0ZSk7XG4gIH1cblxuICBjYW5BY3RpdmF0ZShcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGZlYXR1cmVOYW1lOiAnJyxcbiAgICAgIGd1YXJkX3VybDogREVGQVVMVF9GRUFUVVJFX0ZPUkJJRERFTl9VUkwsXG4gICAgICAuLi5yb3V0ZS5kYXRhLFxuICAgIH07XG5cbiAgICBsZXQgY3VycmVudENsdXN0ZXI6IHN0cmluZztcblxuICAgIGlmICh0aGlzLmdldENsdXN0ZXIpIHtcbiAgICAgIGN1cnJlbnRDbHVzdGVyID0gdGhpcy5nZXRDbHVzdGVyKHJvdXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mZWF0dXJlR2F0ZS5pc0VuYWJsZWQoZGF0YS5mZWF0dXJlTmFtZSwgY3VycmVudENsdXN0ZXIpLnBpcGUoXG4gICAgICBtYXAoZW5hYmxlZCA9PiB7XG4gICAgICAgIGlmIChlbmFibGVkKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgY29uc3QgZXJyb3JVcmwgPSBgJHtkYXRhLmd1YXJkX3VybH0vJHtkYXRhLmZlYXR1cmVOYW1lfWA7XG5cbiAgICAgICAgdGhpcy5zaWxlbnRseU5hdmlnYXRlLm5hdmlnYXRlKHN0YXRlLnVybCwgZXJyb3JVcmwpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb3JlL2d1YXJkcy9mZWF0dXJlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPN0UsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7OztBQUloRixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxtQkFBbUIsQ0FBQztBQUVqRSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FDbkQsOEJBQThCLENBQy9CLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUVILE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFlBQ21CLFdBQStCLEVBQy9CLGdCQUF5QyxFQUd6QyxVQUE2QjtRQUo3QixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF5QjtRQUd6QyxlQUFVLEdBQVYsVUFBVSxDQUFtQjtJQUM3QyxDQUFDO0lBRUosZ0JBQWdCLENBQ2QsVUFBa0MsRUFDbEMsS0FBMEI7UUFFMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVyxDQUNULEtBQTZCLEVBQzdCLEtBQTBCO1FBRTFCLE1BQU0sSUFBSSxHQUFHO1lBQ1gsV0FBVyxFQUFFLEVBQUU7WUFDZixTQUFTLEVBQUUsNkJBQTZCO1lBQ3hDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxLQUFLLENBQUMsSUFBSTtTQUNkLENBQUM7UUFFRixJQUFJLGNBQXNCLENBQUM7UUFFM0IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQ3BFLElBQUksQ0FBQyxXQUFXLEVBQ2hCLGNBQWMsQ0FDZixDQUFDLElBQUksQ0FDSixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDWixJQUFJLE9BQU87Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDekIsTUFBTSxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV6RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDcEQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs2RUE3Q1UsWUFBWSwyRkFJYixtQkFBbUI7dUVBSmxCLFlBQVksV0FBWixZQUFZLG1CQURDLE1BQU07O2lGQUNuQixZQUFZO2NBRHhCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O3NCQUs3QixNQUFNO3VCQUFDLG1CQUFtQjs7c0JBQzFCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgQ2FuQWN0aXZhdGUsXG4gIENhbkFjdGl2YXRlQ2hpbGQsXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBtYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRmVhdHVyZUdhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmVhdHVyZS1nYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lsZW50bHlOYXZpZ2F0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zaWxlbnRseS1uYXZpZ2F0ZS5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgR2V0Q3VycmVudENsdXN0ZXIgPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpID0+IHN0cmluZztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRkVBVFVSRV9GT1JCSURERU5fVVJMID0gJ2ZlYXR1cmUtZm9yYmlkZGVuJztcblxuZXhwb3J0IGNvbnN0IEdFVF9DVVJSRU5UX0NMVVNURVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48R2V0Q3VycmVudENsdXN0ZXI+KFxuICAnR2V0IGN1cnJlbnQgY2x1c3RlciBmdW5jdGlvbicsXG4pO1xuXG4vKipcbiAqIGBgYHRzXG4gKiBkYXRhOiB7XG4gKiAgcGF0aDogJ2hvbWUnLFxuICogIGNhbkFjdGl2YXRlOiBbIEZlYXR1cmVHdWFyZCBdLFxuICogIGRhdGE6IHsgZmVhdHVyZU5hbWU6ICdhY2UzJywgZ3VhcmRfdXJsOiAneHh4JyAgfVxuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRmVhdHVyZUd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzaWxlbnRseU5hdmlnYXRlOiBTaWxlbnRseU5hdmlnYXRlU2VydmljZSxcbiAgICBASW5qZWN0KEdFVF9DVVJSRU5UX0NMVVNURVIpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdldENsdXN0ZXI6IEdldEN1cnJlbnRDbHVzdGVyLFxuICApIHt9XG5cbiAgY2FuQWN0aXZhdGVDaGlsZChcbiAgICBjaGlsZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYW5BY3RpdmF0ZShjaGlsZFJvdXRlLCBzdGF0ZSk7XG4gIH1cblxuICBjYW5BY3RpdmF0ZShcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGZlYXR1cmVOYW1lOiAnJyxcbiAgICAgIGd1YXJkX3VybDogREVGQVVMVF9GRUFUVVJFX0ZPUkJJRERFTl9VUkwsXG4gICAgICBuZWdhdGU6IGZhbHNlLFxuICAgICAgLi4ucm91dGUuZGF0YSxcbiAgICB9O1xuXG4gICAgbGV0IGN1cnJlbnRDbHVzdGVyOiBzdHJpbmc7XG5cbiAgICBpZiAodGhpcy5nZXRDbHVzdGVyKSB7XG4gICAgICBjdXJyZW50Q2x1c3RlciA9IHRoaXMuZ2V0Q2x1c3Rlcihyb3V0ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmVhdHVyZUdhdGVbZGF0YS5uZWdhdGUgPyAnaXNOZWdhdGVFbmFibGVkJyA6ICdpc0VuYWJsZWQnXShcbiAgICAgIGRhdGEuZmVhdHVyZU5hbWUsXG4gICAgICBjdXJyZW50Q2x1c3RlcixcbiAgICApLnBpcGUoXG4gICAgICBtYXAoZW5hYmxlZCA9PiB7XG4gICAgICAgIGlmIChlbmFibGVkKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgY29uc3QgZXJyb3JVcmwgPSBgJHtkYXRhLmd1YXJkX3VybH0vJHtkYXRhLmZlYXR1cmVOYW1lfWA7XG5cbiAgICAgICAgdGhpcy5zaWxlbnRseU5hdmlnYXRlLm5hdmlnYXRlKHN0YXRlLnVybCwgZXJyb3JVcmwpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -6,10 +6,11 @@ export class MinimumFormatPipe {
6
6
  constructor(decimal) {
7
7
  this.decimal = decimal;
8
8
  }
9
- transform(value) {
9
+ transform(value, decimalPlaces = 0) {
10
+ const decimalFormat = `1.${decimalPlaces}-${decimalPlaces || 2}`;
10
11
  return +value > 0 && +value < 0.01
11
12
  ? '<0.01'
12
- : this.decimal.transform(value, '1.0-2')?.replace(/,/g, '');
13
+ : this.decimal.transform(value, decimalFormat)?.replace(/,/g, '');
13
14
  }
14
15
  static { this.ɵfac = function MinimumFormatPipe_Factory(t) { return new (t || MinimumFormatPipe)(i0.ɵɵdirectiveInject(i1.DecimalPipe, 16)); }; }
15
16
  static { this.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "aclMinimumFormat", type: MinimumFormatPipe, pure: true, standalone: true }); }
@@ -21,4 +22,4 @@ export class MinimumFormatPipe {
21
22
  standalone: true,
22
23
  }]
23
24
  }], () => [{ type: i1.DecimalPipe }], null); })();
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaW11bS1mb3JtYXQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb3JlL3BpcGVzL21pbmltdW0tZm9ybWF0LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7QUFNcEQsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixZQUE2QixPQUFvQjtRQUFwQixZQUFPLEdBQVAsT0FBTyxDQUFhO0lBQUcsQ0FBQztJQUVyRCxTQUFTLENBQUMsS0FBc0I7UUFDOUIsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSTtZQUNoQyxDQUFDLENBQUMsT0FBTztZQUNULENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO2tGQVBVLGlCQUFpQjswRkFBakIsaUJBQWlCOztpRkFBakIsaUJBQWlCO2NBSjdCLElBQUk7ZUFBQztnQkFDSixJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixVQUFVLEVBQUUsSUFBSTthQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY2ltYWxQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnYWNsTWluaW11bUZvcm1hdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE1pbmltdW1Gb3JtYXRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGVjaW1hbDogRGVjaW1hbFBpcGUpIHt9XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICByZXR1cm4gK3ZhbHVlID4gMCAmJiArdmFsdWUgPCAwLjAxXG4gICAgICA/ICc8MC4wMSdcbiAgICAgIDogdGhpcy5kZWNpbWFsLnRyYW5zZm9ybSh2YWx1ZSwgJzEuMC0yJyk/LnJlcGxhY2UoLywvZywgJycpO1xuICB9XG59XG4iXX0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaW11bS1mb3JtYXQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb3JlL3BpcGVzL21pbmltdW0tZm9ybWF0LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7QUFNcEQsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixZQUE2QixPQUFvQjtRQUFwQixZQUFPLEdBQVAsT0FBTyxDQUFhO0lBQUcsQ0FBQztJQUVyRCxTQUFTLENBQUMsS0FBc0IsRUFBRSxhQUFhLEdBQUcsQ0FBQztRQUNqRCxNQUFNLGFBQWEsR0FBRyxLQUFLLGFBQWEsSUFBSSxhQUFhLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDakUsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSTtZQUNoQyxDQUFDLENBQUMsT0FBTztZQUNULENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO2tGQVJVLGlCQUFpQjswRkFBakIsaUJBQWlCOztpRkFBakIsaUJBQWlCO2NBSjdCLElBQUk7ZUFBQztnQkFDSixJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixVQUFVLEVBQUUsSUFBSTthQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY2ltYWxQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnYWNsTWluaW11bUZvcm1hdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE1pbmltdW1Gb3JtYXRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGVjaW1hbDogRGVjaW1hbFBpcGUpIHt9XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIGRlY2ltYWxQbGFjZXMgPSAwKSB7XG4gICAgY29uc3QgZGVjaW1hbEZvcm1hdCA9IGAxLiR7ZGVjaW1hbFBsYWNlc30tJHtkZWNpbWFsUGxhY2VzIHx8IDJ9YDtcbiAgICByZXR1cm4gK3ZhbHVlID4gMCAmJiArdmFsdWUgPCAwLjAxXG4gICAgICA/ICc8MC4wMSdcbiAgICAgIDogdGhpcy5kZWNpbWFsLnRyYW5zZm9ybSh2YWx1ZSwgZGVjaW1hbEZvcm1hdCk/LnJlcGxhY2UoLywvZywgJycpO1xuICB9XG59XG4iXX0=
@@ -10,13 +10,11 @@ import { API_GATEWAY } from '../constants/public-api';
10
10
  import { CacheStore } from '../utils/public-api';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "@angular/common/http";
13
- const GlobalCluster = Symbol('Global Cluster');
14
13
  export class FeatureGateService {
15
14
  constructor(http) {
16
15
  this.http = http;
17
16
  this.cacheStore = new CacheStore({
18
17
  share: () => shareReplay(1),
19
- idGenerator: (cluster) => cluster || GlobalCluster,
20
18
  fetcher: (cluster) => {
21
19
  const url = cluster
22
20
  ? `${API_GATEWAY}/fg/v1/${cluster}/featuregates`
@@ -39,6 +37,9 @@ export class FeatureGateService {
39
37
  isEnabled(gateName, cluster) {
40
38
  return this.cacheStore.fetch(cluster).pipe(map(v => !!v[gateName]), take(1));
41
39
  }
40
+ isNegateEnabled(gateName, cluster) {
41
+ return this.cacheStore.fetch(cluster).pipe(map(v => !v[gateName]), take(1));
42
+ }
42
43
  /**
43
44
  * filter list with gate, send items without feature gate as begin push (can skip by passing `skipNoFeatureGatePush` argument with true)
44
45
  * @param items - list need filter
@@ -70,4 +71,4 @@ export class FeatureGateService {
70
71
  type: Injectable,
71
72
  args: [{ providedIn: 'root' }]
72
73
  }], () => [{ type: i1.HttpClient }], null); })();
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1nYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvY29yZS9zZXJ2aWNlcy9mZWF0dXJlLWdhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxJQUFJLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUVMLEVBQUUsRUFDRixVQUFVLEVBQ1YsR0FBRyxFQUNILFNBQVMsRUFDVCxXQUFXLEVBQ1gsSUFBSSxHQUNMLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXRELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBRWpELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBRy9DLE1BQU0sT0FBTyxrQkFBa0I7SUFxQjdCLFlBQTZCLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFwQjVCLGVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQztZQUMzQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUMzQixXQUFXLEVBQUUsQ0FBQyxPQUFnQixFQUFFLEVBQUUsQ0FBQyxPQUFPLElBQUksYUFBYTtZQUMzRCxPQUFPLEVBQUUsQ0FBQyxPQUFnQixFQUFFLEVBQUU7Z0JBQzVCLE1BQU0sR0FBRyxHQUFHLE9BQU87b0JBQ2pCLENBQUMsQ0FBQyxHQUFHLFdBQVcsVUFBVSxPQUFPLGVBQWU7b0JBQ2hELENBQUMsQ0FBQyxHQUFHLFdBQVcscUJBQXFCLENBQUM7Z0JBRXhDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXNDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDakUsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQ2hCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7b0JBQ3pCLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO29CQUM5QyxPQUFPLEdBQUcsQ0FBQztnQkFDYixDQUFDLEVBQUUsRUFBNkIsQ0FBQyxDQUNsQyxFQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBNkIsQ0FBQyxDQUFDLENBQ3BELENBQUM7WUFDSixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBRTZDLENBQUM7SUFFakQsU0FBUyxDQUFDLE9BQWdCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLFFBQWdCLEVBQUUsT0FBZ0I7UUFDMUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDdkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILGFBQWEsQ0FDWCxLQUFVLEVBQ1YsWUFBaUMsRUFDakMsT0FBZ0IsRUFDaEIsZUFHVyxPQUFPLEVBQ2xCLHFCQUFxQixHQUFHLEtBQUs7UUFFN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNsRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDTixZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUFDO1FBRUYsT0FBTyxxQkFBcUI7WUFDMUIsQ0FBQyxDQUFDLFFBQVE7WUFDVixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDWCxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDNUQsQ0FBQztJQUNSLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLENBQUMsT0FBZ0I7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQzttRkEvRVUsa0JBQWtCO3VFQUFsQixrQkFBa0IsV0FBbEIsa0JBQWtCLG1CQURMLE1BQU07O2lGQUNuQixrQkFBa0I7Y0FEOUIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIHV0aWxzXG4gKi9cblxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpbHRlciBhcyBfZmlsdGVyLCBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIGNhdGNoRXJyb3IsXG4gIG1hcCxcbiAgc3RhcnRXaXRoLFxuICBzaGFyZVJlcGxheSxcbiAgdGFrZSxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFQSV9HQVRFV0FZIH0gZnJvbSAnLi4vY29uc3RhbnRzL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgRmVhdHVyZUdhdGUsIEt1YmVybmV0ZXNSZXNvdXJjZUxpc3QgfSBmcm9tICcuLi90eXBlcy9wdWJsaWMtYXBpJztcbmltcG9ydCB7IENhY2hlU3RvcmUgfSBmcm9tICcuLi91dGlscy9wdWJsaWMtYXBpJztcblxuY29uc3QgR2xvYmFsQ2x1c3RlciA9IFN5bWJvbCgnR2xvYmFsIENsdXN0ZXInKTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBGZWF0dXJlR2F0ZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlU3RvcmUgPSBuZXcgQ2FjaGVTdG9yZSh7XG4gICAgc2hhcmU6ICgpID0+IHNoYXJlUmVwbGF5KDEpLFxuICAgIGlkR2VuZXJhdG9yOiAoY2x1c3Rlcj86IHN0cmluZykgPT4gY2x1c3RlciB8fCBHbG9iYWxDbHVzdGVyLFxuICAgIGZldGNoZXI6IChjbHVzdGVyPzogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSBjbHVzdGVyXG4gICAgICAgID8gYCR7QVBJX0dBVEVXQVl9L2ZnL3YxLyR7Y2x1c3Rlcn0vZmVhdHVyZWdhdGVzYFxuICAgICAgICA6IGAke0FQSV9HQVRFV0FZfS9mZy92MS9mZWF0dXJlZ2F0ZXNgO1xuXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PEZlYXR1cmVHYXRlPj4odXJsKS5waXBlKFxuICAgICAgICBtYXAoKHsgaXRlbXMgfSkgPT5cbiAgICAgICAgICBpdGVtcy5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgICAgICAgICAgYWNjW2N1cnIubWV0YWRhdGEubmFtZV0gPSBjdXJyLnN0YXR1cy5lbmFibGVkO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiksXG4gICAgICAgICksXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2Yoe30gYXMgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4pKSxcbiAgICAgICk7XG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50KSB7fVxuXG4gIGxvYWRTdGF0ZShjbHVzdGVyPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVTdG9yZS5mZXRjaFN0YXRlKGNsdXN0ZXIpLnBpcGUobWFwKGxvYWQgPT4gbG9hZC5zdGF0ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNoZWNrIGdhdGUgc3RhdHVzXG4gICAqIEBwYXJhbSBnYXRlIC0gc3BlY2lmaWVkIGZlYXR1cmUgZ2F0ZVxuICAgKiBAcGFyYW0gY2x1c3RlciAtIGNoZWNrIGdhdGUgZm9yIHNwZWNpZmllZCBjbHVzdGVyXG4gICAqL1xuICBpc0VuYWJsZWQoZ2F0ZU5hbWU6IHN0cmluZywgY2x1c3Rlcj86IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlU3RvcmUuZmV0Y2goY2x1c3RlcikucGlwZShcbiAgICAgIG1hcCh2ID0+ICEhdltnYXRlTmFtZV0pLFxuICAgICAgdGFrZSgxKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGZpbHRlciBsaXN0IHdpdGggZ2F0ZSwgc2VuZCBpdGVtcyB3aXRob3V0IGZlYXR1cmUgZ2F0ZSBhcyBiZWdpbiBwdXNoIChjYW4gc2tpcCBieSBwYXNzaW5nIGBza2lwTm9GZWF0dXJlR2F0ZVB1c2hgIGFyZ3VtZW50IHdpdGggdHJ1ZSlcbiAgICogQHBhcmFtIGl0ZW1zIC0gbGlzdCBuZWVkIGZpbHRlclxuICAgKiBAcGFyYW0gZ2F0ZUFjY2Vzc29yIC0gaG93IHRvIGdldCBnYXRlIGZyb20gaXRlbVxuICAgKiBAcGFyYW0gY2x1c3RlciAtIGNoZWNrIGdhdGUgZm9yIHNwZWNpZmllZCBjbHVzdGVyXG4gICAqIEBwYXJhbSBmaWx0ZXJNZXRob2QgLSBmaWx0ZXIgbWV0aG9kLCBkZWZhdWx0IHRvIGxpc3QgZmlsdGVyLCBjYW4gZmlsdGVyIGRlZXAgd2l0aCBjcmVhdGVSZWN1cnNpdmVGaWx0ZXIgb3IgdG90YWxseSBjdXN0b20gbWV0aG9kLlxuICAgKiBAcGFyYW0gc2tpcE5vRmVhdHVyZUdhdGVQdXNoIC0gc2tpcCBiZWdpbiBwdXNoICwgZGVmYXVsdCBmYWxzZS5cbiAgICovXG4gIGZpbHRlckVuYWJsZWQ8VD4oXG4gICAgaXRlbXM6IFRbXSxcbiAgICBnYXRlQWNjZXNzb3I6IChpdGVtOiBUKSA9PiBzdHJpbmcsXG4gICAgY2x1c3Rlcj86IHN0cmluZyxcbiAgICBmaWx0ZXJNZXRob2Q6IChcbiAgICAgIGl0ZW1zOiBUW10sXG4gICAgICBjb25kaXRpb246IChpdGVtOiBUKSA9PiBib29sZWFuLFxuICAgICkgPT4gVFtdID0gX2ZpbHRlcixcbiAgICBza2lwTm9GZWF0dXJlR2F0ZVB1c2ggPSBmYWxzZSxcbiAgKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMuY2FjaGVTdG9yZS5mZXRjaChjbHVzdGVyKS5waXBlKFxuICAgICAgbWFwKHYgPT5cbiAgICAgICAgZmlsdGVyTWV0aG9kKGl0ZW1zLCBpdGVtID0+IHtcbiAgICAgICAgICBjb25zdCBnYXRlID0gZ2F0ZUFjY2Vzc29yKGl0ZW0pO1xuICAgICAgICAgIHJldHVybiBnYXRlID8gKGdldChpdGVtLCAnbmVnYXRlJykgPyAhdltnYXRlXSA6ICEhdltnYXRlXSkgOiB0cnVlO1xuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKTtcblxuICAgIHJldHVybiBza2lwTm9GZWF0dXJlR2F0ZVB1c2hcbiAgICAgID8gZmlsdGVyZWRcbiAgICAgIDogZmlsdGVyZWQucGlwZShcbiAgICAgICAgICBzdGFydFdpdGgoZmlsdGVyTWV0aG9kKGl0ZW1zLCBpdGVtID0+ICFnYXRlQWNjZXNzb3IoaXRlbSkpKSxcbiAgICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZWZldGNoIGNhY2hlZCBmZWF0dXJlIGdhdGUgc2V0dGluZ3NcbiAgICogQHBhcmFtIGNsdXN0ZXIgLSBzcGVjaWZpZWQgY2x1c3RlciwgcmVmZXRjaCBhbGwgYWxyZWFkeSBjYWNoZWQgc2V0dGluZ3Mgd2hlbiBjbHVzdGVyIGlzIGVtcHR5XG4gICAqL1xuICByZWZldGNoQ2FjaGUoY2x1c3Rlcj86IHN0cmluZykge1xuICAgIHRoaXMuY2FjaGVTdG9yZS5yZWZldGNoKGNsdXN0ZXIpO1xuICB9XG59XG4iXX0=
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1nYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvY29yZS9zZXJ2aWNlcy9mZWF0dXJlLWdhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxJQUFJLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUVMLEVBQUUsRUFDRixVQUFVLEVBQ1YsR0FBRyxFQUNILFNBQVMsRUFDVCxXQUFXLEVBQ1gsSUFBSSxHQUNMLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXRELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBR2pELE1BQU0sT0FBTyxrQkFBa0I7SUF1QjdCLFlBQTZCLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUF0QjVCLGVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQztZQUMzQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUMzQixPQUFPLEVBQUUsQ0FBQyxPQUFnQixFQUFFLEVBQUU7Z0JBQzVCLE1BQU0sR0FBRyxHQUFHLE9BQU87b0JBQ2pCLENBQUMsQ0FBQyxHQUFHLFdBQVcsVUFBVSxPQUFPLGVBQWU7b0JBQ2hELENBQUMsQ0FBQyxHQUFHLFdBQVcscUJBQXFCLENBQUM7Z0JBRXhDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXNDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDakUsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUs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QHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIHV0aWxzXG4gKi9cblxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpbHRlciBhcyBfZmlsdGVyLCBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIGNhdGNoRXJyb3IsXG4gIG1hcCxcbiAgc3RhcnRXaXRoLFxuICBzaGFyZVJlcGxheSxcbiAgdGFrZSxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFQSV9HQVRFV0FZIH0gZnJvbSAnLi4vY29uc3RhbnRzL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgRmVhdHVyZUdhdGUsIEt1YmVybmV0ZXNSZXNvdXJjZUxpc3QgfSBmcm9tICcuLi90eXBlcy9wdWJsaWMtYXBpJztcbmltcG9ydCB7IENhY2hlU3RvcmUgfSBmcm9tICcuLi91dGlscy9wdWJsaWMtYXBpJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBGZWF0dXJlR2F0ZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlU3RvcmUgPSBuZXcgQ2FjaGVTdG9yZSh7XG4gICAgc2hhcmU6ICgpID0+IHNoYXJlUmVwbGF5KDEpLFxuICAgIGZldGNoZXI6IChjbHVzdGVyPzogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSBjbHVzdGVyXG4gICAgICAgID8gYCR7QVBJX0dBVEVXQVl9L2ZnL3YxLyR7Y2x1c3Rlcn0vZmVhdHVyZWdhdGVzYFxuICAgICAgICA6IGAke0FQSV9HQVRFV0FZfS9mZy92MS9mZWF0dXJlZ2F0ZXNgO1xuXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PEZlYXR1cmVHYXRlPj4odXJsKS5waXBlKFxuICAgICAgICBtYXAoKHsgaXRlbXMgfSkgPT5cbiAgICAgICAgICBpdGVtcy5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjLCBjdXJyKSA9PiB7XG4gICAgICAgICAgICAgIGFjY1tjdXJyLm1ldGFkYXRhLm5hbWVdID0gY3Vyci5zdGF0dXMuZW5hYmxlZDtcbiAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPixcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHt9IGFzIFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+KSksXG4gICAgICApO1xuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCkge31cblxuICBsb2FkU3RhdGUoY2x1c3Rlcj86IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmNhY2hlU3RvcmUuZmV0Y2hTdGF0ZShjbHVzdGVyKS5waXBlKG1hcChsb2FkID0+IGxvYWQuc3RhdGUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjaGVjayBnYXRlIHN0YXR1c1xuICAgKiBAcGFyYW0gZ2F0ZSAtIHNwZWNpZmllZCBmZWF0dXJlIGdhdGVcbiAgICogQHBhcmFtIGNsdXN0ZXIgLSBjaGVjayBnYXRlIGZvciBzcGVjaWZpZWQgY2x1c3RlclxuICAgKi9cbiAgaXNFbmFibGVkKGdhdGVOYW1lOiBzdHJpbmcsIGNsdXN0ZXI/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZVN0b3JlLmZldGNoKGNsdXN0ZXIpLnBpcGUoXG4gICAgICBtYXAodiA9PiAhIXZbZ2F0ZU5hbWVdKSxcbiAgICAgIHRha2UoMSksXG4gICAgKTtcbiAgfVxuXG4gIGlzTmVnYXRlRW5hYmxlZChnYXRlTmFtZTogc3RyaW5nLCBjbHVzdGVyPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVTdG9yZS5mZXRjaChjbHVzdGVyKS5waXBlKFxuICAgICAgbWFwKHYgPT4gIXZbZ2F0ZU5hbWVdKSxcbiAgICAgIHRha2UoMSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBmaWx0ZXIgbGlzdCB3aXRoIGdhdGUsIHNlbmQgaXRlbXMgd2l0aG91dCBmZWF0dXJlIGdhdGUgYXMgYmVnaW4gcHVzaCAoY2FuIHNraXAgYnkgcGFzc2luZyBgc2tpcE5vRmVhdHVyZUdhdGVQdXNoYCBhcmd1bWVudCB3aXRoIHRydWUpXG4gICAqIEBwYXJhbSBpdGVtcyAtIGxpc3QgbmVlZCBmaWx0ZXJcbiAgICogQHBhcmFtIGdhdGVBY2Nlc3NvciAtIGhvdyB0byBnZXQgZ2F0ZSBmcm9tIGl0ZW1cbiAgICogQHBhcmFtIGNsdXN0ZXIgLSBjaGVjayBnYXRlIGZvciBzcGVjaWZpZWQgY2x1c3RlclxuICAgKiBAcGFyYW0gZmlsdGVyTWV0aG9kIC0gZmlsdGVyIG1ldGhvZCwgZGVmYXVsdCB0byBsaXN0IGZpbHRlciwgY2FuIGZpbHRlciBkZWVwIHdpdGggY3JlYXRlUmVjdXJzaXZlRmlsdGVyIG9yIHRvdGFsbHkgY3VzdG9tIG1ldGhvZC5cbiAgICogQHBhcmFtIHNraXBOb0ZlYXR1cmVHYXRlUHVzaCAtIHNraXAgYmVnaW4gcHVzaCAsIGRlZmF1bHQgZmFsc2UuXG4gICAqL1xuICBmaWx0ZXJFbmFibGVkPFQ+KFxuICAgIGl0ZW1zOiBUW10sXG4gICAgZ2F0ZUFjY2Vzc29yOiAoaXRlbTogVCkgPT4gc3RyaW5nLFxuICAgIGNsdXN0ZXI/OiBzdHJpbmcsXG4gICAgZmlsdGVyTWV0aG9kOiAoXG4gICAgICBpdGVtczogVFtdLFxuICAgICAgY29uZGl0aW9uOiAoaXRlbTogVCkgPT4gYm9vbGVhbixcbiAgICApID0+IFRbXSA9IF9maWx0ZXIsXG4gICAgc2tpcE5vRmVhdHVyZUdhdGVQdXNoID0gZmFsc2UsXG4gICk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgY29uc3QgZmlsdGVyZWQgPSB0aGlzLmNhY2hlU3RvcmUuZmV0Y2goY2x1c3RlcikucGlwZShcbiAgICAgIG1hcCh2ID0+XG4gICAgICAgIGZpbHRlck1ldGhvZChpdGVtcywgaXRlbSA9PiB7XG4gICAgICAgICAgY29uc3QgZ2F0ZSA9IGdhdGVBY2Nlc3NvcihpdGVtKTtcbiAgICAgICAgICByZXR1cm4gZ2F0ZSA/IChnZXQoaXRlbSwgJ25lZ2F0ZScpID8gIXZbZ2F0ZV0gOiAhIXZbZ2F0ZV0pIDogdHJ1ZTtcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICk7XG5cbiAgICByZXR1cm4gc2tpcE5vRmVhdHVyZUdhdGVQdXNoXG4gICAgICA/IGZpbHRlcmVkXG4gICAgICA6IGZpbHRlcmVkLnBpcGUoXG4gICAgICAgICAgc3RhcnRXaXRoKGZpbHRlck1ldGhvZChpdGVtcywgaXRlbSA9PiAhZ2F0ZUFjY2Vzc29yKGl0ZW0pKSksXG4gICAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogcmVmZXRjaCBjYWNoZWQgZmVhdHVyZSBnYXRlIHNldHRpbmdzXG4gICAqIEBwYXJhbSBjbHVzdGVyIC0gc3BlY2lmaWVkIGNsdXN0ZXIsIHJlZmV0Y2ggYWxsIGFscmVhZHkgY2FjaGVkIHNldHRpbmdzIHdoZW4gY2x1c3RlciBpcyBlbXB0eVxuICAgKi9cbiAgcmVmZXRjaENhY2hlKGNsdXN0ZXI/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmNhY2hlU3RvcmUucmVmZXRjaChjbHVzdGVyKTtcbiAgfVxufVxuIl19
@@ -3,4 +3,4 @@
3
3
  * @module types
4
4
  */
5
5
  export {};
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb3JlL3R5cGVzL2NvbW1vbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgdHlwZXNcbiAqL1xuXG5leHBvcnQgdHlwZSBTdHJpbmdNYXAgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudmlyb25tZW50cyB7XG4gIEdMT0JBTF9OQU1FU1BBQ0U/OiBzdHJpbmc7XG4gIExBQkVMX0JBU0VfRE9NQUlOPzogc3RyaW5nO1xuICBMT0dPX1VSTD86IHN0cmluZztcbiAgSU5ORVJfUFJPSkVDVF9OU19QUkVGSVg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VMaXN0UGFyYW1zIGV4dGVuZHMgU3RyaW5nTWFwIHtcbiAgbGltaXQ/OiBzdHJpbmc7XG4gIGNvbnRpbnVlPzogc3RyaW5nO1xuICBsYWJlbFNlbGVjdG9yPzogc3RyaW5nO1xuICBmaWVsZFNlbGVjdG9yPzogc3RyaW5nO1xuICBmaWVsZD86IHN0cmluZztcbiAga2V5d29yZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VQYXJhbXMge1xuICBwcm9qZWN0Pzogc3RyaW5nO1xuICBjbHVzdGVyPzogc3RyaW5nO1xuICBuYW1lc3BhY2U/OiBzdHJpbmc7XG4gIHNlcnZpY2VtZXNoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZUxpc3RQYXJhbXNcbiAgZXh0ZW5kcyBXb3Jrc3BhY2VQYXJhbXMsXG4gICAgUmVzb3VyY2VMaXN0UGFyYW1zIHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlRGV0YWlsUGFyYW1zIGV4dGVuZHMgV29ya3NwYWNlTGlzdFBhcmFtcyB7XG4gIG5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEtleVZhbHVlPFYgPSBzdHJpbmcsIFQgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+ID0gVCAmIHtcbiAga2V5OiBzdHJpbmc7XG4gIHZhbHVlOiBWO1xufTtcblxuZXhwb3J0IHR5cGUgUGFnaW5hdGlvbjxULCBPID0geyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0+ID0ge1xuICB0b3RhbDogbnVtYmVyO1xuICBpdGVtczogVFtdO1xufSAmIE87XG4iXX0=
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb3JlL3R5cGVzL2NvbW1vbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgdHlwZXNcbiAqL1xuXG5leHBvcnQgdHlwZSBTdHJpbmdNYXAgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudmlyb25tZW50cyB7XG4gIEdMT0JBTF9OQU1FU1BBQ0U/OiBzdHJpbmc7XG4gIExBQkVMX0JBU0VfRE9NQUlOPzogc3RyaW5nO1xuICBMT0dPX1VSTD86IHN0cmluZztcbiAgSU5ORVJfUFJPSkVDVF9OU19QUkVGSVg/OiBzdHJpbmc7XG4gIENQQUFTX1NFU1NJT05fU1dJVENIPzogJ29uJyB8ICdvZmYnO1xuICBDTE9TRV9CUk9XU0VSX0VORF9TRVNTSU9OPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTGlzdFBhcmFtcyBleHRlbmRzIFN0cmluZ01hcCB7XG4gIGxpbWl0Pzogc3RyaW5nO1xuICBjb250aW51ZT86IHN0cmluZztcbiAgbGFiZWxTZWxlY3Rvcj86IHN0cmluZztcbiAgZmllbGRTZWxlY3Rvcj86IHN0cmluZztcbiAgZmllbGQ/OiBzdHJpbmc7XG4gIGtleXdvcmQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlUGFyYW1zIHtcbiAgcHJvamVjdD86IHN0cmluZztcbiAgY2x1c3Rlcj86IHN0cmluZztcbiAgbmFtZXNwYWNlPzogc3RyaW5nO1xuICBzZXJ2aWNlbWVzaD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VMaXN0UGFyYW1zXG4gIGV4dGVuZHMgV29ya3NwYWNlUGFyYW1zLFxuICAgIFJlc291cmNlTGlzdFBhcmFtcyB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZURldGFpbFBhcmFtcyBleHRlbmRzIFdvcmtzcGFjZUxpc3RQYXJhbXMge1xuICBuYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBLZXlWYWx1ZTxWID0gc3RyaW5nLCBUIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0PiA9IFQgJiB7XG4gIGtleTogc3RyaW5nO1xuICB2YWx1ZTogVjtcbn07XG5cbmV4cG9ydCB0eXBlIFBhZ2luYXRpb248VCwgTyA9IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9PiA9IHtcbiAgdG90YWw6IG51bWJlcjtcbiAgaXRlbXM6IFRbXTtcbn0gJiBPO1xuIl19