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

chore: Fix type errors relating to LensRendererExtension

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2023-05-03 10:05:36 -04:00
parent 3a62cd4848
commit 3175c96c38
3 changed files with 17 additions and 23 deletions

View File

@ -6,29 +6,24 @@ import { getInjectionToken } from "@ogre-tools/injectable";
import type { RequiredKeysOf } from "type-fest"; import type { RequiredKeysOf } from "type-fest";
import type { Route } from "./front-end-route-injection-token"; import type { Route } from "./front-end-route-injection-token";
type InferParametersFrom<TRoute> = TRoute extends Route<infer TParameters extends object> export type NavigateWithParameterOptions<TParameters> = (
? TParameters TParameters extends object
: never; ? RequiredKeysOf<TParameters> extends never
type Parameters<TParameters extends object> = TParameters extends void
? { parameters?: undefined }
: (
RequiredKeysOf<TParameters> extends never
? { parameters?: TParameters } ? { parameters?: TParameters }
: { parameters: TParameters } : { parameters: TParameters }
); : { parameters?: undefined }
);
export type NavigateToRouteOptions<TRoute> = Parameters< export interface BaseNavigateToRouteOptions {
InferParametersFrom<TRoute>
> & {
query?: Record<string, string>; query?: Record<string, string>;
fragment?: string; fragment?: string;
withoutAffectingBackButton?: boolean; withoutAffectingBackButton?: boolean;
}; parameters?: undefined;
}
export type NavigateToRoute = <TRoute extends Route<unknown>>( export interface NavigateToRoute {
route: TRoute, (route: Route<void>, options?: BaseNavigateToRouteOptions): void;
options?: NavigateToRouteOptions<TRoute>) => void; <R extends Route<Params>, Params>(route: R, options: BaseNavigateToRouteOptions & NavigateWithParameterOptions<Params>): void;
}
export const navigateToRouteInjectionToken = getInjectionToken<NavigateToRoute>( export const navigateToRouteInjectionToken = getInjectionToken<NavigateToRoute>(
{ id: "navigate-to-route-injection-token" }, { id: "navigate-to-route-injection-token" },

View File

@ -5,6 +5,7 @@
import { Disposers, LensExtension } from "./lens-extension"; import { Disposers, LensExtension } from "./lens-extension";
import type { Disposer } from "@k8slens/utilities"; import type { Disposer } from "@k8slens/utilities";
import { object } from "@k8slens/utilities";
import type { LensExtensionDependencies } from "./lens-extension"; import type { LensExtensionDependencies } from "./lens-extension";
import type { CatalogEntity, CategoryFilter, CatalogCategoryRegistry } from "../common/catalog"; import type { CatalogEntity, CategoryFilter, CatalogCategoryRegistry } from "../common/catalog";
import type { EntityFilter, CatalogEntityRegistry } from "../renderer/api/catalog/entity/registry"; import type { EntityFilter, CatalogEntityRegistry } from "../renderer/api/catalog/entity/registry";
@ -20,7 +21,7 @@ import type { StatusBarRegistration } from "../renderer/components/status-bar/st
import type { KubeObjectMenuRegistration } from "../renderer/components/kube-object-menu/kube-object-menu-registration"; import type { KubeObjectMenuRegistration } from "../renderer/components/kube-object-menu/kube-object-menu-registration";
import type { WorkloadsOverviewDetailRegistration } from "../renderer/components/workloads-overview/workloads-overview-detail-registration"; import type { WorkloadsOverviewDetailRegistration } from "../renderer/components/workloads-overview/workloads-overview-detail-registration";
import type { KubeObjectStatusRegistration } from "../renderer/components/kube-object-status-icon/kube-object-status-registration"; import type { KubeObjectStatusRegistration } from "../renderer/components/kube-object-status-icon/kube-object-status-registration";
import { fromPairs, map, matches, toPairs } from "lodash/fp"; import { fromPairs, map, matches } from "lodash/fp";
import { pipeline } from "@ogre-tools/fp"; import { pipeline } from "@ogre-tools/fp";
import { getExtensionRoutePath } from "../renderer/routes/for-extension"; import { getExtensionRoutePath } from "../renderer/routes/for-extension";
import type { KubeObjectHandlerRegistration } from "../renderer/kube-object/handler"; import type { KubeObjectHandlerRegistration } from "../renderer/kube-object/handler";
@ -100,7 +101,7 @@ export class LensRendererExtension extends LensExtension {
super(deps, extension); super(deps, extension);
} }
navigate(pageId?: string, params: object = {}) { navigate(pageId?: string, params: Record<string, unknown> = {}) {
const routes = this.dependencies.routes.get(); const routes = this.dependencies.routes.get();
const targetRegistration = [...this.globalPages, ...this.clusterPages] const targetRegistration = [...this.globalPages, ...this.clusterPages]
.find(registration => registration.id === (pageId || undefined)); .find(registration => registration.id === (pageId || undefined));
@ -121,8 +122,7 @@ export class LensRendererExtension extends LensExtension {
registration: targetRegistration, registration: targetRegistration,
}); });
const query = pipeline( const query = pipeline(
params, object.entries(params),
toPairs,
map(([key, value]) => [ map(([key, value]) => [
key, key,
normalizedParams[key].stringify(value), normalizedParams[key].stringify(value),
@ -132,7 +132,6 @@ export class LensRendererExtension extends LensExtension {
this.dependencies.navigateToRoute(targetRoute, { this.dependencies.navigateToRoute(targetRoute, {
query, query,
parameters: {},
}); });
} }

View File

@ -52,7 +52,7 @@ const convertPartialPageParamInitToFull = (key: string, value: FallthroughPagePa
const convertStringToPageParamInit = ( const convertStringToPageParamInit = (
key: string, key: string,
value: string, value: string,
): PageParamInit<string> => ({ ): PageParamInit<unknown> => ({
name: key, name: key,
defaultValue: value, defaultValue: value,
}); });