1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Move all RouteParam's and URL builders to src/common (#2778)

- Prevents some circular dependencies

- Allowed main to use them as needed

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2021-06-10 08:52:09 -04:00 committed by GitHub
parent 540c6dac37
commit 5ee2ab5b4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
134 changed files with 462 additions and 515 deletions

View File

@ -40,7 +40,7 @@ describe("Lens command palette", () => {
it("opens command dialog from menu", async () => { it("opens command dialog from menu", async () => {
await app.electron.ipcRenderer.send("test-menu-item-click", "View", "Command Palette..."); await app.electron.ipcRenderer.send("test-menu-item-click", "View", "Command Palette...");
await app.client.waitUntilTextExists(".Select__option", "Preferences: Open"); await app.client.waitUntilTextExists(".Select__option", "Hotbar: Switch");
await app.client.keys("Escape"); await app.client.keys("Escape");
}); });
}); });

View File

@ -26,9 +26,9 @@ import { ClusterStore } from "../cluster-store";
import { requestMain } from "../ipc"; import { requestMain } from "../ipc";
import { productName } from "../vars"; import { productName } from "../vars";
import { CatalogCategory, CatalogCategorySpec } from "../catalog"; import { CatalogCategory, CatalogCategorySpec } from "../catalog";
import { addClusterURL } from "../routes";
import { app } from "electron"; import { app } from "electron";
export type KubernetesClusterPrometheusMetrics = { export type KubernetesClusterPrometheusMetrics = {
address?: { address?: {
namespace: string; namespace: string;
@ -172,7 +172,7 @@ export class KubernetesClusterCategory extends CatalogCategory {
icon: "text_snippet", icon: "text_snippet",
title: "Add from kubeconfig", title: "Add from kubeconfig",
onClick: () => { onClick: () => {
ctx.navigate("/add-cluster"); ctx.navigate(addClusterURL());
} }
}); });
}); });

View File

