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 { Route } from "./front-end-route-injection-token";
type InferParametersFrom<TRoute> = TRoute extends Route<infer TParameters extends object>
? TParameters
: never;
type Parameters<TParameters extends object> = TParameters extends void
? { parameters?: undefined }
: (
RequiredKeysOf<TParameters> extends never
export type NavigateWithParameterOptions<TParameters> = (
TParameters extends object
? RequiredKeysOf<TParameters> extends never
? { parameters?: TParameters }
: { parameters: TParameters }
);
export type NavigateToRouteOptions<TRoute> = Parameters<
InferParametersFrom<TRoute>
> & {
: { parameters?: undefined }
);
export interface BaseNavigateToRouteOptions {
query?: Record<string, string>;
fragment?: string;
withoutAffectingBackButton?: boolean;
};
parameters?: undefined;
}
export type NavigateToRoute = <TRoute extends Route<unknown>>(
route: TRoute,
options?: NavigateToRouteOptions<TRoute>) => void;
export interface NavigateToRoute {
(route: Route<void>, options?: BaseNavigateToRouteOptions): void;
<R extends Route<Params>, Params>(route: R, options: BaseNavigateToRouteOptions & NavigateWithParameterOptions<Params>): void;
}
export const navigateToRouteInjectionToken = getInjectionToken<NavigateToRoute>(
{ id: "navigate-to-route-injection-token" },

View File

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

View File

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