@alauda-fe/common 1.2.0 → 1.3.0-beta.0
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.
- package/api/api-gateway.service.d.ts +1 -11
- package/api/public-api.d.ts +0 -1
- package/array-form-table/key-value-form/component.d.ts +3 -2
- package/async-data/async-data.module.d.ts +6 -0
- package/authorization/public-api.d.ts +1 -0
- package/authorization/state.service.d.ts +13 -20
- package/authorization/storage-token.d.ts +11 -0
- package/chart/common/tooltip/tooltip.component.d.ts +2 -1
- package/core/abstract/base-form-container.d.ts +1 -1
- package/core/constants/tokens.d.ts +0 -18
- package/core/module.d.ts +16 -15
- package/core/services/k8s-util.service.d.ts +0 -5
- package/core/types/k8s/crd.d.ts +2 -1
- package/core/utils/common.d.ts +2 -1
- package/esm2022/api/api-gateway.service.mjs +10 -20
- package/esm2022/api/product.service.mjs +4 -4
- package/esm2022/api/project-api.service.mjs +4 -4
- package/esm2022/api/public-api.mjs +1 -2
- package/esm2022/array-form-table/key-value-form/component.mjs +65 -43
- package/esm2022/async-data/async-data.module.mjs +17 -5
- package/esm2022/authorization/public-api.mjs +2 -1
- package/esm2022/authorization/state.service.mjs +86 -115
- package/esm2022/authorization/storage-token.mjs +85 -0
- package/esm2022/business/resource-select/exports/cluster-selector/component.mjs +2 -2
- package/esm2022/business/resource-select/exports/mesh-group-selector/component.mjs +2 -2
- package/esm2022/business/resource-select/exports/namespace-selector/component.mjs +2 -2
- package/esm2022/business/resource-select/exports/project-selector/component.mjs +2 -2
- package/esm2022/business/resource-select/module.mjs +9 -9
- package/esm2022/chart/chart.module.mjs +1 -1
- package/esm2022/chart/common/tooltip/tooltip.component.mjs +5 -2
- package/esm2022/core/abstract/base-form-container.mjs +1 -1
- package/esm2022/core/abstract/base-nested-form-control.mjs +2 -2
- package/esm2022/core/constants/tokens.mjs +1 -46
- package/esm2022/core/module.mjs +10 -3
- package/esm2022/core/pipes/page-env.pipe.mjs +6 -3
- package/esm2022/core/services/feature-gate.service.mjs +3 -3
- package/esm2022/core/services/k8s-util.service.mjs +1 -13
- package/esm2022/core/types/k8s/crd.mjs +1 -1
- package/esm2022/core/utils/common.mjs +11 -9
- package/esm2022/disabled-container/disabled-container.component.mjs +2 -2
- package/esm2022/form/validators/utils.mjs +37 -34
- package/esm2022/graph-canvas/graph-store.service.mjs +2 -2
- package/esm2022/help-document/service.mjs +3 -2
- package/esm2022/lazy-component/lazy-load-component.mjs +138 -0
- package/esm2022/lazy-component/public-api.mjs +14 -0
- package/esm2022/lazy-component/visibility.service.mjs +37 -0
- package/esm2022/list-display/component.mjs +159 -0
- package/esm2022/list-display/public-api.mjs +2 -0
- package/esm2022/metric-chart/metric-chart.component.mjs +2 -2
- package/esm2022/multi-search/action-input/component.mjs +2 -2
- package/esm2022/notification/feedback-notification/component.mjs +10 -4
- package/esm2022/notification/public-api.mjs +1 -2
- package/esm2022/page-scaffold/navigation/lottie-icons/animation-data.mjs +3 -1
- package/esm2022/page-scaffold/navigation/lottie-icons/animations/dashboard.json +1 -0
- package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.types.mjs +1 -1
- package/esm2022/page-scaffold/page-header/common-layout/product-select/component.mjs +10 -13
- package/esm2022/page-scaffold/page-header/help-menu/component/component.mjs +3 -3
- package/esm2022/public-api.mjs +4 -4
- package/esm2022/table/component.mjs +5 -5
- package/esm2022/table/types.mjs +1 -1
- package/esm2022/translate/i18n-config.mjs +17 -5
- package/esm2022/view-chart/view-chart.module.mjs +1 -1
- package/esm2022/view-zchart/custom-template/dropdown-legend.mjs +3 -3
- package/esm2022/view-zchart/legend/legend.component.mjs +8 -8
- package/esm2022/view-zchart/units.mjs +13 -1
- package/esm2022/view-zchart/view-zchart.component.mjs +2 -2
- package/esm2022/view-zchart/view-zchart.module.mjs +1 -1
- package/esm2022/widget/foldable-item-in-table/component.mjs +2 -2
- package/esm2022/widget/search-panel/component.mjs +4 -4
- package/esm2022/xterm/xterm-terminal/xterm-terminal.component.mjs +66 -69
- package/esm2022/xterm/xterm.component.mjs +11 -3
- package/form/validators/utils.d.ts +7 -0
- package/lazy-component/lazy-load-component.d.ts +25 -0
- package/lazy-component/public-api.d.ts +9 -0
- package/lazy-component/visibility.service.d.ts +11 -0
- package/list-display/component.d.ts +15 -0
- package/list-display/public-api.d.ts +1 -0
- package/notification/feedback-notification/component.d.ts +1 -5
- package/notification/public-api.d.ts +0 -1
- package/package.json +2 -2
- package/page-scaffold/navigation/nav-menu/nav-menu.types.d.ts +1 -0
- package/page-scaffold/page-header/common-layout/product-select/component.d.ts +1 -2
- package/public-api.d.ts +3 -3
- package/styles/global.scss +6 -0
- package/styles/reset-browser.scss +4 -0
- package/styles/tailwind-preset.scss +1 -1
- package/table/types.d.ts +2 -0
- package/translate/i18n-config.d.ts +1 -1
- package/view-zchart/custom-template/dropdown-legend.d.ts +1 -1
- package/view-zchart/units.d.ts +3 -0
- package/xterm/xterm-terminal/xterm-terminal.component.d.ts +4 -3
- package/xterm/xterm.component.d.ts +4 -2
|
@@ -1,22 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @packageDocumentation
|
|
3
|
-
* @module api
|
|
4
|
-
*/
|
|
5
|
-
import { HttpClient } from '@angular/common/http';
|
|
6
|
-
import { OnDestroy } from '@angular/core';
|
|
7
1
|
import * as i0 from "@angular/core";
|
|
8
2
|
export interface ApiGatewayState {
|
|
9
3
|
apiAddress: string;
|
|
10
4
|
assetsHostPath: string;
|
|
11
5
|
assetsURLPath: string;
|
|
12
6
|
}
|
|
13
|
-
export declare class ApiGatewayService
|
|
7
|
+
export declare class ApiGatewayService {
|
|
14
8
|
private readonly http;
|
|
15
|
-
private readonly modulesApi;
|
|
16
|
-
private readonly destroy$$;
|
|
17
9
|
private readonly state$;
|
|
18
|
-
constructor(http: HttpClient, modulesApi: string);
|
|
19
|
-
ngOnDestroy(): void;
|
|
20
10
|
getApiAddress(): import("rxjs").Observable<string>;
|
|
21
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<ApiGatewayService, never>;
|
|
22
12
|
static ɵprov: i0.ɵɵInjectableDeclaration<ApiGatewayService>;
|
package/api/public-api.d.ts
CHANGED
|
@@ -13,7 +13,6 @@ export * from './k8s-api-resource.service';
|
|
|
13
13
|
export * from './page-visibility.service';
|
|
14
14
|
export * from './resource-update.service';
|
|
15
15
|
export * from './types';
|
|
16
|
-
export * from './monitor-api.service';
|
|
17
16
|
export * from './crypto.interceptor';
|
|
18
17
|
export * from './product.service';
|
|
19
18
|
export * from './project-api.service';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OnInit } from '@angular/core';
|
|
1
|
+
import { OnInit, TemplateRef } from '@angular/core';
|
|
2
2
|
import { ValidatorFn } from '@angular/forms';
|
|
3
3
|
import { StringMap } from '../../core/public-api';
|
|
4
4
|
import { BaseStringMapFormComponent } from '../base-string-map-form.component';
|
|
@@ -24,6 +24,7 @@ export declare class KeyValueFormTableComponent extends BaseStringMapFormCompone
|
|
|
24
24
|
maxRow: number;
|
|
25
25
|
minRow: number;
|
|
26
26
|
readonlyKeys: Array<string | RegExp>;
|
|
27
|
+
zeroStateTemplate: TemplateRef<any>;
|
|
27
28
|
isReadonly(key: string): boolean;
|
|
28
29
|
getDataValueByIndex(index: number): any;
|
|
29
30
|
adaptResourceModel(resource: {
|
|
@@ -33,5 +34,5 @@ export declare class KeyValueFormTableComponent extends BaseStringMapFormCompone
|
|
|
33
34
|
getValueValidators(): ValidatorFn | ValidatorFn[];
|
|
34
35
|
isLabelReadonly(index: number): boolean;
|
|
35
36
|
static ɵfac: i0.ɵɵFactoryDeclaration<KeyValueFormTableComponent, never>;
|
|
36
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<KeyValueFormTableComponent, "acl-key-value-form-table", never, { "resourceName": { "alias": "resourceName"; "required": false; }; "resourceNameTranslated": { "alias": "resourceNameTranslated"; "required": false; }; "multiLineValue": { "alias": "multiLineValue"; "required": false; }; "validator": { "alias": "validator"; "required": false; }; "errorMapper": { "alias": "errorMapper"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "textKey": { "alias": "textKey"; "required": false; }; "maxRow": { "alias": "maxRow"; "required": false; }; "minRow": { "alias": "minRow"; "required": false; }; "readonlyKeys": { "alias": "readonlyKeys"; "required": false; }; }, {}, never, never, true, never>;
|
|
37
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<KeyValueFormTableComponent, "acl-key-value-form-table", never, { "resourceName": { "alias": "resourceName"; "required": false; }; "resourceNameTranslated": { "alias": "resourceNameTranslated"; "required": false; }; "multiLineValue": { "alias": "multiLineValue"; "required": false; }; "validator": { "alias": "validator"; "required": false; }; "errorMapper": { "alias": "errorMapper"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "textKey": { "alias": "textKey"; "required": false; }; "maxRow": { "alias": "maxRow"; "required": false; }; "minRow": { "alias": "minRow"; "required": false; }; "readonlyKeys": { "alias": "readonlyKeys"; "required": false; }; "zeroStateTemplate": { "alias": "zeroStateTemplate"; "required": false; }; }, {}, never, never, true, never>;
|
|
37
38
|
}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
+
import { ErrorStateComponent } from './error-page/component';
|
|
2
|
+
import { PageStateComponent } from './page-state/component';
|
|
1
3
|
import * as i0 from "@angular/core";
|
|
2
4
|
import * as i1 from "./page-state/component";
|
|
3
5
|
import * as i2 from "./error-page/component";
|
|
6
|
+
export declare const ASYNC_DATA_MODULE: readonly [typeof PageStateComponent, typeof ErrorStateComponent, typeof ErrorStateComponent];
|
|
7
|
+
/**
|
|
8
|
+
* @deprecated use `ASYNC_DATA_MODULE`
|
|
9
|
+
*/
|
|
4
10
|
export declare class AsyncDataModule {
|
|
5
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<AsyncDataModule, never>;
|
|
6
12
|
static ɵmod: i0.ɵɵNgModuleDeclaration<AsyncDataModule, never, [typeof i1.PageStateComponent, typeof i2.ErrorStateComponent, typeof i2.ErrorStateComponent], [typeof i1.PageStateComponent, typeof i2.ErrorStateComponent, typeof i2.ErrorStateComponent]>;
|
|
@@ -1,52 +1,45 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @packageDocumentation
|
|
3
|
-
* @module authorization
|
|
4
|
-
*/
|
|
5
|
-
import { HttpClient } from '@angular/common/http';
|
|
6
|
-
import { OnDestroy } from '@angular/core';
|
|
7
1
|
import { Observable } from 'rxjs';
|
|
8
2
|
import { AccountInfo } from '../page-scaffold/public-api';
|
|
9
3
|
import * as i0 from "@angular/core";
|
|
10
4
|
export interface AuthorizationState {
|
|
11
5
|
idToken?: string;
|
|
12
6
|
refreshToken?: string;
|
|
13
|
-
authUrl?: string;
|
|
14
7
|
state?: string;
|
|
8
|
+
authUrl?: string;
|
|
15
9
|
logoutUrl?: string;
|
|
16
10
|
}
|
|
17
|
-
export
|
|
11
|
+
export interface TokenResponse {
|
|
12
|
+
token_storage: StorageType;
|
|
13
|
+
id_token: string;
|
|
14
|
+
refresh_token: string;
|
|
15
|
+
}
|
|
16
|
+
export type StorageType = 'local' | 'session';
|
|
17
|
+
export declare const STORAGE_TYPE_KEY = "token_storage";
|
|
18
|
+
export declare const ID_TOKEN_KEY = "id_token";
|
|
19
|
+
export declare const REFRESH_TOKEN_KEY = "refresh_token";
|
|
20
|
+
export declare const CODE_KEY = "code";
|
|
21
|
+
export declare class AuthorizationStateService {
|
|
18
22
|
private readonly http;
|
|
19
|
-
private readonly idTokenKey;
|
|
20
|
-
private readonly refreshTokenKey;
|
|
21
|
-
private readonly codeKey;
|
|
22
|
-
private readonly apiTokenLogin;
|
|
23
|
-
private readonly apiTokenCallback;
|
|
24
|
-
private readonly apiRefreshToken;
|
|
25
|
-
private readonly apiTokenInfo;
|
|
26
|
-
private readonly destroy$$;
|
|
27
23
|
private readonly refreshToken$$;
|
|
28
24
|
private readonly state$;
|
|
29
25
|
private checkTokenCache;
|
|
30
26
|
private refreshTokenCache$;
|
|
31
27
|
stateSnapshot: AuthorizationState;
|
|
32
28
|
payloadSnapshot: AccountInfo;
|
|
33
|
-
constructor(http: HttpClient, idTokenKey: string, refreshTokenKey: string, codeKey: string, apiTokenLogin: string, apiTokenCallback: string, apiRefreshToken: string, apiTokenInfo: string);
|
|
34
29
|
logout(specificUrl?: boolean): void;
|
|
35
30
|
logoutAudit(): Observable<Object>;
|
|
36
|
-
|
|
31
|
+
redirectToDex(redirectUrl?: string): Promise<void>;
|
|
37
32
|
refreshToken(): Observable<string>;
|
|
38
33
|
checkToken(token: string): Observable<unknown>;
|
|
39
34
|
getToken(): Observable<string>;
|
|
40
35
|
getTokenPayload<T>(): Observable<T>;
|
|
41
36
|
getAccountInfo(): Observable<AccountInfo>;
|
|
42
|
-
ngOnDestroy(): void;
|
|
43
37
|
private getAuthConfiguration;
|
|
44
38
|
private getExistedToken;
|
|
45
39
|
private getTokenFromLocal;
|
|
46
40
|
private getTokenByRefreshToken;
|
|
47
41
|
private getTokenByCode;
|
|
48
42
|
private getParams;
|
|
49
|
-
private replaceRedirectUrl;
|
|
50
43
|
static ɵfac: i0.ɵɵFactoryDeclaration<AuthorizationStateService, never>;
|
|
51
44
|
static ɵprov: i0.ɵɵInjectableDeclaration<AuthorizationStateService>;
|
|
52
45
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
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
|
+
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>>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BaseTooltip } from '@alauda/ui';
|
|
2
2
|
import { ChangeDetectorRef, OnDestroy, OnInit, TemplateRef, TrackByFunction } from '@angular/core';
|
|
3
|
+
import { ConfigType } from 'dayjs';
|
|
3
4
|
import { Subject } from 'rxjs';
|
|
4
|
-
import { handleDateFormat } from '../../../a-chart/public-api';
|
|
5
5
|
import { ChartData } from '../../../view-chart/public-api';
|
|
6
6
|
import { ContextChartService } from '../../chart.service';
|
|
7
7
|
import { tooltipSuffixFormat } from '../../utils';
|
|
@@ -20,6 +20,7 @@ interface TooltipContext {
|
|
|
20
20
|
source: ChartData[];
|
|
21
21
|
values: ContextItem[];
|
|
22
22
|
}
|
|
23
|
+
export declare function handleDateFormat(date: ConfigType, format?: string): string;
|
|
23
24
|
export declare class ChartTooltipComponent implements OnInit, OnDestroy {
|
|
24
25
|
readonly contextService: ContextChartService;
|
|
25
26
|
private readonly cdr;
|
|
@@ -27,7 +27,7 @@ export declare abstract class BaseFormContainer<T = any> implements OnInit {
|
|
|
27
27
|
protected notification: NotificationService;
|
|
28
28
|
protected location: Location;
|
|
29
29
|
protected fillResource: (resource: T) => T;
|
|
30
|
-
abstract submit(): void;
|
|
30
|
+
abstract submit(params?: unknown): void;
|
|
31
31
|
constructor(injector: Injector);
|
|
32
32
|
ngOnInit(): void;
|
|
33
33
|
switchFormView(view: 'YAML' | 'UI'): void;
|
|
@@ -5,31 +5,13 @@
|
|
|
5
5
|
import { InjectionToken } from '@angular/core';
|
|
6
6
|
import { K8sResourceDefinitions } from '../../api/types';
|
|
7
7
|
import { Environments } from '../types/commons';
|
|
8
|
-
export declare const idTokenKey = "id_token";
|
|
9
|
-
export declare const refreshTokenKey = "refresh_token";
|
|
10
|
-
export declare const codeKey = "code";
|
|
11
8
|
export declare const anonymousApis: Array<string | RegExp>;
|
|
12
|
-
export declare const modulesApi = "/console/api/v1/modules";
|
|
13
|
-
export declare const tokenLoginApi = "/console/api/v1/token/login";
|
|
14
|
-
export declare const tokenCallbackApi = "/console/api/v1/token/callback";
|
|
15
|
-
export declare const tokenRefreshApi = "/console/api/v1/token/refresh";
|
|
16
|
-
export declare const tokenInfoApi = "/console/api/v1/token/info";
|
|
17
|
-
export declare const tokenNonAdminRedirectPath = "/";
|
|
18
9
|
export declare const resourceDefinitions: K8sResourceDefinitions;
|
|
19
10
|
export declare function initGlobalEnvironments(env: Environments): void;
|
|
20
11
|
export declare function fetchGlobalEnvironments(callback?: (envs: Environments) => void): Promise<Environments>;
|
|
21
12
|
export declare function getGlobalEnvironments(): Readonly<Environments>;
|
|
22
13
|
export declare function getGlobalEnvironments<T extends keyof Environments>(name: T): Environments[T];
|
|
23
14
|
export declare const ANONYMOUS_APIS: InjectionToken<(string | RegExp)[]>;
|
|
24
|
-
export declare const ID_TOKEN_KEY: InjectionToken<string>;
|
|
25
|
-
export declare const REFRESH_TOKEN_KEY: InjectionToken<string>;
|
|
26
|
-
export declare const CODE_KEY: InjectionToken<string>;
|
|
27
|
-
export declare const MODULES_API: InjectionToken<string>;
|
|
28
|
-
export declare const TOKEN_LOGIN_API: InjectionToken<string>;
|
|
29
|
-
export declare const TOKEN_CALLBACK_API: InjectionToken<string>;
|
|
30
|
-
export declare const TOKEN_REFRESH_API: InjectionToken<string>;
|
|
31
|
-
export declare const TOKEN_INFO_API: InjectionToken<string>;
|
|
32
|
-
export declare const TOKEN_NON_ADMIN_REDIRECT_PATH: InjectionToken<string>;
|
|
33
15
|
export declare const TOKEN_BASE_DOMAIN: InjectionToken<string>;
|
|
34
16
|
export declare const TOKEN_GLOBAL_NAMESPACE: InjectionToken<string>;
|
|
35
17
|
export declare const TOKEN_LOGO_URL: InjectionToken<string>;
|
package/core/module.d.ts
CHANGED
|
@@ -12,22 +12,23 @@ import * as i10 from "@angular/common";
|
|
|
12
12
|
import * as i11 from "@angular/forms";
|
|
13
13
|
import * as i12 from "./pipes/k8s-util.pipe.module";
|
|
14
14
|
import * as i13 from "../effect-directive/module";
|
|
15
|
-
import * as i14 from "
|
|
16
|
-
import * as i15 from "./pipes/
|
|
17
|
-
import * as i16 from "./pipes/
|
|
18
|
-
import * as i17 from "./pipes/img-
|
|
19
|
-
import * as i18 from "./pipes/
|
|
20
|
-
import * as i19 from "./pipes/
|
|
21
|
-
import * as i20 from "./
|
|
22
|
-
import * as i21 from "./directives/
|
|
23
|
-
import * as i22 from "./directives/
|
|
24
|
-
import * as i23 from "./directives/
|
|
25
|
-
import * as i24 from "./directives/
|
|
26
|
-
import * as i25 from "./directives/
|
|
27
|
-
import * as i26 from "./directives/
|
|
28
|
-
import * as i27 from "./
|
|
15
|
+
import * as i14 from "../code/code.module";
|
|
16
|
+
import * as i15 from "./pipes/parse-json-translate.pipe";
|
|
17
|
+
import * as i16 from "./pipes/field-not-available.pipe";
|
|
18
|
+
import * as i17 from "./pipes/img-header.pipe";
|
|
19
|
+
import * as i18 from "./pipes/img-theme.pipe";
|
|
20
|
+
import * as i19 from "./pipes/safe.pipe";
|
|
21
|
+
import * as i20 from "./pipes/sanitize.pipe";
|
|
22
|
+
import * as i21 from "./directives/page-header-content.directive";
|
|
23
|
+
import * as i22 from "./directives/intercept-deactivate.directive";
|
|
24
|
+
import * as i23 from "./directives/disabled.directive";
|
|
25
|
+
import * as i24 from "./directives/click-outside.directive";
|
|
26
|
+
import * as i25 from "./directives/scroll-border-observer.directive";
|
|
27
|
+
import * as i26 from "./directives/resize.directive";
|
|
28
|
+
import * as i27 from "./directives/feature-gate.directive";
|
|
29
|
+
import * as i28 from "./pipes/pure.pipe";
|
|
29
30
|
export declare class CoreModule {
|
|
30
31
|
static ɵfac: i0.ɵɵFactoryDeclaration<CoreModule, never>;
|
|
31
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<CoreModule, [typeof i1.StandardDatePipe, typeof i2.CrontabNextPipe, typeof i3.MarkedPipe, typeof i4.LocaleTransformPipe, typeof i4.ThemeTransformPipe, typeof i5.TimezoneDisplayPipe, typeof i6.CronHumanReadablePipe, typeof i7.ScrollToFirstInvalidMarkerDirective, typeof i8.FormItemMarginEffectDirective, typeof i9.SpanComponent], [typeof i10.CommonModule, typeof i11.ReactiveFormsModule, typeof i12.K8sUtilPipeModule, typeof i13.EffectDirectiveModule, typeof i9.ReadonlyFieldDirective, typeof
|
|
32
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<CoreModule, [typeof i1.StandardDatePipe, typeof i2.CrontabNextPipe, typeof i3.MarkedPipe, typeof i4.LocaleTransformPipe, typeof i4.ThemeTransformPipe, typeof i5.TimezoneDisplayPipe, typeof i6.CronHumanReadablePipe, typeof i7.ScrollToFirstInvalidMarkerDirective, typeof i8.FormItemMarginEffectDirective, typeof i9.SpanComponent], [typeof i10.CommonModule, typeof i11.ReactiveFormsModule, typeof i12.K8sUtilPipeModule, typeof i13.EffectDirectiveModule, typeof i14.CodeModule, typeof i9.ReadonlyFieldDirective, typeof i15.ParseJsonTranslatePipe, typeof i16.FieldNotAvailablePipe, typeof i17.ImgHeaderPipe, typeof i18.ImgThemePipe, typeof i19.SafePipe, typeof i20.SanitizePipe, typeof i1.RelativeTimePipe, typeof i21.PageHeaderContentDirective, typeof i1.StandardTimePipe, typeof i7.ScrollToFirstInvalidDirective, typeof i22.InterceptDeactivateDirective, typeof i23.DisabledDirective, typeof i24.ClickOutsideDirective, typeof i25.ScrollBorderObserverDirective, typeof i26.ResizeDirective, typeof i27.FeatureGateDirective, typeof i28.PurePipe], [typeof i1.StandardDatePipe, typeof i2.CrontabNextPipe, typeof i3.MarkedPipe, typeof i4.LocaleTransformPipe, typeof i4.ThemeTransformPipe, typeof i5.TimezoneDisplayPipe, typeof i6.CronHumanReadablePipe, typeof i7.ScrollToFirstInvalidMarkerDirective, typeof i8.FormItemMarginEffectDirective, typeof i9.ReadonlyFieldDirective, typeof i15.ParseJsonTranslatePipe, typeof i16.FieldNotAvailablePipe, typeof i17.ImgHeaderPipe, typeof i18.ImgThemePipe, typeof i19.SafePipe, typeof i20.SanitizePipe, typeof i1.RelativeTimePipe, typeof i21.PageHeaderContentDirective, typeof i1.StandardTimePipe, typeof i7.ScrollToFirstInvalidDirective, typeof i22.InterceptDeactivateDirective, typeof i23.DisabledDirective, typeof i24.ClickOutsideDirective, typeof i25.ScrollBorderObserverDirective, typeof i26.ResizeDirective, typeof i27.FeatureGateDirective, typeof i28.PurePipe, typeof i12.K8sUtilPipeModule, typeof i14.CodeModule, typeof i13.EffectDirectiveModule]>;
|
|
32
33
|
static ɵinj: i0.ɵɵInjectorDeclaration<CoreModule>;
|
|
33
34
|
}
|
|
@@ -21,7 +21,6 @@ export declare const CREATOR = "creator";
|
|
|
21
21
|
export declare const UPDATED__AT = "updated-at";
|
|
22
22
|
export declare const PROJECT = "project";
|
|
23
23
|
export declare const CLUSTER = "cluster";
|
|
24
|
-
export declare const TRANSLATION = "translation";
|
|
25
24
|
export interface BaseNormalizeTypeParams {
|
|
26
25
|
type: string;
|
|
27
26
|
baseDomain: string;
|
|
@@ -71,10 +70,6 @@ export declare class K8sUtilService<R extends string = string> {
|
|
|
71
70
|
getLabel<T extends KubernetesResource>(resource: T, params: BaseNormalizeTypeParams): string;
|
|
72
71
|
getProject<T extends KubernetesResource>(resource: T): string;
|
|
73
72
|
private retryUpdate;
|
|
74
|
-
/**
|
|
75
|
-
* @deprecated
|
|
76
|
-
*/
|
|
77
|
-
$get<T extends KubernetesResource>(resource: T, type: string): string;
|
|
78
73
|
static ɵfac: i0.ɵɵFactoryDeclaration<K8sUtilService<any>, never>;
|
|
79
74
|
static ɵprov: i0.ɵɵInjectableDeclaration<K8sUtilService<any>>;
|
|
80
75
|
}
|
package/core/types/k8s/crd.d.ts
CHANGED
|
@@ -222,6 +222,7 @@ export interface ProductBaseSpec extends GenProduct<ProductKey> {
|
|
|
222
222
|
external?: string;
|
|
223
223
|
address: string;
|
|
224
224
|
username: string;
|
|
225
|
+
secretRef?: string;
|
|
225
226
|
};
|
|
226
227
|
replicas: number;
|
|
227
228
|
version: string;
|
|
@@ -584,7 +585,7 @@ export declare enum HelmRequestPhaseEnum {
|
|
|
584
585
|
Uninstalling = "Uninstalling"
|
|
585
586
|
}
|
|
586
587
|
export interface HelmRequestSpec {
|
|
587
|
-
chart
|
|
588
|
+
chart?: string;
|
|
588
589
|
values: Record<string, unknown>;
|
|
589
590
|
valuesFrom?: Array<{
|
|
590
591
|
configMapKeyRef?: ConfigMapKeyRef;
|
package/core/utils/common.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* @module utils
|
|
4
4
|
*/
|
|
5
5
|
import { Sort } from '@alauda/ui';
|
|
6
|
+
import { ActivatedRouteSnapshot } from '@angular/router';
|
|
6
7
|
import { UnionToIntersection } from 'ts-essentials';
|
|
7
8
|
import { Terminal } from 'xterm';
|
|
8
9
|
import { Callback, Keys, KubernetesResource, Nullable, Readonlyable } from '../types/public-api';
|
|
@@ -54,7 +55,6 @@ export declare const getToPath: (from: string, relative: string) => string;
|
|
|
54
55
|
export declare const trackByName: <T extends KubernetesResource>(_: number, resource: T) => string;
|
|
55
56
|
export declare function tableSort<T>(list: T[], sort: Sort, sortActiveValueFn: (item: T, name: string) => string | number): T[];
|
|
56
57
|
export declare function tableSortAdvance<T>(list: T[], sort: Sort, sortActiveValueFn: (item: T, name: string) => string | number): T[];
|
|
57
|
-
export declare const nodeName2Address: (name: string) => string;
|
|
58
58
|
export declare const buildImageAddress: (url: string, tagOrDigest: string) => string;
|
|
59
59
|
export declare const parseImageAddress: (addr: string) => {
|
|
60
60
|
digest?: string;
|
|
@@ -63,3 +63,4 @@ export declare const parseImageAddress: (addr: string) => {
|
|
|
63
63
|
};
|
|
64
64
|
export declare const setWindowsXtermTools: (xterm: Terminal) => void;
|
|
65
65
|
export declare const clearWindowsXtermTools: () => void;
|
|
66
|
+
export declare function getParamFromParent(key: string, snapshot: ActivatedRouteSnapshot): string;
|
|
@@ -3,36 +3,26 @@
|
|
|
3
3
|
* @module api
|
|
4
4
|
*/
|
|
5
5
|
import { HttpClient } from '@angular/common/http';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { MODULES_API } from '../core/public-api';
|
|
6
|
+
import { Injectable, inject } from '@angular/core';
|
|
7
|
+
import { map, retry, shareReplay } from 'rxjs';
|
|
9
8
|
import * as i0 from "@angular/core";
|
|
10
|
-
|
|
9
|
+
const MODULES_API = '/console/api/v1/modules';
|
|
11
10
|
const RETRY_COUNT = 3;
|
|
12
11
|
export class ApiGatewayService {
|
|
13
|
-
constructor(
|
|
14
|
-
this.http =
|
|
15
|
-
this.modulesApi = modulesApi;
|
|
16
|
-
this.destroy$$ = new Subject();
|
|
12
|
+
constructor() {
|
|
13
|
+
this.http = inject(HttpClient);
|
|
17
14
|
this.state$ = this.http
|
|
18
|
-
.get(
|
|
19
|
-
.pipe(retry(RETRY_COUNT), shareReplay(1)
|
|
20
|
-
}
|
|
21
|
-
ngOnDestroy() {
|
|
22
|
-
this.destroy$$.next();
|
|
23
|
-
this.destroy$$.complete();
|
|
15
|
+
.get(MODULES_API)
|
|
16
|
+
.pipe(retry(RETRY_COUNT), shareReplay(1));
|
|
24
17
|
}
|
|
25
18
|
getApiAddress() {
|
|
26
19
|
return this.state$.pipe(map(state => state.apiAddress));
|
|
27
20
|
}
|
|
28
|
-
static { this.ɵfac = function ApiGatewayService_Factory(t) { return new (t || ApiGatewayService)(
|
|
21
|
+
static { this.ɵfac = function ApiGatewayService_Factory(t) { return new (t || ApiGatewayService)(); }; }
|
|
29
22
|
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ApiGatewayService, factory: ApiGatewayService.ɵfac, providedIn: 'root' }); }
|
|
30
23
|
}
|
|
31
24
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ApiGatewayService, [{
|
|
32
25
|
type: Injectable,
|
|
33
26
|
args: [{ providedIn: 'root' }]
|
|
34
|
-
}],
|
|
35
|
-
|
|
36
|
-
args: [MODULES_API]
|
|
37
|
-
}] }]; }, null); })();
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWdhdGV3YXkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvYXBpLWdhdGV3YXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFRakQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBR3RCLE1BQU0sT0FBTyxpQkFBaUI7SUFPNUIsWUFDbUIsSUFBZ0IsRUFDSyxVQUFrQjtRQUR2QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ0ssZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQVJ6QyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVoQyxXQUFNLEdBQUcsSUFBSSxDQUFDLElBQUk7YUFDaEMsR0FBRyxDQUFrQixJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUtwRSxDQUFDO0lBRUosV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztrRkFuQlUsaUJBQWlCLDBDQVNsQixXQUFXO3VFQVRWLGlCQUFpQixXQUFqQixpQkFBaUIsbUJBREosTUFBTTs7dUZBQ25CLGlCQUFpQjtjQUQ3QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztzQkFVN0IsTUFBTTt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgYXBpXG4gKi9cblxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBtYXAsIHJldHJ5LCBzaGFyZVJlcGxheSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE1PRFVMRVNfQVBJIH0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcblxuZXhwb3J0IGludGVyZmFjZSBBcGlHYXRld2F5U3RhdGUge1xuICBhcGlBZGRyZXNzOiBzdHJpbmc7XG4gIGFzc2V0c0hvc3RQYXRoOiBzdHJpbmc7XG4gIGFzc2V0c1VSTFBhdGg6IHN0cmluZztcbn1cblxuY29uc3QgUkVUUllfQ09VTlQgPSAzO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFwaUdhdGV3YXlTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhdGUkID0gdGhpcy5odHRwXG4gICAgLmdldDxBcGlHYXRld2F5U3RhdGU+KHRoaXMubW9kdWxlc0FwaSlcbiAgICAucGlwZShyZXRyeShSRVRSWV9DT1VOVCksIHNoYXJlUmVwbGF5KDEpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCQpKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXG4gICAgQEluamVjdChNT0RVTEVTX0FQSSkgcHJpdmF0ZSByZWFkb25seSBtb2R1bGVzQXBpOiBzdHJpbmcsXG4gICkge31cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGdldEFwaUFkZHJlc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUkLnBpcGUobWFwKHN0YXRlID0+IHN0YXRlLmFwaUFkZHJlc3MpKTtcbiAgfVxufVxuIl19
|
|
27
|
+
}], null, null); })();
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWdhdGV3YXkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvYXBpLWdhdGV3YXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVEvQyxNQUFNLFdBQVcsR0FBRyx5QkFBeUIsQ0FBQztBQUU5QyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFHdEIsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVtQixTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTFCLFdBQU0sR0FBRyxJQUFJLENBQUMsSUFBSTthQUNoQyxHQUFHLENBQWtCLFdBQVcsQ0FBQzthQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBSzdDO0lBSEMsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztrRkFUVSxpQkFBaUI7dUVBQWpCLGlCQUFpQixXQUFqQixpQkFBaUIsbUJBREosTUFBTTs7dUZBQ25CLGlCQUFpQjtjQUQ3QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgYXBpXG4gKi9cblxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCByZXRyeSwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBBcGlHYXRld2F5U3RhdGUge1xuICBhcGlBZGRyZXNzOiBzdHJpbmc7XG4gIGFzc2V0c0hvc3RQYXRoOiBzdHJpbmc7XG4gIGFzc2V0c1VSTFBhdGg6IHN0cmluZztcbn1cblxuY29uc3QgTU9EVUxFU19BUEkgPSAnL2NvbnNvbGUvYXBpL3YxL21vZHVsZXMnO1xuXG5jb25zdCBSRVRSWV9DT1VOVCA9IDM7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXBpR2F0ZXdheVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0ZSQgPSB0aGlzLmh0dHBcbiAgICAuZ2V0PEFwaUdhdGV3YXlTdGF0ZT4oTU9EVUxFU19BUEkpXG4gICAgLnBpcGUocmV0cnkoUkVUUllfQ09VTlQpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgZ2V0QXBpQWRkcmVzcygpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSQucGlwZShtYXAoc3RhdGUgPT4gc3RhdGUuYXBpQWRkcmVzcykpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { map
|
|
3
|
-
import { RESOURCE_TYPES } from '../core/public-api';
|
|
2
|
+
import { map } from 'rxjs';
|
|
3
|
+
import { RESOURCE_TYPES, publishRef, } from '../core/public-api';
|
|
4
4
|
import { K8sApiService } from './k8s-api.service';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "./k8s-api.service";
|
|
@@ -13,7 +13,7 @@ export class ProductService {
|
|
|
13
13
|
type: RESOURCE_TYPES.PRODUCT_BASE,
|
|
14
14
|
name: 'base',
|
|
15
15
|
})
|
|
16
|
-
.pipe(
|
|
16
|
+
.pipe(publishRef());
|
|
17
17
|
}
|
|
18
18
|
filterDeployedProduct(data, accessor, filterFn) {
|
|
19
19
|
return this.productBase$.pipe(map(base => filterFn(data || [], nav => {
|
|
@@ -33,4 +33,4 @@ export class ProductService {
|
|
|
33
33
|
providedIn: 'root',
|
|
34
34
|
}]
|
|
35
35
|
}], function () { return [{ type: i1.K8sApiService }]; }, null); })();
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FwaS9wcm9kdWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNCLE9BQU8sRUFHTCxjQUFjLEVBQ2QsVUFBVSxHQUNYLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFLbEQsTUFBTSxPQUFPLGNBQWM7SUFTekIsWUFBNkIsTUFBcUI7UUFBckIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQVJsRCxhQUFRLEdBQTRCLEVBQUUsQ0FBQztRQUN2QyxpQkFBWSxHQUFHLElBQUksQ0FBQyxNQUFNO2FBQ3ZCLGlCQUFpQixDQUFjO1lBQzlCLElBQUksRUFBRSxjQUFjLENBQUMsWUFBWTtZQUNqQyxJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUM7YUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUUrQixDQUFDO0lBRXRELHFCQUFxQixDQUNuQixJQUFTLEVBQ1QsUUFBNEIsRUFDNUIsUUFBa0Q7UUFFbEQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDM0IsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ1QsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDekIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBZSxDQUFDO1lBQzVDLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBbUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDOytFQTVCVSxjQUFjO3VFQUFkLGNBQWMsV0FBZCxjQUFjLG1CQUZiLE1BQU07O3VGQUVQLGNBQWM7Y0FIMUIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIFByb2R1Y3RCYXNlLFxuICBQcm9kdWN0S2V5LFxuICBSRVNPVVJDRV9UWVBFUyxcbiAgcHVibGlzaFJlZixcbn0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHsgSzhzQXBpU2VydmljZSB9IGZyb20gJy4vazhzLWFwaS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RTZXJ2aWNlIHtcbiAgc2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG4gIHByb2R1Y3RCYXNlJCA9IHRoaXMuazhzQXBpXG4gICAgLmdldEdsb2JhbFJlc291cmNlPFByb2R1Y3RCYXNlPih7XG4gICAgICB0eXBlOiBSRVNPVVJDRV9UWVBFUy5QUk9EVUNUX0JBU0UsXG4gICAgICBuYW1lOiAnYmFzZScsXG4gICAgfSlcbiAgICAucGlwZShwdWJsaXNoUmVmKCkpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgazhzQXBpOiBLOHNBcGlTZXJ2aWNlKSB7fVxuXG4gIGZpbHRlckRlcGxveWVkUHJvZHVjdDxUPihcbiAgICBkYXRhOiBUW10sXG4gICAgYWNjZXNzb3I6IChhcmc6IFQpID0+IHN0cmluZyxcbiAgICBmaWx0ZXJGbjogKGFyZzogVFtdLCBmbjogKGE6IFQpID0+IGJvb2xlYW4pID0+IFRbXSxcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdEJhc2UkLnBpcGUoXG4gICAgICBtYXAoYmFzZSA9PlxuICAgICAgICBmaWx0ZXJGbihkYXRhIHx8IFtdLCBuYXYgPT4ge1xuICAgICAgICAgIGNvbnN0IHByb2R1Y3QgPSBhY2Nlc3NvcihuYXYpIGFzIFByb2R1Y3RLZXk7XG4gICAgICAgICAgcmV0dXJuICFwcm9kdWN0IHx8IGJhc2Uuc3BlYz8uW3Byb2R1Y3RdPy5pbnN0YWxsO1xuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIGlzUHJvZHVjdERlcGxveWVkKHByb2R1Y3Q6IFByb2R1Y3RLZXkpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9kdWN0QmFzZSQucGlwZShtYXAoYmFzZSA9PiBiYXNlLnNwZWM/Lltwcm9kdWN0XT8uaW5zdGFsbCkpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
3
|
import { flatMap } from 'lodash-es';
|
|
4
|
-
import { forkJoin, map,
|
|
4
|
+
import { forkJoin, map, switchMap } from 'rxjs';
|
|
5
5
|
import { API_GATEWAY, skipError, } from '../core/public-api';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@angular/common/http";
|
|
@@ -13,7 +13,7 @@ export class ProjectApiService {
|
|
|
13
13
|
getProjects(params) {
|
|
14
14
|
return this.http
|
|
15
15
|
.get(BASE_URL, params ? { params } : undefined)
|
|
16
|
-
.pipe(
|
|
16
|
+
.pipe(map(res => res.items), skipError([]));
|
|
17
17
|
}
|
|
18
18
|
getNamespaces({ project, cluster }) {
|
|
19
19
|
return this.http.get(`${BASE_URL}/${project}/clusters/${cluster}/namespaces`);
|
|
@@ -32,7 +32,7 @@ export class ProjectApiService {
|
|
|
32
32
|
return forkJoin(clusters.map(({ name: clusterName }) => this.getClusterNamespaces(projectName, clusterName).pipe(map(list => list.map(item => ({
|
|
33
33
|
namespace: item.metadata.name,
|
|
34
34
|
cluster: clusterName,
|
|
35
|
-
}))))));
|
|
35
|
+
}))), skipError([]))));
|
|
36
36
|
}), map(groups => flatMap(groups)), skipError([]));
|
|
37
37
|
}
|
|
38
38
|
static { this.ɵfac = function ProjectApiService_Factory(t) { return new (t || ProjectApiService)(i0.ɵɵinject(i1.HttpClient)); }; }
|
|
@@ -42,4 +42,4 @@ export class ProjectApiService {
|
|
|
42
42
|
type: Injectable,
|
|
43
43
|
args: [{ providedIn: 'root' }]
|
|
44
44
|
}], function () { return [{ type: i1.HttpClient }]; }, null); })();
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvcHJvamVjdC1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBYyxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1RCxPQUFPLEVBQ0wsV0FBVyxFQUtYLFNBQVMsR0FDVixNQUFNLG9CQUFvQixDQUFDOzs7QUFFNUIsTUFBTSxRQUFRLEdBQUcsR0FBRyxXQUFXLG1CQUFtQixDQUFDO0FBR25ELE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBNkIsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUFHLENBQUM7SUFFakQsV0FBVyxDQUFDLE1BQTJCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQ0YsUUFBUSxFQUNSLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUNoQzthQUNBLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQ3JCLFNBQVMsQ0FBQyxFQUFlLENBQUMsQ0FDM0IsQ0FBQztJQUNOLENBQUM7SUFFRCxhQUFhLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUF3QztRQUN0RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixHQUFHLFFBQVEsSUFBSSxPQUFPLGFBQWEsT0FBTyxhQUFhLENBQ3hELENBQUM7SUFDSixDQUFDO0lBRUQsR0FBRyxDQUFDLElBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixtREFBbUQsSUFBSSxFQUFFLENBQzFELENBQUM7SUFDSixDQUFDO0lBRUQsb0JBQW9CLENBQUMsT0FBZSxFQUFFLE9BQWU7UUFDbkQsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FDRixvQ0FBb0MsT0FBTyxhQUFhLE9BQU8sYUFBYSxDQUM3RTthQUNBLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsb0JBQW9CLENBQ2xCLFdBQW1CO1FBRW5CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQy9CLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNsQixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUV2QyxPQUFPLFFBQVEsQ0FDYixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDdEQsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2hCLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7Z0JBQzdCLE9BQU8sRUFBRSxXQUFXO2FBQ3JCLENBQUMsQ0FBQyxDQUNKLEVBQ0QsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUNkLENBQ0YsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQzlCLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FDZCxDQUFDO0lBQ0osQ0FBQztrRkEzRFUsaUJBQWlCO3VFQUFqQixpQkFBaUIsV0FBakIsaUJBQWlCLG1CQURKLE1BQU07O3VGQUNuQixpQkFBaUI7Y0FEN0IsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmbGF0TWFwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZvcmtKb2luLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBBUElfR0FURVdBWSxcbiAgS3ViZXJuZXRlc1Jlc291cmNlTGlzdCxcbiAgTmFtZXNwYWNlLFxuICBQcm9qZWN0LFxuICBSZXNvdXJjZUxpc3RQYXJhbXMsXG4gIHNraXBFcnJvcixcbn0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcblxuY29uc3QgQkFTRV9VUkwgPSBgJHtBUElfR0FURVdBWX0vYXV0aC92MS9wcm9qZWN0c2A7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUHJvamVjdEFwaVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgZ2V0UHJvamVjdHMocGFyYW1zPzogUmVzb3VyY2VMaXN0UGFyYW1zKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PFByb2plY3Q+PihcbiAgICAgICAgQkFTRV9VUkwsXG4gICAgICAgIHBhcmFtcyA/IHsgcGFyYW1zIH0gOiB1bmRlZmluZWQsXG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMuaXRlbXMpLFxuICAgICAgICBza2lwRXJyb3IoW10gYXMgUHJvamVjdFtdKSxcbiAgICAgICk7XG4gIH1cblxuICBnZXROYW1lc3BhY2VzKHsgcHJvamVjdCwgY2x1c3RlciB9OiB7IHByb2plY3Q6IHN0cmluZzsgY2x1c3Rlcjogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PE5hbWVzcGFjZT4+KFxuICAgICAgYCR7QkFTRV9VUkx9LyR7cHJvamVjdH0vY2x1c3RlcnMvJHtjbHVzdGVyfS9uYW1lc3BhY2VzYCxcbiAgICApO1xuICB9XG5cbiAgZ2V0KG5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8UHJvamVjdD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFByb2plY3Q+KFxuICAgICAgYHt7QVBJX0dBVEVXQVl9fS9hcGlzL2F1dGguYWxhdWRhLmlvL3YxL3Byb2plY3RzLyR7bmFtZX1gLFxuICAgICk7XG4gIH1cblxuICBnZXRDbHVzdGVyTmFtZXNwYWNlcyhwcm9qZWN0OiBzdHJpbmcsIGNsdXN0ZXI6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8S3ViZXJuZXRlc1Jlc291cmNlTGlzdDxOYW1lc3BhY2U+PihcbiAgICAgICAgYHt7QVBJX0dBVEVXQVl9fS9hdXRoL3YxL3Byb2plY3RzLyR7cHJvamVjdH0vY2x1c3RlcnMvJHtjbHVzdGVyfS9uYW1lc3BhY2VzYCxcbiAgICAgIClcbiAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLml0ZW1zKSk7XG4gIH1cblxuICBnZXRQcm9qZWN0TmFtZXNwYWNlcyhcbiAgICBwcm9qZWN0TmFtZTogc3RyaW5nLFxuICApOiBPYnNlcnZhYmxlPEFycmF5PHsgY2x1c3Rlcjogc3RyaW5nOyBuYW1lc3BhY2U6IHN0cmluZyB9Pj4ge1xuICAgIHJldHVybiB0aGlzLmdldChwcm9qZWN0TmFtZSkucGlwZShcbiAgICAgIHN3aXRjaE1hcChwcm9qZWN0ID0+IHtcbiAgICAgICAgY29uc3QgY2x1c3RlcnMgPSBwcm9qZWN0LnNwZWMuY2x1c3RlcnM7XG5cbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKFxuICAgICAgICAgIGNsdXN0ZXJzLm1hcCgoeyBuYW1lOiBjbHVzdGVyTmFtZSB9KSA9PlxuICAgICAgICAgICAgdGhpcy5nZXRDbHVzdGVyTmFtZXNwYWNlcyhwcm9qZWN0TmFtZSwgY2x1c3Rlck5hbWUpLnBpcGUoXG4gICAgICAgICAgICAgIG1hcChsaXN0ID0+XG4gICAgICAgICAgICAgICAgbGlzdC5tYXAoaXRlbSA9PiAoe1xuICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlOiBpdGVtLm1ldGFkYXRhLm5hbWUsXG4gICAgICAgICAgICAgICAgICBjbHVzdGVyOiBjbHVzdGVyTmFtZSxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHNraXBFcnJvcihbXSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIG1hcChncm91cHMgPT4gZmxhdE1hcChncm91cHMpKSxcbiAgICAgIHNraXBFcnJvcihbXSksXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -13,11 +13,10 @@ export * from './k8s-api-resource.service';
|
|
|
13
13
|
export * from './page-visibility.service';
|
|
14
14
|
export * from './resource-update.service';
|
|
15
15
|
export * from './types';
|
|
16
|
-
export * from './monitor-api.service';
|
|
17
16
|
export * from './crypto.interceptor';
|
|
18
17
|
export * from './product.service';
|
|
19
18
|
export * from './project-api.service';
|
|
20
19
|
export * from './platform-ui.service';
|
|
21
20
|
export * from './api-compatible.interceptor';
|
|
22
21
|
export * from './acp-common-api.service';
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsY0FBYztBQUNkLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFtbaW5jbHVkZTphcGkvUkVBRE1FLm1kXV1cbiAqIEBtb2R1bGUgYXBpXG4gKiBAcHJlZmVycmVkXG4gKi9cblxuLyoqIGltcG9ydHMgKi9cbmV4cG9ydCAqIGZyb20gJy4vYXBpLWdhdGV3YXkuaW50ZXJjZXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9hcGktZ2F0ZXdheS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY2x1c3Rlci12ZXJzaW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vazhzLWFwaS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vazhzLWFwaS1yZXNvdXJjZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcGFnZS12aXNpYmlsaXR5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXNvdXJjZS11cGRhdGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vY3J5cHRvLmludGVyY2VwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvZHVjdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvamVjdC1hcGkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3BsYXRmb3JtLXVpLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGktY29tcGF0aWJsZS5pbnRlcmNlcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2FjcC1jb21tb24tYXBpLnNlcnZpY2UnO1xuIl19
|