diff --git a/packages/core/src/common/runnable/helpers.ts b/packages/core/src/common/runnable/helpers.ts
index 630f4e6917..d7763eb34b 100644
--- a/packages/core/src/common/runnable/helpers.ts
+++ b/packages/core/src/common/runnable/helpers.ts
@@ -2,7 +2,7 @@
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
-import type { DiContainerForInjection, Injectable, InjectionInstanceWithMeta } from "@ogre-tools/injectable";
+import type { DiContainerForInjection, InjectionInstanceWithMeta } from "@ogre-tools/injectable";
import { getOrInsertSetFor, isDefined } from "../utils";
import * as uuid from "uuid";
import assert from "assert";
@@ -75,33 +75,20 @@ export function verifyRunnablesAreDAG(tokenId: string, runnables: (Runnab
}
}
+export interface ConvertToWithId {
+ (src: InjectionInstanceWithMeta>): RunnableWithId;
+ (src: InjectionInstanceWithMeta>): RunnableSyncWithId;
+}
+
export const convertToWithIdWith = (di: DiContainerForInjection) => {
- const convertToWithIdPlain = (injectable: Injectable, Runnable, void>): RunnableWithId => {
- const instance = di.inject(injectable);
+ const convert = (meta: { id: string }, instance: Runnable): RunnableWithId => ({
+ id: meta.id,
+ run: instance.run,
+ runAfter: [instance.runAfter]
+ .flat()
+ .filter(isDefined)
+ .map((injectable) => convert(injectable, di.inject(injectable))),
+ });
- return ({
- id: injectable.id,
- run: instance.run,
- runAfter: [instance.runAfter]
- .flat()
- .filter(isDefined)
- .map(convertToWithIdPlain),
- });
- };
-
- function convertToWithId(src: InjectionInstanceWithMeta>): RunnableWithId;
- function convertToWithId(src: InjectionInstanceWithMeta>): RunnableSyncWithId;
-
- function convertToWithId(src: InjectionInstanceWithMeta> | InjectionInstanceWithMeta>): RunnableWithId | RunnableSyncWithId {
- return ({
- id: src.meta.id,
- run: src.instance.run,
- runAfter: [src.instance.runAfter]
- .flat()
- .filter(isDefined)
- .map(convertToWithIdPlain),
- });
- }
-
- return convertToWithId;
+ return ((src) => convert(src.meta, src.instance)) as ConvertToWithId;
};