diff --git a/packages/core/src/common/utils/platform-specific-version.injectable.ts b/packages/core/src/common/utils/platform-specific-version.injectable.ts new file mode 100644 index 0000000000..71f611216d --- /dev/null +++ b/packages/core/src/common/utils/platform-specific-version.injectable.ts @@ -0,0 +1,35 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import type { DiContainerForInjection, InjectionToken } from "@ogre-tools/injectable"; +import { getInjectable } from "@ogre-tools/injectable"; +import platformInjectable from "../vars/platform.injectable"; + +export interface PlatformSpecific { + instantiate: () => T; + readonly platform: NodeJS.Platform; +} + +const platformSpecificVersionInjectable = getInjectable({ + id: "platform-specific-version", + instantiate: (di: DiContainerForInjection) => { + const targetPlatform = di.inject(platformInjectable); + + return (token: InjectionToken, void>) => { + const impls = di.injectMany(token); + + const impl = impls.find(impl => impl.platform === targetPlatform); + + if (!impl) { + throw new Error(`No platform specific implementation of "${token.id}" found`); + } + + return impl.instantiate(); + }; + }, +}); + +export default platformSpecificVersionInjectable; + diff --git a/packages/utility-features/utilities/index.ts b/packages/utility-features/utilities/index.ts index b9e2b176b8..dc8eacdfdd 100644 --- a/packages/utility-features/utilities/index.ts +++ b/packages/utility-features/utilities/index.ts @@ -29,7 +29,6 @@ export * from "./src/noop"; export * from "./src/object"; export * from "./src/observable-crate"; export * from "./src/on-keyboard-shortcut"; -export * from "./src/platform-specific-version" export * from "./src/prevDefault"; export * from "./src/readableStream"; export * from "./src/readonly"; diff --git a/packages/utility-features/utilities/src/platform-specific-version.ts b/packages/utility-features/utilities/src/platform-specific-version.ts deleted file mode 100644 index adbc9971cc..0000000000 --- a/packages/utility-features/utilities/src/platform-specific-version.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -export interface PlatformSpecific { - instantiate: () => T; - readonly platform: NodeJS.Platform | ""; -} - -export const getPlatformSpecificFor = (targetPlatform: NodeJS.Platform, id: string) => (specificImplementations: PlatformSpecific[]): T => { - const impl = specificImplementations.find(impl => impl.platform === targetPlatform) - ?? specificImplementations.find(impl => impl.platform === ""); - - if (!impl) { - throw new Error(`No platform specific implementation of "${id}" found`); - } - - return impl.instantiate(); -}