From 79587514d846ea3ac421b349fdd91ecf39b13890 Mon Sep 17 00:00:00 2001 From: Janne Savolainen Date: Mon, 14 Feb 2022 08:47:42 +0200 Subject: [PATCH] Make response of route typed Signed-off-by: Janne Savolainen --- src/main/__test__/router.test.ts | 10 +++++----- src/main/router.ts | 14 +++++++------- src/main/router/router.injectable.ts | 2 +- .../helm/charts/get-chart-route.injectable.ts | 15 +++++++++------ .../charts/get-chart-values-route.injectable.ts | 6 +++--- .../helm/charts/list-charts-route.injectable.ts | 7 +++---- .../releases/delete-release-route.injectable.ts | 6 +++--- .../get-release-history-route.injectable.ts | 6 +++--- .../helm/releases/get-release-route.injectable.ts | 6 +++--- .../get-release-values-route.injectable.ts | 6 +++--- .../releases/install-chart-route.injectable.ts | 11 ++++++++--- .../releases/list-releases-route.injectable.ts | 6 +++--- .../releases/rollback-release-route.injectable.ts | 7 +++---- .../releases/update-release-route.injectable.ts | 11 ++++++++--- .../get-service-account-route.injectable.ts | 6 +++--- .../metrics/add-metrics-route.injectable.ts | 6 +++--- .../get-metric-providers-route.injectable.ts | 7 +++---- .../get-current-port-forward-route.injectable.ts | 6 +++--- .../start-port-forward-route.injectable.ts | 6 +++--- .../stop-current-port-forward-route.injectable.ts | 6 +++--- .../apply-resource-route.injectable.ts | 9 +++------ .../patch-resource-route.injectable.ts | 9 +++------ src/main/routes/static-file-route.injectable.ts | 6 +++--- .../versions/get-version-route.injectable.ts | 7 +++---- 24 files changed, 92 insertions(+), 89 deletions(-) diff --git a/src/main/__test__/router.test.ts b/src/main/__test__/router.test.ts index 4d244ac6f4..1fa5ba0e42 100644 --- a/src/main/__test__/router.test.ts +++ b/src/main/__test__/router.test.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -import type { LensApiRequest, LensApiResult } from "../router"; +import type { LensApiRequest, Route } from "../router"; import staticFileRouteInjectable from "../routes/static-file-route.injectable"; import { getDiForUnitTesting } from "../getDiForUnitTesting"; @@ -24,14 +24,14 @@ jest.mock("electron", () => ({ })); describe("Router", () => { - let handleStaticFile: (request: LensApiRequest) => Promise; + let handleStaticFileRoute: Route; beforeEach(async () => { const di = getDiForUnitTesting({ doGeneralOverrides: true }); await di.runSetups(); - handleStaticFile = di.inject(staticFileRouteInjectable).handler; + handleStaticFileRoute = di.inject(staticFileRouteInjectable); }); it("blocks path traversal attacks", async () => { @@ -48,7 +48,7 @@ describe("Router", () => { raw: {}, } as LensApiRequest; - await handleStaticFile(request); + await handleStaticFileRoute.handler(request); expect(response.statusCode).toEqual(404); }); @@ -73,7 +73,7 @@ describe("Router", () => { raw: { req }, } as LensApiRequest; - await handleStaticFile(request); + await handleStaticFileRoute.handler(request); expect(response.statusCode).toEqual(200); }); diff --git a/src/main/router.ts b/src/main/router.ts index 67c2474092..cc2cd1ea2b 100644 --- a/src/main/router.ts +++ b/src/main/router.ts @@ -132,12 +132,12 @@ export const contentTypes: Record[]) { routes.forEach(route => { this.router.add({ method: route.method, path: route.path }, async (request: LensApiRequest) => { - let result: LensApiResult | void; + let result: LensApiResult | void; try { result = await route.handler(request); @@ -220,17 +220,17 @@ interface LensApiResultContentType { respond: (content: any, statusCode: number, response: http.ServerResponse) => void; } -export interface LensApiResult { +export interface LensApiResult { statusCode?: number; - response?: any; + response?: TResult; error?: any; contentType?: LensApiResultContentType; headers?: { Location: string }; proxy?: httpProxy; } -export interface Route { +export interface Route { path: string; method: "get" | "post" | "put" | "patch" | "delete"; - handler: (request: LensApiRequest) => LensApiResult | Promise; + handler: (request: LensApiRequest) => LensApiResult | Promise>; } diff --git a/src/main/router/router.injectable.ts b/src/main/router/router.injectable.ts index c959180928..fa211ef5f9 100644 --- a/src/main/router/router.injectable.ts +++ b/src/main/router/router.injectable.ts @@ -5,7 +5,7 @@ import { getInjectable, getInjectionToken } from "@ogre-tools/injectable"; import { Route, Router } from "../router"; -export const routeInjectionToken = getInjectionToken({ +export const routeInjectionToken = getInjectionToken>({ id: "route-injection-token", }); diff --git a/src/main/routes/helm/charts/get-chart-route.injectable.ts b/src/main/routes/helm/charts/get-chart-route.injectable.ts index 4f2e94e5d1..6ea294a464 100644 --- a/src/main/routes/helm/charts/get-chart-route.injectable.ts +++ b/src/main/routes/helm/charts/get-chart-route.injectable.ts @@ -4,21 +4,24 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { routeInjectionToken } from "../../../router/router.injectable"; -import type { LensApiRequest, LensApiResult } from "../../../router"; +import type { Route } from "../../../router"; import { helmService } from "../../../helm/helm-service"; import { apiPrefix } from "../../../../common/vars"; +import type { RawHelmChart } from "../../../../common/k8s-api/endpoints/helm-charts.api"; + +interface GetChartResponse { + readme: string; + versions: RawHelmChart[]; +} const getChartRouteInjectable = getInjectable({ id: "get-chart-route", - instantiate: () => ({ + instantiate: (): Route => ({ method: "get", path: `${apiPrefix}/v2/charts/{repo}/{chart}`, - handler: async ({ - params, - query, - }: LensApiRequest): Promise => ({ + handler: async ({ params, query }) => ({ response: await helmService.getChart( params.repo, params.chart, diff --git a/src/main/routes/helm/charts/get-chart-values-route.injectable.ts b/src/main/routes/helm/charts/get-chart-values-route.injectable.ts index 58510e2f86..ccb80c86df 100644 --- a/src/main/routes/helm/charts/get-chart-values-route.injectable.ts +++ b/src/main/routes/helm/charts/get-chart-values-route.injectable.ts @@ -4,21 +4,21 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { routeInjectionToken } from "../../../router/router.injectable"; -import type { LensApiRequest, LensApiResult } from "../../../router"; +import type { Route } from "../../../router"; import { helmService } from "../../../helm/helm-service"; import { apiPrefix } from "../../../../common/vars"; const getChartRouteValuesInjectable = getInjectable({ id: "get-chart-route-values", - instantiate: () => ({ + instantiate: (): Route => ({ method: "get", path: `${apiPrefix}/v2/charts/{repo}/{chart}/values`, handler: async ({ params, query, - }: LensApiRequest): Promise => ({ + }) => ({ response: await helmService.getChartValues( params.repo, params.chart, diff --git a/src/main/routes/helm/charts/list-charts-route.injectable.ts b/src/main/routes/helm/charts/list-charts-route.injectable.ts index 7ebecba499..61c0813606 100644 --- a/src/main/routes/helm/charts/list-charts-route.injectable.ts +++ b/src/main/routes/helm/charts/list-charts-route.injectable.ts @@ -4,19 +4,18 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { routeInjectionToken } from "../../../router/router.injectable"; -import type { LensApiRequest, LensApiResult } from "../../../router"; +import type { Route } from "../../../router"; import { helmService } from "../../../helm/helm-service"; import { apiPrefix } from "../../../../common/vars"; const listChartsRouteInjectable = getInjectable({ id: "list-charts-route", - instantiate: () => ({ + instantiate: (): Route => ({ method: "get", path: `${apiPrefix}/v2/charts`, - // eslint-disable-next-line unused-imports/no-unused-vars-ts - handler: async (request: LensApiRequest): Promise => ({ + handler: async () => ({ response: await helmService.listCharts(), }), }), diff --git a/src/main/routes/helm/releases/delete-release-route.injectable.ts b/src/main/routes/helm/releases/delete-release-route.injectable.ts index c7a223822e..a5ba23dcc1 100644 --- a/src/main/routes/helm/releases/delete-release-route.injectable.ts +++ b/src/main/routes/helm/releases/delete-release-route.injectable.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { apiPrefix } from "../../../../common/vars"; -import type { LensApiRequest, LensApiResult } from "../../../router"; +import type { Route } from "../../../router"; import { helmService } from "../../../helm/helm-service"; import { routeInjectionToken } from "../../../router/router.injectable"; import { getInjectable } from "@ogre-tools/injectable"; @@ -11,11 +11,11 @@ import { getInjectable } from "@ogre-tools/injectable"; const deleteReleaseRouteInjectable = getInjectable({ id: "delete-release-route", - instantiate: () => ({ + instantiate: (): Route => ({ method: "delete", path: `${apiPrefix}/v2/releases/{namespace}/{release}`, - handler: async (request: LensApiRequest): Promise => { + handler: async (request) => { const { cluster, params } = request; return { diff --git a/src/main/routes/helm/releases/get-release-history-route.injectable.ts b/src/main/routes/helm/releases/get-release-history-route.injectable.ts index 659418819f..a7fa6f5a70 100644 --- a/src/main/routes/helm/releases/get-release-history-route.injectable.ts +++ b/src/main/routes/helm/releases/get-release-history-route.injectable.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { apiPrefix } from "../../../../common/vars"; -import type { LensApiRequest, LensApiResult } from "../../../router"; +import type { Route } from "../../../router"; import { helmService } from "../../../helm/helm-service"; import { routeInjectionToken } from "../../../router/router.injectable"; import { getInjectable } from "@ogre-tools/injectable"; @@ -11,11 +11,11 @@ import { getInjectable } from "@ogre-tools/injectable"; const getReleaseRouteHistoryInjectable = getInjectable({ id: "get-release-history-route", - instantiate: () => ({ + instantiate: (): Route => ({ method: "get", path: `${apiPrefix}/v2/releases/{namespace}/{release}/history`, - handler: async (request: LensApiRequest): Promise => { + handler: async (request) => { const { cluster, params } = request; return { diff --git a/src/main/routes/helm/releases/get-release-route.injectable.ts b/src/main/routes/helm/releases/get-release-route.injectable.ts index 185a1e0368..18a613d032 100644 --- a/src/main/routes/helm/releases/get-release-route.injectable.ts +++ b/src/main/routes/helm/releases/get-release-route.injectable.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { apiPrefix } from "../../../../common/vars"; -import type { LensApiRequest, LensApiResult } from "../../../router"; +import type { Route } from "../../../router"; import { helmService } from "../../../helm/helm-service"; import { routeInjectionToken } from "../../../router/router.injectable"; import { getInjectable } from "@ogre-tools/injectable"; @@ -11,11 +11,11 @@ import { getInjectable } from "@ogre-tools/injectable"; const getReleaseRouteInjectable = getInjectable({ id: "get-release-route", - instantiate: () => ({ + instantiate: (): Route => ({ method: "get", path: `${apiPrefix}/v2/releases/{namespace}/{release}`, - handler: async (request: LensApiRequest): Promise => { + handler: async (request) => { const { cluster, params } = request; return { diff --git a/src/main/routes/helm/releases/get-release-values-route.injectable.ts b/src/main/routes/helm/releases/get-release-values-route.injectable.ts index 3c99989cb7..7d8bb12d6d 100644 --- a/src/main/routes/helm/releases/get-release-values-route.injectable.ts +++ b/src/main/routes/helm/releases/get-release-values-route.injectable.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { apiPrefix } from "../../../../common/vars"; -import type { LensApiRequest, LensApiResult } from "../../../router"; +import type { Route } from "../../../router"; import { helmService } from "../../../helm/helm-service"; import { routeInjectionToken } from "../../../router/router.injectable"; import { getInjectable } from "@ogre-tools/injectable"; @@ -13,11 +13,11 @@ import { contentTypes } from "../../../router"; const getReleaseRouteValuesInjectable = getInjectable({ id: "get-release-values-route", - instantiate: () => ({ + instantiate: (): Route => ({ method: "get", path: `${apiPrefix}/v2/releases/{namespace}/{release}/values`, - handler: async (request: LensApiRequest): Promise => { + handler: async (request) => { const { cluster, params: { namespace, release }, query } = request; const all = getBoolean(query, "all"); diff --git a/src/main/routes/helm/releases/install-chart-route.injectable.ts b/src/main/routes/helm/releases/install-chart-route.injectable.ts index 28b79171e2..abff71a41a 100644 --- a/src/main/routes/helm/releases/install-chart-route.injectable.ts +++ b/src/main/routes/helm/releases/install-chart-route.injectable.ts @@ -3,19 +3,24 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { apiPrefix } from "../../../../common/vars"; -import type { LensApiRequest, LensApiResult } from "../../../router"; +import type { Route } from "../../../router"; import { helmService } from "../../../helm/helm-service"; import { routeInjectionToken } from "../../../router/router.injectable"; import { getInjectable } from "@ogre-tools/injectable"; +interface InstallChartResponse { + log: string; + release: { name: string, namespace: string } +} + const installChartRouteInjectable = getInjectable({ id: "install-chart-route", - instantiate: () => ({ + instantiate: () : Route => ({ method: "post", path: `${apiPrefix}/v2/releases`, - handler: async (request: LensApiRequest): Promise => { + handler: async (request) => { const { payload, cluster } = request; return { diff --git a/src/main/routes/helm/releases/list-releases-route.injectable.ts b/src/main/routes/helm/releases/list-releases-route.injectable.ts index ac8ee79242..7b7cdbcb70 100644 --- a/src/main/routes/helm/releases/list-releases-route.injectable.ts +++ b/src/main/routes/helm/releases/list-releases-route.injectable.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { apiPrefix } from "../../../../common/vars"; -import type { LensApiRequest, LensApiResult } from "../../../router"; +import type { Route } from "../../../router"; import { helmService } from "../../../helm/helm-service"; import { routeInjectionToken } from "../../../router/router.injectable"; import { getInjectable } from "@ogre-tools/injectable"; @@ -11,11 +11,11 @@ import { getInjectable } from "@ogre-tools/injectable"; const listReleasesRouteInjectable = getInjectable({ id: "list-releases-route", - instantiate: () => ({ + instantiate: (): Route> => ({ method: "get", path: `${apiPrefix}/v2/releases/{namespace?}`, - handler: async (request: LensApiRequest): Promise => { + handler: async (request) => { const { cluster, params } = request; return { diff --git a/src/main/routes/helm/releases/rollback-release-route.injectable.ts b/src/main/routes/helm/releases/rollback-release-route.injectable.ts index ec50eedd19..6653c25632 100644 --- a/src/main/routes/helm/releases/rollback-release-route.injectable.ts +++ b/src/main/routes/helm/releases/rollback-release-route.injectable.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { apiPrefix } from "../../../../common/vars"; -import type { LensApiRequest } from "../../../router"; +import type { Route } from "../../../router"; import { helmService } from "../../../helm/helm-service"; import { routeInjectionToken } from "../../../router/router.injectable"; import { getInjectable } from "@ogre-tools/injectable"; @@ -11,18 +11,17 @@ import { getInjectable } from "@ogre-tools/injectable"; const rollbackReleaseRouteInjectable = getInjectable({ id: "rollback-release-route", - instantiate: () => ({ + instantiate: (): Route => ({ method: "put", path: `${apiPrefix}/v2/releases/{namespace}/{release}/rollback`, - handler: async (request: LensApiRequest): Promise => { + handler: async (request) => { const { cluster, params, payload } = request; await helmService.rollback(cluster, params.release, params.namespace, payload.revision); }, }), - // @ts-ignore injectionToken: routeInjectionToken, }); diff --git a/src/main/routes/helm/releases/update-release-route.injectable.ts b/src/main/routes/helm/releases/update-release-route.injectable.ts index a628db6303..827037ae1c 100644 --- a/src/main/routes/helm/releases/update-release-route.injectable.ts +++ b/src/main/routes/helm/releases/update-release-route.injectable.ts @@ -3,15 +3,20 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { apiPrefix } from "../../../../common/vars"; -import type { LensApiRequest, LensApiResult } from "../../../router"; +import type { Route } from "../../../router"; import { helmService } from "../../../helm/helm-service"; import { routeInjectionToken } from "../../../router/router.injectable"; import { getInjectable } from "@ogre-tools/injectable"; +interface UpdateReleaseResponse { + log: string; + release: { name: string, namespace: string } +} + const updateReleaseRouteInjectable = getInjectable({ id: "update-release-route", - instantiate: () => ({ + instantiate: (): Route => ({ method: "put", path: `${apiPrefix}/v2/releases/{namespace}/{release}`, @@ -19,7 +24,7 @@ const updateReleaseRouteInjectable = getInjectable({ cluster, params, payload, - }: LensApiRequest): Promise => ({ + }) => ({ response: await helmService.updateRelease( cluster, params.release, diff --git a/src/main/routes/kubeconfig-route/get-service-account-route.injectable.ts b/src/main/routes/kubeconfig-route/get-service-account-route.injectable.ts index 6ab0bf7149..5a8d86b292 100644 --- a/src/main/routes/kubeconfig-route/get-service-account-route.injectable.ts +++ b/src/main/routes/kubeconfig-route/get-service-account-route.injectable.ts @@ -5,7 +5,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import { apiPrefix } from "../../../common/vars"; -import type { LensApiRequest, LensApiResult } from "../../router"; +import type { Route } from "../../router"; import { routeInjectionToken } from "../../router/router.injectable"; import type { Cluster } from "../../../common/cluster/cluster"; import { CoreV1Api, V1Secret } from "@kubernetes/client-node"; @@ -13,11 +13,11 @@ import { CoreV1Api, V1Secret } from "@kubernetes/client-node"; const getServiceAccountRouteInjectable = getInjectable({ id: "get-service-account-route", - instantiate: () => ({ + instantiate: (): Route> => ({ method: "get", path: `${apiPrefix}/kubeconfig/service-account/{namespace}/{account}`, - handler: async (request: LensApiRequest): Promise => { + handler: async (request) => { const { params, cluster } = request; const client = (await cluster.getProxyKubeconfig()).makeApiClient(CoreV1Api); const secretList = await client.listNamespacedSecret(params.namespace); diff --git a/src/main/routes/metrics/add-metrics-route.injectable.ts b/src/main/routes/metrics/add-metrics-route.injectable.ts index 8e99c5c806..add9f42083 100644 --- a/src/main/routes/metrics/add-metrics-route.injectable.ts +++ b/src/main/routes/metrics/add-metrics-route.injectable.ts @@ -5,7 +5,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import { apiPrefix } from "../../../common/vars"; -import type { LensApiRequest, LensApiResult } from "../../router"; +import type { LensApiRequest, Route } from "../../router"; import { routeInjectionToken } from "../../router/router.injectable"; import { ClusterMetadataKey, ClusterPrometheusMetadata } from "../../../common/cluster-types"; import logger from "../../logger"; @@ -42,7 +42,7 @@ async function loadMetrics(promQueries: string[], cluster: Cluster, prometheusPa return Promise.all(queries.map(loadMetric)); } -const addMetricsRoute = async ({ cluster, payload, query }: LensApiRequest): Promise => { +const addMetricsRoute = async ({ cluster, payload, query }: LensApiRequest) => { const queryParams: IMetricsQuery = Object.fromEntries(query.entries()); const prometheusMetadata: ClusterPrometheusMetadata = {}; @@ -96,7 +96,7 @@ const addMetricsRoute = async ({ cluster, payload, query }: LensApiRequest): Pro const addMetricsRouteInjectable = getInjectable({ id: "add-metrics-route", - instantiate: () => ({ + instantiate: (): Route => ({ method: "post", path: `${apiPrefix}/metrics`, handler: addMetricsRoute, diff --git a/src/main/routes/metrics/get-metric-providers-route.injectable.ts b/src/main/routes/metrics/get-metric-providers-route.injectable.ts index 025b8e8b4f..fe43b21ac8 100644 --- a/src/main/routes/metrics/get-metric-providers-route.injectable.ts +++ b/src/main/routes/metrics/get-metric-providers-route.injectable.ts @@ -5,7 +5,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import { apiPrefix } from "../../../common/vars"; -import type { LensApiRequest, LensApiResult } from "../../router"; +import type { Route } from "../../router"; import { routeInjectionToken } from "../../router/router.injectable"; import { PrometheusProviderRegistry } from "../../prometheus"; import type { MetricProviderInfo } from "../../../common/k8s-api/endpoints/metrics.api"; @@ -13,12 +13,11 @@ import type { MetricProviderInfo } from "../../../common/k8s-api/endpoints/metri const getMetricProvidersRouteInjectable = getInjectable({ id: "get-metric-providers-route", - instantiate: () => ({ + instantiate: (): Route => ({ method: "get", path: `${apiPrefix}/metrics/providers`, - // eslint-disable-next-line unused-imports/no-unused-vars-ts - handler: async (request: LensApiRequest) : Promise => { + handler: async () => { const providers: MetricProviderInfo[] = []; for (const { name, id, isConfigurable } of PrometheusProviderRegistry.getInstance().providers.values()) { diff --git a/src/main/routes/port-forward/get-current-port-forward-route.injectable.ts b/src/main/routes/port-forward/get-current-port-forward-route.injectable.ts index 7bc80bbb2b..e0a571810b 100644 --- a/src/main/routes/port-forward/get-current-port-forward-route.injectable.ts +++ b/src/main/routes/port-forward/get-current-port-forward-route.injectable.ts @@ -4,11 +4,11 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { routeInjectionToken } from "../../router/router.injectable"; -import type { LensApiRequest, LensApiResult } from "../../router"; +import type { LensApiRequest, Route } from "../../router"; import { apiPrefix } from "../../../common/vars"; import { PortForward } from "./functionality/port-forward"; -const getCurrentPortForward = async (request: LensApiRequest): Promise => { +const getCurrentPortForward = async (request: LensApiRequest) => { const { params, query, cluster } = request; const { namespace, resourceType, resourceName } = params; const port = Number(query.get("port")); @@ -25,7 +25,7 @@ const getCurrentPortForward = async (request: LensApiRequest): Promise ({ + instantiate: (): Route<{ port: number }> => ({ method: "get", path: `${apiPrefix}/pods/port-forward/{namespace}/{resourceType}/{resourceName}`, handler: getCurrentPortForward, diff --git a/src/main/routes/port-forward/start-port-forward-route.injectable.ts b/src/main/routes/port-forward/start-port-forward-route.injectable.ts index 83e0280bd9..55c064b413 100644 --- a/src/main/routes/port-forward/start-port-forward-route.injectable.ts +++ b/src/main/routes/port-forward/start-port-forward-route.injectable.ts @@ -4,7 +4,7 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { routeInjectionToken } from "../../router/router.injectable"; -import type { LensApiRequest, LensApiResult } from "../../router"; +import type { LensApiRequest, Route } from "../../router"; import { apiPrefix } from "../../../common/vars"; import { PortForward, PortForwardArgs } from "./functionality/port-forward"; import logger from "../../logger"; @@ -14,7 +14,7 @@ interface Dependencies { createPortForward: (pathToKubeConfig: string, args: PortForwardArgs) => PortForward; } -const startPortForward = ({ createPortForward }: Dependencies) => async (request: LensApiRequest): Promise => { +const startPortForward = ({ createPortForward }: Dependencies) => async (request: LensApiRequest) => { const { params, query, cluster } = request; const { namespace, resourceType, resourceName } = params; const port = Number(query.get("port")); @@ -85,7 +85,7 @@ const startPortForward = ({ createPortForward }: Dependencies) => async (request const startPortForwardRouteInjectable = getInjectable({ id: "start-current-port-forward-route", - instantiate: (di) => ({ + instantiate: (di): Route<{ port: number }> => ({ method: "post", path: `${apiPrefix}/pods/port-forward/{namespace}/{resourceType}/{resourceName}`, handler: startPortForward({ createPortForward: di.inject(createPortForwardInjectable) }), diff --git a/src/main/routes/port-forward/stop-current-port-forward-route.injectable.ts b/src/main/routes/port-forward/stop-current-port-forward-route.injectable.ts index 3733d598c4..4abe1dc046 100644 --- a/src/main/routes/port-forward/stop-current-port-forward-route.injectable.ts +++ b/src/main/routes/port-forward/stop-current-port-forward-route.injectable.ts @@ -4,12 +4,12 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { routeInjectionToken } from "../../router/router.injectable"; -import type { LensApiRequest, LensApiResult } from "../../router"; +import type { LensApiRequest, Route } from "../../router"; import { apiPrefix } from "../../../common/vars"; import { PortForward } from "./functionality/port-forward"; import logger from "../../logger"; -const stopCurrentPortForward = async (request: LensApiRequest): Promise => { +const stopCurrentPortForward = async (request: LensApiRequest) => { const { params, query, cluster } = request; const { namespace, resourceType, resourceName } = params; const port = Number(query.get("port")); @@ -39,7 +39,7 @@ const stopCurrentPortForward = async (request: LensApiRequest): Promise ({ + instantiate: (): Route<{ status: boolean }> => ({ method: "delete", path: `${apiPrefix}/pods/port-forward/{namespace}/{resourceType}/{resourceName}`, handler: stopCurrentPortForward, diff --git a/src/main/routes/resource-applier/apply-resource-route.injectable.ts b/src/main/routes/resource-applier/apply-resource-route.injectable.ts index c038ba7470..9a3b200b16 100644 --- a/src/main/routes/resource-applier/apply-resource-route.injectable.ts +++ b/src/main/routes/resource-applier/apply-resource-route.injectable.ts @@ -4,21 +4,18 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { routeInjectionToken } from "../../router/router.injectable"; -import type { LensApiRequest, LensApiResult } from "../../router"; +import type { Route } from "../../router"; import { apiPrefix } from "../../../common/vars"; import { ResourceApplier } from "../../resource-applier"; const applyResourceRouteInjectable = getInjectable({ id: "apply-resource-route", - instantiate: () => ({ + instantiate: (): Route => ({ method: "post", path: `${apiPrefix}/stack`, - handler: async ({ - cluster, - payload, - }: LensApiRequest): Promise => ({ + handler: async ({ cluster, payload }) => ({ response: await new ResourceApplier(cluster).apply(payload), }), }), diff --git a/src/main/routes/resource-applier/patch-resource-route.injectable.ts b/src/main/routes/resource-applier/patch-resource-route.injectable.ts index 900b47131f..23019fbb53 100644 --- a/src/main/routes/resource-applier/patch-resource-route.injectable.ts +++ b/src/main/routes/resource-applier/patch-resource-route.injectable.ts @@ -4,21 +4,18 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { routeInjectionToken } from "../../router/router.injectable"; -import type { LensApiRequest, LensApiResult } from "../../router"; +import type { Route } from "../../router"; import { apiPrefix } from "../../../common/vars"; import { ResourceApplier } from "../../resource-applier"; const patchResourceRouteInjectable = getInjectable({ id: "patch-resource-route", - instantiate: () => ({ + instantiate: (): Route => ({ method: "patch", path: `${apiPrefix}/stack`, - handler: async ({ - cluster, - payload, - }: LensApiRequest): Promise => ({ + handler: async ({ cluster, payload }) => ({ response: await new ResourceApplier(cluster).patch( payload.name, payload.kind, diff --git a/src/main/routes/static-file-route.injectable.ts b/src/main/routes/static-file-route.injectable.ts index f238a29cbb..d2aceb2696 100644 --- a/src/main/routes/static-file-route.injectable.ts +++ b/src/main/routes/static-file-route.injectable.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import type { LensApiRequest, LensApiResult, SupportedFileExtension, Route } from "../router"; +import type { LensApiRequest, SupportedFileExtension, Route } from "../router"; import { contentTypes } from "../router"; import logger from "../logger"; import { routeInjectionToken } from "../router/router.injectable"; @@ -19,7 +19,7 @@ interface ProductionDependencies { const handleStaticFileInProduction = ({ readFile }: ProductionDependencies) => - async ({ params }: LensApiRequest): Promise => { + async ({ params }: LensApiRequest) => { const staticPath = path.resolve(__static); let filePath = params.path; @@ -76,7 +76,7 @@ const handleStaticFileInDevelopment = const staticFileRouteInjectable = getInjectable({ id: "static-file-route", - instantiate: (di): Route => { + instantiate: (di): Route => { const isDevelopment = di.inject(isDevelopmentInjectable); return { diff --git a/src/main/routes/versions/get-version-route.injectable.ts b/src/main/routes/versions/get-version-route.injectable.ts index a32809a2a0..5a124e49ad 100644 --- a/src/main/routes/versions/get-version-route.injectable.ts +++ b/src/main/routes/versions/get-version-route.injectable.ts @@ -3,19 +3,18 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import type { LensApiRequest, LensApiResult } from "../../router"; +import type { Route } from "../../router"; import { routeInjectionToken } from "../../router/router.injectable"; import { getAppVersion } from "../../../common/utils"; const getVersionRouteInjectable = getInjectable({ id: "get-version-route", - instantiate: () => ({ + instantiate: (): Route<{ version: string }> => ({ method: "get", path: `/version`, - // eslint-disable-next-line unused-imports/no-unused-vars-ts - handler: async (request: LensApiRequest): Promise => { + handler: async () => { return { response: { version: getAppVersion() }}; }, }),