mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
chore: Simplify extension dependency injection
- Has better typing
- Removes use of unnusual unique symbol
- Fix welcome banner tests
- Update associated snapshots
- Start converting custom column tests to use ApplicationBuilder
- Remove old and unnused RecursiveTreeView
- Introduce new TreeView for use in CatalogMenu to fix tests
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
1 parent
5db8fc1342
commit
82bf67cc9e
70 files changed
+7110
-2945
No files matched your search
@@ -1,37 +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 loggerInjectable from "../../common/logger.injectable";
|
||||
import { createExtensionInstanceInjectionToken } from "../../extensions/extension-loader/create-extension-instance.token";
|
||||
import ensureHashedDirectoryForExtensionInjectable from "../../extensions/extension-loader/file-system-provisioner-store/ensure-hashed-directory-for-extension.injectable";
|
||||
import { lensExtensionDependencies } from "../../extensions/lens-extension";
|
||||
import type { LensMainExtensionDependencies } from "../../extensions/lens-extension-set-dependencies";
|
||||
import type { LensMainExtension } from "../../extensions/lens-main-extension";
|
||||
import catalogEntityRegistryInjectable from "../catalog/entity-registry.injectable";
|
||||
import navigateForExtensionInjectable from "../start-main-application/lens-window/navigate-for-extension.injectable";
|
||||
|
||||
const createExtensionInstanceInjectable = getInjectable({
|
||||
id: "create-extension-instance",
|
||||
instantiate: (di) => {
|
||||
const deps: LensMainExtensionDependencies = {
|
||||
ensureHashedDirectoryForExtension: di.inject(ensureHashedDirectoryForExtensionInjectable),
|
||||
entityRegistry: di.inject(catalogEntityRegistryInjectable),
|
||||
navigate: di.inject(navigateForExtensionInjectable),
|
||||
logger: di.inject(loggerInjectable),
|
||||
};
|
||||
|
||||
return (ExtensionClass, extension) => {
|
||||
const instance = new ExtensionClass(extension as any) as LensMainExtension;
|
||||
|
||||
(instance as Writable<LensMainExtension>)[lensExtensionDependencies] = deps;
|
||||
|
||||
return instance;
|
||||
};
|
||||
},
|
||||
injectionToken: createExtensionInstanceInjectionToken,
|
||||
});
|
||||
|
||||
export default createExtensionInstanceInjectable;
|
||||
@@ -10,15 +10,15 @@ import { noop } from "@k8slens/utilities";
|
||||
import type { LensProtocolRouterMain } from "../lens-protocol-router-main/lens-protocol-router-main";
|
||||
import { getDiForUnitTesting } from "../../getDiForUnitTesting";
|
||||
import lensProtocolRouterMainInjectable from "../lens-protocol-router-main/lens-protocol-router-main.injectable";
|
||||
import { LensExtension } from "../../../extensions/lens-extension";
|
||||
import type { ObservableMap } from "mobx";
|
||||
import { runInAction } from "mobx";
|
||||
import extensionInstancesInjectable from "../../../extensions/extension-loader/extension-instances.injectable";
|
||||
import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||
import broadcastMessageInjectable from "../../../common/ipc/broadcast-message.injectable";
|
||||
import type { LensExtensionId } from "@k8slens/legacy-extensions";
|
||||
import type { LensExtensionState } from "../../../features/extensions/enabled/common/state.injectable";
|
||||
import enabledExtensionsStateInjectable from "../../../features/extensions/enabled/common/state.injectable";
|
||||
import type { LegacyLensExtension, LensExtensionId } from "@k8slens/legacy-extensions";
|
||||
import { LensMainExtension } from "../../../extensions/lens-main-extension";
|
||||
|
||||
function throwIfDefined(val: any): void {
|
||||
if (val != null) {
|
||||
@@ -27,7 +27,7 @@ function throwIfDefined(val: any): void {
|
||||
}
|
||||
|
||||
describe("protocol router tests", () => {
|
||||
let extensionInstances: ObservableMap<LensExtensionId, LensExtension>;
|
||||
let extensionInstances: ObservableMap<LensExtensionId, LegacyLensExtension>;
|
||||
let lpr: LensProtocolRouterMain;
|
||||
let enabledExtensions: ObservableMap<LensExtensionId, LensExtensionState>;
|
||||
let broadcastMessageMock: jest.Mock;
|
||||
@@ -73,7 +73,7 @@ describe("protocol router tests", () => {
|
||||
|
||||
it("should broadcast external route when called with valid host", async () => {
|
||||
const extId = uuid.v4();
|
||||
const ext = new LensExtension({
|
||||
const ext = new LensMainExtension({
|
||||
id: extId,
|
||||
manifestPath: "/foo/bar",
|
||||
manifest: {
|
||||
@@ -149,7 +149,7 @@ describe("protocol router tests", () => {
|
||||
let called: any = 0;
|
||||
|
||||
const extId = uuid.v4();
|
||||
const ext = new LensExtension({
|
||||
const ext = new LensMainExtension({
|
||||
id: extId,
|
||||
manifestPath: "/foo/bar",
|
||||
manifest: {
|
||||
@@ -190,7 +190,7 @@ describe("protocol router tests", () => {
|
||||
|
||||
{
|
||||
const extId = uuid.v4();
|
||||
const ext = new LensExtension({
|
||||
const ext = new LensMainExtension({
|
||||
id: extId,
|
||||
manifestPath: "/foo/bar",
|
||||
manifest: {
|
||||
@@ -216,7 +216,7 @@ describe("protocol router tests", () => {
|
||||
|
||||
{
|
||||
const extId = uuid.v4();
|
||||
const ext = new LensExtension({
|
||||
const ext = new LensMainExtension({
|
||||
id: extId,
|
||||
manifestPath: "/foo/bar",
|
||||
manifest: {
|
||||
|
||||
Reference in new issue
Block a user