@alauda-fe/common 1.4.6 → 1.4.8

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 (37) hide show
  1. package/api/project-api.service.d.ts +2 -0
  2. package/business/resource-select/{internals → exports}/icon/component.d.ts +1 -1
  3. package/business/resource-select/module.d.ts +16 -16
  4. package/business/resource-select/public-api.d.ts +4 -0
  5. package/core/types/k8s/core.d.ts +1 -2
  6. package/core/types/k8s/crd.d.ts +136 -36
  7. package/core/types/k8s/raw.d.ts +1 -0
  8. package/core/types/resource-definitions.d.ts +71 -1
  9. package/core/utils/operators.d.ts +5 -2
  10. package/esm2022/api/project-api.service.mjs +11 -1
  11. package/esm2022/business/resource-select/exports/cluster-list/component.mjs +75 -0
  12. package/esm2022/business/resource-select/{internals → exports}/icon/component.mjs +2 -2
  13. package/esm2022/business/resource-select/exports/namespace-list/component.mjs +477 -0
  14. package/esm2022/business/resource-select/exports/project-list/component.mjs +76 -0
  15. package/esm2022/business/resource-select/module.mjs +40 -39
  16. package/esm2022/business/resource-select/public-api.mjs +5 -1
  17. package/esm2022/core/constants/tokens.mjs +2 -2
  18. package/esm2022/core/types/k8s/core.mjs +1 -1
  19. package/esm2022/core/types/k8s/crd.mjs +10 -1
  20. package/esm2022/core/types/k8s/raw.mjs +2 -1
  21. package/esm2022/core/types/resource-definitions.mjs +36 -1
  22. package/esm2022/core/utils/operators.mjs +8 -2
  23. package/esm2022/grid-layout/components/grid/component.mjs +2 -2
  24. package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.component.mjs +3 -3
  25. package/esm2022/page-scaffold/page-header/account-menu/component/component.mjs +47 -56
  26. package/esm2022/page-scaffold/page-header/account-menu/module.mjs +4 -5
  27. package/esm2022/page-scaffold/page-header/component.mjs +9 -8
  28. package/package.json +1 -1
  29. package/page-scaffold/page-header/account-menu/component/component.d.ts +1 -2
  30. package/page-scaffold/page-header/account-menu/module.d.ts +2 -2
  31. package/page-scaffold/page-header/component.d.ts +1 -1
  32. package/esm2022/business/resource-select/internals/cluster-list/component.mjs +0 -75
  33. package/esm2022/business/resource-select/internals/namespace-list/component.mjs +0 -477
  34. package/esm2022/business/resource-select/internals/project-list/component.mjs +0 -76
  35. /package/business/resource-select/{internals → exports}/cluster-list/component.d.ts +0 -0
  36. /package/business/resource-select/{internals → exports}/namespace-list/component.d.ts +0 -0
  37. /package/business/resource-select/{internals → exports}/project-list/component.d.ts +0 -0
