@alauda-fe/common 1.4.0 → 1.4.2

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 (64) 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/authorization.d.ts +27 -0
  7. package/authorization/constants.d.ts +11 -0
  8. package/authorization/interceptor.service.d.ts +2 -0
  9. package/authorization/public-api.d.ts +3 -0
  10. package/authorization/session-manage.service.d.ts +2 -4
  11. package/authorization/state.service.d.ts +6 -30
  12. package/authorization/storage-token.d.ts +4 -10
  13. package/business/resource-select/exports/project-selector/component.d.ts +1 -0
  14. package/core/abstract/base-nested-form-control.d.ts +1 -1
  15. package/core/directives/feature-gate.directive.d.ts +2 -1
  16. package/core/pipes/minimum-format.pipe.d.ts +1 -1
  17. package/core/services/feature-gate.service.d.ts +1 -0
  18. package/core/types/commons.d.ts +2 -0
  19. package/core/types/k8s/crd.d.ts +64 -0
  20. package/core/types/resource-definitions.d.ts +3 -3
  21. package/core/utils/cache-store.d.ts +15 -13
  22. package/core/utils/common.d.ts +1 -0
  23. package/core/utils/version.d.ts +1 -1
  24. package/effect-directive/event.directive.d.ts +36 -0
  25. package/esm2022/api/auth-api.service.mjs +34 -0
  26. package/esm2022/api/platform-ui.service.mjs +2 -1
  27. package/esm2022/api/public-api.mjs +2 -1
  28. package/esm2022/array-form-table/form/component.mjs +30 -15
  29. package/esm2022/authorization/authorization.mjs +157 -0
  30. package/esm2022/authorization/constants.mjs +15 -0
  31. package/esm2022/authorization/interceptor.service.mjs +32 -10
  32. package/esm2022/authorization/public-api.mjs +4 -1
  33. package/esm2022/authorization/session-manage.service.mjs +11 -24
  34. package/esm2022/authorization/state.service.mjs +46 -140
  35. package/esm2022/authorization/storage-token.mjs +12 -88
  36. package/esm2022/business/resource-select/exports/project-selector/component.mjs +14 -6
  37. package/esm2022/business/resource-select/internals/data-grid/component.mjs +2 -2
  38. package/esm2022/core/directives/feature-gate.directive.mjs +7 -4
  39. package/esm2022/core/guards/feature.guard.mjs +3 -2
  40. package/esm2022/core/pipes/minimum-format.pipe.mjs +4 -3
  41. package/esm2022/core/services/feature-gate.service.mjs +4 -3
  42. package/esm2022/core/types/commons.mjs +1 -1
  43. package/esm2022/core/types/k8s/crd.mjs +8 -1
  44. package/esm2022/core/types/resource-definitions.mjs +2 -2
  45. package/esm2022/core/utils/cache-store.mjs +56 -29
  46. package/esm2022/core/utils/common.mjs +9 -1
  47. package/esm2022/effect-directive/event.directive.mjs +79 -4
  48. package/esm2022/k8s-resource-list/footer/component.mjs +7 -5
  49. package/esm2022/multi-search/multi-search-tags/component.mjs +2 -2
  50. package/esm2022/multi-search/types.mjs +1 -1
  51. package/esm2022/page-scaffold/navigation/navconfig-loader/navconfig-loader.service.mjs +2 -2
  52. package/esm2022/page-scaffold/page-header/account-menu/component/component.mjs +3 -8
  53. package/esm2022/page-scaffold/page-header/common-layout/product-select/component.mjs +2 -2
  54. package/esm2022/pod-status/component.mjs +34 -55
  55. package/esm2022/searchable-selector/component.mjs +2 -2
  56. package/esm2022/widget/date-range-picker/component.mjs +1 -2
  57. package/esm2022/widget/status-icon/status-icon.component.mjs +1 -1
  58. package/multi-search/types.d.ts +1 -0
  59. package/package.json +1 -1
  60. package/page-scaffold/page/notices/notice.component.d.ts +1 -1
  61. package/pod-status/component.d.ts +1 -3
  62. package/styles/tailwind-preset.scss +1 -1
  63. package/table/helper.d.ts +1 -1
  64. package/table/module.d.ts +1 -1