@ -20,7 +20,7 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const addClusterRoute: RouteProps = { export const addClusterRoute: RouteProps = {
path: "/add-cluster" path: "/add-cluster"

View File

@ -20,7 +20,7 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const appsRoute: RouteProps = { export const appsRoute: RouteProps = {
path: "/apps", path: "/apps",

View File

@ -20,9 +20,9 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export interface ICatalogViewRouteParam { export interface CatalogViewRouteParam {
group?: string; group?: string;
kind?: string; kind?: string;
} }
@ -30,4 +30,4 @@ export const catalogRoute: RouteProps = {
path: "/catalog/:group?/:kind?" path: "/catalog/:group?/:kind?"
}; };
export const catalogURL = buildURL<ICatalogViewRouteParam>(catalogRoute.path); export const catalogURL = buildURL<CatalogViewRouteParam>(catalogRoute.path);

View File

@ -20,9 +20,9 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export interface IClusterViewRouteParams { export interface ClusterViewRouteParams {
clusterId: string; clusterId: string;
} }
@ -31,4 +31,4 @@ export const clusterViewRoute: RouteProps = {
path: "/cluster/:clusterId", path: "/cluster/:clusterId",
}; };
export const clusterViewURL = buildURL<IClusterViewRouteParams>(clusterViewRoute.path); export const clusterViewURL = buildURL<ClusterViewRouteParams>(clusterViewRoute.path);

View File

@ -20,7 +20,7 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const clusterRoute: RouteProps = { export const clusterRoute: RouteProps = {
path: "/cluster" path: "/cluster"

View File

@ -20,13 +20,13 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const configMapsRoute: RouteProps = { export const configMapsRoute: RouteProps = {
path: "/configmaps" path: "/configmaps"
}; };
export interface IConfigMapsRouteParams { export interface ConfigMapsRouteParams {
} }
export const configMapsURL = buildURL<IConfigMapsRouteParams>(configMapsRoute.path); export const configMapsURL = buildURL<ConfigMapsRouteParams>(configMapsRoute.path);

View File

@ -20,13 +20,13 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import type { IURLParams } from "../../../common/utils/buildUrl"; import type { URLParams } from "../utils/buildUrl";
import { configMapsRoute, configMapsURL } from "../+config-maps/config-maps.route"; import { configMapsRoute, configMapsURL } from "./config-maps";
import { hpaRoute } from "../+config-autoscalers"; import { hpaRoute } from "./hpa";
import { limitRangesRoute } from "../+config-limit-ranges"; import { limitRangesRoute } from "./limit-ranges";
import { pdbRoute } from "../+config-pod-disruption-budgets"; import { pdbRoute } from "./pod-disruption-budgets";
import { resourceQuotaRoute } from "../+config-resource-quotas"; import { resourceQuotaRoute } from "./resource-quotas";
import { secretsRoute } from "../+config-secrets"; import { secretsRoute } from "./secrets";
export const configRoute: RouteProps = { export const configRoute: RouteProps = {
path: [ path: [
@ -39,4 +39,4 @@ export const configRoute: RouteProps = {
].map(route => route.path.toString()) ].map(route => route.path.toString())
}; };
export const configURL = (params?: IURLParams) => configMapsURL(params); export const configURL = (params?: URLParams) => configMapsURL(params);

View File

@ -20,7 +20,7 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const crdRoute: RouteProps = { export const crdRoute: RouteProps = {
path: "/crd" path: "/crd"
@ -34,14 +34,14 @@ export const crdResourcesRoute: RouteProps = {
path: `${crdRoute.path}/:group/:name` path: `${crdRoute.path}/:group/:name`
}; };
export interface ICRDListQuery { export interface CRDListQuery {
groups?: string; groups?: string;
} }
export interface ICRDRouteParams { export interface CRDRouteParams {
group: string; group: string;
name: string; name: string;
} }
export const crdURL = buildURL<{}, ICRDListQuery>(crdDefinitionsRoute.path); export const crdURL = buildURL<{}, CRDListQuery>(crdDefinitionsRoute.path);
export const crdResourcesURL = buildURL<ICRDRouteParams>(crdResourcesRoute.path); export const crdResourcesURL = buildURL<CRDRouteParams>(crdResourcesRoute.path);

View File

@ -20,7 +20,7 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const endpointRoute: RouteProps = { export const endpointRoute: RouteProps = {
path: "/endpoints" path: "/endpoints"

View File

@ -20,7 +20,7 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export interface EntitySettingsRouteParams { export interface EntitySettingsRouteParams {
entityId: string; entityId: string;

View File

@ -20,7 +20,7 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const eventRoute: RouteProps = { export const eventRoute: RouteProps = {
path: "/events" path: "/events"

View File

@ -20,7 +20,7 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const extensionsRoute: RouteProps = { export const extensionsRoute: RouteProps = {
path: "/extensions" path: "/extensions"

View File

@ -20,16 +20,16 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
import { appsRoute } from "../+apps/apps.route"; import { appsRoute } from "./apps";
export const helmChartsRoute: RouteProps = { export const helmChartsRoute: RouteProps = {
path: `${appsRoute.path}/charts/:repo?/:chartName?` path: `${appsRoute.path}/charts/:repo?/:chartName?`
}; };
export interface IHelmChartsRouteParams { export interface HelmChartsRouteParams {
chartName?: string; chartName?: string;
repo?: string; repo?: string;
} }
export const helmChartsURL = buildURL<IHelmChartsRouteParams>(helmChartsRoute.path); export const helmChartsURL = buildURL<HelmChartsRouteParams>(helmChartsRoute.path);

View File

@ -20,13 +20,13 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const hpaRoute: RouteProps = { export const hpaRoute: RouteProps = {
path: "/hpa" path: "/hpa"
}; };
export interface IHpaRouteParams { export interface HpaRouteParams {
} }
export const hpaURL = buildURL<IHpaRouteParams>(hpaRoute.path); export const hpaURL = buildURL<HpaRouteParams>(hpaRoute.path);

View File

@ -19,5 +19,36 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./cluster.route"; export * from "./add-cluster";
export * from "./apps";
export * from "./catalog";
export * from "./cluster-view";
export * from "./cluster";
export * from "./config-maps";
export * from "./config";
export * from "./crd";
export * from "./endpoints";
export * from "./entity-settings";
export * from "./events";
export * from "./extensions";
export * from "./helm-charts";
export * from "./hpa";
export * from "./ingresses";
export * from "./limit-ranges";
export * from "./namespaces";
export * from "./network-policies";
export * from "./network";
export * from "./nodes";
export * from "./pod-disruption-budgets";
export * from "./preferences";
export * from "./releases";
export * from "./resource-quotas";
export * from "./secrets";
export * from "./services";
export * from "./storage-classes";
export * from "./storage";
export * from "./user-management";
export * from "./volume-claims";
export * from "./volumes";
export * from "./welcome";
export * from "./workloads";

View File

@ -20,7 +20,7 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const ingressRoute: RouteProps = { export const ingressRoute: RouteProps = {
path: "/ingresses" path: "/ingresses"

View File

@ -20,7 +20,7 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const limitRangesRoute: RouteProps = { export const limitRangesRoute: RouteProps = {
path: "/limitranges" path: "/limitranges"

View File

@ -20,13 +20,13 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const namespacesRoute: RouteProps = { export const namespacesRoute: RouteProps = {
path: "/namespaces" path: "/namespaces"
}; };
export interface INamespacesRouteParams { export interface NamespacesRouteParams {
} }
export const namespacesURL = buildURL<INamespacesRouteParams>(namespacesRoute.path); export const namespacesURL = buildURL<NamespacesRouteParams>(namespacesRoute.path);

View File

@ -20,13 +20,13 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const networkPoliciesRoute: RouteProps = { export const networkPoliciesRoute: RouteProps = {
path: "/network-policies" path: "/network-policies"
}; };
export interface INetworkPoliciesRouteParams { export interface NetworkPoliciesRouteParams {
} }
export const networkPoliciesURL = buildURL<INetworkPoliciesRouteParams>(networkPoliciesRoute.path); export const networkPoliciesURL = buildURL<NetworkPoliciesRouteParams>(networkPoliciesRoute.path);

View File

@ -20,19 +20,19 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { endpointRoute } from "../+network-endpoints"; import type { URLParams } from "../utils/buildUrl";
import { ingressRoute } from "../+network-ingresses"; import { endpointRoute } from "./endpoints";
import { networkPoliciesRoute } from "../+network-policies"; import { ingressRoute } from "./ingresses";
import { servicesRoute, servicesURL } from "../+network-services"; import { networkPoliciesRoute } from "./network-policies";
import type { IURLParams } from "../../../common/utils/buildUrl"; import { servicesRoute, servicesURL } from "./services";
export const networkRoute: RouteProps = { export const networkRoute: RouteProps = {
path: [ path: [
servicesRoute, servicesRoute,
endpointRoute, endpointRoute,
ingressRoute, ingressRoute,
networkPoliciesRoute networkPoliciesRoute,
].map(route => route.path.toString()) ].map(route => route.path.toString())
}; };
export const networkURL = (params?: IURLParams) => servicesURL(params); export const networkURL = (params?: URLParams) => servicesURL(params);

View File

@ -20,13 +20,13 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const nodesRoute: RouteProps = { export const nodesRoute: RouteProps = {
path: "/nodes" path: "/nodes"
}; };
export interface INodesRouteParams { export interface NodesRouteParams {
} }
export const nodesURL = buildURL<INodesRouteParams>(nodesRoute.path); export const nodesURL = buildURL<NodesRouteParams>(nodesRoute.path);

View File

@ -20,13 +20,13 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const pdbRoute: RouteProps = { export const pdbRoute: RouteProps = {
path: "/poddisruptionbudgets" path: "/poddisruptionbudgets"
}; };
export interface IPodDisruptionBudgetsRouteParams { export interface PodDisruptionBudgetsRouteParams {
} }
export const pdbURL = buildURL<IPodDisruptionBudgetsRouteParams>(pdbRoute.path); export const pdbURL = buildURL<PodDisruptionBudgetsRouteParams>(pdbRoute.path);

View File

@ -0,0 +1,29 @@
/**
* Copyright (c) 2021 OpenLens Authors
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
import type { RouteProps } from "react-router";
import { buildURL } from "../utils/buildUrl";
export const preferencesRoute: RouteProps = {
path: "/preferences"
};
export const preferencesURL = buildURL(preferencesRoute.path);

View File

@ -20,16 +20,16 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
import { appsRoute } from "../+apps/apps.route"; import { appsRoute } from "./apps";
export const releaseRoute: RouteProps = { export const releaseRoute: RouteProps = {
path: `${appsRoute.path}/releases/:namespace?/:name?` path: `${appsRoute.path}/releases/:namespace?/:name?`
}; };
export interface IReleaseRouteParams { export interface ReleaseRouteParams {
name?: string; name?: string;
namespace?: string; namespace?: string;
} }
export const releaseURL = buildURL<IReleaseRouteParams>(releaseRoute.path); export const releaseURL = buildURL<ReleaseRouteParams>(releaseRoute.path);

View File

@ -20,13 +20,13 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const resourceQuotaRoute: RouteProps = { export const resourceQuotaRoute: RouteProps = {
path: "/resourcequotas" path: "/resourcequotas"
}; };
export interface IResourceQuotaRouteParams { export interface ResourceQuotaRouteParams {
} }
export const resourceQuotaURL = buildURL<IResourceQuotaRouteParams>(resourceQuotaRoute.path); export const resourceQuotaURL = buildURL<ResourceQuotaRouteParams>(resourceQuotaRoute.path);

View File

@ -20,13 +20,13 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const secretsRoute: RouteProps = { export const secretsRoute: RouteProps = {
path: "/secrets" path: "/secrets"
}; };
export interface ISecretsRouteParams { export interface SecretsRouteParams {
} }
export const secretsURL = buildURL(secretsRoute.path); export const secretsURL = buildURL(secretsRoute.path);

View File

@ -20,13 +20,13 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const servicesRoute: RouteProps = { export const servicesRoute: RouteProps = {
path: "/services" path: "/services"
}; };
export interface IServicesRouteParams { export interface ServicesRouteParams {
} }
export const servicesURL = buildURL<IServicesRouteParams>(servicesRoute.path); export const servicesURL = buildURL<ServicesRouteParams>(servicesRoute.path);

View File

@ -20,14 +20,13 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const storageClassesRoute: RouteProps = { export const storageClassesRoute: RouteProps = {
path: "/storage-classes" path: "/storage-classes"
}; };
export interface IStorageClassesRouteParams { export interface StorageClassesRouteParams {
} }
export const storageClassesURL = buildURL<IStorageClassesRouteParams>(storageClassesRoute.path); export const storageClassesURL = buildURL<StorageClassesRouteParams>(storageClassesRoute.path);

View File

@ -20,10 +20,10 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { storageClassesRoute } from "../+storage-classes"; import type { URLParams } from "../utils/buildUrl";
import { volumeClaimsRoute, volumeClaimsURL } from "../+storage-volume-claims"; import { storageClassesRoute } from "./storage-classes";
import { volumesRoute } from "../+storage-volumes"; import { volumeClaimsRoute, volumeClaimsURL } from "./volume-claims";
import type { IURLParams } from "../../../common/utils/buildUrl"; import { volumesRoute } from "./volumes";
export const storageRoute: RouteProps = { export const storageRoute: RouteProps = {
path: [ path: [
@ -33,4 +33,4 @@ export const storageRoute: RouteProps = {
].map(route => route.path.toString()) ].map(route => route.path.toString())
}; };
export const storageURL = (params?: IURLParams) => volumeClaimsURL(params); export const storageURL = (params?: URLParams) => volumeClaimsURL(params);

View File

@ -19,9 +19,8 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import { buildURL, IURLParams } from "../../../common/utils/buildUrl";
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL, URLParams } from "../utils/buildUrl";
// Routes // Routes
export const serviceAccountsRoute: RouteProps = { export const serviceAccountsRoute: RouteProps = {
@ -71,10 +70,10 @@ export interface ClusterRolesRouteParams {
} }
// URL-builders // URL-builders
export const usersManagementURL = (params?: IURLParams) => serviceAccountsURL(params); export const usersManagementURL = (params?: URLParams) => serviceAccountsURL(params);
export const serviceAccountsURL = buildURL<ServiceAccountsRouteParams>(serviceAccountsRoute.path); export const serviceAccountsURL = buildURL<ServiceAccountsRouteParams>(serviceAccountsRoute.path);
export const podSecurityPoliciesURL = buildURL(podSecurityPoliciesRoute.path); export const podSecurityPoliciesURL = buildURL(podSecurityPoliciesRoute.path);
export const roleBindingsURL = buildURL<RoleBindingsRouteParams>(roleBindingsRoute.path);
export const clusterRoleBindingsURL = buildURL<ClusterRoleBindingsRouteParams>(clusterRoleBindingsRoute.path);
export const rolesURL = buildURL<RoleBindingsRouteParams>(rolesRoute.path); export const rolesURL = buildURL<RoleBindingsRouteParams>(rolesRoute.path);
export const roleBindingsURL = buildURL<RoleBindingsRouteParams>(roleBindingsRoute.path);
export const clusterRolesURL = buildURL<ClusterRoleBindingsRouteParams>(clusterRolesRoute.path); export const clusterRolesURL = buildURL<ClusterRoleBindingsRouteParams>(clusterRolesRoute.path);
export const clusterRoleBindingsURL = buildURL<ClusterRoleBindingsRouteParams>(clusterRoleBindingsRoute.path);

View File

@ -20,13 +20,13 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const volumeClaimsRoute: RouteProps = { export const volumeClaimsRoute: RouteProps = {
path: "/persistent-volume-claims" path: "/persistent-volume-claims"
}; };
export interface IVolumeClaimsRouteParams { export interface VolumeClaimsRouteParams {
} }
export const volumeClaimsURL = buildURL<IVolumeClaimsRouteParams>(volumeClaimsRoute.path); export const volumeClaimsURL = buildURL<VolumeClaimsRouteParams>(volumeClaimsRoute.path);

View File

@ -20,13 +20,13 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const volumesRoute: RouteProps = { export const volumesRoute: RouteProps = {
path: "/persistent-volumes" path: "/persistent-volumes"
}; };
export interface IVolumesRouteParams { export interface VolumesRouteParams {
} }
export const volumesURL = buildURL<IVolumesRouteParams>(volumesRoute.path); export const volumesURL = buildURL<VolumesRouteParams>(volumesRoute.path);

View File

@ -20,7 +20,7 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL } from "../../../common/utils/buildUrl"; import { buildURL } from "../utils/buildUrl";
export const welcomeRoute: RouteProps = { export const welcomeRoute: RouteProps = {
path: "/welcome" path: "/welcome"

View File

@ -20,8 +20,8 @@
*/ */
import type { RouteProps } from "react-router"; import type { RouteProps } from "react-router";
import { buildURL, IURLParams } from "../../../common/utils/buildUrl"; import { buildURL, URLParams } from "../utils/buildUrl";
import type { KubeResource } from "../../../common/rbac"; import type { KubeResource } from "../rbac";
// Routes // Routes
export const overviewRoute: RouteProps = { export const overviewRoute: RouteProps = {
@ -63,40 +63,40 @@ export const workloadsRoute: RouteProps = {
}; };
// Route params // Route params
export interface IWorkloadsOverviewRouteParams { export interface WorkloadsOverviewRouteParams {
} }
export interface IPodsRouteParams { export interface PodsRouteParams {
} }
export interface IDeploymentsRouteParams { export interface DeploymentsRouteParams {
} }
export interface IDaemonSetsRouteParams { export interface DaemonSetsRouteParams {
} }
export interface IStatefulSetsRouteParams { export interface StatefulSetsRouteParams {
} }
export interface IReplicaSetsRouteParams { export interface ReplicaSetsRouteParams {
} }
export interface IJobsRouteParams { export interface JobsRouteParams {
} }
export interface ICronJobsRouteParams { export interface CronJobsRouteParams {
} }
// URL-builders // URL-builders
export const workloadsURL = (params?: IURLParams) => overviewURL(params); export const workloadsURL = (params?: URLParams) => overviewURL(params);
export const overviewURL = buildURL<IWorkloadsOverviewRouteParams>(overviewRoute.path); export const overviewURL = buildURL<WorkloadsOverviewRouteParams>(overviewRoute.path);
export const podsURL = buildURL<IPodsRouteParams>(podsRoute.path); export const podsURL = buildURL<PodsRouteParams>(podsRoute.path);
export const deploymentsURL = buildURL<IDeploymentsRouteParams>(deploymentsRoute.path); export const deploymentsURL = buildURL<DeploymentsRouteParams>(deploymentsRoute.path);
export const daemonSetsURL = buildURL<IDaemonSetsRouteParams>(daemonSetsRoute.path); export const daemonSetsURL = buildURL<DaemonSetsRouteParams>(daemonSetsRoute.path);
export const statefulSetsURL = buildURL<IStatefulSetsRouteParams>(statefulSetsRoute.path); export const statefulSetsURL = buildURL<StatefulSetsRouteParams>(statefulSetsRoute.path);
export const replicaSetsURL = buildURL<IReplicaSetsRouteParams>(replicaSetsRoute.path); export const replicaSetsURL = buildURL<ReplicaSetsRouteParams>(replicaSetsRoute.path);
export const jobsURL = buildURL<IJobsRouteParams>(jobsRoute.path); export const jobsURL = buildURL<JobsRouteParams>(jobsRoute.path);
export const cronJobsURL = buildURL<ICronJobsRouteParams>(cronJobsRoute.path); export const cronJobsURL = buildURL<CronJobsRouteParams>(cronJobsRoute.path);
export const workloadURL: Partial<Record<KubeResource, ReturnType<typeof buildURL>>> = { export const workloadURL: Partial<Record<KubeResource, ReturnType<typeof buildURL>>> = {
"pods": podsURL, "pods": podsURL,

View File

@ -21,7 +21,7 @@
import { compile } from "path-to-regexp"; import { compile } from "path-to-regexp";
export interface IURLParams<P extends object = {}, Q extends object = {}> { export interface URLParams<P extends object = {}, Q extends object = {}> {
params?: P; params?: P;
query?: Q; query?: Q;
fragment?: string; fragment?: string;
@ -30,7 +30,7 @@ export interface IURLParams<P extends object = {}, Q extends object = {}> {
export function buildURL<P extends object = {}, Q extends object = {}>(path: string | any) { export function buildURL<P extends object = {}, Q extends object = {}>(path: string | any) {
const pathBuilder = compile(String(path)); const pathBuilder = compile(String(path));
return function ({ params, query, fragment }: IURLParams<P, Q> = {}): string { return function ({ params, query, fragment }: URLParams<P, Q> = {}): string {
const queryParams = query ? new URLSearchParams(Object.entries(query)).toString() : ""; const queryParams = query ? new URLSearchParams(Object.entries(query)).toString() : "";
const parts = [ const parts = [
pathBuilder(params), pathBuilder(params),

View File

@ -24,7 +24,7 @@ import { navigation, PageParam, PageParamInit } from "../../renderer/navigation"
export type { PageParamInit, PageParam } from "../../renderer/navigation/page-param"; export type { PageParamInit, PageParam } from "../../renderer/navigation/page-param";
export { navigate, isActiveRoute } from "../../renderer/navigation/helpers"; export { navigate, isActiveRoute } from "../../renderer/navigation/helpers";
export { hideDetails, showDetails, getDetailsUrl } from "../../renderer/components/kube-object/kube-object-details"; export { hideDetails, showDetails, getDetailsUrl } from "../../renderer/components/kube-object/kube-object-details";
export type { IURLParams } from "../../common/utils/buildUrl"; export type { URLParams } from "../../common/utils/buildUrl";
export function createPageParam<V>(init: PageParamInit<V>) { export function createPageParam<V>(init: PageParamInit<V>) {
return new PageParam<V>(init, navigation); return new PageParam<V>(init, navigation);

View File

@ -23,16 +23,12 @@ import { app, BrowserWindow, dialog, ipcMain, IpcMainEvent, Menu, MenuItem, Menu
import { autorun } from "mobx"; import { autorun } from "mobx";
import type { WindowManager } from "./window-manager"; import type { WindowManager } from "./window-manager";
import { appName, isMac, isWindows, isTestEnv, docsUrl, supportUrl, productName } from "../common/vars"; import { appName, isMac, isWindows, isTestEnv, docsUrl, supportUrl, productName } from "../common/vars";
import { addClusterURL } from "../renderer/components/+add-cluster/add-cluster.route";
import { preferencesURL } from "../renderer/components/+preferences/preferences.route";
import { welcomeURL } from "../renderer/components/+welcome/welcome.route";
import { extensionsURL } from "../renderer/components/+extensions/extensions.route";
import { catalogURL } from "../renderer/components/+catalog/catalog.route";
import { menuRegistry } from "../extensions/registries/menu-registry"; import { menuRegistry } from "../extensions/registries/menu-registry";
import logger from "./logger"; import logger from "./logger";
import { exitApp } from "./exit-app"; import { exitApp } from "./exit-app";
import { broadcastMessage } from "../common/ipc"; import { broadcastMessage } from "../common/ipc";
import * as packageJson from "../../package.json"; import * as packageJson from "../../package.json";
import { preferencesURL, extensionsURL, addClusterURL, catalogURL, welcomeURL } from "../common/routes";
export type MenuTopId = "mac" | "file" | "edit" | "view" | "help"; export type MenuTopId = "mac" | "file" | "edit" | "view" | "help";

View File

@ -26,10 +26,10 @@ import { autorun } from "mobx";
import { showAbout } from "./menu"; import { showAbout } from "./menu";
import { checkForUpdates, isAutoUpdateEnabled } from "./app-updater"; import { checkForUpdates, isAutoUpdateEnabled } from "./app-updater";
import type { WindowManager } from "./window-manager"; import type { WindowManager } from "./window-manager";
import { preferencesURL } from "../renderer/components/+preferences/preferences.route";
import logger from "./logger"; import logger from "./logger";
import { isDevelopment, isWindows, productName } from "../common/vars"; import { isDevelopment, isWindows, productName } from "../common/vars";
import { exitApp } from "./exit-app"; import { exitApp } from "./exit-app";
import { preferencesURL } from "../common/routes";
const TRAY_LOG_PREFIX = "[TRAY]"; const TRAY_LOG_PREFIX = "[TRAY]";

View File

@ -20,8 +20,8 @@
*/ */
import { KubeObject } from "../kube-object"; import { KubeObject } from "../kube-object";
import { crdResourcesURL } from "../../components/+custom-resources/crd.route";
import { KubeApi } from "../kube-api"; import { KubeApi } from "../kube-api";
import { crdResourcesURL } from "../../../common/routes";
type AdditionalPrinterColumnsCommon = { type AdditionalPrinterColumnsCommon = {
name: string; name: string;

View File

@ -29,7 +29,7 @@ import { observer } from "mobx-react";
import path from "path"; import path from "path";
import React from "react"; import React from "react";
import { catalogURL } from "../+catalog"; import { catalogURL } from "../../../common/routes";
import { ClusterStore } from "../../../common/cluster-store"; import { ClusterStore } from "../../../common/cluster-store";
import { appEventBus } from "../../../common/event-bus"; import { appEventBus } from "../../../common/event-bus";
import { loadConfigFromString, splitConfig } from "../../../common/kube-helpers"; import { loadConfigFromString, splitConfig } from "../../../common/kube-helpers";

View File

@ -20,4 +20,3 @@
*/ */
export * from "./add-cluster"; export * from "./add-cluster";
export * from "./add-cluster.route";

View File

@ -24,12 +24,13 @@ import "./helm-charts.scss";
import React, { Component } from "react"; import React, { Component } from "react";
import type { RouteComponentProps } from "react-router"; import type { RouteComponentProps } from "react-router";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { helmChartsURL, IHelmChartsRouteParams } from "./helm-charts.route";
import { helmChartStore } from "./helm-chart.store"; import { helmChartStore } from "./helm-chart.store";
import type { HelmChart } from "../../api/endpoints/helm-charts.api"; import type { HelmChart } from "../../api/endpoints/helm-charts.api";
import { HelmChartDetails } from "./helm-chart-details"; import { HelmChartDetails } from "./helm-chart-details";
import { navigation } from "../../navigation"; import { navigation } from "../../navigation";
import { ItemListLayout } from "../item-object-list/item-list-layout"; import { ItemListLayout } from "../item-object-list/item-list-layout";
import { helmChartsURL } from "../../../common/routes";
import type { HelmChartsRouteParams } from "../../../common/routes";
enum columnId { enum columnId {
name = "name", name = "name",
@ -39,7 +40,7 @@ enum columnId {
repo = "repo", repo = "repo",
} }
interface Props extends RouteComponentProps<IHelmChartsRouteParams> { interface Props extends RouteComponentProps<HelmChartsRouteParams> {
} }
@observer @observer

View File

@ -20,4 +20,3 @@
*/ */
export * from "./helm-charts"; export * from "./helm-charts";
export * from "./helm-charts.route";

View File

@ -20,4 +20,3 @@
*/ */
export * from "./releases"; export * from "./releases";
export * from "./release.route";

View File

@ -26,7 +26,6 @@ import kebabCase from "lodash/kebabCase";
import { disposeOnUnmount, observer } from "mobx-react"; import { disposeOnUnmount, observer } from "mobx-react";
import type { RouteComponentProps } from "react-router"; import type { RouteComponentProps } from "react-router";
import { releaseStore } from "./release.store"; import { releaseStore } from "./release.store";
import { IReleaseRouteParams, releaseURL } from "./release.route";
import type { HelmRelease } from "../../api/endpoints/helm-releases.api"; import type { HelmRelease } from "../../api/endpoints/helm-releases.api";
import { ReleaseDetails } from "./release-details"; import { ReleaseDetails } from "./release-details";
import { ReleaseRollbackDialog } from "./release-rollback-dialog"; import { ReleaseRollbackDialog } from "./release-rollback-dialog";
@ -35,6 +34,8 @@ import { ItemListLayout } from "../item-object-list/item-list-layout";
import { HelmReleaseMenu } from "./release-menu"; import { HelmReleaseMenu } from "./release-menu";
import { secretsStore } from "../+config-secrets/secrets.store"; import { secretsStore } from "../+config-secrets/secrets.store";
import { NamespaceSelectFilter } from "../+namespaces/namespace-select-filter"; import { NamespaceSelectFilter } from "../+namespaces/namespace-select-filter";
import type { ReleaseRouteParams } from "../../../common/routes";
import { releaseURL } from "../../../common/routes";
enum columnId { enum columnId {
name = "name", name = "name",
@ -47,7 +48,7 @@ enum columnId {
updated = "update" updated = "update"
} }
interface Props extends RouteComponentProps<IReleaseRouteParams> { interface Props extends RouteComponentProps<ReleaseRouteParams> {
} }
@observer @observer

View File

@ -21,8 +21,7 @@
import { navigate } from "../../navigation"; import { navigate } from "../../navigation";
import { commandRegistry } from "../../../extensions/registries/command-registry"; import { commandRegistry } from "../../../extensions/registries/command-registry";
import { helmChartsURL } from "../+apps-helm-charts"; import { helmChartsURL, releaseURL } from "../../../common/routes";
import { releaseURL } from "../+apps-releases";
commandRegistry.add({ commandRegistry.add({
id: "cluster.viewHelmCharts", id: "cluster.viewHelmCharts",

View File

@ -22,8 +22,9 @@
import React from "react"; import React from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { TabLayout, TabLayoutRoute } from "../layout/tab-layout"; import { TabLayout, TabLayoutRoute } from "../layout/tab-layout";
import { HelmCharts, helmChartsRoute, helmChartsURL } from "../+apps-helm-charts"; import { HelmCharts } from "../+apps-helm-charts";
import { HelmReleases, releaseRoute, releaseURL } from "../+apps-releases"; import { HelmReleases } from "../+apps-releases";
import { helmChartsURL, helmChartsRoute, releaseURL, releaseRoute } from "../../../common/routes";
@observer @observer
export class Apps extends React.Component { export class Apps extends React.Component {

View File

@ -20,5 +20,4 @@
*/ */
export * from "./apps"; export * from "./apps";
export * from "./apps.route";
export * from "./apps.command"; export * from "./apps.command";

View File

@ -37,16 +37,15 @@ import { Tab, Tabs } from "../tabs";
import { catalogCategoryRegistry } from "../../../common/catalog"; import { catalogCategoryRegistry } from "../../../common/catalog";
import { CatalogAddButton } from "./catalog-add-button"; import { CatalogAddButton } from "./catalog-add-button";
import type { RouteComponentProps } from "react-router"; import type { RouteComponentProps } from "react-router";
import type { ICatalogViewRouteParam } from "./catalog.route";
import { Notifications } from "../notifications"; import { Notifications } from "../notifications";
import { Avatar } from "../avatar/avatar"; import { Avatar } from "../avatar/avatar";
import { MainLayout } from "../layout/main-layout"; import { MainLayout } from "../layout/main-layout";
import { cssNames } from "../../utils"; import { cssNames } from "../../utils";
import { TopBar } from "../layout/topbar"; import { TopBar } from "../layout/topbar";
import { welcomeURL } from "../+welcome";
import { Icon } from "../icon"; import { Icon } from "../icon";
import { MaterialTooltip } from "../material-tooltip/material-tooltip"; import { MaterialTooltip } from "../material-tooltip/material-tooltip";
import { CatalogEntityDetails } from "./catalog-entity-details"; import { CatalogEntityDetails } from "./catalog-entity-details";
import { CatalogViewRouteParam, welcomeURL } from "../../../common/routes";
enum sortBy { enum sortBy {
name = "name", name = "name",
@ -55,8 +54,7 @@ enum sortBy {
status = "status" status = "status"
} }
interface Props extends RouteComponentProps<ICatalogViewRouteParam> {} interface Props extends RouteComponentProps<CatalogViewRouteParam> {}
@observer @observer
export class Catalog extends React.Component<Props> { export class Catalog extends React.Component<Props> {
@observable private catalogEntityStore?: CatalogEntityStore; @observable private catalogEntityStore?: CatalogEntityStore;

View File

@ -19,5 +19,4 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./catalog.route";
export * from "./catalog"; export * from "./catalog";

View File

@ -25,12 +25,12 @@ import React from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import type { RouteComponentProps } from "react-router"; import type { RouteComponentProps } from "react-router";
import { KubeObjectListLayout } from "../kube-object"; import { KubeObjectListLayout } from "../kube-object";
import type { IHpaRouteParams } from "./hpa.route";
import type { HorizontalPodAutoscaler } from "../../api/endpoints/hpa.api"; import type { HorizontalPodAutoscaler } from "../../api/endpoints/hpa.api";
import { hpaStore } from "./hpa.store"; import { hpaStore } from "./hpa.store";
import { Badge } from "../badge"; import { Badge } from "../badge";
import { cssNames } from "../../utils"; import { cssNames } from "../../utils";
import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { KubeObjectStatusIcon } from "../kube-object-status-icon";
import type { HpaRouteParams } from "../../../common/routes";
enum columnId { enum columnId {
name = "name", name = "name",
@ -43,7 +43,7 @@ enum columnId {
status = "status" status = "status"
} }
interface Props extends RouteComponentProps<IHpaRouteParams> { interface Props extends RouteComponentProps<HpaRouteParams> {
} }
@observer @observer

View File

@ -21,4 +21,3 @@
export * from "./hpa"; export * from "./hpa";
export * from "./hpa-details"; export * from "./hpa-details";
export * from "./hpa.route";

View File

@ -20,5 +20,4 @@
*/ */
export * from "./limit-ranges"; export * from "./limit-ranges";
export * from "./limit-ranges.route";
export * from "./limit-range-details"; export * from "./limit-range-details";

View File

@ -25,10 +25,10 @@ import type { RouteComponentProps } from "react-router";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { KubeObjectListLayout } from "../kube-object/kube-object-list-layout"; import { KubeObjectListLayout } from "../kube-object/kube-object-list-layout";
import { limitRangeStore } from "./limit-ranges.store"; import { limitRangeStore } from "./limit-ranges.store";
import type { LimitRangeRouteParams } from "./limit-ranges.route";
import React from "react"; import React from "react";
import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { KubeObjectStatusIcon } from "../kube-object-status-icon";
import type { LimitRange } from "../../api/endpoints/limit-range.api"; import type { LimitRange } from "../../api/endpoints/limit-range.api";
import type { LimitRangeRouteParams } from "../../../common/routes";
enum columnId { enum columnId {
name = "name", name = "name",

View File

@ -27,8 +27,8 @@ import type { RouteComponentProps } from "react-router";
import { configMapsStore } from "./config-maps.store"; import { configMapsStore } from "./config-maps.store";
import type { ConfigMap } from "../../api/endpoints/configmap.api"; import type { ConfigMap } from "../../api/endpoints/configmap.api";
import { KubeObjectListLayout } from "../kube-object"; import { KubeObjectListLayout } from "../kube-object";
import type { IConfigMapsRouteParams } from "./config-maps.route";
import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { KubeObjectStatusIcon } from "../kube-object-status-icon";
import type { ConfigMapsRouteParams } from "../../../common/routes";
enum columnId { enum columnId {
name = "name", name = "name",
@ -37,7 +37,7 @@ enum columnId {
age = "age", age = "age",
} }
interface Props extends RouteComponentProps<IConfigMapsRouteParams> { interface Props extends RouteComponentProps<ConfigMapsRouteParams> {
} }
@observer @observer

View File

@ -19,6 +19,5 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./config-maps.route";
export * from "./config-maps"; export * from "./config-maps";
export * from "./config-map-details"; export * from "./config-map-details";

View File

@ -19,6 +19,5 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./pod-disruption-budgets.route";
export * from "./pod-disruption-budgets"; export * from "./pod-disruption-budgets";
export * from "./pod-disruption-budgets-details"; export * from "./pod-disruption-budgets-details";

View File

@ -19,6 +19,5 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./resource-quotas.route";
export * from "./resource-quotas"; export * from "./resource-quotas";
export * from "./resource-quota-details"; export * from "./resource-quota-details";

View File

@ -28,8 +28,8 @@ import { KubeObjectListLayout } from "../kube-object";
import type { ResourceQuota } from "../../api/endpoints/resource-quota.api"; import type { ResourceQuota } from "../../api/endpoints/resource-quota.api";
import { AddQuotaDialog } from "./add-quota-dialog"; import { AddQuotaDialog } from "./add-quota-dialog";
import { resourceQuotaStore } from "./resource-quotas.store"; import { resourceQuotaStore } from "./resource-quotas.store";
import type { IResourceQuotaRouteParams } from "./resource-quotas.route";
import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { KubeObjectStatusIcon } from "../kube-object-status-icon";
import type { ResourceQuotaRouteParams } from "../../../common/routes";
enum columnId { enum columnId {
name = "name", name = "name",
@ -37,7 +37,7 @@ enum columnId {
age = "age" age = "age"
} }
interface Props extends RouteComponentProps<IResourceQuotaRouteParams> { interface Props extends RouteComponentProps<ResourceQuotaRouteParams> {
} }
@observer @observer

View File

@ -19,7 +19,5 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./secrets.route";
export * from "./secrets"; export * from "./secrets";
export * from "./secret-details"; export * from "./secret-details";

View File

@ -26,11 +26,11 @@ import { observer } from "mobx-react";
import type { RouteComponentProps } from "react-router"; import type { RouteComponentProps } from "react-router";
import type { Secret } from "../../api/endpoints"; import type { Secret } from "../../api/endpoints";
import { AddSecretDialog } from "./add-secret-dialog"; import { AddSecretDialog } from "./add-secret-dialog";
import type { ISecretsRouteParams } from "./secrets.route";
import { KubeObjectListLayout } from "../kube-object"; import { KubeObjectListLayout } from "../kube-object";
import { Badge } from "../badge"; import { Badge } from "../badge";
import { secretsStore } from "./secrets.store"; import { secretsStore } from "./secrets.store";
import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { KubeObjectStatusIcon } from "../kube-object-status-icon";
import type { SecretsRouteParams } from "../../../common/routes";
enum columnId { enum columnId {
name = "name", name = "name",
@ -41,7 +41,7 @@ enum columnId {
age = "age", age = "age",
} }
interface Props extends RouteComponentProps<ISecretsRouteParams> { interface Props extends RouteComponentProps<SecretsRouteParams> {
} }
@observer @observer

View File

@ -21,51 +21,46 @@
import { navigate } from "../../navigation"; import { navigate } from "../../navigation";
import { commandRegistry } from "../../../extensions/registries/command-registry"; import { commandRegistry } from "../../../extensions/registries/command-registry";
import { configMapsURL } from "../+config-maps"; import * as routes from "../../../common/routes";
import { secretsURL } from "../+config-secrets";
import { resourceQuotaURL } from "../+config-resource-quotas";
import { limitRangeURL } from "../+config-limit-ranges";
import { hpaURL } from "../+config-autoscalers";
import { pdbURL } from "../+config-pod-disruption-budgets";
commandRegistry.add({ commandRegistry.add({
id: "cluster.viewConfigMaps", id: "cluster.viewConfigMaps",
title: "Cluster: View ConfigMaps", title: "Cluster: View ConfigMaps",
scope: "entity", scope: "entity",
action: () => navigate(configMapsURL()) action: () => navigate(routes.configMapsURL())
}); });
commandRegistry.add({ commandRegistry.add({
id: "cluster.viewSecrets", id: "cluster.viewSecrets",
title: "Cluster: View Secrets", title: "Cluster: View Secrets",
scope: "entity", scope: "entity",
action: () => navigate(secretsURL()) action: () => navigate(routes.secretsURL())
}); });
commandRegistry.add({ commandRegistry.add({
id: "cluster.viewResourceQuotas", id: "cluster.viewResourceQuotas",
title: "Cluster: View ResourceQuotas", title: "Cluster: View ResourceQuotas",
scope: "entity", scope: "entity",
action: () => navigate(resourceQuotaURL()) action: () => navigate(routes.resourceQuotaURL())
}); });
commandRegistry.add({ commandRegistry.add({
id: "cluster.viewLimitRanges", id: "cluster.viewLimitRanges",
title: "Cluster: View LimitRanges", title: "Cluster: View LimitRanges",
scope: "entity", scope: "entity",
action: () => navigate(limitRangeURL()) action: () => navigate(routes.limitRangeURL())
}); });
commandRegistry.add({ commandRegistry.add({
id: "cluster.viewHorizontalPodAutoscalers", id: "cluster.viewHorizontalPodAutoscalers",
title: "Cluster: View HorizontalPodAutoscalers (HPA)", title: "Cluster: View HorizontalPodAutoscalers (HPA)",
scope: "entity", scope: "entity",
action: () => navigate(hpaURL()) action: () => navigate(routes.hpaURL())
}); });
commandRegistry.add({ commandRegistry.add({
id: "cluster.viewPodDisruptionBudget", id: "cluster.viewPodDisruptionBudget",
title: "Cluster: View PodDisruptionBudgets", title: "Cluster: View PodDisruptionBudgets",
scope: "entity", scope: "entity",
action: () => navigate(pdbURL()) action: () => navigate(routes.pdbURL())
}); });

View File

@ -22,74 +22,75 @@
import React from "react"; import React from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { TabLayout, TabLayoutRoute } from "../layout/tab-layout"; import { TabLayout, TabLayoutRoute } from "../layout/tab-layout";
import { ConfigMaps, configMapsRoute, configMapsURL } from "../+config-maps"; import { ConfigMaps } from "../+config-maps";
import { Secrets, secretsRoute, secretsURL } from "../+config-secrets"; import { Secrets } from "../+config-secrets";
import { resourceQuotaRoute, ResourceQuotas, resourceQuotaURL } from "../+config-resource-quotas"; import { ResourceQuotas } from "../+config-resource-quotas";
import { pdbRoute, pdbURL, PodDisruptionBudgets } from "../+config-pod-disruption-budgets"; import { PodDisruptionBudgets } from "../+config-pod-disruption-budgets";
import { HorizontalPodAutoscalers, hpaRoute, hpaURL } from "../+config-autoscalers"; import { HorizontalPodAutoscalers } from "../+config-autoscalers";
import { isAllowedResource } from "../../../common/rbac"; import { isAllowedResource } from "../../../common/rbac";
import { LimitRanges, limitRangesRoute, limitRangeURL } from "../+config-limit-ranges"; import { LimitRanges } from "../+config-limit-ranges";
import * as routes from "../../../common/routes";
@observer @observer
export class Config extends React.Component { export class Config extends React.Component {
static get tabRoutes(): TabLayoutRoute[] { static get tabRoutes(): TabLayoutRoute[] {
const routes: TabLayoutRoute[] = []; const tabs: TabLayoutRoute[] = [];
if (isAllowedResource("configmaps")) { if (isAllowedResource("configmaps")) {
routes.push({ tabs.push({
title: "ConfigMaps", title: "ConfigMaps",
component: ConfigMaps, component: ConfigMaps,
url: configMapsURL(), url: routes.configMapsURL(),
routePath: configMapsRoute.path.toString(), routePath: routes.configMapsRoute.path.toString(),
}); });
} }
if (isAllowedResource("secrets")) { if (isAllowedResource("secrets")) {
routes.push({ tabs.push({
title: "Secrets", title: "Secrets",
component: Secrets, component: Secrets,
url: secretsURL(), url: routes.secretsURL(),
routePath: secretsRoute.path.toString(), routePath: routes.secretsRoute.path.toString(),
}); });
} }
if (isAllowedResource("resourcequotas")) { if (isAllowedResource("resourcequotas")) {
routes.push({ tabs.push({
title: "Resource Quotas", title: "Resource Quotas",
component: ResourceQuotas, component: ResourceQuotas,
url: resourceQuotaURL(), url: routes.resourceQuotaURL(),
routePath: resourceQuotaRoute.path.toString(), routePath: routes.resourceQuotaRoute.path.toString(),
}); });
} }
if (isAllowedResource("limitranges")) { if (isAllowedResource("limitranges")) {
routes.push({ tabs.push({
title: "Limit Ranges", title: "Limit Ranges",
component: LimitRanges, component: LimitRanges,
url: limitRangeURL(), url: routes.limitRangeURL(),
routePath: limitRangesRoute.path.toString(), routePath: routes.limitRangesRoute.path.toString(),
}); });
} }
if (isAllowedResource("horizontalpodautoscalers")) { if (isAllowedResource("horizontalpodautoscalers")) {
routes.push({ tabs.push({
title: "HPA", title: "HPA",
component: HorizontalPodAutoscalers, component: HorizontalPodAutoscalers,
url: hpaURL(), url: routes.hpaURL(),
routePath: hpaRoute.path.toString(), routePath: routes.hpaRoute.path.toString(),
}); });
} }
if (isAllowedResource("poddisruptionbudgets")) { if (isAllowedResource("poddisruptionbudgets")) {
routes.push({ tabs.push({
title: "Pod Disruption Budgets", title: "Pod Disruption Budgets",
component: PodDisruptionBudgets, component: PodDisruptionBudgets,
url: pdbURL(), url: routes.pdbURL(),
routePath: pdbRoute.path.toString(), routePath: routes.pdbRoute.path.toString(),
}); });
} }
return routes; return tabs;
} }
render() { render() {

View File

@ -19,6 +19,5 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./config.route";
export * from "./config"; export * from "./config";
export * from "./config.command"; export * from "./config.command";

View File

@ -27,14 +27,14 @@ import { disposeOnUnmount, observer } from "mobx-react";
import type { RouteComponentProps } from "react-router"; import type { RouteComponentProps } from "react-router";
import { KubeObjectListLayout } from "../kube-object"; import { KubeObjectListLayout } from "../kube-object";
import type { KubeObject } from "../../api/kube-object"; import type { KubeObject } from "../../api/kube-object";
import type { ICRDRouteParams } from "./crd.route";
import { autorun, computed, makeObservable } from "mobx"; import { autorun, computed, makeObservable } from "mobx";
import { crdStore } from "./crd.store"; import { crdStore } from "./crd.store";
import type { TableSortCallback } from "../table"; import type { TableSortCallback } from "../table";
import { apiManager } from "../../api/api-manager"; import { apiManager } from "../../api/api-manager";
import { parseJsonPath } from "../../utils/jsonPath"; import { parseJsonPath } from "../../utils/jsonPath";
import type { CRDRouteParams } from "../../../common/routes";
interface Props extends RouteComponentProps<ICRDRouteParams> { interface Props extends RouteComponentProps<CRDRouteParams> {
} }
enum columnId { enum columnId {

View File

@ -23,9 +23,9 @@ import React from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { Redirect, Route, Switch } from "react-router"; import { Redirect, Route, Switch } from "react-router";
import { TabLayout, TabLayoutRoute } from "../layout/tab-layout"; import { TabLayout, TabLayoutRoute } from "../layout/tab-layout";
import { crdDefinitionsRoute, crdResourcesRoute, crdURL } from "./crd.route";
import { CrdList } from "./crd-list"; import { CrdList } from "./crd-list";
import { CrdResources } from "./crd-resources"; import { CrdResources } from "./crd-resources";
import { crdURL, crdDefinitionsRoute, crdResourcesRoute } from "../../../common/routes";
@observer @observer
export class CustomResources extends React.Component { export class CustomResources extends React.Component {

View File

@ -19,7 +19,6 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./crd.route";
export * from "./crd-list"; export * from "./crd-list";
export * from "./crd-details"; export * from "./crd-details";
export * from "./crd-resources"; export * from "./crd-resources";

View File

@ -31,7 +31,7 @@ import { Tabs, Tab } from "../tabs";
import type { CatalogEntity } from "../../api/catalog-entity"; import type { CatalogEntity } from "../../api/catalog-entity";
import { catalogEntityRegistry } from "../../api/catalog-entity-registry"; import { catalogEntityRegistry } from "../../api/catalog-entity-registry";
import { entitySettingRegistry } from "../../../extensions/registries"; import { entitySettingRegistry } from "../../../extensions/registries";
import type { EntitySettingsRouteParams } from "./entity-settings.route"; import type { EntitySettingsRouteParams } from "../../../common/routes";
import { groupBy } from "lodash"; import { groupBy } from "lodash";
interface Props extends RouteComponentProps<EntitySettingsRouteParams> { interface Props extends RouteComponentProps<EntitySettingsRouteParams> {

View File

@ -21,5 +21,4 @@
import "../cluster-settings"; import "../cluster-settings";
export * from "./entity-settings.route";
export * from "./entity-settings"; export * from "./entity-settings";

View File

@ -36,7 +36,7 @@ import { Link } from "react-router-dom";
import { cssNames, IClassName, stopPropagation } from "../../utils"; import { cssNames, IClassName, stopPropagation } from "../../utils";
import { Icon } from "../icon"; import { Icon } from "../icon";
import { lookupApiLink } from "../../api/kube-api"; import { lookupApiLink } from "../../api/kube-api";
import { eventsURL } from "./events.route"; import { eventsURL } from "../../../common/routes";
enum columnId { enum columnId {
message = "message", message = "message",

View File

@ -20,5 +20,4 @@
*/ */
export * from "./events"; export * from "./events";
export * from "./events.route";
export * from "./event-details"; export * from "./event-details";

View File

@ -19,5 +19,4 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./extensions.route";
export * from "./extensions"; export * from "./extensions";

View File

@ -19,7 +19,6 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./namespaces.route";
export * from "./namespaces"; export * from "./namespaces";
export * from "./namespace-details"; export * from "./namespace-details";
export * from "./add-namespace-dialog"; export * from "./add-namespace-dialog";

View File

@ -28,9 +28,9 @@ import { TabLayout } from "../layout/tab-layout";
import { Badge } from "../badge"; import { Badge } from "../badge";
import type { RouteComponentProps } from "react-router"; import type { RouteComponentProps } from "react-router";
import { KubeObjectListLayout } from "../kube-object"; import { KubeObjectListLayout } from "../kube-object";
import type { INamespacesRouteParams } from "./namespaces.route";
import { namespaceStore } from "./namespace.store"; import { namespaceStore } from "./namespace.store";
import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { KubeObjectStatusIcon } from "../kube-object-status-icon";
import type { NamespacesRouteParams } from "../../../common/routes";
enum columnId { enum columnId {
name = "name", name = "name",
@ -39,7 +39,7 @@ enum columnId {
status = "status", status = "status",
} }
interface Props extends RouteComponentProps<INamespacesRouteParams> { interface Props extends RouteComponentProps<NamespacesRouteParams> {
} }
export class Namespaces extends React.Component<Props> { export class Namespaces extends React.Component<Props> {

View File

@ -24,11 +24,11 @@ import "./endpoints.scss";
import React from "react"; import React from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import type { RouteComponentProps } from "react-router-dom"; import type { RouteComponentProps } from "react-router-dom";
import type { EndpointRouteParams } from "./endpoints.route";
import type { Endpoint } from "../../api/endpoints/endpoint.api"; import type { Endpoint } from "../../api/endpoints/endpoint.api";
import { endpointStore } from "./endpoints.store"; import { endpointStore } from "./endpoints.store";
import { KubeObjectListLayout } from "../kube-object"; import { KubeObjectListLayout } from "../kube-object";
import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { KubeObjectStatusIcon } from "../kube-object-status-icon";
import type { EndpointRouteParams } from "../../../common/routes";
enum columnId { enum columnId {
name = "name", name = "name",

View File

@ -19,6 +19,5 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./endpoints.route";
export * from "./endpoints"; export * from "./endpoints";
export * from "./endpoint-details"; export * from "./endpoint-details";

View File

@ -19,6 +19,5 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./ingresses.route";
export * from "./ingresses"; export * from "./ingresses";
export * from "./ingress-details"; export * from "./ingress-details";

View File

@ -24,11 +24,11 @@ import "./ingresses.scss";
import React from "react"; import React from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import type { RouteComponentProps } from "react-router-dom"; import type { RouteComponentProps } from "react-router-dom";
import type { IngressRouteParams } from "./ingresses.route";
import type { Ingress } from "../../api/endpoints/ingress.api"; import type { Ingress } from "../../api/endpoints/ingress.api";
import { ingressStore } from "./ingress.store"; import { ingressStore } from "./ingress.store";
import { KubeObjectListLayout } from "../kube-object"; import { KubeObjectListLayout } from "../kube-object";
import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { KubeObjectStatusIcon } from "../kube-object-status-icon";
import type { IngressRouteParams } from "../../../common/routes";
enum columnId { enum columnId {
name = "name", name = "name",

View File

@ -19,6 +19,5 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./network-policies.route";
export * from "./network-policies"; export * from "./network-policies";
export * from "./network-policy-details"; export * from "./network-policy-details";

View File

@ -26,9 +26,9 @@ import { observer } from "mobx-react";
import type { RouteComponentProps } from "react-router-dom"; import type { RouteComponentProps } from "react-router-dom";
import type { NetworkPolicy } from "../../api/endpoints/network-policy.api"; import type { NetworkPolicy } from "../../api/endpoints/network-policy.api";
import { KubeObjectListLayout } from "../kube-object"; import { KubeObjectListLayout } from "../kube-object";
import type { INetworkPoliciesRouteParams } from "./network-policies.route";
import { networkPolicyStore } from "./network-policy.store"; import { networkPolicyStore } from "./network-policy.store";
import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { KubeObjectStatusIcon } from "../kube-object-status-icon";
import type { NetworkPoliciesRouteParams } from "../../../common/routes";
enum columnId { enum columnId {
name = "name", name = "name",
@ -37,7 +37,7 @@ enum columnId {
age = "age", age = "age",
} }
interface Props extends RouteComponentProps<INetworkPoliciesRouteParams> { interface Props extends RouteComponentProps<NetworkPoliciesRouteParams> {
} }
@observer @observer

View File

@ -19,6 +19,5 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./services.route";
export * from "./services"; export * from "./services";
export * from "./service-details"; export * from "./service-details";

View File

@ -24,12 +24,12 @@ import "./services.scss";
import React from "react"; import React from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import type { RouteComponentProps } from "react-router"; import type { RouteComponentProps } from "react-router";
import type { IServicesRouteParams } from "./services.route";
import type { Service } from "../../api/endpoints/service.api"; import type { Service } from "../../api/endpoints/service.api";
import { KubeObjectListLayout } from "../kube-object"; import { KubeObjectListLayout } from "../kube-object";
import { Badge } from "../badge"; import { Badge } from "../badge";
import { serviceStore } from "./services.store"; import { serviceStore } from "./services.store";
import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { KubeObjectStatusIcon } from "../kube-object-status-icon";
import type { ServicesRouteParams } from "../../../common/routes";
enum columnId { enum columnId {
name = "name", name = "name",
@ -43,7 +43,7 @@ enum columnId {
status = "status", status = "status",
} }
interface Props extends RouteComponentProps<IServicesRouteParams> { interface Props extends RouteComponentProps<ServicesRouteParams> {
} }
@observer @observer

View File

@ -19,6 +19,5 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./network.route";
export * from "./network"; export * from "./network";
export * from "./network.command"; export * from "./network.command";

View File

@ -21,35 +21,32 @@
import { navigate } from "../../navigation"; import { navigate } from "../../navigation";
import { commandRegistry } from "../../../extensions/registries/command-registry"; import { commandRegistry } from "../../../extensions/registries/command-registry";
import { servicesURL } from "../+network-services"; import * as routes from "../../../common/routes";
import { endpointURL } from "../+network-endpoints";
import { ingressURL } from "../+network-ingresses";
import { networkPoliciesURL } from "../+network-policies";
commandRegistry.add({ commandRegistry.add({
id: "cluster.viewServices", id: "cluster.viewServices",
title: "Cluster: View Services", title: "Cluster: View Services",
scope: "entity", scope: "entity",
action: () => navigate(servicesURL()) action: () => navigate(routes.servicesURL())
}); });
commandRegistry.add({ commandRegistry.add({
id: "cluster.viewEndpoints", id: "cluster.viewEndpoints",
title: "Cluster: View Endpoints", title: "Cluster: View Endpoints",
scope: "entity", scope: "entity",
action: () => navigate(endpointURL()) action: () => navigate(routes.endpointURL())
}); });
commandRegistry.add({ commandRegistry.add({
id: "cluster.viewIngresses", id: "cluster.viewIngresses",
title: "Cluster: View Ingresses", title: "Cluster: View Ingresses",
scope: "entity", scope: "entity",
action: () => navigate(ingressURL()) action: () => navigate(routes.ingressURL())
}); });
commandRegistry.add({ commandRegistry.add({
id: "cluster.viewNetworkPolicies", id: "cluster.viewNetworkPolicies",
title: "Cluster: View NetworkPolicies", title: "Cluster: View NetworkPolicies",
scope: "entity", scope: "entity",
action: () => navigate(networkPoliciesURL()) action: () => navigate(routes.networkPoliciesURL())
}); });

View File

@ -24,54 +24,55 @@ import "./network.scss";
import React from "react"; import React from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { TabLayout, TabLayoutRoute } from "../layout/tab-layout"; import { TabLayout, TabLayoutRoute } from "../layout/tab-layout";
import { Services, servicesRoute, servicesURL } from "../+network-services"; import { Services } from "../+network-services";
import { endpointRoute, Endpoints, endpointURL } from "../+network-endpoints"; import { Endpoints } from "../+network-endpoints";
import { Ingresses, ingressRoute, ingressURL } from "../+network-ingresses"; import { Ingresses } from "../+network-ingresses";
import { NetworkPolicies, networkPoliciesRoute, networkPoliciesURL } from "../+network-policies"; import { NetworkPolicies } from "../+network-policies";
import { isAllowedResource } from "../../../common/rbac"; import { isAllowedResource } from "../../../common/rbac";
import * as routes from "../../../common/routes";
@observer @observer
export class Network extends React.Component { export class Network extends React.Component {
static get tabRoutes(): TabLayoutRoute[] { static get tabRoutes(): TabLayoutRoute[] {
const routes: TabLayoutRoute[] = []; const tabs: TabLayoutRoute[] = [];
if (isAllowedResource("services")) { if (isAllowedResource("services")) {
routes.push({ tabs.push({
title: "Services", title: "Services",
component: Services, component: Services,
url: servicesURL(), url: routes.servicesURL(),
routePath: servicesRoute.path.toString(), routePath: routes.servicesRoute.path.toString(),
}); });
} }
if (isAllowedResource("endpoints")) { if (isAllowedResource("endpoints")) {
routes.push({ tabs.push({
title: "Endpoints", title: "Endpoints",
component: Endpoints, component: Endpoints,
url: endpointURL(), url: routes.endpointURL(),
routePath: endpointRoute.path.toString(), routePath: routes.endpointRoute.path.toString(),
}); });
} }
if (isAllowedResource("ingresses")) { if (isAllowedResource("ingresses")) {
routes.push({ tabs.push({
title: "Ingresses", title: "Ingresses",
component: Ingresses, component: Ingresses,
url: ingressURL(), url: routes.ingressURL(),
routePath: ingressRoute.path.toString(), routePath: routes.ingressRoute.path.toString(),
}); });
} }
if (isAllowedResource("networkpolicies")) { if (isAllowedResource("networkpolicies")) {
routes.push({ tabs.push({
title: "Network Policies", title: "Network Policies",
component: NetworkPolicies, component: NetworkPolicies,
url: networkPoliciesURL(), url: routes.networkPoliciesURL(),
routePath: networkPoliciesRoute.path.toString(), routePath: routes.networkPoliciesRoute.path.toString(),
}); });
} }
return routes; return tabs;
} }
render() { render() {

View File

@ -20,6 +20,5 @@
*/ */
export * from "./nodes"; export * from "./nodes";
export * from "./nodes.route";
export * from "./node-details"; export * from "./node-details";
export * from "./node.command"; export * from "./node.command";

View File

@ -21,7 +21,7 @@
import { navigate } from "../../navigation"; import { navigate } from "../../navigation";
import { commandRegistry } from "../../../extensions/registries/command-registry"; import { commandRegistry } from "../../../extensions/registries/command-registry";
import { nodesURL } from "./nodes.route"; import { nodesURL } from "../../../common/routes";
commandRegistry.add({ commandRegistry.add({
id: "cluster.viewNodes", id: "cluster.viewNodes",

View File

@ -28,7 +28,6 @@ import { TabLayout } from "../layout/tab-layout";
import { nodesStore } from "./nodes.store"; import { nodesStore } from "./nodes.store";
import { podsStore } from "../+workloads-pods/pods.store"; import { podsStore } from "../+workloads-pods/pods.store";
import { KubeObjectListLayout } from "../kube-object"; import { KubeObjectListLayout } from "../kube-object";
import type { INodesRouteParams } from "./nodes.route";
import type { Node } from "../../api/endpoints/nodes.api"; import type { Node } from "../../api/endpoints/nodes.api";
import { LineProgress } from "../line-progress"; import { LineProgress } from "../line-progress";
import { bytesToUnits } from "../../utils/convertMemory"; import { bytesToUnits } from "../../utils/convertMemory";
@ -39,6 +38,7 @@ import { KubeObjectStatusIcon } from "../kube-object-status-icon";
import { Badge } from "../badge/badge"; import { Badge } from "../badge/badge";
import { kubeWatchApi } from "../../api/kube-watch-api"; import { kubeWatchApi } from "../../api/kube-watch-api";
import { eventStore } from "../+events/event.store"; import { eventStore } from "../+events/event.store";
import type { NodesRouteParams } from "../../../common/routes";
enum columnId { enum columnId {
name = "name", name = "name",
@ -53,7 +53,7 @@ enum columnId {
status = "status", status = "status",
} }
interface Props extends RouteComponentProps<INodesRouteParams> { interface Props extends RouteComponentProps<NodesRouteParams> {
} }
@observer @observer

View File

@ -19,5 +19,4 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./preferences.route";
export * from "./preferences"; export * from "./preferences";

View File

@ -1,38 +0,0 @@
/**
* Copyright (c) 2021 OpenLens Authors
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
import type { RouteProps } from "react-router";
import { commandRegistry } from "../../../extensions/registries/command-registry";
import { buildURL } from "../../../common/utils/buildUrl";
import { navigate } from "../../navigation";
export const preferencesRoute: RouteProps = {
path: "/preferences"
};
export const preferencesURL = buildURL(preferencesRoute.path);
commandRegistry.add({
id: "app.showPreferences",
title: "Preferences: Open",
scope: "global",
action: () => navigate(preferencesURL())
});

View File

@ -19,7 +19,5 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./storage-classes.route";
export * from "./storage-classes"; export * from "./storage-classes";
export * from "./storage-class-details"; export * from "./storage-class-details";

View File

@ -26,9 +26,9 @@ import type { RouteComponentProps } from "react-router-dom";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import type { StorageClass } from "../../api/endpoints/storage-class.api"; import type { StorageClass } from "../../api/endpoints/storage-class.api";
import { KubeObjectListLayout } from "../kube-object"; import { KubeObjectListLayout } from "../kube-object";
import type { IStorageClassesRouteParams } from "./storage-classes.route";
import { storageClassStore } from "./storage-class.store"; import { storageClassStore } from "./storage-class.store";
import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { KubeObjectStatusIcon } from "../kube-object-status-icon";
import type { StorageClassesRouteParams } from "../../../common/routes";
enum columnId { enum columnId {
name = "name", name = "name",
@ -38,7 +38,7 @@ enum columnId {
reclaimPolicy = "reclaim", reclaimPolicy = "reclaim",
} }
interface Props extends RouteComponentProps<IStorageClassesRouteParams> { interface Props extends RouteComponentProps<StorageClassesRouteParams> {
} }
@observer @observer

View File

@ -19,7 +19,5 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./volume-claims.route";
export * from "./volume-claims"; export * from "./volume-claims";
export * from "./volume-claim-details"; export * from "./volume-claim-details";

View File

@ -28,11 +28,11 @@ import { volumeClaimStore } from "./volume-claim.store";
import type { PersistentVolumeClaim } from "../../api/endpoints/persistent-volume-claims.api"; import type { PersistentVolumeClaim } from "../../api/endpoints/persistent-volume-claims.api";
import { podsStore } from "../+workloads-pods/pods.store"; import { podsStore } from "../+workloads-pods/pods.store";
import { getDetailsUrl, KubeObjectListLayout } from "../kube-object"; import { getDetailsUrl, KubeObjectListLayout } from "../kube-object";
import type { IVolumeClaimsRouteParams } from "./volume-claims.route";
import { unitsToBytes } from "../../utils/convertMemory"; import { unitsToBytes } from "../../utils/convertMemory";
import { stopPropagation } from "../../utils"; import { stopPropagation } from "../../utils";
import { storageClassApi } from "../../api/endpoints"; import { storageClassApi } from "../../api/endpoints";
import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { KubeObjectStatusIcon } from "../kube-object-status-icon";
import type { VolumeClaimsRouteParams } from "../../../common/routes";
enum columnId { enum columnId {
name = "name", name = "name",
@ -44,7 +44,7 @@ enum columnId {
age = "age", age = "age",
} }
interface Props extends RouteComponentProps<IVolumeClaimsRouteParams> { interface Props extends RouteComponentProps<VolumeClaimsRouteParams> {
} }
@observer @observer

View File

@ -19,6 +19,5 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./volumes.route";
export * from "./volumes"; export * from "./volumes";
export * from "./volume-details"; export * from "./volume-details";

View File

@ -26,11 +26,11 @@ import { observer } from "mobx-react";
import { Link, RouteComponentProps } from "react-router-dom"; import { Link, RouteComponentProps } from "react-router-dom";
import type { PersistentVolume } from "../../api/endpoints/persistent-volume.api"; import type { PersistentVolume } from "../../api/endpoints/persistent-volume.api";
import { getDetailsUrl, KubeObjectListLayout } from "../kube-object"; import { getDetailsUrl, KubeObjectListLayout } from "../kube-object";
import type { IVolumesRouteParams } from "./volumes.route";
import { stopPropagation } from "../../utils"; import { stopPropagation } from "../../utils";
import { volumesStore } from "./volumes.store"; import { volumesStore } from "./volumes.store";
import { pvcApi, storageClassApi } from "../../api/endpoints"; import { pvcApi, storageClassApi } from "../../api/endpoints";
import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { KubeObjectStatusIcon } from "../kube-object-status-icon";
import type { VolumesRouteParams } from "../../../common/routes";
enum columnId { enum columnId {
name = "name", name = "name",
@ -41,7 +41,7 @@ enum columnId {
age = "age", age = "age",
} }
interface Props extends RouteComponentProps<IVolumesRouteParams> { interface Props extends RouteComponentProps<VolumesRouteParams> {
} }
@observer @observer

View File

@ -19,5 +19,4 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
export * from "./storage.route";
export * from "./storage"; export * from "./storage";

View File

@ -24,44 +24,45 @@ import "./storage.scss";
import React from "react"; import React from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { TabLayout, TabLayoutRoute } from "../layout/tab-layout"; import { TabLayout, TabLayoutRoute } from "../layout/tab-layout";
import { PersistentVolumes, volumesRoute, volumesURL } from "../+storage-volumes"; import { PersistentVolumes } from "../+storage-volumes";
import { StorageClasses, storageClassesRoute, storageClassesURL } from "../+storage-classes"; import { StorageClasses } from "../+storage-classes";
import { PersistentVolumeClaims, volumeClaimsRoute, volumeClaimsURL } from "../+storage-volume-claims"; import { PersistentVolumeClaims } from "../+storage-volume-claims";
import { isAllowedResource } from "../../../common/rbac"; import { isAllowedResource } from "../../../common/rbac";
import * as routes from "../../../common/routes";
@observer @observer
export class Storage extends React.Component { export class Storage extends React.Component {
static get tabRoutes() { static get tabRoutes() {
const tabRoutes: TabLayoutRoute[] = []; const tabs: TabLayoutRoute[] = [];
if (isAllowedResource("persistentvolumeclaims")) { if (isAllowedResource("persistentvolumeclaims")) {
tabRoutes.push({ tabs.push({
title: "Persistent Volume Claims", title: "Persistent Volume Claims",
component: PersistentVolumeClaims, component: PersistentVolumeClaims,
url: volumeClaimsURL(), url: routes.volumeClaimsURL(),
routePath: volumeClaimsRoute.path.toString(), routePath: routes.volumeClaimsRoute.path.toString(),
}); });
} }
if (isAllowedResource("persistentvolumes")) { if (isAllowedResource("persistentvolumes")) {
tabRoutes.push({ tabs.push({
title: "Persistent Volumes", title: "Persistent Volumes",
component: PersistentVolumes, component: PersistentVolumes,
url: volumesURL(), url: routes.volumesURL(),
routePath: volumesRoute.path.toString(), routePath: routes.volumesRoute.path.toString(),
}); });
} }
if (isAllowedResource("storageclasses")) { if (isAllowedResource("storageclasses")) {
tabRoutes.push({ tabs.push({
title: "Storage Classes", title: "Storage Classes",
component: StorageClasses, component: StorageClasses,
url: storageClassesURL(), url: routes.storageClassesURL(),
routePath: storageClassesRoute.path.toString(), routePath: routes.storageClassesRoute.path.toString(),
}); });
} }
return tabRoutes; return tabs;
} }
render() { render() {

Some files were not shown because too many files have changed in this diff Show More