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

Fix type issue when generating extension types

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-06-24 14:46:57 -04:00
parent 3d39cab82d
commit 66addb8595
3 changed files with 9 additions and 4 deletions

View File

@ -40,6 +40,7 @@ export interface NavigateToRoute {
(route: Route<void>, options?: BaseNavigateToRouteOptions): void; (route: Route<void>, options?: BaseNavigateToRouteOptions): void;
<TParameters extends Record<TRequiredKeys, string | number>, TRequiredKeys extends string>(route: Route<TParameters>, opts: NavigateToRouteOptions<TParameters>): void; <TParameters extends Record<TRequiredKeys, string | number>, TRequiredKeys extends string>(route: Route<TParameters>, opts: NavigateToRouteOptions<TParameters>): void;
<TParameters extends object>(route: Route<TParameters>, opts?: NavigateToRouteOptions<TParameters>): void; <TParameters extends object>(route: Route<TParameters>, opts?: NavigateToRouteOptions<TParameters>): void;
<TParameters extends object>(route: Route<TParameters | void>, opts?: NavigateToRouteOptions<TParameters>): void;
} }
export const navigateToRouteInjectionToken = getInjectionToken<NavigateToRoute>({ export const navigateToRouteInjectionToken = getInjectionToken<NavigateToRoute>({

View File

@ -4,8 +4,10 @@
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { navigateToUrlInjectionToken } from "../../common/front-end-routing/navigate-to-url-injection-token"; import { navigateToUrlInjectionToken } from "../../common/front-end-routing/navigate-to-url-injection-token";
import type { NavigateToRoute, NavigateToRouteOptions } from "../../common/front-end-routing/navigate-to-route-injection-token";
import { navigateToRouteInjectionToken } from "../../common/front-end-routing/navigate-to-route-injection-token"; import { navigateToRouteInjectionToken } from "../../common/front-end-routing/navigate-to-route-injection-token";
import { buildURL } from "../../common/utils/buildUrl"; import { buildURL } from "../../common/utils/buildUrl";
import type { Route } from "../../common/front-end-routing/front-end-route-injection-token";
const navigateToRouteInjectable = getInjectable({ const navigateToRouteInjectable = getInjectable({
id: "navigate-to-route", id: "navigate-to-route",
@ -13,7 +15,7 @@ const navigateToRouteInjectable = getInjectable({
instantiate: (di) => { instantiate: (di) => {
const navigateToUrl = di.inject(navigateToUrlInjectionToken); const navigateToUrl = di.inject(navigateToUrlInjectionToken);
return (route, options) => { return ((route: Route<object | void>, options: NavigateToRouteOptions<object>) => {
const url = buildURL(route.path, { const url = buildURL(route.path, {
params: options?.parameters, params: options?.parameters,
query: options?.query, query: options?.query,
@ -21,7 +23,7 @@ const navigateToRouteInjectable = getInjectable({
}); });
navigateToUrl(url, options); navigateToUrl(url, options);
}; }) as NavigateToRoute;
}, },
injectionToken: navigateToRouteInjectionToken, injectionToken: navigateToRouteInjectionToken,

View File

@ -4,9 +4,11 @@
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { navigateToUrlInjectionToken } from "../../common/front-end-routing/navigate-to-url-injection-token"; import { navigateToUrlInjectionToken } from "../../common/front-end-routing/navigate-to-url-injection-token";
import type { NavigateToRoute, NavigateToRouteOptions } from "../../common/front-end-routing/navigate-to-route-injection-token";
import { navigateToRouteInjectionToken } from "../../common/front-end-routing/navigate-to-route-injection-token"; import { navigateToRouteInjectionToken } from "../../common/front-end-routing/navigate-to-route-injection-token";
import currentlyInClusterFrameInjectable from "./currently-in-cluster-frame.injectable"; import currentlyInClusterFrameInjectable from "./currently-in-cluster-frame.injectable";
import { buildURL } from "../../common/utils/buildUrl"; import { buildURL } from "../../common/utils/buildUrl";
import type { Route } from "../../common/front-end-routing/front-end-route-injection-token";
const navigateToRouteInjectable = getInjectable({ const navigateToRouteInjectable = getInjectable({
id: "navigate-to-route", id: "navigate-to-route",
@ -18,7 +20,7 @@ const navigateToRouteInjectable = getInjectable({
currentlyInClusterFrameInjectable, currentlyInClusterFrameInjectable,
); );
return (route, options) => { return ((route: Route<object | void>, options: NavigateToRouteOptions<object>) => {
const url = buildURL(route.path, { const url = buildURL(route.path, {
// TODO: enhance typing // TODO: enhance typing
params: options?.parameters as any, params: options?.parameters as any,
@ -30,7 +32,7 @@ const navigateToRouteInjectable = getInjectable({
...options, ...options,
forceRootFrame: currentlyInClusterFrame && route.clusterFrame === false, forceRootFrame: currentlyInClusterFrame && route.clusterFrame === false,
}); });
}; }) as NavigateToRoute;
}, },
injectionToken: navigateToRouteInjectionToken, injectionToken: navigateToRouteInjectionToken,