@@ -0,0 +1,14 @@
1
+ import { KubernetesResourceList, ResourceListParams, RoleTemplate, User, UserBinding, UserRole } from '../core/public-api';
2
+ import * as i0 from "@angular/core";
3
+ export declare class AuthApiService {
4
+ private http;
5
+ getUserBindingList(params: ResourceListParams): import("rxjs").Observable<KubernetesResourceList<UserBinding>>;
6
+ getUserRoleList(params: {
7
+ users: string;
8
+ project?: string;
9
+ }): import("rxjs").Observable<KubernetesResourceList<UserRole>>;
10
+ getRoleTemplateList(params: ResourceListParams): import("rxjs").Observable<KubernetesResourceList<RoleTemplate>>;
11
+ getUser(name: string): import("rxjs").Observable<User>;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<AuthApiService, never>;
13
+ static ɵprov: i0.ɵɵInjectableDeclaration<AuthApiService>;
14
+ }
@@ -39,6 +39,7 @@ export declare class PlatformUIService {
39
39
  getBackgroundImages(): import("rxjs").Observable<{
40
40
  topImage: string;
41
41
  bottomImage: string;
42
+ hasCustomized: boolean;
42
43
  }>;
43
44
  static ɵfac: i0.ɵɵFactoryDeclaration<PlatformUIService, never>;
44
45
  static ɵprov: i0.ɵɵInjectableDeclaration<PlatformUIService>;
@@ -19,3 +19,4 @@ export * from './project-api.service';
19
19
  export * from './platform-ui.service';
20
20
  export * from './api-compatible.interceptor';
21
21
  export * from './acp-common-api.service';
22
+ export * from './auth-api.service';
@@ -65,9 +65,13 @@ export declare class ArrayFormTableComponent implements OnDestroy {
65
65
  */
66
66
  zeroStateTemplate: TemplateRef<any>;
67
67
  /**
68
- * 行之间的分隔区域
68
+ * 行之间的分隔区域自定义模板
69
69
  */
70
70
  separatorTemplate: TemplateRef<any>;
71
+ /**
72
+ * 行之间的分隔区域,默认关闭
73
+ */
74
+ rowSeparator: boolean;
71
75
  ngFormGroupDirective: FormGroupDirective;
72
76
  rows: any[];
73
77
  resourceName: string;
@@ -78,7 +82,7 @@ export declare class ArrayFormTableComponent implements OnDestroy {
78
82
  addDisabled: boolean | '';
79
83
  actionColumnDivider: boolean | '';
80
84
  showZeroState: boolean;
81
- get formDirective(): FormGroupDirective | NgForm;
85
+ get formDirective(): NgForm | FormGroupDirective;
82
86
  /**
83
87
  * 自定义是否展示错误内容
84
88
  * 例如 control 是 FormGroup,只有在内部子 control 错误时才需要展示错误内容
@@ -98,5 +102,5 @@ export declare class ArrayFormTableComponent implements OnDestroy {
98
102
  ngOnDestroy(): void;
99
103
  shouldShowRowError: (control: AbstractControl) => import("rxjs").Observable<boolean>;
100
104
  static ɵfac: i0.ɵɵFactoryDeclaration<ArrayFormTableComponent, never>;
101
- static ɵcmp: i0.ɵɵComponentDeclaration<ArrayFormTableComponent, "acl-array-form-table", never, { "rows": { "alias": "rows"; "required": false; }; "resourceName": { "alias": "resourceName"; "required": false; }; "resourceNameTranslated": { "alias": "resourceNameTranslated"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "addDisabled": { "alias": "addDisabled"; "required": false; }; "actionColumnDivider": { "alias": "actionColumnDivider"; "required": false; }; "showZeroState": { "alias": "showZeroState"; "required": false; }; "showRowError": { "alias": "showRowError"; "required": false; }; "rowBackgroundColorFn": { "alias": "rowBackgroundColorFn"; "required": false; }; "minRow": { "alias": "minRow"; "required": false; }; "minRowTooltip": { "alias": "minRowTooltip"; "required": false; }; "maxRow": { "alias": "maxRow"; "required": false; }; "maxRowTooltip": { "alias": "maxRowTooltip"; "required": false; }; }, { "add": "add"; "remove": "remove"; }, ["headerTemplate", "rowErrorTemplate", "rowControlTemplate", "footerTemplate", "zeroStateTemplate", "separatorTemplate", "ngFormGroupDirective", "rowTemplates"], never, true, never>;
105
+ static ɵcmp: i0.ɵɵComponentDeclaration<ArrayFormTableComponent, "acl-array-form-table", never, { "rowSeparator": { "alias": "rowSeparator"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "resourceName": { "alias": "resourceName"; "required": false; }; "resourceNameTranslated": { "alias": "resourceNameTranslated"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "addDisabled": { "alias": "addDisabled"; "required": false; }; "actionColumnDivider": { "alias": "actionColumnDivider"; "required": false; }; "showZeroState": { "alias": "showZeroState"; "required": false; }; "showRowError": { "alias": "showRowError"; "required": false; }; "rowBackgroundColorFn": { "alias": "rowBackgroundColorFn"; "required": false; }; "minRow": { "alias": "minRow"; "required": false; }; "minRowTooltip": { "alias": "minRowTooltip"; "required": false; }; "maxRow": { "alias": "maxRow"; "required": false; }; "maxRowTooltip": { "alias": "maxRowTooltip"; "required": false; }; }, { "add": "add"; "remove": "remove"; }, ["headerTemplate", "rowErrorTemplate", "rowControlTemplate", "footerTemplate", "zeroStateTemplate", "separatorTemplate", "ngFormGroupDirective", "rowTemplates"], never, true, never>;
102
106
  }
@@ -0,0 +1 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><rect width="20" height="20" rx="1"/><path d="M3.652 6.8h1.536c.106 0 .192.086.192.192v1.536a.192.192 0 0 1-.192.192H3.652a.192.192 0 0 1-.192-.192V6.992c0-.106.086-.192.192-.192Zm3.72 0h1.536c.106 0 .192.086.192.192v1.536a.192.192 0 0 1-.192.192H7.372a.192.192 0 0 1-.192-.192V6.992c0-.106.086-.192.192-.192Zm3.72 0h1.536c.106 0 .192.086.192.192v1.536a.192.192 0 0 1-.192.192h-1.536a.192.192 0 0 1-.192-.192V6.992c0-.106.086-.192.192-.192Zm3.72 0h1.536c.106 0 .192.086.192.192v1.536a.192.192 0 0 1-.192.192h-1.536a.192.192 0 0 1-.192-.192V6.992c0-.106.086-.192.192-.192Zm-11.16 4.48h1.536c.106 0 .192.086.192.192v1.536a.192.192 0 0 1-.192.192H3.652a.192.192 0 0 1-.192-.192v-1.536c0-.106.086-.192.192-.192Zm3.72 0h1.536c.106 0 .192.086.192.192v1.536a.192.192 0 0 1-.192.192H7.372a.192.192 0 0 1-.192-.192v-1.536c0-.106.086-.192.192-.192Zm3.72 0h1.536c.106 0 .192.086.192.192v1.536a.192.192 0 0 1-.192.192h-1.536a.192.192 0 0 1-.192-.192v-1.536c0-.106.086-.192.192-.192Zm3.72 0h1.536c.106 0 .192.086.192.192v1.536a.192.192 0 0 1-.192.192h-1.536a.192.192 0 0 1-.192-.192v-1.536c0-.106.086-.192.192-.192Z" fill="#646669"/></g></svg>
@@ -0,0 +1,27 @@
1
+ import { AccountInfo } from '../page-scaffold/public-api';
2
+ export interface AuthorizationState {
3
+ expireAt?: string;
4
+ issuedAt?: string;
5
+ state?: string;
6
+ authUrl?: string;
7
+ logoutUrl?: string;
8
+ info?: AccountInfo;
9
+ }
10
+ export interface TokenResponse {
11
+ token_storage: string;
12
+ token_type: string;
13
+ expire_at: string;
14
+ issued_at: string;
15
+ id_token?: string;
16
+ }
17
+ export declare function fetchAuthorizationState(): Promise<AuthorizationState>;
18
+ export declare function getAuthorizationState(): AuthorizationState;
19
+ export declare function initAuthorizationState(state: AuthorizationState): void;
20
+ export declare function attachAuthorizationHeader(): {
21
+ Authorization?: string;
22
+ };
23
+ export declare function logoutAudit(): Promise<{
24
+ logout_redirect_url?: string;
25
+ }>;
26
+ export declare function logout(returnCurrentPage?: boolean | string): void;
27
+ export declare function redirectSSOEntry(entry: string): string;
@@ -0,0 +1,11 @@
1
+ export declare const STORAGE_TYPE_KEY = "token_storage";
2
+ export declare const CODE_KEY = "code";
3
+ export declare const ID_TOKEN_KEY = "id_token";
4
+ export declare const LOADING_CACHE = 15000;
5
+ export declare const LOGIN_API = "/console/api/v2/token/login";
6
+ export declare const LOGOUT_API = "/console/api/v2/token/logout";
7
+ export declare const CALLBACK_API = "/console/api/v2/token/callback";
8
+ export declare const TOKEN_REFRESH_API = "/console/api/v2/token/refresh";
9
+ export declare const TOKEN_INFO_API = "/console/api/v2/token/info";
10
+ export declare const EXTERNAL_REDIRECT_API = "/console/api/v2/token/redirect";
11
+ export declare const REDIRECT_URIS: Set<string>;
@@ -15,9 +15,11 @@ export declare class AuthorizationInterceptorService implements HttpInterceptor
15
15
  private readonly dialog;
16
16
  private readonly sessionManage;
17
17
  private auth;
18
+ private sessionInvalidConfirm;
18
19
  constructor(anonymousApis: Array<string | RegExp>, apiGateway: ApiGatewayService, injector: Injector, dialog: DialogService, sessionManage: SessionManageService);
19
20
  intercept(req: HttpRequest<unknown>, next: HttpHandler): import("rxjs").Observable<import("@angular/common/http").HttpEvent<any>>;
20
21
  isConsoleRelative(url: string): boolean;
22
+ private cloneReq;
21
23
  private retryAuth;
22
24
  private getAuth;
23
25
  private needAuthorization;
@@ -9,3 +9,6 @@ export * from './interceptor.service';
9
9
  export * from './app-init-url';
10
10
  export * from './session-manage.service';
11
11
  export * from './state.service';
12
+ export * from './storage-token';
13
+ export * from './authorization';
14
+ export * from './constants';
@@ -1,17 +1,15 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
2
  import { PageVisibilityService } from '../api/page-visibility.service';
3
- import { K8sApiService } from '../public-api';
4
3
  import * as i0 from "@angular/core";
4
+ export declare const HEARTBEAT_POLLING = 15000;
5
5
  export declare const SESSION_MANAGE_KEY = "session-manage-construct-time";
6
6
  export declare class SessionManageService {
7
7
  private readonly http;
8
8
  private readonly pageVisibility;
9
- private readonly k8sApi;
10
9
  private readonly subscription;
11
10
  private readonly visibility$;
12
- private readonly policy$;
13
11
  private readonly userAction$;
14
- constructor(http: HttpClient, pageVisibility: PageVisibilityService, k8sApi: K8sApiService, disabled: boolean);
12
+ constructor(http: HttpClient, pageVisibility: PageVisibilityService, disabled: boolean);
15
13
  complete(): void;
16
14
  static ɵfac: i0.ɵɵFactoryDeclaration<SessionManageService, never>;
17
15
  static ɵprov: i0.ɵɵInjectableDeclaration<SessionManageService>;
@@ -1,45 +1,21 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { AccountInfo } from '../page-scaffold/public-api';
3
+ import { logout, TokenResponse } from './authorization';
3
4
  import * as i0 from "@angular/core";
4
- export interface AuthorizationState {
5
- expireAt?: string;
6
- issuedAt?: string;
7
- state?: string;
8
- authUrl?: string;
9
- logoutUrl?: string;
10
- info?: AccountInfo;
11
- }
12
- export interface TokenResponse {
13
- token_storage: StorageType;
14
- token_type: string;
15
- expire_at: string;
16
- issued_at: string;
17
- }
18
- export type StorageType = 'local' | 'session';
19
- export declare const STORAGE_TYPE_KEY = "token_storage";
20
- export declare const CODE_KEY = "code";
21
- export declare const ID_TOKEN = "id_token";
22
5
  export declare class AuthorizationStateService {
23
6
  private readonly http;
24
7
  private readonly state$;
25
8
  private checkTokenCache$;
26
9
  private refreshTokenCache$;
27
- stateSnapshot: AuthorizationState;
28
10
  payloadSnapshot: AccountInfo;
29
- logout(specificUrl?: boolean): void;
30
- logoutAudit(): Observable<Object>;
31
- redirectToDex(redirectUrl?: string): Promise<void>;
32
- refreshToken(): Observable<unknown>;
11
+ logout: typeof logout;
12
+ constructor();
13
+ logoutWithAudit(): void;
14
+ refreshToken(): Observable<TokenResponse>;
33
15
  checkToken(): Observable<unknown>;
34
16
  getTokenPayload<T>(): Observable<T>;
35
17
  getAccountInfo(): Observable<any>;
36
- private getAuthConfiguration;
37
- private getExistedToken;
38
- private getTokenFromLocal;
39
- private getTokenByCode;
40
- private getCookieByToken;
41
- private getParams;
18
+ getTokenByStorage(): string;
42
19
  static ɵfac: i0.ɵɵFactoryDeclaration<AuthorizationStateService, never>;
43
20
  static ɵprov: i0.ɵɵInjectableDeclaration<AuthorizationStateService>;
44
21
  }
45
- export declare function redirectSSOEntry(entry: string): string;
@@ -1,11 +1,5 @@
1
- import { StorageType } from './state.service';
2
- export interface StorageToken {
3
- storageType: StorageType;
4
- idToken: string;
5
- refreshToken: string;
6
- }
7
- export declare function readStorageType(): StorageType;
8
1
  export declare function cleanStorageToken(): void;
9
- export declare function writeStorageToken(token: StorageToken): void;
10
- export declare function readStorageToken(): Partial<StorageToken>;
11
- export declare function asyncReadStorageToken(): Promise<Partial<StorageToken>>;
2
+ export declare function writeStorageToken(token: string): void;
3
+ export declare function readStorageToken(): string;
4
+ export declare function refreshStorageAliveRecord(): void;
5
+ export declare function readStorageAliveRecord(): number;
@@ -17,6 +17,7 @@ export declare class ProjectSelectorComponent implements AfterViewInit {
17
17
  displayFields: ConfigurableField[];
18
18
  isActive: boolean;
19
19
  popupRef: ResourceSelectorPopupRef;
20
+ destroy$: import("rxjs").Observable<void>;
20
21
  constructor(popupService: ResourceSelectorPopupService, cdr: ChangeDetectorRef, elementRef: ElementRef, auth: AuthorizationStateService);
21
22
  ngAfterViewInit(): void;
22
23
  openPopup(): void;
@@ -21,7 +21,7 @@ export declare class BaseNestedFormControl<V, M = V> implements AfterViewInit, O
21
21
  protected asyncValidator: boolean;
22
22
  protected cdr: ChangeDetectorRef;
23
23
  protected destroy$$: Subject<void>;
24
- protected hostForm: FormGroupDirective | NgForm;
24
+ protected hostForm: NgForm | FormGroupDirective;
25
25
  constructor();
26
26
  ngAfterViewInit(): void;
27
27
  ngOnDestroy(): void;
@@ -17,6 +17,7 @@ export declare class FeatureGateDirective implements OnInit, OnDestroy {
17
17
  private readonly crd;
18
18
  featureName: string;
19
19
  cluster: string;
20
+ negate: boolean;
20
21
  set then(templateRef: TemplateRef<void>);
21
22
  set else(templateRef: TemplateRef<void>);
22
23
  private thenTemplateRef;
@@ -26,5 +27,5 @@ export declare class FeatureGateDirective implements OnInit, OnDestroy {
26
27
  ngOnInit(): void;
27
28
  ngOnDestroy(): void;
28
29
  static ɵfac: i0.ɵɵFactoryDeclaration<FeatureGateDirective, never>;
29
- static ɵdir: i0.ɵɵDirectiveDeclaration<FeatureGateDirective, "[aclFeatureGate]", never, { "featureName": { "alias": "aclFeatureGate"; "required": false; }; "cluster": { "alias": "aclFeatureGateCluster"; "required": false; }; "then": { "alias": "aclFeatureGateThen"; "required": false; }; "else": { "alias": "aclFeatureGateElse"; "required": false; }; }, {}, never, never, true, never>;
30
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FeatureGateDirective, "[aclFeatureGate]", never, { "featureName": { "alias": "aclFeatureGate"; "required": false; }; "cluster": { "alias": "aclFeatureGateCluster"; "required": false; }; "negate": { "alias": "aclFeatureGateNegate"; "required": false; }; "then": { "alias": "aclFeatureGateThen"; "required": false; }; "else": { "alias": "aclFeatureGateElse"; "required": false; }; }, {}, never, never, true, never>;
30
31
  }
@@ -4,7 +4,7 @@ import * as i0 from "@angular/core";
4
4
  export declare class MinimumFormatPipe implements PipeTransform {
5
5
  private readonly decimal;
6
6
  constructor(decimal: DecimalPipe);
7
- transform(value: number | string): string;
7
+ transform(value: number | string, decimalPlaces?: number): string;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<MinimumFormatPipe, never>;
9
9
  static ɵpipe: i0.ɵɵPipeDeclaration<MinimumFormatPipe, "aclMinimumFormat", true>;
10
10
  }
@@ -16,6 +16,7 @@ export declare class FeatureGateService {
16
16
  * @param cluster - check gate for specified cluster
17
17
  */
18
18
  isEnabled(gateName: string, cluster?: string): Observable<boolean>;
19
+ isNegateEnabled(gateName: string, cluster?: string): Observable<boolean>;
19
20
  /**
20
21
  * filter list with gate, send items without feature gate as begin push (can skip by passing `skipNoFeatureGatePush` argument with true)
21
22
  * @param items - list need filter
@@ -8,6 +8,8 @@ export interface Environments {
8
8
  LABEL_BASE_DOMAIN?: string;
9
9
  LOGO_URL?: string;
10
10
  INNER_PROJECT_NS_PREFIX?: string;
11
+ CPAAS_SESSION_SWITCH?: 'on' | 'off';
12
+ CLOSE_BROWSER_END_SESSION?: string;
11
13
  }
12
14
  export interface ResourceListParams extends StringMap {
13
15
  limit?: string;
@@ -639,4 +639,68 @@ export interface UserBindingSpec {
639
639
  namespace?: string;
640
640
  }>;
641
641
  }
642
+ export interface RoleRule {
643
+ module: string;
644
+ functionResourceRef: string;
645
+ functionMetadataName?: string;
646
+ verbs: string[];
647
+ }
648
+ export interface RoleCustomRule {
649
+ apiGroup: string;
650
+ resources: string[];
651
+ verbs: string[];
652
+ }
653
+ export interface RoleTemplateSpec {
654
+ rules?: RoleRule[];
655
+ customRules?: RoleCustomRule[];
656
+ }
657
+ export interface RoleTemplate extends KubernetesResource {
658
+ spec?: RoleTemplateSpec;
659
+ }
660
+ export interface UserRoleNamespace {
661
+ namespace: string;
662
+ cluster: string;
663
+ }
664
+ export interface UserRole extends KubernetesResource {
665
+ name?: string;
666
+ roles?: string[];
667
+ namespaces?: Record<string, UserRoleNamespace[]>;
668
+ }
669
+ export interface User extends KubernetesResource {
670
+ spec?: UserSpec;
671
+ }
672
+ export interface UserSpec {
673
+ connector_name?: string;
674
+ connector_type?: string;
675
+ email?: string;
676
+ mail?: string;
677
+ groups?: string[];
678
+ is_admin?: boolean;
679
+ valid?: boolean;
680
+ username?: string;
681
+ old_password?: string;
682
+ password?: string;
683
+ last_login_time?: string;
684
+ login_failure_times?: number;
685
+ state?: UserState;
686
+ is_disabled?: boolean;
687
+ expired?: {
688
+ begin: string;
689
+ end: string;
690
+ };
691
+ mobile?: string;
692
+ webhookType?: WebhookType;
693
+ webhookUrl?: string;
694
+ ids?: Array<{
695
+ type: string;
696
+ id: string;
697
+ }>;
698
+ }
699
+ export declare enum UserState {
700
+ ACTIVE = "active",
701
+ LOCKED = "locked",
702
+ INVALID = "invalid",
703
+ DELETED = "deleted"
704
+ }
705
+ export type WebhookType = 'Webhook' | 'DingTalk' | 'WeChat';
642
706
  export {};
@@ -336,7 +336,7 @@ export declare const COMMON_RESOURCE_DEFINITIONS: {
336
336
  readonly apiVersion: string;
337
337
  readonly apiGroup: string;
338
338
  };
339
- readonly USER_BINDINGS: {
339
+ readonly USER_BINDING: {
340
340
  readonly type: string;
341
341
  readonly apiGroup: string;
342
342
  readonly apiVersion: string;
@@ -447,7 +447,7 @@ export declare const RESOURCE_TYPES: {
447
447
  readonly PRODUCT_DOCS_ENTRY: "PRODUCT_DOCS_ENTRY";
448
448
  readonly SERVICEMESH_GROUP: "SERVICEMESH_GROUP";
449
449
  readonly CLUSTER_MODULE: "CLUSTER_MODULE";
450
- readonly USER_BINDINGS: "USER_BINDINGS";
450
+ readonly USER_BINDING: "USER_BINDING";
451
451
  readonly BATCH_ACTION: "BATCH_ACTION";
452
452
  readonly EVENT: "EVENT";
453
453
  readonly SERVICE_MONITOR: "SERVICE_MONITOR";
@@ -455,7 +455,7 @@ export declare const RESOURCE_TYPES: {
455
455
  readonly ARGOCD_APPLICATION_SET: "ARGOCD_APPLICATION_SET";
456
456
  readonly ARGOCD_APPLICATION: "ARGOCD_APPLICATION";
457
457
  };
458
- export declare const getYamlApiVersion: (definition: "ALAUDA_LOADBALANCER2" | "ALB2" | "HELM_REQUEST" | "HELM_REQUEST_V1" | "DEPLOYMENT" | "FRONTEND" | "RULE" | "POD" | "PODS_EXEC" | "PODS_ROOT_EXEC" | "CONFIG_MAP" | "ALERT_TEMPLATE" | "APPLICATION" | "APPLICATION_HISTORY" | "CLUSTER" | "CLUSTER_VIEW" | "DAEMON_SET" | "STATEFUL_SET" | "DOMAIN" | "FEATURE" | "ALAUDA_FEATURE_GATE" | "CLUSTER_ALAUDA_FEATURE_GATE" | "HORIZONTAL_POD_AUTOSCALER" | "LOG" | "PROJECT" | "PROMETHEUS_RULE" | "ALERT_HISTORY" | "SELF_SUBJECT_ACCESS_REVIEW" | "VIEW" | "SERVICE" | "LIMIT_RANGE" | "SECRET" | "PRODUCT" | "CRON_JOB" | "ADVANCED_CRON_JOB" | "JOB" | "INGRESS" | "PERSISTENT_VOLUME_CLAIM" | "NAMESPACE" | "NODE" | "NODE_METRICS" | "PV" | "CRD" | "CHART_REPO" | "CHART" | "NETWORK_POLICY" | "SERVICE_ACCOUNT" | "REPLICA_SET" | "POD_SECURITY_POLICY" | "NAMESPACE_OVERVIEW" | "CSP" | "RESOURCE_QUOTA" | "CLUSTER_NETWORK_POLICY" | "VIRTUAL_MACHINE" | "VIRTUAL_MACHINE_INSTANCE" | "VIRTUAL_MACHINE_POOL" | "PROJECT_QUOTA" | "TKE_CLUSTER" | "TKE_MACHINE" | "MACHINE" | "NODE_GROUP" | "CLUSTERSERVICEVERSION" | "TENANT" | "SUBSCRIPTION" | "PACKAGE_MANIFEST" | "BUCKET_CLASS" | "PRODUCT_CONFIG" | "STORAGE_CLASS" | "VOLUME_SNAPSHOT_CLASS" | "PRODUCT_BASE" | "MODULE_INFO" | "PRODUCT_ENTRY" | "PRODUCT_DOCS_ENTRY" | "SERVICEMESH_GROUP" | "CLUSTER_MODULE" | "USER_BINDINGS" | "BATCH_ACTION" | "EVENT" | "SERVICE_MONITOR" | "OAM_APPLICATION" | "ARGOCD_APPLICATION_SET" | "ARGOCD_APPLICATION" | {
458
+ export declare const getYamlApiVersion: (definition: "PROJECT" | "ALAUDA_LOADBALANCER2" | "ALB2" | "HELM_REQUEST" | "HELM_REQUEST_V1" | "DEPLOYMENT" | "FRONTEND" | "RULE" | "POD" | "PODS_EXEC" | "PODS_ROOT_EXEC" | "CONFIG_MAP" | "ALERT_TEMPLATE" | "APPLICATION" | "APPLICATION_HISTORY" | "CLUSTER" | "CLUSTER_VIEW" | "DAEMON_SET" | "STATEFUL_SET" | "DOMAIN" | "FEATURE" | "ALAUDA_FEATURE_GATE" | "CLUSTER_ALAUDA_FEATURE_GATE" | "HORIZONTAL_POD_AUTOSCALER" | "LOG" | "PROMETHEUS_RULE" | "ALERT_HISTORY" | "SELF_SUBJECT_ACCESS_REVIEW" | "VIEW" | "SERVICE" | "LIMIT_RANGE" | "SECRET" | "PRODUCT" | "CRON_JOB" | "ADVANCED_CRON_JOB" | "JOB" | "INGRESS" | "PERSISTENT_VOLUME_CLAIM" | "NAMESPACE" | "NODE" | "NODE_METRICS" | "PV" | "CRD" | "CHART_REPO" | "CHART" | "NETWORK_POLICY" | "SERVICE_ACCOUNT" | "REPLICA_SET" | "POD_SECURITY_POLICY" | "NAMESPACE_OVERVIEW" | "CSP" | "RESOURCE_QUOTA" | "CLUSTER_NETWORK_POLICY" | "VIRTUAL_MACHINE" | "VIRTUAL_MACHINE_INSTANCE" | "VIRTUAL_MACHINE_POOL" | "PROJECT_QUOTA" | "TKE_CLUSTER" | "TKE_MACHINE" | "MACHINE" | "NODE_GROUP" | "CLUSTERSERVICEVERSION" | "TENANT" | "SUBSCRIPTION" | "PACKAGE_MANIFEST" | "BUCKET_CLASS" | "PRODUCT_CONFIG" | "STORAGE_CLASS" | "VOLUME_SNAPSHOT_CLASS" | "PRODUCT_BASE" | "MODULE_INFO" | "PRODUCT_ENTRY" | "PRODUCT_DOCS_ENTRY" | "SERVICEMESH_GROUP" | "CLUSTER_MODULE" | "USER_BINDING" | "BATCH_ACTION" | "EVENT" | "SERVICE_MONITOR" | "OAM_APPLICATION" | "ARGOCD_APPLICATION_SET" | "ARGOCD_APPLICATION" | {
459
459
  apiGroup: string;
460
460
  type: string;
461
461
  } | {
@@ -1,33 +1,35 @@
1
1
  import { MonoTypeOperatorFunction, Observable } from 'rxjs';
2
- export declare class CacheStore<V, P, K extends keyof any = string> {
2
+ export declare class CacheStore<P, V> {
3
3
  private readonly fetcher;
4
- private readonly idGenerator;
5
4
  private readonly share;
5
+ private readonly validator;
6
6
  private readonly store;
7
- constructor({ idGenerator, fetcher, share }: CacheStoreOptions<V, P, K>);
7
+ constructor({ fetcher, share, validator }: CacheStoreOptions<P, V>);
8
8
  fetchState(params: P): Observable<CacheLoadState<V>>;
9
9
  fetch(params: P): Observable<V>;
10
10
  refetch(params: P): void;
11
11
  refetchAll(): void;
12
- delete(params: P): void;
12
+ get(params: P): Cache<V>;
13
13
  has(params: P): boolean;
14
- clear: () => void;
15
- forEach: (callbackfn: (value: Cache<P, V>, key: K, map: Map<K, Cache<P, V>>) => void, thisArg?: any) => void;
16
- entries: () => IterableIterator<[K, Cache<P, V>]>;
17
- values: () => IterableIterator<Cache<P, V>>;
14
+ delete(params: P): void;
15
+ clear(): void;
16
+ forEach: (callbackfn: (value: Cache<V>, key: P, map: Map<P, Cache<V>>) => void, thisArg?: any) => void;
17
+ entries: () => IterableIterator<[P, Cache<V>]>;
18
+ values: () => IterableIterator<Cache<V>>;
19
+ keys: () => IterableIterator<P>;
18
20
  }
19
- export interface CacheStoreOptions<V, P, K> {
21
+ export interface CacheStoreOptions<P, V> {
20
22
  fetcher: (params: P) => Observable<V>;
21
- idGenerator?: (params: P) => K;
22
23
  share?: <T>() => MonoTypeOperatorFunction<T>;
24
+ validator?: (loadState: CacheLoadState<V>) => boolean;
23
25
  }
24
26
  export interface CacheLoadState<V> {
25
27
  state: 'loading' | 'loaded' | 'loadFailed';
26
28
  result?: V;
27
29
  error?: unknown;
28
30
  }
29
- export interface Cache<P, V> {
30
- params: P;
31
- refetch: () => void;
31
+ export interface Cache<V> {
32
32
  loadState: Observable<CacheLoadState<V>>;
33
+ refetch: () => void;
34
+ finish: () => void;
33
35
  }
@@ -56,3 +56,4 @@ export declare const parseImageAddress: (addr: string) => {
56
56
  };
57
57
  export declare const setWindowsXtermTools: (xterm: Terminal) => void;
58
58
  export declare const clearWindowsXtermTools: () => void;
59
+ export declare const buildUrl: (baseUri: string, params?: Record<string, string | boolean>) => string;
@@ -36,4 +36,4 @@ export declare const compareVersion: {
36
36
  gte: (v1: string, v2: string) => boolean;
37
37
  cmp: (v1: string, v2: string, operator: CompareOperator) => boolean;
38
38
  };
39
- export declare const compareMinorVersion: (v1: string, v2: string) => 1 | 0 | -1;
39
+ export declare const compareMinorVersion: (v1: string, v2: string) => 0 | 1 | -1;
@@ -1,11 +1,47 @@
1
1
  import * as i0 from "@angular/core";
2
+ export declare enum PreventHandler {
3
+ Contextmenu = "contextmenu",
4
+ Paste = "paste",
5
+ Cut = "cut",
6
+ Copy = "copy"
7
+ }
8
+ /**
9
+ * 阻止点击事件
10
+ */
2
11
  export declare class PreventDirective {
3
12
  prevent: boolean;
4
13
  static ɵfac: i0.ɵɵFactoryDeclaration<PreventDirective, never>;
5
14
  static ɵdir: i0.ɵɵDirectiveDeclaration<PreventDirective, "[prevent]", never, { "prevent": { "alias": "prevent"; "required": false; }; }, {}, never, never, true, never>;
6
15
  }
16
+ /**
17
+ * 阻止冒泡事件
18
+ */
7
19
  export declare class StopDirective {
8
20
  stop: boolean;
9
21
  static ɵfac: i0.ɵɵFactoryDeclaration<StopDirective, never>;
10
22
  static ɵdir: i0.ɵɵDirectiveDeclaration<StopDirective, "[stop]", never, { "stop": { "alias": "stop"; "required": false; }; }, {}, never, never, true, never>;
11
23
  }
24
+ /**
25
+ * 阻止剪切板(拷贝、粘贴、剪切、右键菜单)等事件
26
+ *
27
+ * @example
28
+ *
29
+ * 阻止全部:
30
+ * ```
31
+ * <input aui-input aclPreventEvent>
32
+ * ```
33
+ * 自定义:
34
+ * ```
35
+ * <input aui-input [aclPreventEvent]="{copy: true, paste: true}">
36
+ * ```
37
+ */
38
+ export declare class PreventClipboardDirective {
39
+ preventClipboardEvent: boolean | '' | Partial<Record<PreventHandler, boolean>>;
40
+ private isPreventEvent;
41
+ onContextmenu(event: Event): void;
42
+ onCut(event: Event): void;
43
+ onPaste(event: Event): void;
44
+ onCopy(event: Event): void;
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<PreventClipboardDirective, never>;
46
+ static ɵdir: i0.ɵɵDirectiveDeclaration<PreventClipboardDirective, "input[aclPreventClipboardEvent]", never, { "preventClipboardEvent": { "alias": "aclPreventClipboardEvent"; "required": false; }; }, {}, never, never, true, never>;
47
+ }
@@ -0,0 +1,34 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { API_GATEWAY, } from '../core/public-api';
4
+ import * as i0 from "@angular/core";
5
+ export class AuthApiService {
6
+ constructor() {
7
+ this.http = inject(HttpClient);
8
+ }
9
+ getUserBindingList(params) {
10
+ return this.http.get(API_GATEWAY + '/auth/v2/userbindings', {
11
+ params,
12
+ });
13
+ }
14
+ getUserRoleList(params) {
15
+ return this.http.get(API_GATEWAY + '/auth/v2/usersroles', {
16
+ params,
17
+ });
18
+ }
19
+ getRoleTemplateList(params) {
20
+ return this.http.get(API_GATEWAY + '/auth/v2/roletemplates', {
21
+ params,
22
+ });
23
+ }
24
+ getUser(name) {
25
+ return this.http.get(API_GATEWAY + '/auth/v2/users/' + name);
26
+ }
27
+ static { this.ɵfac = function AuthApiService_Factory(t) { return new (t || AuthApiService)(); }; }
28
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AuthApiService, factory: AuthApiService.ɵfac, providedIn: 'root' }); }
29
+ }
30
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthApiService, [{
31
+ type: Injectable,
32
+ args: [{ providedIn: 'root' }]
33
+ }], null, null); })();
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvYXV0aC1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUNMLFdBQVcsR0FPWixNQUFNLG9CQUFvQixDQUFDOztBQUc1QixNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUVVLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0FnQ25DO0lBOUJDLGtCQUFrQixDQUFDLE1BQTBCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLFdBQVcsR0FBRyx1QkFBdUIsRUFDckM7WUFDRSxNQUFNO1NBQ1AsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUEyQztRQUN6RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixXQUFXLEdBQUcscUJBQXFCLEVBQ25DO1lBQ0UsTUFBTTtTQUNQLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUEwQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixXQUFXLEdBQUcsd0JBQXdCLEVBQ3RDO1lBQ0UsTUFBTTtTQUNQLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWTtRQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFPLFdBQVcsR0FBRyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNyRSxDQUFDOytFQWhDVSxjQUFjO3VFQUFkLGNBQWMsV0FBZCxjQUFjLG1CQURELE1BQU07O2lGQUNuQixjQUFjO2NBRDFCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIEFQSV9HQVRFV0FZLFxuICBLdWJlcm5ldGVzUmVzb3VyY2VMaXN0LFxuICBSZXNvdXJjZUxpc3RQYXJhbXMsXG4gIFJvbGVUZW1wbGF0ZSxcbiAgVXNlcixcbiAgVXNlckJpbmRpbmcsXG4gIFVzZXJSb2xlLFxufSBmcm9tICcuLi9jb3JlL3B1YmxpYy1hcGknO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhBcGlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gIGdldFVzZXJCaW5kaW5nTGlzdChwYXJhbXM6IFJlc291cmNlTGlzdFBhcmFtcykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEt1YmVybmV0ZXNSZXNvdXJjZUxpc3Q8VXNlckJpbmRpbmc+PihcbiAgICAgIEFQSV9HQVRFV0FZICsgJy9hdXRoL3YyL3VzZXJiaW5kaW5ncycsXG4gICAgICB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIGdldFVzZXJSb2xlTGlzdChwYXJhbXM6IHsgdXNlcnM6IHN0cmluZzsgcHJvamVjdD86IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8S3ViZXJuZXRlc1Jlc291cmNlTGlzdDxVc2VyUm9sZT4+KFxuICAgICAgQVBJX0dBVEVXQVkgKyAnL2F1dGgvdjIvdXNlcnNyb2xlcycsXG4gICAgICB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIGdldFJvbGVUZW1wbGF0ZUxpc3QocGFyYW1zOiBSZXNvdXJjZUxpc3RQYXJhbXMpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PFJvbGVUZW1wbGF0ZT4+KFxuICAgICAgQVBJX0dBVEVXQVkgKyAnL2F1dGgvdjIvcm9sZXRlbXBsYXRlcycsXG4gICAgICB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIGdldFVzZXIobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VXNlcj4oQVBJX0dBVEVXQVkgKyAnL2F1dGgvdjIvdXNlcnMvJyArIG5hbWUpO1xuICB9XG59XG4iXX0=
@@ -81,6 +81,7 @@ export class PlatformUIService {
81
81
  `images/${theme}/${DEFAULT_PORTAL_TOP_RESOURCE_NAME}`,
82
82
  bottomImage: appendImageHeader(bottomImage) ||
83
83
  `images/${theme}/${DEFAULT_PORTAL_BOTTOM_RESOURCE_NAME}`,
84
+ hasCustomized: !!topImage || !!bottomImage,
84
85
  };
