mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Simplify extension dependency injection
- Has better typing - Removes use of unnusual unique symbol Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
1 parent
e3c0bc34fd
commit
a045006a02
9 files changed
+96
-189
No files matched your search
@@ -1,43 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import type { Writable } from "type-fest";
|
||||
import catalogCategoryRegistryInjectable from "../../common/catalog/category-registry.injectable";
|
||||
import loggerInjectable from "../../common/logger.injectable";
|
||||
import { createExtensionInstanceInjectionToken } from "../../extensions/extension-loader/create-extension-instance.token";
|
||||
import fileSystemProvisionerStoreInjectable from "../../extensions/extension-loader/file-system-provisioner-store/file-system-provisioner-store.injectable";
|
||||
import { lensExtensionDependencies } from "../../extensions/lens-extension";
|
||||
import type { LensRendererExtensionDependencies } from "../../extensions/lens-extension-set-dependencies";
|
||||
import type { LensRendererExtension } from "../../extensions/lens-renderer-extension";
|
||||
import catalogEntityRegistryInjectable from "../api/catalog/entity/registry.injectable";
|
||||
import getExtensionPageParametersInjectable from "../routes/get-extension-page-parameters.injectable";
|
||||
import navigateToRouteInjectable from "../routes/navigate-to-route.injectable";
|
||||
import routesInjectable from "../routes/routes.injectable";
|
||||
|
||||
const createExtensionInstanceInjectable = getInjectable({
|
||||
id: "create-extension-instance",
|
||||
instantiate: (di) => {
|
||||
const deps: LensRendererExtensionDependencies = {
|
||||
categoryRegistry: di.inject(catalogCategoryRegistryInjectable),
|
||||
entityRegistry: di.inject(catalogEntityRegistryInjectable),
|
||||
fileSystemProvisionerStore: di.inject(fileSystemProvisionerStoreInjectable),
|
||||
getExtensionPageParameters: di.inject(getExtensionPageParametersInjectable),
|
||||
navigateToRoute: di.inject(navigateToRouteInjectable),
|
||||
routes: di.inject(routesInjectable),
|
||||
logger: di.inject(loggerInjectable),
|
||||
};
|
||||
|
||||
return (ExtensionClass, extension) => {
|
||||
const instance = new ExtensionClass(extension as any) as LensRendererExtension;
|
||||
|
||||
(instance as Writable<LensRendererExtension>)[lensExtensionDependencies] = deps;
|
||||
|
||||
return instance;
|
||||
};
|
||||
},
|
||||
injectionToken: createExtensionInstanceInjectionToken,
|
||||
});
|
||||
|
||||
export default createExtensionInstanceInjectable;
|
||||
Reference in new issue
Block a user