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:
Sebastian Malton committed 2023-04-06 09:05:27 -04:00
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: {