@@ -6,12 +6,14 @@ export declare class ProjectApiService {
6
6
  private readonly http;
7
7
  constructor(http: HttpClient);
8
8
  getProjects(params?: ResourceListParams): Observable<Project[]>;
9
+ getProjectList(params?: ResourceListParams): Observable<KubernetesResourceList<Project>>;
9
10
  getNamespaces({ project, cluster }: {
10
11
  project: string;
11
12
  cluster: string;
12
13
  }): Observable<KubernetesResourceList<Namespace>>;
13
14
  get(name: string): Observable<Project>;
14
15
  getClusterNamespaces(project: string, cluster: string): Observable<Namespace[]>;
16
+ deleteProject(project: string): Observable<Project>;
15
17
  getProjectNamespaces(projectName: string): Observable<Array<{
16
18
  cluster: string;
17
19
  namespace: string;
@@ -1,4 +1,4 @@
1
- import { DataType } from './../../types';
1
+ import { DataType } from '../../types';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class ResourceIconComponent {
4
4
  get isCard(): boolean;
@@ -1,20 +1,20 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./internals/resource-dashboard/component";
3
- import * as i2 from "./internals/icon/component";
4
- import * as i3 from "./internals/namespace-list/component";
5
- import * as i4 from "./internals/no-data/component";
6
- import * as i5 from "./internals/selector-popup/component";
7
- import * as i6 from "./internals/project-list/component";
8
- import * as i7 from "./internals/data-grid/component";
9
- import * as i8 from "./internals/cluster-list/component";
10
- import * as i9 from "./helpers.directive";
11
- import * as i10 from "./internals/meshgroup-list/component";
12
- import * as i11 from "./exports/namespace-page/component";
13
- import * as i12 from "./exports/namespace-selector/component";
14
- import * as i13 from "./exports/project-page/component";
15
- import * as i14 from "./exports/project-selector/component";
16
- import * as i15 from "./exports/cluster-selector/component";
17
- import * as i16 from "./exports/mesh-group-selector/component";
3
+ import * as i2 from "./internals/no-data/component";
4
+ import * as i3 from "./internals/selector-popup/component";
5
+ import * as i4 from "./internals/data-grid/component";
6
+ import * as i5 from "./helpers.directive";
7
+ import * as i6 from "./internals/meshgroup-list/component";
8
+ import * as i7 from "./exports/namespace-page/component";
9
+ import * as i8 from "./exports/namespace-selector/component";
10
+ import * as i9 from "./exports/project-page/component";
11
+ import * as i10 from "./exports/project-selector/component";
12
+ import * as i11 from "./exports/cluster-selector/component";
13
+ import * as i12 from "./exports/mesh-group-selector/component";
14
+ import * as i13 from "./exports/project-list/component";
15
+ import * as i14 from "./exports/cluster-list/component";
16
+ import * as i15 from "./exports/namespace-list/component";
17
+ import * as i16 from "./exports/icon/component";
18
18
  import * as i17 from "@angular/common";
19
19
  import * as i18 from "../../core/module";
20
20
  import * as i19 from "@alauda/ui";
@@ -27,6 +27,6 @@ import * as i25 from "../../widget/widget.module";
27
27
  import * as i26 from "../../core/directives/declare.directive";
28
28
  export declare class ResourceSelectModule {
29
29
  static ɵfac: i0.ɵɵFactoryDeclaration<ResourceSelectModule, never>;
30
- static ɵmod: i0.ɵɵNgModuleDeclaration<ResourceSelectModule, [typeof i1.ResourceDashboardComponent, typeof i2.ResourceIconComponent, typeof i3.NamespaceListComponent, typeof i4.ResourceNoDataComponent, typeof i5.ResourceSelectorPopupComponent, typeof i6.ProjectListComponent, typeof i7.ResourceDataGridComponent, typeof i8.ClusterListComponent, typeof i9.ResourceGridHeaderDirective, typeof i10.ServiceMeshGroupListComponent, typeof i11.NamespacePageComponent, typeof i12.NamespaceSelectorComponent, typeof i13.ProjectPageComponent, typeof i14.ProjectSelectorComponent, typeof i15.ClusterSelectorComponent, typeof i16.ServiceMeshGroupSelectorComponent], [typeof i17.CommonModule, typeof i18.CoreModule, typeof i19.DialogModule, typeof i19.MessageModule, typeof i20.TranslateModule, typeof i19.IconModule, typeof i19.FormModule, typeof i19.SelectModule, typeof i19.InputModule, typeof i21.FormsModule, typeof i19.TagModule, typeof i19.DropdownModule, typeof i22.PortalModule, typeof i23.OverlayModule, typeof i24.K8SResourceListModule, typeof i19.TooltipModule, typeof i19.ButtonModule, typeof i25.WidgetModule, typeof i26.DeclareDirective], [typeof i11.NamespacePageComponent, typeof i12.NamespaceSelectorComponent, typeof i13.ProjectPageComponent, typeof i14.ProjectSelectorComponent, typeof i15.ClusterSelectorComponent, typeof i16.ServiceMeshGroupSelectorComponent]>;
30
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ResourceSelectModule, [typeof i1.ResourceDashboardComponent, typeof i2.ResourceNoDataComponent, typeof i3.ResourceSelectorPopupComponent, typeof i4.ResourceDataGridComponent, typeof i5.ResourceGridHeaderDirective, typeof i6.ServiceMeshGroupListComponent, typeof i7.NamespacePageComponent, typeof i8.NamespaceSelectorComponent, typeof i9.ProjectPageComponent, typeof i10.ProjectSelectorComponent, typeof i11.ClusterSelectorComponent, typeof i12.ServiceMeshGroupSelectorComponent, typeof i13.ProjectListComponent, typeof i14.ClusterListComponent, typeof i15.NamespaceListComponent, typeof i16.ResourceIconComponent], [typeof i17.CommonModule, typeof i18.CoreModule, typeof i19.DialogModule, typeof i19.MessageModule, typeof i20.TranslateModule, typeof i19.IconModule, typeof i19.FormModule, typeof i19.SelectModule, typeof i19.InputModule, typeof i21.FormsModule, typeof i19.TagModule, typeof i19.DropdownModule, typeof i22.PortalModule, typeof i23.OverlayModule, typeof i24.K8SResourceListModule, typeof i19.TooltipModule, typeof i19.ButtonModule, typeof i25.WidgetModule, typeof i26.DeclareDirective], [typeof i7.NamespacePageComponent, typeof i8.NamespaceSelectorComponent, typeof i9.ProjectPageComponent, typeof i10.ProjectSelectorComponent, typeof i11.ClusterSelectorComponent, typeof i12.ServiceMeshGroupSelectorComponent, typeof i13.ProjectListComponent, typeof i14.ClusterListComponent, typeof i15.NamespaceListComponent, typeof i16.ResourceIconComponent]>;
31
31
  static ɵinj: i0.ɵɵInjectorDeclaration<ResourceSelectModule>;
32
32
  }
@@ -9,6 +9,10 @@ export * from './exports/namespace-selector/component';
9
9
  export * from './exports/project-page/component';
10
10
  export * from './exports/project-selector/component';
11
11
  export * from './exports/mesh-group-selector/component';
12
+ export * from './exports/icon/component';
13
+ export * from './exports/cluster-list/component';
14
+ export * from './exports/project-list/component';
15
+ export * from './exports/namespace-list/component';
12
16
  export * from './helpers.directive';
13
17
  export * from './module';
14
18
  export { ConfigurableField, DisableFn, SelectedNamespaceValue } from './types';
@@ -33,8 +33,7 @@ export interface LabelSelector {
33
33
  }
34
34
  export interface LabelSelectorRequirement {
35
35
  key: string;
36
- operator?: // eslint-disable-next-line sonar/max-union-size
37
- '=' | '==' | '!=' | '!' | 'in' | 'notin' | 'exists' | 'doesnotexist' | 'In';
36
+ operator?: '=' | '==' | '!=' | '!' | 'in' | 'notin' | 'exists' | 'doesnotexist' | 'In';
38
37
  values?: string[];
39
38
  }
40
39
  export interface TypeMeta {
@@ -621,6 +621,46 @@ export interface HelmRequestHttp {
621
621
  url: string;
622
622
  secretRef: string;
623
623
  }
624
+ export interface User extends KubernetesResource {
625
+ spec?: UserSpec;
626
+ }
627
+ export interface UserSpec {
628
+ connector_name?: string;
629
+ connector_type?: string;
630
+ email?: string;
631
+ mail?: string;
632
+ groups?: string[];
633
+ is_admin?: boolean;
634
+ valid?: boolean;
635
+ username?: string;
636
+ old_password?: string;
637
+ password?: string;
638
+ last_login_time?: string;
639
+ login_failure_times?: number;
640
+ state?: UserState;
641
+ is_disabled?: boolean;
642
+ expired?: {
643
+ begin: string;
644
+ end: string;
645
+ };
646
+ mobile?: string;
647
+ webhookType?: WebhookType;
648
+ webhookUrl?: string;
649
+ ids?: Array<{
650
+ type: string;
651
+ id: string;
652
+ }>;
653
+ }
654
+ export declare enum UserState {
655
+ ACTIVE = "active",
656
+ LOCKED = "locked",
657
+ INVALID = "invalid",
658
+ DELETED = "deleted"
659
+ }
660
+ export type WebhookType = 'Webhook' | 'DingTalk' | 'WeChat';
661
+ export interface UserList extends KubernetesResourceList<User> {
662
+ total: number;
663
+ }
624
664
  /**
625
665
  * https://confluence.alauda.cn/pages/viewpage.action?pageId=176883470
626
666
  */
@@ -640,6 +680,21 @@ export interface UserBindingSpec {
640
680
  namespace?: string;
641
681
  }>;
642
682
  }
683
+ export interface UserGroup extends KubernetesResource {
684
+ spec: UserGroupSpec;
685
+ }
686
+ export interface UserGroupSpec {
687
+ refConnector?: {
688
+ id: string;
689
+ type: string;
690
+ };
691
+ name?: string;
692
+ description?: string;
693
+ users?: Array<{
694
+ name: string;
695
+ importTime: string;
696
+ }>;
697
+ }
643
698
  export interface RoleRule {
644
699
  module: string;
645
700
  functionResourceRef: string;
@@ -667,44 +722,89 @@ export interface UserRole extends KubernetesResource {
667
722
  roles?: string[];
668
723
  namespaces?: Record<string, UserRoleNamespace[]>;
669
724
  }
670
- export interface User extends KubernetesResource {
671
- spec?: UserSpec;
672
- }
673
- export interface UserSpec {
674
- connector_name?: string;
675
- connector_type?: string;
676
- email?: string;
677
- mail?: string;
678
- groups?: string[];
679
- is_admin?: boolean;
680
- valid?: boolean;
681
- username?: string;
682
- old_password?: string;
683
- password?: string;
684
- last_login_time?: string;
685
- login_failure_times?: number;
686
- state?: UserState;
687
- is_disabled?: boolean;
688
- expired?: {
689
- begin: string;
690
- end: string;
691
- };
692
- mobile?: string;
693
- webhookType?: WebhookType;
694
- webhookUrl?: string;
695
- ids?: Array<{
696
- type: string;
697
- id: string;
725
+ export declare enum UserSecurityPolicyRule {
726
+ PasswordPolicy = "PasswordPolicy",
727
+ UserLock = "UserLockedPolicy",
728
+ UserDisable = "UserDisabledPolicy",
729
+ Notification = "NotificationPolicy",
730
+ AccessControl = "AccessControlPolicy",
731
+ TwoFA = "TwoFactorAuthenticationPolicy"
732
+ }
733
+ export interface UserPolicyRule {
734
+ name: UserSecurityPolicyRule;
735
+ items: Array<{
736
+ enable: boolean;
737
+ key: string;
738
+ value?: string;
698
739
  }>;
699
740
  }
700
- export declare enum UserState {
701
- ACTIVE = "active",
702
- LOCKED = "locked",
703
- INVALID = "invalid",
704
- DELETED = "deleted"
741
+ export interface UserPolicy extends KubernetesResource {
742
+ rules: UserPolicyRule[];
705
743
  }
706
- export type WebhookType = 'Webhook' | 'DingTalk' | 'WeChat';
707
- export interface UserList extends KubernetesResourceList<User> {
708
- total: number;
744
+ export interface Idp extends KubernetesResource {
745
+ spec?: {
746
+ config?: LdapConfig | OidcConfig;
747
+ };
748
+ id: string;
749
+ name: string;
750
+ type: string;
751
+ namespace?: string;
752
+ config?: string;
753
+ ldapSync?: {
754
+ sync: boolean;
755
+ roles: string;
756
+ };
757
+ idpValidation?: {
758
+ username: string;
759
+ password: string;
760
+ };
761
+ }
762
+ export interface LdapConfig {
763
+ host?: string;
764
+ insecureNoSSL?: boolean;
765
+ insecureSkipVerify?: boolean;
766
+ startTLS?: boolean;
767
+ rootCA?: string;
768
+ rootCAData?: string;
769
+ bindDN?: string;
770
+ bindPW?: string;
771
+ clientSecretRef?: string;
772
+ ldapType?: string;
773
+ usernamePrompt?: string;
774
+ userSearch?: LdapUserSearch;
775
+ groupSearch?: LdapGroupSearch;
776
+ }
777
+ export interface LdapUserSearch {
778
+ baseDN?: string;
779
+ filter?: string;
780
+ scope?: string;
781
+ username?: string;
782
+ idAttr?: string;
783
+ emailAttr?: string;
784
+ nameAttr?: string;
785
+ }
786
+ export interface LdapGroupSearch {
787
+ baseDN?: string;
788
+ filter?: string;
789
+ scope?: string;
790
+ userAttr?: string;
791
+ groupAttr?: string;
792
+ nameAttr?: string;
793
+ }
794
+ export interface OidcConfig {
795
+ issuer?: string;
796
+ clientID?: string;
797
+ clientSecret?: string;
798
+ clientSecretRef?: string;
799
+ redirectURI?: string;
800
+ logoutURL?: string;
801
+ scopes?: string[];
802
+ }
803
+ export interface AccessTokenInfo extends KubernetesResource {
804
+ spec: {
805
+ timestamp: number;
806
+ expiration: number;
807
+ description: string;
808
+ };
709
809
  }
710
810
  export {};
@@ -45,6 +45,7 @@ export declare enum SecretType {
45
45
  SSHKey = "kubernetes.io/ssh-public-key",
46
46
  SSHAuth = "kubernetes.io/ssh-auth",
47
47
  BasicAuth = "kubernetes.io/basic-auth",
48
+ BasicAuthSecret = "kubernetes.io/basic-auth-secret",
48
49
  Database = "kubernetes.io/database",
49
50
  DockerConfigJson = "kubernetes.io/dockerconfigjson",
50
51
  OAuth2 = "katanomi.dev/oauth2",
@@ -328,11 +328,46 @@ export declare const COMMON_RESOURCE_DEFINITIONS: {
328
328
  readonly apiVersion: string;
329
329
  readonly apiGroup: string;
330
330
  };
331
+ readonly USER_SECURITY_POLICY: {
332
+ readonly type: string;
333
+ readonly apiGroup: string;
334
+ readonly apiVersion: string;
335
+ };
336
+ readonly CONNECTOR: {
337
+ readonly type: string;
338
+ readonly apiGroup: string;
339
+ };
340
+ readonly ACCESS_TOKEN_INFO: {
341
+ readonly type: string;
342
+ readonly apiGroup: string;
343
+ };
344
+ readonly FUNCTION_RESOURCE: {
345
+ readonly type: string;
346
+ readonly apiGroup: string;
347
+ readonly apiVersion: string;
348
+ };
331
349
  readonly USER_BINDING: {
332
350
  readonly type: string;
333
351
  readonly apiGroup: string;
334
352
  readonly apiVersion: string;
335
353
  };
354
+ readonly USER: {
355
+ readonly type: string;
356
+ readonly apiGroup: string;
357
+ };
358
+ readonly GROUP: {
359
+ readonly type: string;
360
+ readonly apiGroup: string;
361
+ };
362
+ readonly PROJECT_MEMBER: {
363
+ readonly type: string;
364
+ readonly apiGroup: string;
365
+ };
366
+ readonly ROLE_TEMPLATE: {
367
+ readonly type: string;
368
+ readonly apiGroup: string;
369
+ readonly apiVersion: string;
370
+ };
336
371
  readonly BATCH_ACTION: {
337
372
  readonly apiGroup: string;
338
373
  readonly apiVersion: string;
@@ -438,7 +473,15 @@ export declare const RESOURCE_TYPES: {
438
473
  readonly PRODUCT_DOCS_ENTRY: "PRODUCT_DOCS_ENTRY";
439
474
  readonly SERVICEMESH_GROUP: "SERVICEMESH_GROUP";
440
475
  readonly CLUSTER_MODULE: "CLUSTER_MODULE";
476
+ readonly USER_SECURITY_POLICY: "USER_SECURITY_POLICY";
477
+ readonly CONNECTOR: "CONNECTOR";
478
+ readonly ACCESS_TOKEN_INFO: "ACCESS_TOKEN_INFO";
479
+ readonly FUNCTION_RESOURCE: "FUNCTION_RESOURCE";
441
480
  readonly USER_BINDING: "USER_BINDING";
481
+ readonly USER: "USER";
482
+ readonly GROUP: "GROUP";
483
+ readonly PROJECT_MEMBER: "PROJECT_MEMBER";
484
+ readonly ROLE_TEMPLATE: "ROLE_TEMPLATE";
442
485
  readonly BATCH_ACTION: "BATCH_ACTION";
443
486
  readonly EVENT: "EVENT";
444
487
  readonly SERVICE_MONITOR: "SERVICE_MONITOR";
@@ -446,7 +489,7 @@ export declare const RESOURCE_TYPES: {
446
489
  readonly ARGOCD_APPLICATION_SET: "ARGOCD_APPLICATION_SET";
447
490
  readonly ARGOCD_APPLICATION: "ARGOCD_APPLICATION";
448
491
  };
449
- export declare const getYamlApiVersion: (definition: "ALAUDA_LOADBALANCER2" | "ALB2" | "HELM_REQUEST" | "HELM_REQUEST_V1" | "DEPLOYMENT" | "DAEMONSET" | "STATEFULSET" | "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" | "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" | {
492
+ export declare const getYamlApiVersion: (definition: "ALAUDA_LOADBALANCER2" | "ALB2" | "HELM_REQUEST" | "HELM_REQUEST_V1" | "DEPLOYMENT" | "DAEMONSET" | "STATEFULSET" | "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" | "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_SECURITY_POLICY" | "CONNECTOR" | "ACCESS_TOKEN_INFO" | "FUNCTION_RESOURCE" | "USER_BINDING" | "USER" | "GROUP" | "PROJECT_MEMBER" | "ROLE_TEMPLATE" | "BATCH_ACTION" | "EVENT" | "SERVICE_MONITOR" | "OAM_APPLICATION" | "ARGOCD_APPLICATION_SET" | "ARGOCD_APPLICATION" | {
450
493
  apiGroup: string;
451
494
  type: string;
452
495
  } | {
@@ -697,6 +740,33 @@ export declare const getYamlApiVersion: (definition: "ALAUDA_LOADBALANCER2" | "A
697
740
  type: string;
698
741
  apiGroup: string;
699
742
  apiVersion: string;
743
+ } | {
744
+ type: string;
745
+ apiGroup: string;
746
+ } | {
747
+ type: string;
748
+ apiGroup: string;
749
+ } | {
750
+ type: string;
751
+ apiGroup: string;
752
+ apiVersion: string;
753
+ } | {
754
+ type: string;
755
+ apiGroup: string;
756
+ apiVersion: string;
757
+ } | {
758
+ type: string;
759
+ apiGroup: string;
760
+ } | {
761
+ type: string;
762
+ apiGroup: string;
763
+ } | {
764
+ type: string;
765
+ apiGroup: string;
766
+ } | {
767
+ type: string;
768
+ apiGroup: string;
769
+ apiVersion: string;
700
770
  } | {
701
771
  apiGroup: string;
702
772
  apiVersion: string;
@@ -3,17 +3,20 @@
3
3
  * @module utils
4
4
  */
5
5
  import { DestroyRef } from '@angular/core';
6
- import { Observable, SchedulerLike, TimestampProvider } from 'rxjs';
6
+ import { MonoTypeOperatorFunction, Observable, SchedulerLike, TimestampProvider } from 'rxjs';
7
7
  export type PublishRefConfig<T> = number | (import('rxjs/internal/operators/share').ShareConfig<T> & {
8
8
  bufferSize?: number;
9
9
  windowTime?: number;
10
10
  timestampProvider?: TimestampProvider;
11
11
  });
12
- export declare const publishRef: <T>(bufferSizeOrConfig?: PublishRefConfig<T>) => import("rxjs").MonoTypeOperatorFunction<T>;
12
+ export declare const publishRef: <T>(bufferSizeOrConfig?: PublishRefConfig<T>) => MonoTypeOperatorFunction<T>;
13
13
  export declare const shareUntil: <T>(destroy$: Observable<unknown>, bufferSize?: number, windowTime?: number, scheduler?: SchedulerLike) => import("rxjs").UnaryFunction<Observable<T>, Observable<T>>;
14
14
  export declare const skipError: <T, R = never>(mapped?: R | Observable<R>, debug?: boolean) => import("rxjs").OperatorFunction<T, T | R>;
15
15
  export declare const catchPromise: <T, R = never>(promise: Promise<T>, mapped?: R | Observable<R>) => Observable<T | R>;
16
16
  declare const NULL: unique symbol;
17
17
  export declare const startWithCondition: <T>(condition: boolean, value: T) => (source: Observable<T>) => Observable<typeof NULL | T>;
18
18
  export declare const shareUntilDestroyed: <T>(destroyRef?: DestroyRef, bufferSize?: number, windowTime?: number, scheduler?: SchedulerLike) => import("rxjs").UnaryFunction<Observable<T>, Observable<T>>;
19
+ export declare const safePluck: (...properties: Array<string | number>) => import("rxjs").UnaryFunction<Observable<unknown>, Observable<any>>;
20
+ export declare function switchTap<T, R>(next: (x: T) => Observable<R>): MonoTypeOperatorFunction<T>;
21
+ export declare function switchTap<R>(observable: Observable<R>): MonoTypeOperatorFunction<R>;
19
22
  export {};
@@ -15,6 +15,13 @@ export class ProjectApiService {
15
15
  .get(BASE_URL, params ? { params } : undefined)
16
16
  .pipe(map(res => res.items), skipError([]));
17
17
  }
18
+ getProjectList(params) {
19
+ return this.http.get(BASE_URL, params
20
+ ? {
21
+ params,
22
+ }
23
+ : undefined);
24
+ }
18
25
  getNamespaces({ project, cluster }) {
19
26
  return this.http.get(`${BASE_URL}/${project}/clusters/${cluster}/namespaces`);
20
27
  }
@@ -26,6 +33,9 @@ export class ProjectApiService {
26
33
  .get(`{{API_GATEWAY}}/auth/v1/projects/${project}/clusters/${cluster}/namespaces`)
27
34
  .pipe(map(res => res.items));
28
35
  }
36
+ deleteProject(project) {
37
+ return this.http.delete(`${API_GATEWAY}/auth/v1/projects/${project}`);
38
+ }
29
39
  getProjectNamespaces(projectName) {
30
40
  return this.get(projectName).pipe(switchMap(project => {
31
41
  const clusters = project.spec.clusters;
@@ -42,4 +52,4 @@ export class ProjectApiService {
42
52
  type: Injectable,
43
53
  args: [{ providedIn: 'root' }]
44
54
  }], () => [{ type: i1.HttpClient }], null); })();
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvcHJvamVjdC1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBYyxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1RCxPQUFPLEVBQ0wsV0FBVyxFQUtYLFNBQVMsR0FDVixNQUFNLG9CQUFvQixDQUFDOzs7QUFFNUIsTUFBTSxRQUFRLEdBQUcsR0FBRyxXQUFXLG1CQUFtQixDQUFDO0FBR25ELE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBNkIsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUFHLENBQUM7SUFFakQsV0FBVyxDQUFDLE1BQTJCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBRUYsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2FBQzNDLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQ3JCLFNBQVMsQ0FBQyxFQUFlLENBQUMsQ0FDM0IsQ0FBQztJQUNOLENBQUM7SUFFRCxhQUFhLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUF3QztRQUN0RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixHQUFHLFFBQVEsSUFBSSxPQUFPLGFBQWEsT0FBTyxhQUFhLENBQ3hELENBQUM7SUFDSixDQUFDO0lBRUQsR0FBRyxDQUFDLElBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixtREFBbUQsSUFBSSxFQUFFLENBQzFELENBQUM7SUFDSixDQUFDO0lBRUQsb0JBQW9CLENBQUMsT0FBZSxFQUFFLE9BQWU7UUFDbkQsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FFRixvQ0FBb0MsT0FBTyxhQUFhLE9BQU8sYUFBYSxDQUFDO2FBQzlFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsb0JBQW9CLENBQ2xCLFdBQW1CO1FBRW5CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQy9CLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNsQixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUV2QyxPQUFPLFFBQVEsQ0FDYixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDdEQsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2hCLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7Z0JBQzdCLE9BQU8sRUFBRSxXQUFXO2FBQ3JCLENBQUMsQ0FBQyxDQUNKLEVBQ0QsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUNkLENBQ0YsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQzlCLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FDZCxDQUFDO0lBQ0osQ0FBQztrRkExRFUsaUJBQWlCO3VFQUFqQixpQkFBaUIsV0FBakIsaUJBQWlCLG1CQURKLE1BQU07O2lGQUNuQixpQkFBaUI7Y0FEN0IsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmbGF0TWFwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZvcmtKb2luLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBBUElfR0FURVdBWSxcbiAgS3ViZXJuZXRlc1Jlc291cmNlTGlzdCxcbiAgTmFtZXNwYWNlLFxuICBQcm9qZWN0LFxuICBSZXNvdXJjZUxpc3RQYXJhbXMsXG4gIHNraXBFcnJvcixcbn0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcblxuY29uc3QgQkFTRV9VUkwgPSBgJHtBUElfR0FURVdBWX0vYXV0aC92MS9wcm9qZWN0c2A7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUHJvamVjdEFwaVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgZ2V0UHJvamVjdHMocGFyYW1zPzogUmVzb3VyY2VMaXN0UGFyYW1zKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxcbiAgICAgICAgS3ViZXJuZXRlc1Jlc291cmNlTGlzdDxQcm9qZWN0PlxuICAgICAgPihCQVNFX1VSTCwgcGFyYW1zID8geyBwYXJhbXMgfSA6IHVuZGVmaW5lZClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHJlcy5pdGVtcyksXG4gICAgICAgIHNraXBFcnJvcihbXSBhcyBQcm9qZWN0W10pLFxuICAgICAgKTtcbiAgfVxuXG4gIGdldE5hbWVzcGFjZXMoeyBwcm9qZWN0LCBjbHVzdGVyIH06IHsgcHJvamVjdDogc3RyaW5nOyBjbHVzdGVyOiBzdHJpbmcgfSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEt1YmVybmV0ZXNSZXNvdXJjZUxpc3Q8TmFtZXNwYWNlPj4oXG4gICAgICBgJHtCQVNFX1VSTH0vJHtwcm9qZWN0fS9jbHVzdGVycy8ke2NsdXN0ZXJ9L25hbWVzcGFjZXNgLFxuICAgICk7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcm9qZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UHJvamVjdD4oXG4gICAgICBge3tBUElfR0FURVdBWX19L2FwaXMvYXV0aC5hbGF1ZGEuaW8vdjEvcHJvamVjdHMvJHtuYW1lfWAsXG4gICAgKTtcbiAgfVxuXG4gIGdldENsdXN0ZXJOYW1lc3BhY2VzKHByb2plY3Q6IHN0cmluZywgY2x1c3Rlcjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxcbiAgICAgICAgS3ViZXJuZXRlc1Jlc291cmNlTGlzdDxOYW1lc3BhY2U+XG4gICAgICA+KGB7e0FQSV9HQVRFV0FZfX0vYXV0aC92MS9wcm9qZWN0cy8ke3Byb2plY3R9L2NsdXN0ZXJzLyR7Y2x1c3Rlcn0vbmFtZXNwYWNlc2ApXG4gICAgICAucGlwZShtYXAocmVzID0+IHJlcy5pdGVtcykpO1xuICB9XG5cbiAgZ2V0UHJvamVjdE5hbWVzcGFjZXMoXG4gICAgcHJvamVjdE5hbWU6IHN0cmluZyxcbiAgKTogT2JzZXJ2YWJsZTxBcnJheTx7IGNsdXN0ZXI6IHN0cmluZzsgbmFtZXNwYWNlOiBzdHJpbmcgfT4+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQocHJvamVjdE5hbWUpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAocHJvamVjdCA9PiB7XG4gICAgICAgIGNvbnN0IGNsdXN0ZXJzID0gcHJvamVjdC5zcGVjLmNsdXN0ZXJzO1xuXG4gICAgICAgIHJldHVybiBmb3JrSm9pbihcbiAgICAgICAgICBjbHVzdGVycy5tYXAoKHsgbmFtZTogY2x1c3Rlck5hbWUgfSkgPT5cbiAgICAgICAgICAgIHRoaXMuZ2V0Q2x1c3Rlck5hbWVzcGFjZXMocHJvamVjdE5hbWUsIGNsdXN0ZXJOYW1lKS5waXBlKFxuICAgICAgICAgICAgICBtYXAobGlzdCA9PlxuICAgICAgICAgICAgICAgIGxpc3QubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZTogaXRlbS5tZXRhZGF0YS5uYW1lLFxuICAgICAgICAgICAgICAgICAgY2x1c3RlcjogY2x1c3Rlck5hbWUsXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBza2lwRXJyb3IoW10pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBtYXAoZ3JvdXBzID0+IGZsYXRNYXAoZ3JvdXBzKSksXG4gICAgICBza2lwRXJyb3IoW10pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvcHJvamVjdC1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBYyxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1RCxPQUFPLEVBQ0wsV0FBVyxFQUtYLFNBQVMsR0FDVixNQUFNLG9CQUFvQixDQUFDOzs7QUFFNUIsTUFBTSxRQUFRLEdBQUcsR0FBRyxXQUFXLG1CQUFtQixDQUFDO0FBR25ELE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBNkIsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUFHLENBQUM7SUFFakQsV0FBVyxDQUFDLE1BQTJCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBRUYsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2FBQzNDLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQ3JCLFNBQVMsQ0FBQyxFQUFlLENBQUMsQ0FDM0IsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBMkI7UUFDeEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsUUFBUSxFQUNSLE1BQU07WUFDSixDQUFDLENBQUM7Z0JBQ0UsTUFBTTthQUNQO1lBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQXdDO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLEdBQUcsUUFBUSxJQUFJLE9BQU8sYUFBYSxPQUFPLGFBQWEsQ0FDeEQsQ0FBQztJQUNKLENBQUM7SUFFRCxHQUFHLENBQUMsSUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLG1EQUFtRCxJQUFJLEVBQUUsQ0FDMUQsQ0FBQztJQUNKLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxPQUFlLEVBQUUsT0FBZTtRQUNuRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUVGLG9DQUFvQyxPQUFPLGFBQWEsT0FBTyxhQUFhLENBQUM7YUFDOUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBZTtRQUMzQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUNyQixHQUFHLFdBQVcscUJBQXFCLE9BQU8sRUFBRSxDQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVELG9CQUFvQixDQUNsQixXQUFtQjtRQUVuQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUMvQixTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbEIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFFdkMsT0FBTyxRQUFRLENBQ2IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FDckMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3RELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNULElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoQixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJO2dCQUM3QixPQUFPLEVBQUUsV0FBVzthQUNyQixDQUFDLENBQUMsQ0FDSixFQUNELFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FDZCxDQUNGLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUM5QixTQUFTLENBQUMsRUFBRSxDQUFDLENBQ2QsQ0FBQztJQUNKLENBQUM7a0ZBM0VVLGlCQUFpQjt1RUFBakIsaUJBQWlCLFdBQWpCLGlCQUFpQixtQkFESixNQUFNOztpRkFDbkIsaUJBQWlCO2NBRDdCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmxhdE1hcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmb3JrSm9pbiwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgQVBJX0dBVEVXQVksXG4gIEt1YmVybmV0ZXNSZXNvdXJjZUxpc3QsXG4gIE5hbWVzcGFjZSxcbiAgUHJvamVjdCxcbiAgUmVzb3VyY2VMaXN0UGFyYW1zLFxuICBza2lwRXJyb3IsXG59IGZyb20gJy4uL2NvcmUvcHVibGljLWFwaSc7XG5cbmNvbnN0IEJBU0VfVVJMID0gYCR7QVBJX0dBVEVXQVl9L2F1dGgvdjEvcHJvamVjdHNgO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFByb2plY3RBcGlTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50KSB7fVxuXG4gIGdldFByb2plY3RzKHBhcmFtcz86IFJlc291cmNlTGlzdFBhcmFtcykge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8XG4gICAgICAgIEt1YmVybmV0ZXNSZXNvdXJjZUxpc3Q8UHJvamVjdD5cbiAgICAgID4oQkFTRV9VUkwsIHBhcmFtcyA/IHsgcGFyYW1zIH0gOiB1bmRlZmluZWQpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiByZXMuaXRlbXMpLFxuICAgICAgICBza2lwRXJyb3IoW10gYXMgUHJvamVjdFtdKSxcbiAgICAgICk7XG4gIH1cblxuICBnZXRQcm9qZWN0TGlzdChwYXJhbXM/OiBSZXNvdXJjZUxpc3RQYXJhbXMpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PFByb2plY3Q+PihcbiAgICAgIEJBU0VfVVJMLFxuICAgICAgcGFyYW1zXG4gICAgICAgID8ge1xuICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgKTtcbiAgfVxuXG4gIGdldE5hbWVzcGFjZXMoeyBwcm9qZWN0LCBjbHVzdGVyIH06IHsgcHJvamVjdDogc3RyaW5nOyBjbHVzdGVyOiBzdHJpbmcgfSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEt1YmVybmV0ZXNSZXNvdXJjZUxpc3Q8TmFtZXNwYWNlPj4oXG4gICAgICBgJHtCQVNFX1VSTH0vJHtwcm9qZWN0fS9jbHVzdGVycy8ke2NsdXN0ZXJ9L25hbWVzcGFjZXNgLFxuICAgICk7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcm9qZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UHJvamVjdD4oXG4gICAgICBge3tBUElfR0FURVdBWX19L2FwaXMvYXV0aC5hbGF1ZGEuaW8vdjEvcHJvamVjdHMvJHtuYW1lfWAsXG4gICAgKTtcbiAgfVxuXG4gIGdldENsdXN0ZXJOYW1lc3BhY2VzKHByb2plY3Q6IHN0cmluZywgY2x1c3Rlcjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxcbiAgICAgICAgS3ViZXJuZXRlc1Jlc291cmNlTGlzdDxOYW1lc3BhY2U+XG4gICAgICA+KGB7e0FQSV9HQVRFV0FZfX0vYXV0aC92MS9wcm9qZWN0cy8ke3Byb2plY3R9L2NsdXN0ZXJzLyR7Y2x1c3Rlcn0vbmFtZXNwYWNlc2ApXG4gICAgICAucGlwZShtYXAocmVzID0+IHJlcy5pdGVtcykpO1xuICB9XG5cbiAgZGVsZXRlUHJvamVjdChwcm9qZWN0OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxQcm9qZWN0PihcbiAgICAgIGAke0FQSV9HQVRFV0FZfS9hdXRoL3YxL3Byb2plY3RzLyR7cHJvamVjdH1gLFxuICAgICk7XG4gIH1cblxuICBnZXRQcm9qZWN0TmFtZXNwYWNlcyhcbiAgICBwcm9qZWN0TmFtZTogc3RyaW5nLFxuICApOiBPYnNlcnZhYmxlPEFycmF5PHsgY2x1c3Rlcjogc3RyaW5nOyBuYW1lc3BhY2U6IHN0cmluZyB9Pj4ge1xuICAgIHJldHVybiB0aGlzLmdldChwcm9qZWN0TmFtZSkucGlwZShcbiAgICAgIHN3aXRjaE1hcChwcm9qZWN0ID0+IHtcbiAgICAgICAgY29uc3QgY2x1c3RlcnMgPSBwcm9qZWN0LnNwZWMuY2x1c3RlcnM7XG5cbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKFxuICAgICAgICAgIGNsdXN0ZXJzLm1hcCgoeyBuYW1lOiBjbHVzdGVyTmFtZSB9KSA9PlxuICAgICAgICAgICAgdGhpcy5nZXRDbHVzdGVyTmFtZXNwYWNlcyhwcm9qZWN0TmFtZSwgY2x1c3Rlck5hbWUpLnBpcGUoXG4gICAgICAgICAgICAgIG1hcChsaXN0ID0+XG4gICAgICAgICAgICAgICAgbGlzdC5tYXAoaXRlbSA9PiAoe1xuICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlOiBpdGVtLm1ldGFkYXRhLm5hbWUsXG4gICAgICAgICAgICAgICAgICBjbHVzdGVyOiBjbHVzdGVyTmFtZSxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHNraXBFcnJvcihbXSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIG1hcChncm91cHMgPT4gZmxhdE1hcChncm91cHMpKSxcbiAgICAgIHNraXBFcnJvcihbXSksXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,75 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, } from '@angular/core';
3
+ import { of, Subject, catchError, startWith, switchMap, takeUntil, map, } from 'rxjs';
4
+ import { API_GATEWAY, K8sUtilService, publishRef, } from '../../../../core/public-api';
5
+ import { ResourceListBase } from '../../base-list';
6
+ import { ResourceSelectContextService } from '../../context.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common/http";
9
+ import * as i2 from "../../context.service";
10
+ import * as i3 from "../../../../core/public-api";
11
+ export class ClusterListComponent extends ResourceListBase {
12
+ constructor(http, contextService, cdr, k8sUtil) {
13
+ super(cdr, k8sUtil, contextService);
14
+ this.http = http;
15
+ this.type = 'cluster';
16
+ this.clusters = [];
17
+ this.clusters$ = this.reload$$.pipe(startWith(null), switchMap(() => this.http.get(`${API_GATEWAY}/auth/v1/clusters`)), map(list => list.items), catchError(() => of([])), takeUntil(this.destroy$$), publishRef());
18
+ this.loadClusterInfo$$ = new Subject();
19
+ }
20
+ ngOnInit() {
21
+ this.clusters = this.contextService.cachedClusters;
22
+ this.setSelected();
23
+ this.clusters$.subscribe(clusters => {
24
+ this.clusters = this.mapResource(clusters);
25
+ this.setSelected();
26
+ this.loading = false;
27
+ this.forceLoading = false;
28
+ this.loadClusterInfo$$.next(clusters);
29
+ this.cdr.markForCheck();
30
+ });
31
+ }
32
+ setSelected() {
33
+ this.selectedCluster = this.clusters.find(c => c.name === this.value);
34
+ }
35
+ ngOnDestroy() {
36
+ this.destroy$$.next();
37
+ this.destroy$$.complete();
38
+ }
39
+ mapResource(list) {
40
+ return list.map(item => ({
41
+ name: this.k8sUtil.getName(item),
42
+ displayName: this.k8sUtil.getDisplayName(item),
43
+ status: this.getClusterStatus(item),
44
+ timestamp: item.metadata.creationTimestamp,
45
+ __origin: item,
46
+ }));
47
+ }
48
+ getClusterStatus(cluster) {
49
+ if (cluster?.status) {
50
+ const clusterStatus = cluster.status.conditions.find(condition => condition.type === 'ComponentNotHealthy');
51
+ if (clusterStatus) {
52
+ return clusterStatus.status.toLowerCase() === 'true'
53
+ ? 'abnormal'
54
+ : 'normal';
55
+ }
56
+ }
57
+ return 'abnormal';
58
+ }
59
+ static { this.ɵfac = function ClusterListComponent_Factory(t) { return new (t || ClusterListComponent)(i0.ɵɵdirectiveInject(i1.HttpClient), i0.ɵɵdirectiveInject(i2.ResourceSelectContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i3.K8sUtilService)); }; }
60
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ClusterListComponent, selectors: [["acl-cluster-list"]], inputs: { value: "value" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 7, consts: [[3, "selectItem", "reload", "data", "fields", "context", "popupLite", "selectedUid", "type", "loading"]], template: function ClusterListComponent_Template(rf, ctx) { if (rf & 1) {
61
+ i0.ɵɵelementStart(0, "acl-resource-data-grid", 0);
62
+ i0.ɵɵlistener("selectItem", function ClusterListComponent_Template_acl_resource_data_grid_selectItem_0_listener($event) { return ctx.onSelect($event); })("reload", function ClusterListComponent_Template_acl_resource_data_grid_reload_0_listener() { return ctx.reload(); });
63
+ i0.ɵɵelementEnd();
64
+ } if (rf & 2) {
65
+ i0.ɵɵproperty("data", ctx.clusters)("fields", ctx.fields)("context", ctx.context)("popupLite", ctx.popupLite)("selectedUid", ctx.selectedCluster == null ? null : ctx.selectedCluster.__origin.metadata.uid)("type", ctx.type)("loading", ctx.forceLoading || !(ctx.clusters == null ? null : ctx.clusters.length) && ctx.loading);
66
+ } }, styles: ["[_nghost-%COMP%]{height:100%;display:flex;flex-direction:column;padding-top:20px}.filter[_ngcontent-%COMP%]{display:flex;border-bottom:1px solid rgb(var(--aui-color-n-8));padding-bottom:8px}.filter[_ngcontent-%COMP%] aui-form-item[_ngcontent-%COMP%] .aui-form-item{margin-bottom:0}.filter__project[_ngcontent-%COMP%]{margin-right:50px;padding-bottom:8px}.filter__project[_ngcontent-%COMP%] aui-select[_ngcontent-%COMP%]{width:240px}.filter__cluster[_ngcontent-%COMP%]{flex:1}.cluster-tags[_ngcontent-%COMP%] aui-check-tag[_ngcontent-%COMP%]{margin-bottom:8px;display:inline-flex}.cluster-tags[_ngcontent-%COMP%] aui-check-tag[_ngcontent-%COMP%] .aui-tag{border:none}.cluster-tags[_ngcontent-%COMP%] aui-check-tag[_ngcontent-%COMP%] .aui-tag--info{background-color:rgb(var(--aui-color-n-8))}"], changeDetection: 0 }); }
67
+ }
68
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ClusterListComponent, [{
69
+ type: Component,
70
+ args: [{ selector: 'acl-cluster-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<acl-resource-data-grid\n [data]=\"clusters\"\n [fields]=\"fields\"\n [context]=\"context\"\n [popupLite]=\"popupLite\"\n (selectItem)=\"onSelect($event)\"\n [selectedUid]=\"selectedCluster?.__origin.metadata.uid\"\n [type]=\"type\"\n [loading]=\"forceLoading || (!clusters?.length && loading)\"\n (reload)=\"reload()\"\n></acl-resource-data-grid>\n", styles: [":host{height:100%;display:flex;flex-direction:column;padding-top:20px}.filter{display:flex;border-bottom:1px solid rgb(var(--aui-color-n-8));padding-bottom:8px}.filter aui-form-item ::ng-deep .aui-form-item{margin-bottom:0}.filter__project{margin-right:50px;padding-bottom:8px}.filter__project aui-select{width:240px}.filter__cluster{flex:1}.cluster-tags aui-check-tag{margin-bottom:8px;display:inline-flex}.cluster-tags aui-check-tag::ng-deep .aui-tag{border:none}.cluster-tags aui-check-tag::ng-deep .aui-tag--info{background-color:rgb(var(--aui-color-n-8))}\n"] }]
71
+ }], () => [{ type: i1.HttpClient }, { type: i2.ResourceSelectContextService }, { type: i0.ChangeDetectorRef }, { type: i3.K8sUtilService }], { value: [{
72
+ type: Input
73
+ }] }); })();
74
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ClusterListComponent, { className: "ClusterListComponent", filePath: "business/resource-select/exports/cluster-list/component.ts", lineNumber: 37 }); })();
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2J1c2luZXNzL3Jlc291cmNlLXNlbGVjdC9leHBvcnRzL2NsdXN0ZXItbGlzdC9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvYnVzaW5lc3MvcmVzb3VyY2Utc2VsZWN0L2V4cG9ydHMvY2x1c3Rlci1saXN0L3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLEVBQUUsRUFDRixPQUFPLEVBQ1AsVUFBVSxFQUNWLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFHTCxXQUFXLEVBQ1gsY0FBYyxFQUNkLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7OztBQVNyRSxNQUFNLE9BQU8sb0JBQ1gsU0FBUSxnQkFBZ0I7SUEyQnhCLFlBQ21CLElBQWdCLEVBQ2pDLGNBQTRDLEVBQzVDLEdBQXNCLEVBQ3RCLE9BQXVCO1FBRXZCLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBTG5CLFNBQUksR0FBSixJQUFJLENBQVk7UUF0Qm5DLFNBQUksR0FBRyxTQUFrQixDQUFDO1FBSTFCLGFBQVEsR0FBc0IsRUFBRSxDQUFDO1FBRWpDLGNBQVMsR0FB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QUlyQixZQUFRLElBQUM7WUFDcEIsaUJBQXlCOztZQUZ4QixBQURBLEFBREEsQUFGQSxBQURBLEFBREEsQUFEQSxtQ0FBaUIsc0JBQ0Esd0JBQ0UsNEJBQ0ksK0ZBRStCLGtCQUN6QyxvR0FDNkM7OztpRkQ0Qi9DLG9CQUFvQjtjQU5oQyxTQUFTOzJCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNO21KQU8vQyxLQUFLO2tCQURKLEtBQUs7O2tGQUpLLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIG9mLFxuICBTdWJqZWN0LFxuICBjYXRjaEVycm9yLFxuICBzdGFydFdpdGgsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsLFxuICBtYXAsXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBDbHVzdGVyLFxuICBLdWJlcm5ldGVzUmVzb3VyY2VMaXN0LFxuICBBUElfR0FURVdBWSxcbiAgSzhzVXRpbFNlcnZpY2UsXG4gIHB1Ymxpc2hSZWYsXG59IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBSZXNvdXJjZUxpc3RCYXNlIH0gZnJvbSAnLi4vLi4vYmFzZS1saXN0JztcbmltcG9ydCB7IFJlc291cmNlU2VsZWN0Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2x1c3RlckRhdGFJdGVtIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtY2x1c3Rlci1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHlsZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDbHVzdGVyTGlzdENvbXBvbmVudFxuICBleHRlbmRzIFJlc291cmNlTGlzdEJhc2VcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxue1xuICBASW5wdXQoKVxuICB2YWx1ZTogc3RyaW5nO1xuXG4gIHR5cGUgPSAnY2x1c3RlcicgYXMgY29uc3Q7XG5cbiAgc2VsZWN0ZWRDbHVzdGVyOiBDbHVzdGVyRGF0YUl0ZW07XG5cbiAgY2x1c3RlcnM6IENsdXN0ZXJEYXRhSXRlbVtdID0gW107XG5cbiAgY2x1c3RlcnMkID0gdGhpcy5yZWxvYWQkJC5waXBlKFxuICAgIHN0YXJ0V2l0aChudWxsIGFzIHZvaWQpLFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgdGhpcy5odHRwLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PENsdXN0ZXI+PihcbiAgICAgICAgYCR7QVBJX0dBVEVXQVl9L2F1dGgvdjEvY2x1c3RlcnNgLFxuICAgICAgKSxcbiAgICApLFxuICAgIG1hcChsaXN0ID0+IGxpc3QuaXRlbXMpLFxuICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10gYXMgQ2x1c3RlcltdKSksXG4gICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQkKSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG5cbiAgbG9hZENsdXN0ZXJJbmZvJCQgPSBuZXcgU3ViamVjdDxDbHVzdGVyW10+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIGNvbnRleHRTZXJ2aWNlOiBSZXNvdXJjZVNlbGVjdENvbnRleHRTZXJ2aWNlLFxuICAgIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgazhzVXRpbDogSzhzVXRpbFNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKGNkciwgazhzVXRpbCwgY29udGV4dFNlcnZpY2UpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jbHVzdGVycyA9IHRoaXMuY29udGV4dFNlcnZpY2UuY2FjaGVkQ2x1c3RlcnM7XG4gICAgdGhpcy5zZXRTZWxlY3RlZCgpO1xuICAgIHRoaXMuY2x1c3RlcnMkLnN1YnNjcmliZShjbHVzdGVycyA9PiB7XG4gICAgICB0aGlzLmNsdXN0ZXJzID0gdGhpcy5tYXBSZXNvdXJjZShjbHVzdGVycyk7XG4gICAgICB0aGlzLnNldFNlbGVjdGVkKCk7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuZm9yY2VMb2FkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmxvYWRDbHVzdGVySW5mbyQkLm5leHQoY2x1c3RlcnMpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFNlbGVjdGVkKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRDbHVzdGVyID0gdGhpcy5jbHVzdGVycy5maW5kKGMgPT4gYy5uYW1lID09PSB0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgbWFwUmVzb3VyY2UobGlzdDogQ2x1c3RlcltdKTogQ2x1c3RlckRhdGFJdGVtW10ge1xuICAgIHJldHVybiBsaXN0Lm1hcChpdGVtID0+ICh7XG4gICAgICBuYW1lOiB0aGlzLms4c1V0aWwuZ2V0TmFtZShpdGVtKSxcbiAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLms4c1V0aWwuZ2V0RGlzcGxheU5hbWUoaXRlbSksXG4gICAgICBzdGF0dXM6IHRoaXMuZ2V0Q2x1c3RlclN0YXR1cyhpdGVtKSxcbiAgICAgIHRpbWVzdGFtcDogaXRlbS5tZXRhZGF0YS5jcmVhdGlvblRpbWVzdGFtcCxcbiAgICAgIF9fb3JpZ2luOiBpdGVtLFxuICAgIH0pKTtcbiAgfVxuXG4gIGdldENsdXN0ZXJTdGF0dXMoY2x1c3Rlcj86IENsdXN0ZXIpIHtcbiAgICBpZiAoY2x1c3Rlcj8uc3RhdHVzKSB7XG4gICAgICBjb25zdCBjbHVzdGVyU3RhdHVzID0gY2x1c3Rlci5zdGF0dXMuY29uZGl0aW9ucy5maW5kKFxuICAgICAgICBjb25kaXRpb24gPT4gY29uZGl0aW9uLnR5cGUgPT09ICdDb21wb25lbnROb3RIZWFsdGh5JyxcbiAgICAgICk7XG4gICAgICBpZiAoY2x1c3RlclN0YXR1cykge1xuICAgICAgICByZXR1cm4gY2x1c3RlclN0YXR1cy5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnXG4gICAgICAgICAgPyAnYWJub3JtYWwnXG4gICAgICAgICAgOiAnbm9ybWFsJztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICdhYm5vcm1hbCc7XG4gIH1cbn1cbiIsIjxhY2wtcmVzb3VyY2UtZGF0YS1ncmlkXG4gIFtkYXRhXT1cImNsdXN0ZXJzXCJcbiAgW2ZpZWxkc109XCJmaWVsZHNcIlxuICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgW3BvcHVwTGl0ZV09XCJwb3B1cExpdGVcIlxuICAoc2VsZWN0SXRlbSk9XCJvblNlbGVjdCgkZXZlbnQpXCJcbiAgW3NlbGVjdGVkVWlkXT1cInNlbGVjdGVkQ2x1c3Rlcj8uX19vcmlnaW4ubWV0YWRhdGEudWlkXCJcbiAgW3R5cGVdPVwidHlwZVwiXG4gIFtsb2FkaW5nXT1cImZvcmNlTG9hZGluZyB8fCAoIWNsdXN0ZXJzPy5sZW5ndGggJiYgbG9hZGluZylcIlxuICAocmVsb2FkKT1cInJlbG9hZCgpXCJcbj48L2FjbC1yZXNvdXJjZS1kYXRhLWdyaWQ+XG4iXX0=
@@ -53,5 +53,5 @@ export class ResourceIconComponent {
53
53
  }], displayMode: [{
54
54
  type: Input
55
55
  }] }); })();
56
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ResourceIconComponent, { className: "ResourceIconComponent", filePath: "business/resource-select/internals/icon/component.ts", lineNumber: 16 }); })();
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2J1c2luZXNzL3Jlc291cmNlLXNlbGVjdC9pbnRlcm5hbHMvaWNvbi9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvYnVzaW5lc3MvcmVzb3VyY2Utc2VsZWN0L2ludGVybmFscy9pY29uL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQzs7QUFVdkIsTUFBTSxPQUFPLHFCQUFxQjtJQU5sQztRQXdCRSxnQkFBVyxHQUFHLEtBQUssQ0FBQztLQWtCckI7SUFuQ0MsSUFDSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLE1BQU0sQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFDSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFVBQVUsQ0FBQztJQUN6QyxDQUFDO0lBV0QsUUFBUSxDQUFDLElBQVk7UUFDbkIsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDakIsT0FBTyxXQUFXLENBQUM7WUFDckIsQ0FBQztZQUNELEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDZixPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBQ0QsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNmLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNSLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO3NGQW5DVSxxQkFBcUI7b0VBQXJCLHFCQUFxQjtZQUFyQixrQ0FBcUIseUJBQUE7O1lDZmxDLDhCQUlZOzs7WUFGVixrREFBcUM7WUFDckMsZ0ZBQTZDOzs7aUZEWWxDLHFCQUFxQjtjQU5qQyxTQUFTOzJCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNO2dCQUkzQyxNQUFNO2tCQURULFdBQVc7bUJBQUMsWUFBWTtZQU1yQixNQUFNO2tCQURULFdBQVc7bUJBQUMsaUJBQWlCO1lBTTlCLElBQUk7a0JBREgsS0FBSztZQUlOLEtBQUs7a0JBREosS0FBSztZQUlOLFdBQVc7a0JBRFYsS0FBSzs7a0ZBakJLLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSAnLi8uLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1yZXNvdXJjZS1pY29uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHlsZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUljb25Db21wb25lbnQge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNhcmQnKVxuICBnZXQgaXNDYXJkKCkge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXlNb2RlID09PSAnY2FyZCc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJvdy0tbGl0ZScpXG4gIGdldCBpc0xpdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheU1vZGUgPT09ICdyb3ctbGl0ZSc7XG4gIH1cblxuICBASW5wdXQoKVxuICB0eXBlOiBEYXRhVHlwZTtcblxuICBASW5wdXQoKVxuICBjb2xvcjogJ3doaXRlJyB8ICdibHVlJztcblxuICBASW5wdXQoKVxuICBkaXNwbGF5TW9kZSA9ICdyb3cnO1xuXG4gIGljb25OYW1lKHR5cGU6IHN0cmluZykge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnbmFtZXNwYWNlJzoge1xuICAgICAgICByZXR1cm4gJ25hbWVzcGFjZSc7XG4gICAgICB9XG4gICAgICBjYXNlICdwcm9qZWN0Jzoge1xuICAgICAgICByZXR1cm4gJ3Byb2plY3QnO1xuICAgICAgfVxuICAgICAgY2FzZSAnY2x1c3Rlcic6IHtcbiAgICAgICAgcmV0dXJuICdzZXJ2ZXInO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gdHlwZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxhdWktaWNvblxuICBjbGFzcz1cImFjbC1jb2xvcmZ1bC1pY29uXCJcbiAgW2NsYXNzLmhpZ2hsaWdodF09XCJjb2xvciA9PT0gJ3doaXRlJ1wiXG4gIFtpY29uXT1cIidiaWNvbG9yOicgKyAodHlwZSB8IHB1cmU6IGljb25OYW1lKVwiXG4+PC9hdWktaWNvbj5cbiJdfQ==
56
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ResourceIconComponent, { className: "ResourceIconComponent", filePath: "business/resource-select/exports/icon/component.ts", lineNumber: 16 }); })();
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2J1c2luZXNzL3Jlc291cmNlLXNlbGVjdC9leHBvcnRzL2ljb24vY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2J1c2luZXNzL3Jlc291cmNlLXNlbGVjdC9leHBvcnRzL2ljb24vdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDOztBQVV2QixNQUFNLE9BQU8scUJBQXFCO0lBTmxDO1FBd0JFLGdCQUFXLEdBQUcsS0FBSyxDQUFDO0tBa0JyQjtJQW5DQyxJQUNJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssTUFBTSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUNJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssVUFBVSxDQUFDO0lBQ3pDLENBQUM7SUFXRCxRQUFRLENBQUMsSUFBWTtRQUNuQixRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2IsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNqQixPQUFPLFdBQVcsQ0FBQztZQUNyQixDQUFDO1lBQ0QsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNmLE9BQU8sU0FBUyxDQUFDO1lBQ25CLENBQUM7WUFDRCxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2YsT0FBTyxRQUFRLENBQUM7WUFDbEIsQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ1IsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7c0ZBbkNVLHFCQUFxQjtvRUFBckIscUJBQXFCO1lBQXJCLGtDQUFxQix5QkFBQTs7WUNmbEMsOEJBSVk7OztZQUZWLGtEQUFxQztZQUNyQyxnRkFBNkM7OztpRkRZbEMscUJBQXFCO2NBTmpDLFNBQVM7MkJBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU07Z0JBSTNDLE1BQU07a0JBRFQsV0FBVzttQkFBQyxZQUFZO1lBTXJCLE1BQU07a0JBRFQsV0FBVzttQkFBQyxpQkFBaUI7WUFNOUIsSUFBSTtrQkFESCxLQUFLO1lBSU4sS0FBSztrQkFESixLQUFLO1lBSU4sV0FBVztrQkFEVixLQUFLOztrRkFqQksscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1yZXNvdXJjZS1pY29uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHlsZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUljb25Db21wb25lbnQge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNhcmQnKVxuICBnZXQgaXNDYXJkKCkge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXlNb2RlID09PSAnY2FyZCc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJvdy0tbGl0ZScpXG4gIGdldCBpc0xpdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheU1vZGUgPT09ICdyb3ctbGl0ZSc7XG4gIH1cblxuICBASW5wdXQoKVxuICB0eXBlOiBEYXRhVHlwZTtcblxuICBASW5wdXQoKVxuICBjb2xvcjogJ3doaXRlJyB8ICdibHVlJztcblxuICBASW5wdXQoKVxuICBkaXNwbGF5TW9kZSA9ICdyb3cnO1xuXG4gIGljb25OYW1lKHR5cGU6IHN0cmluZykge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnbmFtZXNwYWNlJzoge1xuICAgICAgICByZXR1cm4gJ25hbWVzcGFjZSc7XG4gICAgICB9XG4gICAgICBjYXNlICdwcm9qZWN0Jzoge1xuICAgICAgICByZXR1cm4gJ3Byb2plY3QnO1xuICAgICAgfVxuICAgICAgY2FzZSAnY2x1c3Rlcic6IHtcbiAgICAgICAgcmV0dXJuICdzZXJ2ZXInO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gdHlwZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxhdWktaWNvblxuICBjbGFzcz1cImFjbC1jb2xvcmZ1bC1pY29uXCJcbiAgW2NsYXNzLmhpZ2hsaWdodF09XCJjb2xvciA9PT0gJ3doaXRlJ1wiXG4gIFtpY29uXT1cIidiaWNvbG9yOicgKyAodHlwZSB8IHB1cmU6IGljb25OYW1lKVwiXG4+PC9hdWktaWNvbj5cbiJdfQ==