chore: move PlatformSpecific back to core

- This is needed in 6.4 and this will make that transition easier

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton committed 2023-04-05 16:17:50 -04:00
1 parent 0bc3d9f8b2
commit 75a1b0a983
3 files changed
+35 -21

No files matched your search

@@ -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<T> {
instantiate: () => T;
readonly platform: NodeJS.Platform;
}
const platformSpecificVersionInjectable = getInjectable({
id: "platform-specific-version",
instantiate: (di: DiContainerForInjection) => {
const targetPlatform = di.inject(platformInjectable);
return <T>(token: InjectionToken<PlatformSpecific<T>, 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;