/** * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ import type { DiContainerForInjection } from "@ogre-tools/injectable"; import { getInjectable, getInjectionToken } from "@ogre-tools/injectable"; import type { KubeApi } from "@k8slens/kube-api"; export const kubeApiInjectionToken = getInjectionToken({ id: "kube-api-injection-token", }); export interface KubeApiInjectableParts { id: string; instantiate: ( di: DiContainerForInjection, ) => Api extends KubeApi ? KubeApi & Api : never; } export const getKubeApiInjectable = (parts: KubeApiInjectableParts) => getInjectable({ id: parts.id, instantiate: (di) => parts.instantiate(di), injectionToken: kubeApiInjectionToken, });