@k8slens/extensions 5.4.0-git.6ebfd76644.0 → 5.4.0-git.7c9ec87b3c.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/dist/src/common/catalog/catalog-category-registry.d.ts +2 -2
- package/dist/src/common/catalog-entities/kubernetes-cluster.d.ts +1 -1
- package/dist/src/common/cluster/authorization-review.injectable.d.ts +13 -0
- package/dist/src/common/cluster/cluster.d.ts +11 -21
- package/dist/src/common/cluster/list-namespaces.injectable.d.ts +10 -0
- package/dist/src/common/cluster-store/allowed-resources.injectable.d.ts +3 -0
- package/dist/src/common/cluster-store/{hosted-cluster/hosted-cluster.injectable.d.ts → hosted-cluster.injectable.d.ts} +1 -1
- package/dist/src/common/item.store.d.ts +3 -1
- package/dist/src/common/k8s-api/kube-api.d.ts +1 -1
- package/dist/src/common/k8s-api/kube-object.store.d.ts +3 -1
- package/dist/src/common/routes/{apps.d.ts → helm.d.ts} +2 -2
- package/dist/src/common/routes/index.d.ts +1 -1
- package/dist/src/common/user-store/user-store.d.ts +1 -1
- package/dist/src/common/utils/abort-controller.d.ts +8 -0
- package/dist/src/common/utils/collection-functions.d.ts +18 -4
- package/dist/src/common/utils/index.d.ts +2 -2
- package/dist/src/common/utils/is-allowed-resource.injectable.d.ts +5 -0
- package/dist/src/common/utils/objects.d.ts +2 -3
- package/dist/src/common/utils/openBrowser.d.ts +17 -0
- package/dist/src/extensions/common-api/registrations.d.ts +2 -1
- package/dist/src/extensions/common-api/utils.d.ts +1 -1
- package/dist/src/extensions/extension-api.js +116 -92
- package/dist/src/extensions/lens-extension.d.ts +1 -1
- package/dist/src/extensions/lens-main-extension.d.ts +15 -0
- package/dist/src/extensions/lens-renderer-extension.d.ts +1 -1
- package/dist/src/extensions/main-api/index.d.ts +2 -1
- package/dist/src/extensions/main-api/k8s-api.d.ts +5 -1
- package/dist/src/extensions/main-api/power.d.ts +24 -0
- package/dist/src/extensions/renderer-api/k8s-api.d.ts +2 -1
- package/dist/src/main/cluster-manager.d.ts +20 -2
- package/dist/src/main/create-cluster/create-cluster.injectable.d.ts +1 -2
- package/dist/src/main/helm/helm-repo-manager.d.ts +8 -9
- package/dist/src/main/shell-session/local-shell-session/local-shell-session.d.ts +6 -0
- package/dist/src/main/shell-session/shell-env-modifier/shell-env-modifier-registration.d.ts +9 -0
- package/dist/src/main/shell-session/shell-env-modifier/terminal-shell-env-modifiers.d.ts +12 -0
- package/dist/src/main/shell-session/shell-env-modifier/terminal-shell-env-modify.injectable.d.ts +7 -0
- package/dist/src/renderer/api/websocket-api.d.ts +1 -1
- package/dist/src/renderer/components/+catalog/custom-category-columns.d.ts +1 -1
- package/dist/src/renderer/components/+cluster/sidebar-item.d.ts +6 -0
- package/dist/src/renderer/components/+config/route-tabs.injectable.d.ts +4 -0
- package/dist/src/renderer/components/+config/route.d.ts +10 -0
- package/dist/src/renderer/components/+config/sidebar-item.d.ts +6 -0
- package/dist/src/renderer/components/+config-secrets/secret-details.d.ts +1 -1
- package/dist/src/renderer/components/+custom-resources/grouped-custom-resources.injectable.d.ts +5 -0
- package/dist/src/renderer/components/+custom-resources/route-tabs.injectable.d.ts +11 -0
- package/dist/src/renderer/components/{+config/index.d.ts → +custom-resources/route.d.ts} +1 -1
- package/dist/src/renderer/components/+custom-resources/sidebar-item.d.ts +10 -0
- package/dist/src/renderer/components/+events/index.d.ts +0 -1
- package/dist/src/renderer/components/+events/sidebar-item.d.ts +6 -0
- package/dist/src/renderer/components/+helm/route-tabs.injectable.d.ts +4 -0
- package/dist/src/renderer/components/+helm/route.d.ts +10 -0
- package/dist/src/renderer/components/+helm/sidebar-item.d.ts +10 -0
- package/dist/src/renderer/components/{+apps-helm-charts → +helm-charts}/helm-chart-details.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-helm-charts → +helm-charts}/helm-chart.store.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-helm-charts → +helm-charts}/helm-charts.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-helm-charts → +helm-charts}/index.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/create-release/create-release.injectable.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/delete-release/delete-release.injectable.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/index.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/release-details/release-details.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/release-details/release-details.injectable.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/release-details/release-route-parameters.injectable.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/release-details/release-values.injectable.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/release-details/release.injectable.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/release-details/user-supplied-values-are-shown.injectable.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/release-menu.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/release-rollback-dialog-model/release-rollback-dialog-model.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/release-rollback-dialog-model/release-rollback-dialog-model.injectable.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/release-rollback-dialog.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/releases.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/releases.injectable.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/removable-releases.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/removable-releases.injectable.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/rollback-release/rollback-release.injectable.d.ts +0 -0
- package/dist/src/renderer/components/{+apps-releases → +helm-releases}/update-release/update-release.injectable.d.ts +0 -0
- package/dist/src/renderer/components/+namespaces/index.d.ts +0 -1
- package/dist/src/renderer/components/+namespaces/route.d.ts +20 -0
- package/dist/src/renderer/components/+namespaces/sidebar-item.d.ts +6 -0
- package/dist/src/renderer/components/+network/route-tabs.injectable.d.ts +4 -0
- package/dist/src/renderer/components/+network/{network.d.ts → route.d.ts} +4 -4
- package/dist/src/renderer/components/+network/sidebar-item.d.ts +10 -0
- package/dist/src/renderer/components/+nodes/{node-details-resources.d.ts → details-resources.d.ts} +1 -1
- package/dist/src/renderer/components/+nodes/{node-details.d.ts → details.d.ts} +1 -1
- package/dist/src/renderer/components/+nodes/{nodes.d.ts → route.d.ts} +1 -1
- package/dist/src/renderer/components/+nodes/sidebar-item.d.ts +6 -0
- package/dist/src/renderer/components/+preferences/add-helm-repo-dialog.d.ts +0 -1
- package/dist/src/renderer/components/+preferences/helm-charts.d.ts +4 -2
- package/dist/src/renderer/components/+preferences/kubeconfig-syncs.d.ts +1 -1
- package/dist/src/renderer/components/+storage/route-tabs.injectable.d.ts +4 -0
- package/dist/src/renderer/components/+storage/{storage.d.ts → route.d.ts} +4 -4
- package/dist/src/renderer/components/+storage/sidebar-item.d.ts +6 -0
- package/dist/src/renderer/components/+user-management/route-tabs.injectable.d.ts +4 -0
- package/dist/src/renderer/components/{cluster-manager/bottom-bar.d.ts → +user-management/route.d.ts} +2 -1
- package/dist/src/renderer/components/+user-management/sidebar-item.d.ts +6 -0
- package/dist/src/renderer/components/+workloads/route-tabs.injectable.d.ts +4 -0
- package/dist/src/renderer/components/+workloads/{workloads.d.ts → route.d.ts} +4 -4
- package/dist/src/renderer/components/+workloads/sidebar-item.d.ts +10 -0
- package/dist/src/renderer/components/+workloads-overview/overview-statuses.d.ts +3 -1
- package/dist/src/renderer/components/+workloads-overview/workloads.d.ts +18 -0
- package/dist/src/renderer/components/+workloads-overview/workloads.injectable.d.ts +16 -0
- package/dist/src/renderer/components/dock/upgrade-chart/view.d.ts +1 -1
- package/dist/src/renderer/components/item-object-list/content.d.ts +1 -1
- package/dist/src/renderer/components/item-object-list/list-layout.d.ts +2 -4
- package/dist/src/renderer/components/kube-object-list-layout/kube-object-list-layout.d.ts +5 -1
- package/dist/src/renderer/components/layout/sidebar.d.ts +10 -4
- package/dist/src/renderer/components/layout/tab-routes-sidebar-items.d.ts +13 -0
- package/dist/src/renderer/components/status-bar/registered-status-bar-items.injectable.d.ts +14 -0
- package/dist/src/renderer/components/status-bar/status-bar-items.injectable.d.ts +3 -0
- package/dist/src/renderer/components/status-bar/status-bar-registration.d.ts +38 -0
- package/dist/src/renderer/components/status-bar/status-bar.d.ts +10 -0
- package/dist/src/renderer/components/{cluster-manager/bottom-bar.test.d.ts → status-bar/status-bar.test.d.ts} +0 -0
- package/dist/src/renderer/components/switch/switcher.d.ts +1 -1
- package/dist/src/renderer/create-cluster/create-cluster.injectable.d.ts +1 -2
- package/dist/src/renderer/initializers/workload-events.d.ts +10 -0
- package/dist/src/renderer/kube-watch-api/kube-watch-api.d.ts +2 -1
- package/dist/src/renderer/kube-watch-api/subscribe-stores.injectable.d.ts +1 -1
- package/dist/src/renderer/port-forward/port-forward-store/port-forward-store.d.ts +1 -1
- package/package.json +1 -1
- package/dist/src/common/utils/allowed-resource.d.ts +0 -6
- package/dist/src/common/utils/extended-map.d.ts +0 -30
- package/dist/src/common/utils/openExternal.d.ts +0 -5
- package/dist/src/renderer/components/+apps/apps.d.ts +0 -10
- package/dist/src/renderer/components/+apps/index.d.ts +0 -5
- package/dist/src/renderer/components/+config/config.d.ts +0 -10
- package/dist/src/renderer/components/+custom-resources/custom-resources.d.ts +0 -10
- package/dist/src/renderer/components/+namespaces/namespaces.d.ts +0 -14
- package/dist/src/renderer/components/+network/index.d.ts +0 -5
- package/dist/src/renderer/components/+nodes/index.d.ts +0 -6
- package/dist/src/renderer/components/+storage/index.d.ts +0 -5
- package/dist/src/renderer/components/+user-management/index.d.ts +0 -5
- package/dist/src/renderer/components/+user-management/user-management.d.ts +0 -11
- package/dist/src/renderer/components/+workloads/index.d.ts +0 -6
- package/dist/src/renderer/components/+workloads/workloads.stores.d.ts +0 -8
- package/dist/src/renderer/components/cluster-manager/bottom-bar-items.injectable.d.ts +0 -4
- package/dist/src/renderer/components/cluster-manager/status-bar-registration.d.ts +0 -24
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/// <reference types="@ogre-tools/injectable" />
|
|
2
|
+
import type { TabLayoutRoute } from "../layout/tab-layout";
|
|
3
|
+
declare const userManagementRouteTabsInjectable: import("@ogre-tools/injectable").Injectable<import("@ogre-tools/injectable").InjectionToken<import("mobx").IComputedValue<TabLayoutRoute[]>, unknown>, import("mobx").IComputedValue<TabLayoutRoute[]>, unknown>;
|
|
4
|
+
export default userManagementRouteTabsInjectable;
|
package/dist/src/renderer/components/{cluster-manager/bottom-bar.d.ts → +user-management/route.d.ts}
RENAMED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
3
3
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
4
4
|
*/
|
|
5
|
+
import "./user-management.scss";
|
|
5
6
|
import React from "react";
|
|
6
|
-
export declare const
|
|
7
|
+
export declare const UserManagementRoute: React.ForwardRefExoticComponent<React.RefAttributes<any> & {
|
|
7
8
|
children?: React.ReactNode;
|
|
8
9
|
}>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/// <reference types="@ogre-tools/injectable" />
|
|
2
|
+
import type { TabLayoutRoute } from "../layout/tab-layout";
|
|
3
|
+
declare const workloadsRouteTabsInjectable: import("@ogre-tools/injectable").Injectable<import("@ogre-tools/injectable").InjectionToken<import("mobx").IComputedValue<TabLayoutRoute[]>, unknown>, import("mobx").IComputedValue<TabLayoutRoute[]>, unknown>;
|
|
4
|
+
export default workloadsRouteTabsInjectable;
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import "./workloads.scss";
|
|
6
6
|
import React from "react";
|
|
7
|
-
|
|
8
|
-
export declare class Workloads extends React.Component {
|
|
9
|
-
static get tabRoutes(): TabLayoutRoute[];
|
|
10
|
-
render(): JSX.Element;
|
|
7
|
+
export interface WorkloadsRouteProps {
|
|
11
8
|
}
|
|
9
|
+
export declare const WorkloadsRoute: React.ForwardRefExoticComponent<WorkloadsRouteProps & React.RefAttributes<any> & {
|
|
10
|
+
children?: React.ReactNode;
|
|
11
|
+
}>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
3
|
+
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
4
|
+
*/
|
|
5
|
+
import React from "react";
|
|
6
|
+
export interface WorkloadSidebarItemProps {
|
|
7
|
+
}
|
|
8
|
+
export declare const WorkloadsSidebarItem: React.ForwardRefExoticComponent<WorkloadSidebarItemProps & React.RefAttributes<any> & {
|
|
9
|
+
children?: React.ReactNode;
|
|
10
|
+
}>;
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import "./overview-statuses.scss";
|
|
6
6
|
import React from "react";
|
|
7
|
-
export
|
|
7
|
+
export interface OverviewStatusesProps {
|
|
8
|
+
}
|
|
9
|
+
export declare const OverviewStatuses: React.ForwardRefExoticComponent<OverviewStatusesProps & React.RefAttributes<any> & {
|
|
8
10
|
children?: React.ReactNode;
|
|
9
11
|
}>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { KubeResource } from "../../../common/rbac";
|
|
2
|
+
import type { KubeObjectStore } from "../../../common/k8s-api/kube-object.store";
|
|
3
|
+
import type { KubeObject } from "../../../common/k8s-api/kube-object";
|
|
4
|
+
import type { NamespaceStore } from "../+namespaces/namespace-store/namespace.store";
|
|
5
|
+
import type { IsAllowedResource } from "../../../common/utils/is-allowed-resource.injectable";
|
|
6
|
+
interface Dependencies {
|
|
7
|
+
workloadStores: Map<KubeResource, KubeObjectStore<KubeObject>>;
|
|
8
|
+
isAllowedResource: IsAllowedResource;
|
|
9
|
+
namespaceStore: NamespaceStore;
|
|
10
|
+
}
|
|
11
|
+
export declare const workloads: ({ workloadStores, isAllowedResource, namespaceStore, }: Dependencies) => import("mobx").IComputedValue<{
|
|
12
|
+
resource: KubeResource;
|
|
13
|
+
href: string;
|
|
14
|
+
amountOfItems: number;
|
|
15
|
+
status: Record<string, number>;
|
|
16
|
+
title: string;
|
|
17
|
+
}[]>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/// <reference types="@ogre-tools/injectable" />
|
|
2
|
+
import type { KubeResource } from "../../../common/rbac";
|
|
3
|
+
declare const workloadsInjectable: import("@ogre-tools/injectable").Injectable<import("@ogre-tools/injectable").InjectionToken<import("mobx").IComputedValue<{
|
|
4
|
+
resource: KubeResource;
|
|
5
|
+
href: string;
|
|
6
|
+
amountOfItems: number;
|
|
7
|
+
status: Record<string, number>;
|
|
8
|
+
title: string;
|
|
9
|
+
}[]>, unknown>, import("mobx").IComputedValue<{
|
|
10
|
+
resource: KubeResource;
|
|
11
|
+
href: string;
|
|
12
|
+
amountOfItems: number;
|
|
13
|
+
status: Record<string, number>;
|
|
14
|
+
title: string;
|
|
15
|
+
}[]>, unknown>;
|
|
16
|
+
export default workloadsInjectable;
|
|
@@ -6,7 +6,7 @@ import "./upgrade-chart.scss";
|
|
|
6
6
|
import React from "react";
|
|
7
7
|
import type { DockTab } from "../dock/store";
|
|
8
8
|
import type { UpgradeChartTabStore } from "./store";
|
|
9
|
-
import { IChartVersion } from "../../+
|
|
9
|
+
import { IChartVersion } from "../../+helm-charts/helm-chart.store";
|
|
10
10
|
import type { HelmRelease, IReleaseUpdateDetails, IReleaseUpdatePayload } from "../../../../common/k8s-api/endpoints/helm-releases.api";
|
|
11
11
|
import { SelectOption } from "../../select";
|
|
12
12
|
import { IAsyncComputed } from "@ogre-tools/injectable-react";
|
|
@@ -43,7 +43,7 @@ export declare class ItemListLayoutContent<I extends ItemObject> extends React.C
|
|
|
43
43
|
constructor(props: ItemListLayoutContentProps<I>);
|
|
44
44
|
get failedToLoad(): boolean;
|
|
45
45
|
getRow(uid: string): JSX.Element;
|
|
46
|
-
removeItemsDialog(): void;
|
|
46
|
+
removeItemsDialog(selectedItems: I[]): void;
|
|
47
47
|
renderNoItems(): JSX.Element;
|
|
48
48
|
renderItems(): JSX.Element[];
|
|
49
49
|
renderTableHeader(): JSX.Element;
|
|
@@ -10,7 +10,6 @@ import { IClassName, StorageHelper } from "../../utils";
|
|
|
10
10
|
import type { AddRemoveButtonsProps } from "../add-remove-buttons";
|
|
11
11
|
import type { ItemObject, ItemStore } from "../../../common/item.store";
|
|
12
12
|
import type { SearchInputUrlProps } from "../input";
|
|
13
|
-
import { Filter } from "./page-filters.store";
|
|
14
13
|
import type { NamespaceStore } from "../+namespaces/namespace-store/namespace.store";
|
|
15
14
|
export declare type SearchFilter<I extends ItemObject> = (item: I) => string | number | (string | number)[];
|
|
16
15
|
export declare type SearchFilters<I extends ItemObject> = Record<string, SearchFilter<I>>;
|
|
@@ -26,8 +25,7 @@ export declare type HeaderCustomizer = (placeholders: HeaderPlaceholders) => Hea
|
|
|
26
25
|
export interface ItemListLayoutProps<I extends ItemObject> {
|
|
27
26
|
tableId?: string;
|
|
28
27
|
className: IClassName;
|
|
29
|
-
|
|
30
|
-
getItems?: () => I[];
|
|
28
|
+
getItems: () => I[];
|
|
31
29
|
store: ItemStore<I>;
|
|
32
30
|
dependentStores?: ItemStore<ItemObject>[];
|
|
33
31
|
preloadStores?: boolean;
|
|
@@ -77,7 +75,7 @@ declare class NonInjectedItemListLayout<I extends ItemObject> extends React.Comp
|
|
|
77
75
|
private loadStores;
|
|
78
76
|
get showFilters(): boolean;
|
|
79
77
|
set showFilters(showFilters: boolean);
|
|
80
|
-
get filters(): Filter[];
|
|
78
|
+
get filters(): import("./page-filters.store").Filter[];
|
|
81
79
|
toggleFilters(): void;
|
|
82
80
|
get isReady(): boolean;
|
|
83
81
|
renderFilters(): JSX.Element;
|
|
@@ -6,9 +6,13 @@ import "./kube-object-list-layout.scss";
|
|
|
6
6
|
import type { KubeObject } from "../../../common/k8s-api/kube-object";
|
|
7
7
|
import { ItemListLayoutProps } from "../item-object-list/list-layout";
|
|
8
8
|
import type { KubeObjectStore } from "../../../common/k8s-api/kube-object.store";
|
|
9
|
-
|
|
9
|
+
declare type ItemListLayoutPropsWithoutGetItems<K extends KubeObject> = Omit<ItemListLayoutProps<K>, "getItems">;
|
|
10
|
+
export interface KubeObjectListLayoutProps<K extends KubeObject> extends ItemListLayoutPropsWithoutGetItems<K> {
|
|
11
|
+
items?: K[];
|
|
12
|
+
getItems?: () => K[];
|
|
10
13
|
store: KubeObjectStore<K>;
|
|
11
14
|
dependentStores?: KubeObjectStore<KubeObject>[];
|
|
12
15
|
subscribeStores?: boolean;
|
|
13
16
|
}
|
|
14
17
|
export declare function KubeObjectListLayout<K extends KubeObject>(props: KubeObjectListLayoutProps<K>): JSX.Element;
|
|
18
|
+
export {};
|
|
@@ -2,11 +2,17 @@
|
|
|
2
2
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
3
3
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
4
4
|
*/
|
|
5
|
+
import type { TabLayoutRoute } from "./tab-layout";
|
|
5
6
|
import React from "react";
|
|
6
|
-
|
|
7
|
+
import { ClusterPageMenuRegistration } from "../../../extensions/registries";
|
|
8
|
+
interface SidebarProps {
|
|
7
9
|
className?: string;
|
|
8
10
|
}
|
|
9
|
-
export declare
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
export declare class Sidebar extends React.Component<SidebarProps> {
|
|
12
|
+
static displayName: string;
|
|
13
|
+
getTabLayoutRoutes(menu: ClusterPageMenuRegistration): TabLayoutRoute[];
|
|
14
|
+
renderRegisteredMenus(): JSX.Element[];
|
|
15
|
+
get clusterEntity(): import("../../api/catalog-entity").CatalogEntity<import("../../../common/catalog").CatalogEntityMetadata, import("../../../common/catalog").CatalogEntityStatus, import("../../../common/catalog").CatalogEntitySpec>;
|
|
16
|
+
render(): JSX.Element;
|
|
17
|
+
}
|
|
12
18
|
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
3
|
+
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
4
|
+
*/
|
|
5
|
+
import type { TabLayoutRoute } from "./tab-layout";
|
|
6
|
+
/**
|
|
7
|
+
* Renders a sidebar item for each route
|
|
8
|
+
*
|
|
9
|
+
* NOTE: this cannot be a component because then the `<SidebarItem>.isExandable`
|
|
10
|
+
* check will always return true because a component that renders to `null` is
|
|
11
|
+
* still a present child to the parent `<SidebarItem>`
|
|
12
|
+
*/
|
|
13
|
+
export declare const renderTabRoutesSidebarItems: (routes: TabLayoutRoute[]) => JSX.Element[];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference types="@ogre-tools/injectable" />
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
4
|
+
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
5
|
+
*/
|
|
6
|
+
import React from "react";
|
|
7
|
+
import { IComputedValue } from "mobx";
|
|
8
|
+
import type { StatusBarItemProps } from "./status-bar-registration";
|
|
9
|
+
export interface RegisteredStatusBarItems {
|
|
10
|
+
right: React.ComponentType<StatusBarItemProps>[];
|
|
11
|
+
left: React.ComponentType<StatusBarItemProps>[];
|
|
12
|
+
}
|
|
13
|
+
declare const registeredStatusBarItemsInjectable: import("@ogre-tools/injectable").Injectable<import("@ogre-tools/injectable").InjectionToken<IComputedValue<RegisteredStatusBarItems>, unknown>, IComputedValue<RegisteredStatusBarItems>, unknown>;
|
|
14
|
+
export default registeredStatusBarItemsInjectable;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/// <reference types="@ogre-tools/injectable" />
|
|
2
|
+
declare const statusBarItemsInjectable: import("@ogre-tools/injectable").Injectable<import("@ogre-tools/injectable").InjectionToken<import("mobx").IComputedValue<import("./status-bar-registration").StatusBarRegistration[]>, unknown>, import("mobx").IComputedValue<import("./status-bar-registration").StatusBarRegistration[]>, unknown>;
|
|
3
|
+
export default statusBarItemsInjectable;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
3
|
+
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
4
|
+
*/
|
|
5
|
+
/// <reference types="react" />
|
|
6
|
+
/**
|
|
7
|
+
* The props for StatusBar item component
|
|
8
|
+
*/
|
|
9
|
+
export interface StatusBarItemProps {
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The type defining the registration of a status bar item
|
|
13
|
+
*/
|
|
14
|
+
export interface StatusBarComponents {
|
|
15
|
+
/**
|
|
16
|
+
* The component for this registrations
|
|
17
|
+
*/
|
|
18
|
+
Item: React.ComponentType<StatusBarItemProps>;
|
|
19
|
+
/**
|
|
20
|
+
* The side of the bottom bar to place this component.
|
|
21
|
+
*
|
|
22
|
+
* @default "right"
|
|
23
|
+
*/
|
|
24
|
+
position?: "left" | "right";
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The type for registering status bar items from the LensRendererExtension
|
|
28
|
+
*/
|
|
29
|
+
export interface StatusBarRegistration {
|
|
30
|
+
/**
|
|
31
|
+
* @deprecated use {@link StatusBarRegistration.components} instead
|
|
32
|
+
*/
|
|
33
|
+
item?: React.ReactNode | (() => React.ReactNode);
|
|
34
|
+
/**
|
|
35
|
+
* The newer API, allows for registering a component instead of a ReactNode
|
|
36
|
+
*/
|
|
37
|
+
components?: StatusBarComponents;
|
|
38
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
3
|
+
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
4
|
+
*/
|
|
5
|
+
import React from "react";
|
|
6
|
+
export interface StatusBarProps {
|
|
7
|
+
}
|
|
8
|
+
export declare const StatusBar: React.ForwardRefExoticComponent<StatusBarProps & React.RefAttributes<any> & {
|
|
9
|
+
children?: React.ReactNode;
|
|
10
|
+
}>;
|
|
File without changes
|
|
@@ -13,5 +13,5 @@ interface Props extends SwitchProps {
|
|
|
13
13
|
/**
|
|
14
14
|
* @deprecated Use <Switch/> instead from "../switch.tsx".
|
|
15
15
|
*/
|
|
16
|
-
export declare const Switcher: React.ComponentType<Pick<Props, "name" | "id" | "title" | "value" | "size" | "key" | "type" | "resource" | "
|
|
16
|
+
export declare const Switcher: React.ComponentType<Pick<Props, "name" | "id" | "title" | "value" | "size" | "key" | "type" | "resource" | "color" | "className" | "prefix" | "defaultValue" | "form" | "slot" | "style" | "hidden" | "ref" | "action" | "autoFocus" | "checked" | "disabled" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "placeholder" | "readOnly" | "required" | "defaultChecked" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "lang" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "property" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "icon" | "inputProps" | "innerRef" | "checkedIcon" | "disableFocusRipple" | "edge" | "buttonRef" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "onFocusVisible" | "TouchRippleProps" | "inputRef"> & import("@material-ui/core/styles").StyledComponentProps<"track" | "checked" | "root" | "thumb" | "focusVisible" | "switchBase">>;
|
|
17
17
|
export {};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/// <reference types="@ogre-tools/injectable" />
|
|
2
|
-
import type { ClusterModel } from "../../common/cluster-types";
|
|
3
2
|
import { Cluster } from "../../common/cluster/cluster";
|
|
4
|
-
declare const createClusterInjectable: import("@ogre-tools/injectable").Injectable<import("@ogre-tools/injectable").InjectionToken<(model: ClusterModel) => Cluster, void>, (model: ClusterModel) => Cluster, void>;
|
|
3
|
+
declare const createClusterInjectable: import("@ogre-tools/injectable").Injectable<import("@ogre-tools/injectable").InjectionToken<(model: import("../../common/cluster-types").ClusterModel) => Cluster, void>, (model: import("../../common/cluster-types").ClusterModel) => Cluster, void>;
|
|
5
4
|
export default createClusterInjectable;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
3
|
+
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
4
|
+
*/
|
|
5
|
+
import React from "react";
|
|
6
|
+
export interface WorkloadEventsProps {
|
|
7
|
+
}
|
|
8
|
+
export declare const WorkloadEvents: React.ForwardRefExoticComponent<WorkloadEventsProps & React.RefAttributes<any> & {
|
|
9
|
+
children?: React.ReactNode;
|
|
10
|
+
}>;
|
|
@@ -17,12 +17,13 @@ export interface KubeWatchSubscribeStoreOptions {
|
|
|
17
17
|
interface Dependencies {
|
|
18
18
|
clusterFrameContext: ClusterFrameContext;
|
|
19
19
|
}
|
|
20
|
+
export declare type SubscribeStores = (stores: KubeObjectStore<KubeObject>[], opts?: KubeWatchSubscribeStoreOptions) => Disposer;
|
|
20
21
|
export declare class KubeWatchApi {
|
|
21
22
|
#private;
|
|
22
23
|
private dependencies;
|
|
23
24
|
constructor(dependencies: Dependencies);
|
|
24
25
|
private subscribeStore;
|
|
25
|
-
subscribeStores:
|
|
26
|
+
subscribeStores: SubscribeStores;
|
|
26
27
|
protected log(message: any, meta: any): void;
|
|
27
28
|
}
|
|
28
29
|
export {};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/// <reference types="@ogre-tools/injectable" />
|
|
2
|
-
declare const subscribeStoresInjectable: import("@ogre-tools/injectable").Injectable<import("@ogre-tools/injectable").InjectionToken<
|
|
2
|
+
declare const subscribeStoresInjectable: import("@ogre-tools/injectable").Injectable<import("@ogre-tools/injectable").InjectionToken<import("./kube-watch-api").SubscribeStores, unknown>, import("./kube-watch-api").SubscribeStores, unknown>;
|
|
3
3
|
export default subscribeStoresInjectable;
|
|
@@ -15,7 +15,7 @@ export declare class PortForwardStore extends ItemStore<PortForwardItem> {
|
|
|
15
15
|
private init;
|
|
16
16
|
watch(): import("../../utils").ExtendableDisposer;
|
|
17
17
|
loadAll(): Promise<any>;
|
|
18
|
-
|
|
18
|
+
removeItems(items: PortForwardItem[]): Promise<void>;
|
|
19
19
|
getById(id: string): PortForwardItem;
|
|
20
20
|
/**
|
|
21
21
|
* add a port-forward to the store and optionally start it
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@k8slens/extensions",
|
|
3
3
|
"productName": "OpenLens extensions",
|
|
4
4
|
"description": "OpenLens - Open Source Kubernetes IDE: extensions",
|
|
5
|
-
"version": "5.4.0-git.
|
|
5
|
+
"version": "5.4.0-git.7c9ec87b3c.0",
|
|
6
6
|
"copyright": "© 2021 OpenLens Authors",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"main": "dist/src/extensions/extension-api.js",
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
3
|
-
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
4
|
-
*/
|
|
5
|
-
import type { KubeResource } from "../rbac";
|
|
6
|
-
export declare function isAllowedResource(resource: KubeResource | KubeResource[]): boolean;
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
3
|
-
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
4
|
-
*/
|
|
5
|
-
import { ObservableMap } from "mobx";
|
|
6
|
-
export declare function multiSet<T, V>(map: Map<T, V>, newEntries: [T, V][]): void;
|
|
7
|
-
export declare class ExtendedMap<K, V> extends Map<K, V> {
|
|
8
|
-
static new<K, V>(entries?: readonly (readonly [K, V])[] | null): ExtendedMap<K, V>;
|
|
9
|
-
/**
|
|
10
|
-
* Get the value behind `key`. If it was not present, first insert the value returned by `getVal`
|
|
11
|
-
* @param key The key to insert into the map with
|
|
12
|
-
* @param getVal A function that returns a new instance of `V`.
|
|
13
|
-
* @returns The value in the map
|
|
14
|
-
*/
|
|
15
|
-
getOrInsert(key: K, getVal: () => V): V;
|
|
16
|
-
/**
|
|
17
|
-
* Set the value associated with `key` iff there was not a previous value
|
|
18
|
-
* @throws if `key` already in map
|
|
19
|
-
* @returns `this` so that `strictSet` can be chained
|
|
20
|
-
*/
|
|
21
|
-
strictSet(key: K, val: V): this;
|
|
22
|
-
/**
|
|
23
|
-
* Get the value associated with `key`
|
|
24
|
-
* @throws if `key` did not a value associated with it
|
|
25
|
-
*/
|
|
26
|
-
strictGet(key: K): V;
|
|
27
|
-
}
|
|
28
|
-
export declare class ExtendedObservableMap<K, V> extends ObservableMap<K, V> {
|
|
29
|
-
getOrInsert(key: K, getVal: () => V): V;
|
|
30
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
3
|
-
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
4
|
-
*/
|
|
5
|
-
import React from "react";
|
|
6
|
-
import { TabLayoutRoute } from "../layout/tab-layout";
|
|
7
|
-
export declare class Apps extends React.Component {
|
|
8
|
-
static get tabRoutes(): TabLayoutRoute[];
|
|
9
|
-
render(): JSX.Element;
|
|
10
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
3
|
-
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
4
|
-
*/
|
|
5
|
-
import React from "react";
|
|
6
|
-
import { TabLayoutRoute } from "../layout/tab-layout";
|
|
7
|
-
export declare class Config extends React.Component {
|
|
8
|
-
static get tabRoutes(): TabLayoutRoute[];
|
|
9
|
-
render(): JSX.Element;
|
|
10
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
3
|
-
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
4
|
-
*/
|
|
5
|
-
import React from "react";
|
|
6
|
-
import { TabLayoutRoute } from "../layout/tab-layout";
|
|
7
|
-
export declare class CustomResources extends React.Component {
|
|
8
|
-
static get tabRoutes(): TabLayoutRoute[];
|
|
9
|
-
render(): JSX.Element;
|
|
10
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
3
|
-
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
4
|
-
*/
|
|
5
|
-
import "./namespaces.scss";
|
|
6
|
-
import React from "react";
|
|
7
|
-
import type { RouteComponentProps } from "react-router";
|
|
8
|
-
import type { NamespacesRouteParams } from "../../../common/routes";
|
|
9
|
-
interface Props extends RouteComponentProps<NamespacesRouteParams> {
|
|
10
|
-
}
|
|
11
|
-
export declare const Namespaces: React.ForwardRefExoticComponent<Props & React.RefAttributes<any> & {
|
|
12
|
-
children?: React.ReactNode;
|
|
13
|
-
}>;
|
|
14
|
-
export {};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
3
|
-
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
4
|
-
*/
|
|
5
|
-
import "./user-management.scss";
|
|
6
|
-
import React from "react";
|
|
7
|
-
import { TabLayoutRoute } from "../layout/tab-layout";
|
|
8
|
-
export declare class UserManagement extends React.Component {
|
|
9
|
-
static get tabRoutes(): TabLayoutRoute[];
|
|
10
|
-
render(): JSX.Element;
|
|
11
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
3
|
-
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
4
|
-
*/
|
|
5
|
-
import type { KubeObjectStore } from "../../../common/k8s-api/kube-object.store";
|
|
6
|
-
import type { KubeResource } from "../../../common/rbac";
|
|
7
|
-
import type { KubeObject } from "../../../common/k8s-api/kube-object";
|
|
8
|
-
export declare const workloadStores: Map<KubeResource, KubeObjectStore<KubeObject<import("../../../common/k8s-api/kube-object").KubeObjectMetadata, any, any>>>;
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/// <reference types="@ogre-tools/injectable" />
|
|
2
|
-
import type { StatusBarRegistration } from "./status-bar-registration";
|
|
3
|
-
declare const bottomBarItemsInjectable: import("@ogre-tools/injectable").Injectable<import("@ogre-tools/injectable").InjectionToken<import("mobx").IComputedValue<StatusBarRegistration[]>, unknown>, import("mobx").IComputedValue<StatusBarRegistration[]>, unknown>;
|
|
4
|
-
export default bottomBarItemsInjectable;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
/**
|
|
3
|
-
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
4
|
-
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
5
|
-
*/
|
|
6
|
-
interface StatusBarComponents {
|
|
7
|
-
Item?: React.ComponentType;
|
|
8
|
-
/**
|
|
9
|
-
* The side of the bottom bar to place this component.
|
|
10
|
-
*
|
|
11
|
-
* @default "right"
|
|
12
|
-
*/
|
|
13
|
-
position?: "left" | "right";
|
|
14
|
-
}
|
|
15
|
-
interface StatusBarRegistrationV2 {
|
|
16
|
-
components?: StatusBarComponents;
|
|
17
|
-
}
|
|
18
|
-
export interface StatusBarRegistration extends StatusBarRegistrationV2 {
|
|
19
|
-
/**
|
|
20
|
-
* @deprecated use components.Item instead
|
|
21
|
-
*/
|
|
22
|
-
item?: React.ReactNode;
|
|
23
|
-
}
|
|
24
|
-
export {};
|