85
86
  }));
86
87
  }));
@@ -92,4 +93,4 @@ export class PlatformUIService {
92
93
  type: Injectable,
93
94
  args: [{ providedIn: 'root' }]
94
95
  }], null, null); })();
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tdWkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvcGxhdGZvcm0tdWkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFDTCxpQkFBaUIsRUFJakIsY0FBYyxHQUNmLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUVsRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxlQUFlLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsc0JBQXNCLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsc0JBQXNCLENBQUM7QUFFbkUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsbUJBQW1CLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsbUJBQW1CLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsa0JBQWtCLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsa0JBQWtCLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLG1CQUFtQixDQUFDO0FBQzdELE1BQU0s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QUN2RCxXQUFXLEVBQ1QsaUJBQWlCLENBQUMsV0FBVyxDQUFDO3dCQUM5QixVQUFVLEtBQUssSUFBSSxtQ0FBbUMsRUFBRTtpQkFDM0QsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztrRkExRVUsaUJBQWlCO3VFQUFqQixpQkFBaUIsV0FBakIsaUJBQWlCLG1CQURKLE1BQU07O2lGQUNuQixpQkFBaUI7Y0FEN0IsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBhcHBlbmRJbWFnZUhlYWRlcixcbiAgQ29uZmlnTWFwLFxuICBQcm9kdWN0RG9jc0VudHJ5LFxuICBQcm9kdWN0RW50cnksXG4gIFJFU09VUkNFX1RZUEVTLFxufSBmcm9tICcuLi9jb3JlL3B1YmxpYy1hcGknO1xuXG5pbXBvcnQgeyBLOHNBcGlTZXJ2aWNlIH0gZnJvbSAnLi9rOHMtYXBpLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgUExBVEZPUk1fSU5GT19DTV9OQU1FID0gJ3BsYXRmb3JtLWluZm8nO1xuZXhwb3J0IGNvbnN0IFBMQVRGT1JNX05BTUVfWkhfS0VZID0gJ3BsYXRmb3JtTmFtZVpIJztcbmV4cG9ydCBjb25zdCBQTEFURk9STV9OQU1FX0VOX0tFWSA9ICdwbGF0Zm9ybU5hbWVFTic7XG5leHBvcnQgY29uc3QgREVGQVVMVF9QTEFURk9STV9OQU1FX1pIX0tFWSA9ICdvcmlnaW5QbGF0Zm9ybU5hbWVaSCc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9QTEFURk9STV9OQU1FX0VOX0tFWSA9ICdvcmlnaW5QbGF0Zm9ybU5hbWVFTic7XG5cbmV4cG9ydCBjb25zdCBQT1JUQUxfTUFJTl9USVRMRV9FTl9LRVkgPSAncG9ydGFsTWFpblRpdGxlRU4nO1xuZXhwb3J0IGNvbnN0IFBPUlRBTF9NQUlOX1RJVExFX1pIX0tFWSA9ICdwb3J0YWxNYWluVGl0bGVaSCc7XG5leHBvcnQgY29uc3QgUE9SVEFMX1NVQl9USVRMRV9aSF9LRVkgPSAncG9ydGFsU3ViVGl0bGVaSCc7XG5leHBvcnQgY29uc3QgUE9SVEFMX1NVQl9USVRMRV9FTl9LRVkgPSAncG9ydGFsU3ViVGl0bGVFTic7XG5leHBvcnQgY29uc3QgUE9SVEFMX1VJX0NNX05BTUUgPSAndWktcG9ydGFsJztcbmV4cG9ydCBjb25zdCBQT1JUQUxfVUlfQ01fTkFNRV9ERUZBVUxUID0gJ3VpLXBvcnRhbC1kZWZhdWx0JztcbmV4cG9ydCBjb25zdCBQT1JUQUxfVE9QX0lNQUdFX0tFWSA9ICd0b3AtYmcnO1xuZXhwb3J0IGNvbnN0IFBPUlRBTF9CT1RUT01fSU1BR0VfS0VZID0gJ2JvdHRvbS1iZyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BPUlRBTF9UT1BfUkVTT1VSQ0VfTkFNRSA9ICdwb3J0YWwtdG9wLnBuZyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9QT1JUQUxfQk9UVE9NX1JFU09VUkNFX05BTUUgPSAncG9ydGFsLWJvdHRvbS5wbmcnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUE9SVEFMX1RPUF9SRVNPVVJDRV9VUkwgPSAnaW1hZ2VzL2xpZ2h0L3BvcnRhbC10b3AucG5nJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BPUlRBTF9CT1RUT01fUkVTT1VSQ0VfVVJMID1cbiAgJ2ltYWdlcy9saWdodC9wb3J0YWwtYm90dG9tLnBuZyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1VSVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGs4c0FwaSA9IGluamVjdChLOHNBcGlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0aGVtZSA9IGluamVjdChUaGVtZVNlcnZpY2UpO1xuXG4gIGdldEVudHJpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuazhzQXBpXG4gICAgICAuZ2V0R2xvYmFsUmVzb3VyY2VMaXN0PFByb2R1Y3RFbnRyeT4oe1xuICAgICAgICB0eXBlOiBSRVNPVVJDRV9UWVBFUy5QUk9EVUNUX0VOVFJZLFxuICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgIGZpZWxkU2VsZWN0b3I6ICdtZXRhZGF0YS5uYW1lIT1jb25zb2xlLXBvcnRhbCcsXG4gICAgICAgICAgbGltaXQ6ICcwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAobGlzdCA9PiBsaXN0Lml0ZW1zKSk7XG4gIH1cblxuICBnZXREb2NzRW50cnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuazhzQXBpLmdldEdsb2JhbFJlc291cmNlPFByb2R1Y3REb2NzRW50cnk+KHtcbiAgICAgIHR5cGU6IFJFU09VUkNFX1RZUEVTLlBST0RVQ1RfRE9DU19FTlRSWSxcbiAgICAgIG5hbWU6ICdwcm9kdWN0LWRvY3MtZW50cnknLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0UGxhdGZvcm1JbmZvKCkge1xuICAgIHJldHVybiB0aGlzLms4c0FwaVxuICAgICAgLmdldEdsb2JhbFJlc291cmNlPENvbmZpZ01hcD4oe1xuICAgICAgICB0eXBlOiBSRVNPVVJDRV9UWVBFUy5DT05GSUdfTUFQLFxuICAgICAgICBuYW1lOiBQTEFURk9STV9JTkZPX0NNX05BTUUsXG4gICAgICAgIG5hbWVzcGFjZWQ6IHRydWUsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChjbSA9PiAoe1xuICAgICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgIHpoOiBjbS5kYXRhW1BMQVRGT1JNX05BTUVfWkhfS0VZXSxcbiAgICAgICAgICAgIGVuOiBjbS5kYXRhW1BMQVRGT1JNX05BTUVfRU5fS0VZXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1haW5UaXRsZToge1xuICAgICAgICAgICAgemg6IGNtLmRhdGFbUE9SVEFMX01BSU5fVElUTEVfWkhfS0VZXSxcbiAgICAgICAgICAgIGVuOiBjbS5kYXRhW1BPUlRBTF9NQUlOX1RJVExFX0VOX0tFWV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdWJUaXRsZToge1xuICAgICAgICAgICAgemg6IGNtLmRhdGFbUE9SVEFMX1NVQl9USVRMRV9aSF9LRVldLFxuICAgICAgICAgICAgZW46IGNtLmRhdGFbUE9SVEFMX1NVQl9USVRMRV9FTl9LRVldLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG4gIH1cblxuICBnZXRCYWNrZ3JvdW5kSW1hZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLms4c0FwaVxuICAgICAgLmdldEdsb2JhbFJlc291cmNlPENvbmZpZ01hcD4oe1xuICAgICAgICB0eXBlOiBSRVNPVVJDRV9UWVBFUy5DT05GSUdfTUFQLFxuICAgICAgICBuYW1lOiBQT1JUQUxfVUlfQ01fTkFNRSxcbiAgICAgICAgbmFtZXNwYWNlZDogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGNtID0+IHtcbiAgICAgICAgICBjb25zdCB0b3BJbWFnZSA9IGNtLmJpbmFyeURhdGE/LltQT1JUQUxfVE9QX0lNQUdFX0tFWV07XG4gICAgICAgICAgY29uc3QgYm90dG9tSW1hZ2UgPSBjbS5iaW5hcnlEYXRhPy5bUE9SVEFMX0JPVFRPTV9JTUFHRV9LRVldO1xuXG4gICAgICAgICAgcmV0dXJuIHRoaXMudGhlbWUuY3VycmVudFRoZW1lJC5waXBlKFxuICAgICAgICAgICAgbWFwKHRoZW1lID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0b3BJbWFnZTpcbiAgICAgICAgICAgICAgICAgIGFwcGVuZEltYWdlSGVhZGVyKHRvcEltYWdlKSB8fFxuICAgICAgICAgICAgICAgICAgYGltYWdlcy8ke3RoZW1lfS8ke0RFRkFVTFRfUE9SVEFMX1RPUF9SRVNPVVJDRV9OQU1FfWAsXG4gICAgICAgICAgICAgICAgYm90dG9tSW1hZ2U6XG4gICAgICAgICAgICAgICAgICBhcHBlbmRJbWFnZUhlYWRlcihib3R0b21JbWFnZSkgfHxcbiAgICAgICAgICAgICAgICAgIGBpbWFnZXMvJHt0aGVtZX0vJHtERUZBVUxUX1BPUlRBTF9CT1RUT01fUkVTT1VSQ0VfTkFNRX1gLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG59XG4iXX0=
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tdWkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvcGxhdGZvcm0tdWkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFDTCxpQkFBaUIsRUFJakIsY0FBYyxHQUNmLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUVsRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxlQUFlLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsc0JBQXNCLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsc0JBQXNCLENBQUM7QUFFbkUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsbUJBQW1CLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsbUJBQW1CLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsa0JBQWtCLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsa0JBQWtCLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLG1CQUFtQixDQUFDO0FBQzdELE1BQU0s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QUN2RCxXQUFXLEVBQ1QsaUJBQWlCLENBQUMsV0FBVyxDQUFDO3dCQUM5QixVQUFVLEtBQUssSUFBSSxtQ0FBbUMsRUFBRTtvQkFDMUQsYUFBYSxFQUFFLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFdBQVc7aUJBQzNDLENBQUM7WUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7a0ZBM0VVLGlCQUFpQjt1RUFBakIsaUJBQWlCLFdBQWpCLGlCQUFpQixtQkFESixNQUFNOztpRkFDbkIsaUJBQWlCO2NBRDdCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgYXBwZW5kSW1hZ2VIZWFkZXIsXG4gIENvbmZpZ01hcCxcbiAgUHJvZHVjdERvY3NFbnRyeSxcbiAgUHJvZHVjdEVudHJ5LFxuICBSRVNPVVJDRV9UWVBFUyxcbn0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHsgSzhzQXBpU2VydmljZSB9IGZyb20gJy4vazhzLWFwaS5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IFBMQVRGT1JNX0lORk9fQ01fTkFNRSA9ICdwbGF0Zm9ybS1pbmZvJztcbmV4cG9ydCBjb25zdCBQTEFURk9STV9OQU1FX1pIX0tFWSA9ICdwbGF0Zm9ybU5hbWVaSCc7XG5leHBvcnQgY29uc3QgUExBVEZPUk1fTkFNRV9FTl9LRVkgPSAncGxhdGZvcm1OYW1lRU4nO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUExBVEZPUk1fTkFNRV9aSF9LRVkgPSAnb3JpZ2luUGxhdGZvcm1OYW1lWkgnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUExBVEZPUk1fTkFNRV9FTl9LRVkgPSAnb3JpZ2luUGxhdGZvcm1OYW1lRU4nO1xuXG5leHBvcnQgY29uc3QgUE9SVEFMX01BSU5fVElUTEVfRU5fS0VZID0gJ3BvcnRhbE1haW5UaXRsZUVOJztcbmV4cG9ydCBjb25zdCBQT1JUQUxfTUFJTl9USVRMRV9aSF9LRVkgPSAncG9ydGFsTWFpblRpdGxlWkgnO1xuZXhwb3J0IGNvbnN0IFBPUlRBTF9TVUJfVElUTEVfWkhfS0VZID0gJ3BvcnRhbFN1YlRpdGxlWkgnO1xuZXhwb3J0IGNvbnN0IFBPUlRBTF9TVUJfVElUTEVfRU5fS0VZID0gJ3BvcnRhbFN1YlRpdGxlRU4nO1xuZXhwb3J0IGNvbnN0IFBPUlRBTF9VSV9DTV9OQU1FID0gJ3VpLXBvcnRhbCc7XG5leHBvcnQgY29uc3QgUE9SVEFMX1VJX0NNX05BTUVfREVGQVVMVCA9ICd1aS1wb3J0YWwtZGVmYXVsdCc7XG5leHBvcnQgY29uc3QgUE9SVEFMX1RPUF9JTUFHRV9LRVkgPSAndG9wLWJnJztcbmV4cG9ydCBjb25zdCBQT1JUQUxfQk9UVE9NX0lNQUdFX0tFWSA9ICdib3R0b20tYmcnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9QT1JUQUxfVE9QX1JFU09VUkNFX05BTUUgPSAncG9ydGFsLXRvcC5wbmcnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUE9SVEFMX0JPVFRPTV9SRVNPVVJDRV9OQU1FID0gJ3BvcnRhbC1ib3R0b20ucG5nJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BPUlRBTF9UT1BfUkVTT1VSQ0VfVVJMID0gJ2ltYWdlcy9saWdodC9wb3J0YWwtdG9wLnBuZyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9QT1JUQUxfQk9UVE9NX1JFU09VUkNFX1VSTCA9XG4gICdpbWFnZXMvbGlnaHQvcG9ydGFsLWJvdHRvbS5wbmcnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFBsYXRmb3JtVUlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBrOHNBcGkgPSBpbmplY3QoSzhzQXBpU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGhlbWUgPSBpbmplY3QoVGhlbWVTZXJ2aWNlKTtcblxuICBnZXRFbnRyaWVzKCkge1xuICAgIHJldHVybiB0aGlzLms4c0FwaVxuICAgICAgLmdldEdsb2JhbFJlc291cmNlTGlzdDxQcm9kdWN0RW50cnk+KHtcbiAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuUFJPRFVDVF9FTlRSWSxcbiAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICBmaWVsZFNlbGVjdG9yOiAnbWV0YWRhdGEubmFtZSE9Y29uc29sZS1wb3J0YWwnLFxuICAgICAgICAgIGxpbWl0OiAnMCcsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKGxpc3QgPT4gbGlzdC5pdGVtcykpO1xuICB9XG5cbiAgZ2V0RG9jc0VudHJ5KCkge1xuICAgIHJldHVybiB0aGlzLms4c0FwaS5nZXRHbG9iYWxSZXNvdXJjZTxQcm9kdWN0RG9jc0VudHJ5Pih7XG4gICAgICB0eXBlOiBSRVNPVVJDRV9UWVBFUy5QUk9EVUNUX0RPQ1NfRU5UUlksXG4gICAgICBuYW1lOiAncHJvZHVjdC1kb2NzLWVudHJ5JyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFBsYXRmb3JtSW5mbygpIHtcbiAgICByZXR1cm4gdGhpcy5rOHNBcGlcbiAgICAgIC5nZXRHbG9iYWxSZXNvdXJjZTxDb25maWdNYXA+KHtcbiAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuQ09ORklHX01BUCxcbiAgICAgICAgbmFtZTogUExBVEZPUk1fSU5GT19DTV9OQU1FLFxuICAgICAgICBuYW1lc3BhY2VkOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoY20gPT4gKHtcbiAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICB6aDogY20uZGF0YVtQTEFURk9STV9OQU1FX1pIX0tFWV0sXG4gICAgICAgICAgICBlbjogY20uZGF0YVtQTEFURk9STV9OQU1FX0VOX0tFWV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtYWluVGl0bGU6IHtcbiAgICAgICAgICAgIHpoOiBjbS5kYXRhW1BPUlRBTF9NQUlOX1RJVExFX1pIX0tFWV0sXG4gICAgICAgICAgICBlbjogY20uZGF0YVtQT1JUQUxfTUFJTl9USVRMRV9FTl9LRVldLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3ViVGl0bGU6IHtcbiAgICAgICAgICAgIHpoOiBjbS5kYXRhW1BPUlRBTF9TVUJfVElUTEVfWkhfS0VZXSxcbiAgICAgICAgICAgIGVuOiBjbS5kYXRhW1BPUlRBTF9TVUJfVElUTEVfRU5fS0VZXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSksXG4gICAgICApO1xuICB9XG5cbiAgZ2V0QmFja2dyb3VuZEltYWdlcygpIHtcbiAgICByZXR1cm4gdGhpcy5rOHNBcGlcbiAgICAgIC5nZXRHbG9iYWxSZXNvdXJjZTxDb25maWdNYXA+KHtcbiAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuQ09ORklHX01BUCxcbiAgICAgICAgbmFtZTogUE9SVEFMX1VJX0NNX05BTUUsXG4gICAgICAgIG5hbWVzcGFjZWQ6IHRydWUsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChjbSA9PiB7XG4gICAgICAgICAgY29uc3QgdG9wSW1hZ2UgPSBjbS5iaW5hcnlEYXRhPy5bUE9SVEFMX1RPUF9JTUFHRV9LRVldO1xuICAgICAgICAgIGNvbnN0IGJvdHRvbUltYWdlID0gY20uYmluYXJ5RGF0YT8uW1BPUlRBTF9CT1RUT01fSU1BR0VfS0VZXTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLnRoZW1lLmN1cnJlbnRUaGVtZSQucGlwZShcbiAgICAgICAgICAgIG1hcCh0aGVtZSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdG9wSW1hZ2U6XG4gICAgICAgICAgICAgICAgICBhcHBlbmRJbWFnZUhlYWRlcih0b3BJbWFnZSkgfHxcbiAgICAgICAgICAgICAgICAgIGBpbWFnZXMvJHt0aGVtZX0vJHtERUZBVUxUX1BPUlRBTF9UT1BfUkVTT1VSQ0VfTkFNRX1gLFxuICAgICAgICAgICAgICAgIGJvdHRvbUltYWdlOlxuICAgICAgICAgICAgICAgICAgYXBwZW5kSW1hZ2VIZWFkZXIoYm90dG9tSW1hZ2UpIHx8XG4gICAgICAgICAgICAgICAgICBgaW1hZ2VzLyR7dGhlbWV9LyR7REVGQVVMVF9QT1JUQUxfQk9UVE9NX1JFU09VUkNFX05BTUV9YCxcbiAgICAgICAgICAgICAgICBoYXNDdXN0b21pemVkOiAhIXRvcEltYWdlIHx8ICEhYm90dG9tSW1hZ2UsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -19,4 +19,5 @@ export * from './project-api.service';
19
19
  export * from './platform-ui.service';
