From 83950f46ce769141338988c6b97a385e875e5f9d Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 1 Mar 2023 08:23:53 -0500 Subject: [PATCH] Simplify convertToWithIdWith Signed-off-by: Sebastian Malton --- packages/core/src/common/runnable/helpers.ts | 43 +++++++------------- 1 file changed, 15 insertions(+), 28 deletions(-) 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; };