20
20
  export * from './api-compatible.interceptor';
21
21
  export * from './acp-common-api.service';
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsY0FBYztBQUNkLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFtbaW5jbHVkZTphcGkvUkVBRE1FLm1kXV1cbiAqIEBtb2R1bGUgYXBpXG4gKiBAcHJlZmVycmVkXG4gKi9cblxuLyoqIGltcG9ydHMgKi9cbmV4cG9ydCAqIGZyb20gJy4vYXBpLWdhdGV3YXkuaW50ZXJjZXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9hcGktZ2F0ZXdheS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY2x1c3Rlci12ZXJzaW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vazhzLWFwaS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vazhzLWFwaS1yZXNvdXJjZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcGFnZS12aXNpYmlsaXR5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXNvdXJjZS11cGRhdGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vY3J5cHRvLmludGVyY2VwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvZHVjdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvamVjdC1hcGkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3BsYXRmb3JtLXVpLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGktY29tcGF0aWJsZS5pbnRlcmNlcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2FjcC1jb21tb24tYXBpLnNlcnZpY2UnO1xuIl19
22
+ export * from './auth-api.service';
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsY0FBYztBQUNkLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogW1tpbmNsdWRlOmFwaS9SRUFETUUubWRdXVxuICogQG1vZHVsZSBhcGlcbiAqIEBwcmVmZXJyZWRcbiAqL1xuXG4vKiogaW1wb3J0cyAqL1xuZXhwb3J0ICogZnJvbSAnLi9hcGktZ2F0ZXdheS5pbnRlcmNlcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2FwaS1nYXRld2F5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jbHVzdGVyLXZlcnNpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9rOHMtYXBpLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9rOHMtYXBpLXJlc291cmNlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wYWdlLXZpc2liaWxpdHkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc291cmNlLXVwZGF0ZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9jcnlwdG8uaW50ZXJjZXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9kdWN0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9qZWN0LWFwaS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcGxhdGZvcm0tdWkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaS1jb21wYXRpYmxlLmludGVyY2VwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vYWNwLWNvbW1vbi1hcGkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2F1dGgtYXBpLnNlcnZpY2UnO1xuIl19