1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Merge pull request #4612 from jansav/update-injectable

Adapt to recent simplifications in injectable
This commit is contained in:
Janne Savolainen 2021-12-28 11:51:11 +02:00 committed by GitHub
commit 41aacb3db2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
47 changed files with 280 additions and 365 deletions

View File

@ -196,8 +196,8 @@
"@hapi/call": "^8.0.1", "@hapi/call": "^8.0.1",
"@hapi/subtext": "^7.0.3", "@hapi/subtext": "^7.0.3",
"@kubernetes/client-node": "^0.16.1", "@kubernetes/client-node": "^0.16.1",
"@ogre-tools/injectable": "1.5.0", "@ogre-tools/injectable": "2.0.0",
"@ogre-tools/injectable-react": "1.5.2", "@ogre-tools/injectable-react": "2.0.0",
"@sentry/electron": "^2.5.4", "@sentry/electron": "^2.5.4",
"@sentry/integrations": "^6.15.0", "@sentry/integrations": "^6.15.0",
"abort-controller": "^3.0.0", "abort-controller": "^3.0.0",
@ -265,7 +265,7 @@
"ws": "^7.5.5" "ws": "^7.5.5"
}, },
"devDependencies": { "devDependencies": {
"@async-fn/jest": "^1.5.0", "@async-fn/jest": "1.5.3",
"@material-ui/core": "^4.12.3", "@material-ui/core": "^4.12.3",
"@material-ui/icons": "^4.11.2", "@material-ui/icons": "^4.11.2",
"@material-ui/lab": "^4.0.0-alpha.60", "@material-ui/lab": "^4.0.0-alpha.60",

View File

@ -18,14 +18,13 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable"; import { lifecycleEnum } from "@ogre-tools/injectable";
import { ExtensionLoader } from "./extension-loader"; import { ExtensionLoader } from "./extension-loader";
const extensionLoaderInjectable: Injectable<ExtensionLoader> = { const extensionLoaderInjectable = getInjectable({
getDependencies: () => ({}),
instantiate: () => new ExtensionLoader(), instantiate: () => new ExtensionLoader(),
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default extensionLoaderInjectable; export default extensionLoaderInjectable;

View File

@ -18,24 +18,18 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import { Injectable, lifecycleEnum } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { computed, IComputedValue } from "mobx"; import { computed } from "mobx";
import type { LensExtension } from "./lens-extension";
import type { ExtensionLoader } from "./extension-loader";
import extensionLoaderInjectable from "./extension-loader/extension-loader.injectable"; import extensionLoaderInjectable from "./extension-loader/extension-loader.injectable";
const extensionsInjectable: Injectable< const extensionsInjectable = getInjectable({
IComputedValue<LensExtension[]>, instantiate: (di) => {
{ extensionLoader: ExtensionLoader } const extensionLoader = di.inject(extensionLoaderInjectable);
> = {
getDependencies: di => ({ return computed(() => extensionLoader.enabledExtensionInstances);
extensionLoader: di.inject(extensionLoaderInjectable), },
}),
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
});
instantiate: ({ extensionLoader }) =>
computed(() => extensionLoader.enabledExtensionInstances),
};
export default extensionsInjectable; export default extensionsInjectable;

View File

@ -0,0 +1,33 @@
/**
* Copyright (c) 2021 OpenLens Authors
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import type { IComputedValue } from "mobx";
import extensionsInjectable from "./extensions.injectable";
import type { LensMainExtension } from "./lens-main-extension";
const mainExtensionsInjectable = getInjectable({
lifecycle: lifecycleEnum.singleton,
instantiate: (di) =>
di.inject(extensionsInjectable) as IComputedValue<LensMainExtension[]>,
});
export default mainExtensionsInjectable;

View File

@ -18,24 +18,20 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import { Injectable, lifecycleEnum } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { computed, IComputedValue } from "mobx"; import { computed } from "mobx";
import type { LensMainExtension } from "../../extensions/lens-main-extension"; import mainExtensionsInjectable from "../../extensions/main-extensions.injectable";
import extensionsInjectable from "../../extensions/extensions.injectable";
import type { MenuRegistration } from "./menu-registration";
const electronMenuItemsInjectable: Injectable< const electronMenuItemsInjectable = getInjectable({
IComputedValue<MenuRegistration[]>,
{ extensions: IComputedValue<LensMainExtension[]> }
> = {
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
getDependencies: di => ({ instantiate: (di) => {
extensions: di.inject(extensionsInjectable), const extensions = di.inject(mainExtensionsInjectable);
}),
instantiate: ({ extensions }) => return computed(() =>
computed(() => extensions.get().flatMap(extension => extension.appMenus)), extensions.get().flatMap((extension) => extension.appMenus),
}; );
},
});
export default electronMenuItemsInjectable; export default electronMenuItemsInjectable;

View File

@ -24,8 +24,8 @@ import electronMenuItemsInjectable from "./electron-menu-items.injectable";
import type { IComputedValue } from "mobx"; import type { IComputedValue } from "mobx";
import { computed, ObservableMap, runInAction } from "mobx"; import { computed, ObservableMap, runInAction } from "mobx";
import type { MenuRegistration } from "./menu-registration"; import type { MenuRegistration } from "./menu-registration";
import extensionsInjectable from "../../extensions/extensions.injectable";
import { getDiForUnitTesting } from "../getDiForUnitTesting"; import { getDiForUnitTesting } from "../getDiForUnitTesting";
import mainExtensionsInjectable from "../../extensions/main-extensions.injectable";
describe("electron-menu-items", () => { describe("electron-menu-items", () => {
let di: ConfigurableDependencyInjectionContainer; let di: ConfigurableDependencyInjectionContainer;
@ -38,8 +38,8 @@ describe("electron-menu-items", () => {
extensionsStub = new ObservableMap(); extensionsStub = new ObservableMap();
di.override( di.override(
extensionsInjectable, mainExtensionsInjectable,
computed(() => [...extensionsStub.values()]), () => computed(() => [...extensionsStub.values()]),
); );
electronMenuItems = di.inject(electronMenuItemsInjectable); electronMenuItems = di.inject(electronMenuItemsInjectable);

View File

@ -18,23 +18,17 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable";
import extensionLoaderInjectable from "../../../extensions/extension-loader/extension-loader.injectable"; import extensionLoaderInjectable from "../../../extensions/extension-loader/extension-loader.injectable";
import type { Dependencies } from "./lens-protocol-router-main";
import { LensProtocolRouterMain } from "./lens-protocol-router-main"; import { LensProtocolRouterMain } from "./lens-protocol-router-main";
const lensProtocolRouterMainInjectable: Injectable< const lensProtocolRouterMainInjectable = getInjectable({
LensProtocolRouterMain, instantiate: (di) =>
Dependencies new LensProtocolRouterMain({
> = { extensionLoader: di.inject(extensionLoaderInjectable),
getDependencies: di => ({ }),
extensionLoader: di.inject(extensionLoaderInjectable),
}),
instantiate: dependencies => new LensProtocolRouterMain(dependencies),
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default lensProtocolRouterMainInjectable; export default lensProtocolRouterMainInjectable;

View File

@ -51,7 +51,7 @@ function checkHost<Query>(url: URLParse<Query>): boolean {
} }
} }
export interface Dependencies { interface Dependencies {
extensionLoader: ExtensionLoader extensionLoader: ExtensionLoader
} }

View File

@ -18,20 +18,19 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable"; import { attemptInstallByInfo } from "./attempt-install-by-info";
import { attemptInstallByInfo, ExtensionInfo } from "./attempt-install-by-info";
import attemptInstallInjectable from "../attempt-install/attempt-install.injectable"; import attemptInstallInjectable from "../attempt-install/attempt-install.injectable";
import getBaseRegistryUrlInjectable from "../get-base-registry-url/get-base-registry-url.injectable"; import getBaseRegistryUrlInjectable from "../get-base-registry-url/get-base-registry-url.injectable";
const attemptInstallByInfoInjectable: Injectable<(extensionInfo: ExtensionInfo) => Promise<void>, {}> = { const attemptInstallByInfoInjectable = getInjectable({
getDependencies: di => ({ instantiate: (di) =>
attemptInstall: di.inject(attemptInstallInjectable), attemptInstallByInfo({
getBaseRegistryUrl: di.inject(getBaseRegistryUrlInjectable), attemptInstall: di.inject(attemptInstallInjectable),
}), getBaseRegistryUrl: di.inject(getBaseRegistryUrlInjectable),
}),
instantiate: attemptInstallByInfo,
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default attemptInstallByInfoInjectable; export default attemptInstallByInfoInjectable;

View File

@ -35,7 +35,7 @@ export interface ExtensionInfo {
requireConfirmation?: boolean; requireConfirmation?: boolean;
} }
export interface Dependencies { interface Dependencies {
attemptInstall: (request: InstallRequest, d: ExtendableDisposer) => Promise<void>; attemptInstall: (request: InstallRequest, d: ExtendableDisposer) => Promise<void>;
getBaseRegistryUrl: () => Promise<string>; getBaseRegistryUrl: () => Promise<string>;
} }

View File

@ -18,29 +18,21 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable";
import type { ExtendableDisposer } from "../../../../common/utils";
import extensionLoaderInjectable from "../../../../extensions/extension-loader/extension-loader.injectable"; import extensionLoaderInjectable from "../../../../extensions/extension-loader/extension-loader.injectable";
import uninstallExtensionInjectable from "../uninstall-extension/uninstall-extension.injectable"; import uninstallExtensionInjectable from "../uninstall-extension/uninstall-extension.injectable";
import type { Dependencies } from "./attempt-install";
import { attemptInstall } from "./attempt-install"; import { attemptInstall } from "./attempt-install";
import type { InstallRequest } from "./install-request";
import unpackExtensionInjectable from "./unpack-extension/unpack-extension.injectable"; import unpackExtensionInjectable from "./unpack-extension/unpack-extension.injectable";
const attemptInstallInjectable: Injectable< const attemptInstallInjectable = getInjectable({
(request: InstallRequest, d?: ExtendableDisposer) => Promise<void>, instantiate: (di) =>
Dependencies attemptInstall({
> = { extensionLoader: di.inject(extensionLoaderInjectable),
getDependencies: di => ({ uninstallExtension: di.inject(uninstallExtensionInjectable),
extensionLoader: di.inject(extensionLoaderInjectable), unpackExtension: di.inject(unpackExtensionInjectable),
uninstallExtension: di.inject(uninstallExtensionInjectable), }),
unpackExtension: di.inject(unpackExtensionInjectable),
}),
instantiate: attemptInstall,
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default attemptInstallInjectable; export default attemptInstallInjectable;

View File

@ -41,7 +41,7 @@ import {
import { getExtensionDestFolder } from "./get-extension-dest-folder/get-extension-dest-folder"; import { getExtensionDestFolder } from "./get-extension-dest-folder/get-extension-dest-folder";
import type { InstallRequest } from "./install-request"; import type { InstallRequest } from "./install-request";
export interface Dependencies { interface Dependencies {
extensionLoader: ExtensionLoader; extensionLoader: ExtensionLoader;
uninstallExtension: (id: LensExtensionId) => Promise<boolean>; uninstallExtension: (id: LensExtensionId) => Promise<boolean>;
unpackExtension: ( unpackExtension: (

View File

@ -18,26 +18,18 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable"; import { lifecycleEnum } from "@ogre-tools/injectable";
import { Dependencies, unpackExtension } from "./unpack-extension"; import { unpackExtension } from "./unpack-extension";
import type { InstallRequestValidated } from "../create-temp-files-and-validate/create-temp-files-and-validate";
import type { Disposer } from "../../../../../common/utils";
import extensionLoaderInjectable from "../../../../../extensions/extension-loader/extension-loader.injectable"; import extensionLoaderInjectable from "../../../../../extensions/extension-loader/extension-loader.injectable";
const unpackExtensionInjectable: Injectable< const unpackExtensionInjectable = getInjectable({
( instantiate: (di) =>
request: InstallRequestValidated, unpackExtension({
disposeDownloading?: Disposer, extensionLoader: di.inject(extensionLoaderInjectable),
) => Promise<void>, }),
Dependencies
> = {
getDependencies: di => ({
extensionLoader: di.inject(extensionLoaderInjectable),
}),
instantiate: unpackExtension,
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default unpackExtensionInjectable; export default unpackExtensionInjectable;

View File

@ -32,7 +32,7 @@ import fse from "fs-extra";
import { when } from "mobx"; import { when } from "mobx";
import React from "react"; import React from "react";
export interface Dependencies { interface Dependencies {
extensionLoader: ExtensionLoader extensionLoader: ExtensionLoader
} }

View File

@ -18,21 +18,17 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable"; import { attemptInstalls } from "./attempt-installs";
import { attemptInstalls, Dependencies } from "./attempt-installs";
import attemptInstallInjectable from "../attempt-install/attempt-install.injectable"; import attemptInstallInjectable from "../attempt-install/attempt-install.injectable";
const attemptInstallsInjectable: Injectable< const attemptInstallsInjectable = getInjectable({
(filePaths: string[]) => Promise<void>, instantiate: (di) =>
Dependencies attemptInstalls({
> = { attemptInstall: di.inject(attemptInstallInjectable),
getDependencies: di => ({ }),
attemptInstall: di.inject(attemptInstallInjectable),
}),
instantiate: attemptInstalls,
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default attemptInstallsInjectable; export default attemptInstallsInjectable;

View File

@ -22,7 +22,7 @@ import { readFileNotify } from "../read-file-notify/read-file-notify";
import path from "path"; import path from "path";
import type { InstallRequest } from "../attempt-install/install-request"; import type { InstallRequest } from "../attempt-install/install-request";
export interface Dependencies { interface Dependencies {
attemptInstall: (request: InstallRequest) => Promise<void>; attemptInstall: (request: InstallRequest) => Promise<void>;
} }

View File

@ -18,25 +18,17 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable"; import { confirmUninstallExtension } from "./confirm-uninstall-extension";
import {
confirmUninstallExtension,
Dependencies,
} from "./confirm-uninstall-extension";
import type { InstalledExtension } from "../../../../extensions/extension-discovery";
import uninstallExtensionInjectable from "../uninstall-extension/uninstall-extension.injectable"; import uninstallExtensionInjectable from "../uninstall-extension/uninstall-extension.injectable";
const confirmUninstallExtensionInjectable: Injectable< const confirmUninstallExtensionInjectable = getInjectable({
(extension: InstalledExtension) => Promise<void>, instantiate: (di) =>
Dependencies confirmUninstallExtension({
> = { uninstallExtension: di.inject(uninstallExtensionInjectable),
getDependencies: di => ({ }),
uninstallExtension: di.inject(uninstallExtensionInjectable),
}),
instantiate: confirmUninstallExtension,
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default confirmUninstallExtensionInjectable; export default confirmUninstallExtensionInjectable;

View File

@ -24,8 +24,8 @@ import type { LensExtensionId } from "../../../../extensions/lens-extension";
import { extensionDisplayName } from "../../../../extensions/lens-extension"; import { extensionDisplayName } from "../../../../extensions/lens-extension";
import { ConfirmDialog } from "../../confirm-dialog"; import { ConfirmDialog } from "../../confirm-dialog";
export interface Dependencies { interface Dependencies {
uninstallExtension: (id: LensExtensionId) => Promise<void>; uninstallExtension: (id: LensExtensionId) => Promise<boolean>;
} }
export const confirmUninstallExtension = export const confirmUninstallExtension =

View File

@ -18,23 +18,17 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable";
import extensionLoaderInjectable from "../../../../extensions/extension-loader/extension-loader.injectable"; import extensionLoaderInjectable from "../../../../extensions/extension-loader/extension-loader.injectable";
import type { LensExtensionId } from "../../../../extensions/lens-extension"; import { disableExtension } from "./disable-extension";
import { Dependencies, disableExtension } from "./disable-extension";
const disableExtensionInjectable: Injectable< const disableExtensionInjectable = getInjectable({
(id: LensExtensionId) => void, instantiate: (di) =>
Dependencies disableExtension({
> = { extensionLoader: di.inject(extensionLoaderInjectable),
getDependencies: di => ({ }),
extensionLoader: di.inject(extensionLoaderInjectable),
}),
instantiate: disableExtension,
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default disableExtensionInjectable; export default disableExtensionInjectable;

View File

@ -21,7 +21,7 @@
import type { LensExtensionId } from "../../../../extensions/lens-extension"; import type { LensExtensionId } from "../../../../extensions/lens-extension";
import type { ExtensionLoader } from "../../../../extensions/extension-loader"; import type { ExtensionLoader } from "../../../../extensions/extension-loader";
export interface Dependencies { interface Dependencies {
extensionLoader: ExtensionLoader; extensionLoader: ExtensionLoader;
} }

View File

@ -18,23 +18,17 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable";
import extensionLoaderInjectable from "../../../../extensions/extension-loader/extension-loader.injectable"; import extensionLoaderInjectable from "../../../../extensions/extension-loader/extension-loader.injectable";
import type { LensExtensionId } from "../../../../extensions/lens-extension"; import { enableExtension } from "./enable-extension";
import { Dependencies, enableExtension } from "./enable-extension";
const enableExtensionInjectable: Injectable< const enableExtensionInjectable = getInjectable({
(id: LensExtensionId) => void, instantiate: (di) =>
Dependencies enableExtension({
> = { extensionLoader: di.inject(extensionLoaderInjectable),
getDependencies: di => ({ }),
extensionLoader: di.inject(extensionLoaderInjectable),
}),
instantiate: enableExtension,
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default enableExtensionInjectable; export default enableExtensionInjectable;

View File

@ -21,7 +21,7 @@
import type { LensExtensionId } from "../../../../extensions/lens-extension"; import type { LensExtensionId } from "../../../../extensions/lens-extension";
import type { ExtensionLoader } from "../../../../extensions/extension-loader"; import type { ExtensionLoader } from "../../../../extensions/extension-loader";
export interface Dependencies { interface Dependencies {
extensionLoader: ExtensionLoader; extensionLoader: ExtensionLoader;
} }

View File

@ -19,18 +19,20 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import { Injectable, lifecycleEnum } from "@ogre-tools/injectable"; import {
getInjectable,
lifecycleEnum,
} from "@ogre-tools/injectable";
import { UserStore } from "../../../../common/user-store"; import { UserStore } from "../../../../common/user-store";
import { Dependencies, getBaseRegistryUrl } from "./get-base-registry-url"; import { getBaseRegistryUrl } from "./get-base-registry-url";
const getBaseRegistryUrlInjectable: Injectable<() => Promise<string>, Dependencies> = { const getBaseRegistryUrlInjectable = getInjectable({
getDependencies: () => ({ instantiate: () => getBaseRegistryUrl({
// TODO: use injection // TODO: use injection
getRegistryUrlPreference: () => UserStore.getInstance().extensionRegistryUrl, getRegistryUrlPreference: () => UserStore.getInstance().extensionRegistryUrl,
}), }),
instantiate: getBaseRegistryUrl,
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default getBaseRegistryUrlInjectable; export default getBaseRegistryUrlInjectable;

View File

@ -24,7 +24,7 @@ import { defaultExtensionRegistryUrl, ExtensionRegistry, ExtensionRegistryLocati
import { promiseExecFile } from "../../../utils"; import { promiseExecFile } from "../../../utils";
import { Notifications } from "../../notifications"; import { Notifications } from "../../notifications";
export interface Dependencies { interface Dependencies {
getRegistryUrlPreference: () => ExtensionRegistry, getRegistryUrlPreference: () => ExtensionRegistry,
} }

View File

@ -18,25 +18,19 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable";
import attemptInstallInjectable from "../attempt-install/attempt-install.injectable"; import attemptInstallInjectable from "../attempt-install/attempt-install.injectable";
import type { Dependencies } from "./install-from-input";
import { installFromInput } from "./install-from-input"; import { installFromInput } from "./install-from-input";
import attemptInstallByInfoInjectable import attemptInstallByInfoInjectable from "../attempt-install-by-info/attempt-install-by-info.injectable";
from "../attempt-install-by-info/attempt-install-by-info.injectable";
const installFromInputInjectable: Injectable< const installFromInputInjectable = getInjectable({
(input: string) => Promise<void>, instantiate: (di) =>
Dependencies installFromInput({
> = { attemptInstall: di.inject(attemptInstallInjectable),
getDependencies: di => ({ attemptInstallByInfo: di.inject(attemptInstallByInfoInjectable),
attemptInstall: di.inject(attemptInstallInjectable), }),
attemptInstallByInfo: di.inject(attemptInstallByInfoInjectable),
}),
instantiate: installFromInput,
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default installFromInputInjectable; export default installFromInputInjectable;

View File

@ -30,7 +30,7 @@ import { readFileNotify } from "../read-file-notify/read-file-notify";
import type { InstallRequest } from "../attempt-install/install-request"; import type { InstallRequest } from "../attempt-install/install-request";
import type { ExtensionInfo } from "../attempt-install-by-info/attempt-install-by-info"; import type { ExtensionInfo } from "../attempt-install-by-info/attempt-install-by-info";
export interface Dependencies { interface Dependencies {
attemptInstall: (request: InstallRequest, disposer?: ExtendableDisposer) => Promise<void>, attemptInstall: (request: InstallRequest, disposer?: ExtendableDisposer) => Promise<void>,
attemptInstallByInfo: (extensionInfo: ExtensionInfo) => Promise<void> attemptInstallByInfo: (extensionInfo: ExtensionInfo) => Promise<void>
} }

View File

@ -18,18 +18,17 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable"; import { installFromSelectFileDialog } from "./install-from-select-file-dialog";
import { Dependencies, installFromSelectFileDialog } from "./install-from-select-file-dialog";
import attemptInstallsInjectable from "../attempt-installs/attempt-installs.injectable"; import attemptInstallsInjectable from "../attempt-installs/attempt-installs.injectable";
const installFromSelectFileDialogInjectable: Injectable<() => Promise<void>, Dependencies> = { const installFromSelectFileDialogInjectable = getInjectable({
getDependencies: di => ({ instantiate: (di) =>
attemptInstalls: di.inject(attemptInstallsInjectable), installFromSelectFileDialog({
}), attemptInstalls: di.inject(attemptInstallsInjectable),
}),
instantiate: installFromSelectFileDialog,
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default installFromSelectFileDialogInjectable; export default installFromSelectFileDialogInjectable;

View File

@ -22,7 +22,7 @@ import { dialog } from "../../../remote-helpers";
import { AppPaths } from "../../../../common/app-paths"; import { AppPaths } from "../../../../common/app-paths";
import { supportedExtensionFormats } from "../supported-extension-formats"; import { supportedExtensionFormats } from "../supported-extension-formats";
export interface Dependencies { interface Dependencies {
attemptInstalls: (filePaths: string[]) => Promise<void> attemptInstalls: (filePaths: string[]) => Promise<void>
} }

View File

@ -18,21 +18,17 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable"; import { installOnDrop } from "./install-on-drop";
import { Dependencies, installOnDrop } from "./install-on-drop";
import attemptInstallsInjectable from "../attempt-installs/attempt-installs.injectable"; import attemptInstallsInjectable from "../attempt-installs/attempt-installs.injectable";
const installOnDropInjectable: Injectable< const installOnDropInjectable = getInjectable({
(files: File[]) => Promise<void>, instantiate: (di) =>
Dependencies installOnDrop({
> = { attemptInstalls: di.inject(attemptInstallsInjectable),
getDependencies: di => ({ }),
attemptInstalls: di.inject(attemptInstallsInjectable),
}),
instantiate: installOnDrop,
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default installOnDropInjectable; export default installOnDropInjectable;

View File

@ -20,7 +20,7 @@
*/ */
import logger from "../../../../main/logger"; import logger from "../../../../main/logger";
export interface Dependencies { interface Dependencies {
attemptInstalls: (filePaths: string[]) => Promise<void>; attemptInstalls: (filePaths: string[]) => Promise<void>;
} }

View File

@ -18,23 +18,17 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable"; import extensionLoaderInjectable from "../../../../extensions/extension-loader/extension-loader.injectable";
import type { LensExtensionId } from "../../../../extensions/lens-extension"; import { uninstallExtension } from "./uninstall-extension";
import extensionLoaderInjectable
from "../../../../extensions/extension-loader/extension-loader.injectable";
import { Dependencies, uninstallExtension } from "./uninstall-extension";
const uninstallExtensionInjectable: Injectable< const uninstallExtensionInjectable = getInjectable({
(extensionId: LensExtensionId) => Promise<boolean>, instantiate: (di) =>
Dependencies uninstallExtension({
> = { extensionLoader: di.inject(extensionLoaderInjectable),
getDependencies: di => ({ }),
extensionLoader: di.inject(extensionLoaderInjectable),
}),
instantiate: uninstallExtension,
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default uninstallExtensionInjectable; export default uninstallExtensionInjectable;

View File

@ -28,7 +28,7 @@ import React from "react";
import { when } from "mobx"; import { when } from "mobx";
import { getMessageFromError } from "../get-message-from-error/get-message-from-error"; import { getMessageFromError } from "../get-message-from-error/get-message-from-error";
export interface Dependencies { interface Dependencies {
extensionLoader: ExtensionLoader extensionLoader: ExtensionLoader
} }

View File

@ -18,24 +18,18 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import { Injectable, lifecycleEnum } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { computed, IComputedValue } from "mobx"; import { computed } from "mobx";
import type { InstalledExtension } from "../../../../extensions/extension-discovery";
import type { ExtensionLoader } from "../../../../extensions/extension-loader";
import extensionLoaderInjectable from "../../../../extensions/extension-loader/extension-loader.injectable"; import extensionLoaderInjectable from "../../../../extensions/extension-loader/extension-loader.injectable";
const userExtensionsInjectable: Injectable< const userExtensionsInjectable = getInjectable({
IComputedValue<InstalledExtension[]>,
{ extensionLoader: ExtensionLoader }
> = {
getDependencies: di => ({
extensionLoader: di.inject(extensionLoaderInjectable),
}),
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
instantiate: ({ extensionLoader }) => instantiate: (di) => {
computed(() => [...extensionLoader.userExtensions.values()]), const extensionLoader = di.inject(extensionLoaderInjectable);
};
return computed(() => [...extensionLoader.userExtensions.values()]);
},
});
export default userExtensionsInjectable; export default userExtensionsInjectable;

View File

@ -18,15 +18,12 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { ApiManager } from "../../../../common/k8s-api/api-manager";
import { apiManager } from "../../../../common/k8s-api/api-manager"; import { apiManager } from "../../../../common/k8s-api/api-manager";
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable";
const apiManagerInjectable: Injectable<ApiManager> = { const apiManagerInjectable = getInjectable({
getDependencies: () => ({}),
instantiate: () => apiManager, instantiate: () => apiManager,
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default apiManagerInjectable; export default apiManagerInjectable;

View File

@ -19,23 +19,17 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable";
import type { Cluster } from "../../../../main/cluster";
import clusterInjectable from "./cluster.injectable"; import clusterInjectable from "./cluster.injectable";
interface Dependencies { const clusterNameInjectable = getInjectable({
cluster: Cluster; instantiate: (di) => {
} const cluster = di.inject(clusterInjectable);
const clusterNameInjectable: Injectable<string | undefined, Dependencies> = { return cluster?.name;
getDependencies: di => ({ },
cluster: di.inject(clusterInjectable),
}),
instantiate: ({ cluster }) => cluster?.name,
lifecycle: lifecycleEnum.transient, lifecycle: lifecycleEnum.transient,
}; });
export default clusterNameInjectable; export default clusterNameInjectable;

View File

@ -20,14 +20,11 @@
*/ */
import { getActiveClusterEntity } from "../../../api/catalog-entity-registry"; import { getActiveClusterEntity } from "../../../api/catalog-entity-registry";
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable";
import type { Cluster } from "../../../../main/cluster";
const clusterInjectable: Injectable<Cluster | null> = { const clusterInjectable = getInjectable({
getDependencies: () => ({}),
instantiate: () => getActiveClusterEntity(), instantiate: () => getActiveClusterEntity(),
lifecycle: lifecycleEnum.transient, lifecycle: lifecycleEnum.transient,
}; });
export default clusterInjectable; export default clusterInjectable;

View File

@ -19,13 +19,11 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import { editResourceTab } from "../../dock/edit-resource.store"; import { editResourceTab } from "../../dock/edit-resource.store";
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable";
const editResourceTabInjectable: Injectable<typeof editResourceTab> = { const editResourceTabInjectable = getInjectable({
getDependencies: () => ({}),
instantiate: () => editResourceTab, instantiate: () => editResourceTab,
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default editResourceTabInjectable; export default editResourceTabInjectable;

View File

@ -19,13 +19,11 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import { hideDetails } from "../../kube-detail-params"; import { hideDetails } from "../../kube-detail-params";
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable";
export const hideDetailsInjectable: Injectable<typeof hideDetails> = { export const hideDetailsInjectable = getInjectable({
getDependencies: () => ({}),
instantiate: () => hideDetails, instantiate: () => hideDetails,
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default hideDetailsInjectable; export default hideDetailsInjectable;

View File

@ -21,23 +21,18 @@
import type { KubeObjectMenuRegistry } from "../../../../../extensions/registries"; import type { KubeObjectMenuRegistry } from "../../../../../extensions/registries";
import type { KubeObject } from "../../../../../common/k8s-api/kube-object"; import type { KubeObject } from "../../../../../common/k8s-api/kube-object";
export interface Dependencies { export const getKubeObjectMenuItems = ({
kubeObjectMenuRegistry,
kubeObject,
}: {
kubeObjectMenuRegistry: KubeObjectMenuRegistry; kubeObjectMenuRegistry: KubeObjectMenuRegistry;
}
export interface InstantiationParameter {
kubeObject: KubeObject; kubeObject: KubeObject;
} }) => {
export const getKubeObjectMenuItems = (
{ kubeObjectMenuRegistry }: Dependencies,
{ kubeObject }: InstantiationParameter,
) => {
if (!kubeObject) { if (!kubeObject) {
return []; return [];
} }
return kubeObjectMenuRegistry return kubeObjectMenuRegistry
.getItemsForKind(kubeObject.kind, kubeObject.apiVersion) .getItemsForKind(kubeObject.kind, kubeObject.apiVersion)
.map(item => item.components.MenuItem); .map((item) => item.components.MenuItem);
}; };

View File

@ -18,27 +18,20 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import { Injectable, lifecycleEnum } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import kubeObjectMenuRegistryInjectable from "./kube-object-menu-registry.injectable"; import kubeObjectMenuRegistryInjectable from "./kube-object-menu-registry.injectable";
import { import { getKubeObjectMenuItems } from "./get-kube-object-menu-items";
InstantiationParameter, import type { KubeObject } from "../../../../../common/k8s-api/kube-object";
Dependencies,
getKubeObjectMenuItems,
} from "./get-kube-object-menu-items";
const kubeObjectMenuItemsInjectable: Injectable< const kubeObjectMenuItemsInjectable = getInjectable({
ReturnType<typeof getKubeObjectMenuItems>, instantiate: (di, { kubeObject }: { kubeObject: KubeObject }) =>
Dependencies, getKubeObjectMenuItems({
InstantiationParameter kubeObjectMenuRegistry: di.inject(kubeObjectMenuRegistryInjectable),
> = { kubeObject,
getDependencies: di => ({ }),
kubeObjectMenuRegistry: di.inject(kubeObjectMenuRegistryInjectable),
}),
instantiate: getKubeObjectMenuItems,
lifecycle: lifecycleEnum.transient, lifecycle: lifecycleEnum.transient,
}; });
export default kubeObjectMenuItemsInjectable; export default kubeObjectMenuItemsInjectable;

View File

@ -19,13 +19,11 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import { KubeObjectMenuRegistry } from "../../../../../extensions/registries"; import { KubeObjectMenuRegistry } from "../../../../../extensions/registries";
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable";
const kubeObjectMenuRegistryInjectable: Injectable<KubeObjectMenuRegistry> = { const kubeObjectMenuRegistryInjectable = getInjectable({
getDependencies: () => ({}),
instantiate: () => KubeObjectMenuRegistry.getInstance(), instantiate: () => KubeObjectMenuRegistry.getInstance(),
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default kubeObjectMenuRegistryInjectable; export default kubeObjectMenuRegistryInjectable;

View File

@ -55,18 +55,18 @@ describe("kube-object-menu", () => {
render = renderFor(di); render = renderFor(di);
di.override(clusterInjectable, { di.override(clusterInjectable, () => ({
name: "Some name", name: "Some name",
} as Cluster); }) as Cluster);
di.override(apiManagerInjectable, { di.override(apiManagerInjectable, () => ({
// eslint-disable-next-line unused-imports/no-unused-vars-ts // eslint-disable-next-line unused-imports/no-unused-vars-ts
getStore: api => undefined, getStore: api => undefined,
} as ApiManager); }) as ApiManager);
di.override(hideDetailsInjectable, () => {}); di.override(hideDetailsInjectable, () => () => {});
di.override(editResourceTabInjectable, () => ({ di.override(editResourceTabInjectable, () => () => ({
id: "irrelevant", id: "irrelevant",
kind: TabKind.TERMINAL, kind: TabKind.TERMINAL,
pinned: false, pinned: false,
@ -93,7 +93,7 @@ describe("kube-object-menu", () => {
}); });
it("given no cluster, does not crash", () => { it("given no cluster, does not crash", () => {
di.override(clusterInjectable, null); di.override(clusterInjectable, () => null);
expect(() => { expect(() => {
render(<KubeObjectMenu object={null} toolbar={true} />); render(<KubeObjectMenu object={null} toolbar={true} />);
@ -110,7 +110,7 @@ describe("kube-object-menu", () => {
describe("given kube object", () => { describe("given kube object", () => {
let baseElement: Element; let baseElement: Element;
let removeActionMock: AsyncFnMock<Function>; let removeActionMock: AsyncFnMock<() => void>;
beforeEach(async () => { beforeEach(async () => {
const objectStub = KubeObject.create({ const objectStub = KubeObject.create({

View File

@ -18,24 +18,21 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable";
import attemptInstallByInfoInjectable from "../../components/+extensions/attempt-install-by-info/attempt-install-by-info.injectable"; import attemptInstallByInfoInjectable from "../../components/+extensions/attempt-install-by-info/attempt-install-by-info.injectable";
import { import { bindProtocolAddRouteHandlers } from "./bind-protocol-add-route-handlers";
bindProtocolAddRouteHandlers, import lensProtocolRouterRendererInjectable from "../lens-protocol-router-renderer/lens-protocol-router-renderer.injectable";
Dependencies,
} from "./bind-protocol-add-route-handlers";
import lensProtocolRouterRendererInjectable
from "../lens-protocol-router-renderer/lens-protocol-router-renderer.injectable";
const bindProtocolAddRouteHandlersInjectable: Injectable<() => void, Dependencies> = { const bindProtocolAddRouteHandlersInjectable = getInjectable({
getDependencies: di => ({ instantiate: (di) =>
attemptInstallByInfo: di.inject(attemptInstallByInfoInjectable), bindProtocolAddRouteHandlers({
lensProtocolRouterRenderer: di.inject(lensProtocolRouterRendererInjectable), attemptInstallByInfo: di.inject(attemptInstallByInfoInjectable),
}), lensProtocolRouterRenderer: di.inject(
lensProtocolRouterRendererInjectable,
),
}),
instantiate: bindProtocolAddRouteHandlers,
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default bindProtocolAddRouteHandlersInjectable; export default bindProtocolAddRouteHandlersInjectable;

View File

@ -33,7 +33,7 @@ import { Notifications } from "../../components/notifications";
import * as routes from "../../../common/routes"; import * as routes from "../../../common/routes";
import type { ExtensionInfo } from "../../components/+extensions/attempt-install-by-info/attempt-install-by-info"; import type { ExtensionInfo } from "../../components/+extensions/attempt-install-by-info/attempt-install-by-info";
export interface Dependencies { interface Dependencies {
attemptInstallByInfo: (extensionInfo: ExtensionInfo) => Promise<void>; attemptInstallByInfo: (extensionInfo: ExtensionInfo) => Promise<void>;
lensProtocolRouterRenderer: LensProtocolRouterRenderer; lensProtocolRouterRenderer: LensProtocolRouterRenderer;
} }

View File

@ -18,23 +18,17 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import type { Injectable } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { lifecycleEnum } from "@ogre-tools/injectable";
import extensionLoaderInjectable from "../../../extensions/extension-loader/extension-loader.injectable"; import extensionLoaderInjectable from "../../../extensions/extension-loader/extension-loader.injectable";
import type { Dependencies } from "./lens-protocol-router-renderer";
import { LensProtocolRouterRenderer } from "./lens-protocol-router-renderer"; import { LensProtocolRouterRenderer } from "./lens-protocol-router-renderer";
const lensProtocolRouterRendererInjectable: Injectable< const lensProtocolRouterRendererInjectable = getInjectable({
LensProtocolRouterRenderer, instantiate: (di) =>
Dependencies new LensProtocolRouterRenderer({
> = { extensionLoader: di.inject(extensionLoaderInjectable),
getDependencies: di => ({ }),
extensionLoader: di.inject(extensionLoaderInjectable),
}),
instantiate: dependencies => new LensProtocolRouterRenderer(dependencies),
lifecycle: lifecycleEnum.singleton, lifecycle: lifecycleEnum.singleton,
}; });
export default lensProtocolRouterRendererInjectable; export default lensProtocolRouterRendererInjectable;

View File

@ -47,7 +47,7 @@ function verifyIpcArgs(args: unknown[]): args is [string, RouteAttempt] {
} }
} }
export interface Dependencies { interface Dependencies {
extensionLoader: ExtensionLoader extensionLoader: ExtensionLoader
} }

View File

@ -7,10 +7,10 @@
resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.1.1.tgz#9274ec7460652f9c632c59addf24efb1684ef876" resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.1.1.tgz#9274ec7460652f9c632c59addf24efb1684ef876"
integrity sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ== integrity sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==
"@async-fn/jest@^1.5.0": "@async-fn/jest@1.5.3":
version "1.5.0" version "1.5.3"
resolved "https://registry.yarnpkg.com/@async-fn/jest/-/jest-1.5.0.tgz#dda820de3e48eca6d5b17b00a01bdb060dfcc233" resolved "https://registry.yarnpkg.com/@async-fn/jest/-/jest-1.5.3.tgz#42be6c0e8ba5ccd737e006ca600e7e319fe2a591"
integrity sha512-IeuTZj1TdoBS64fpNfHG9efw6dW3UQuIXfEv0qhxyNro3368kKz9E/eO46zvPmQBxbBCox3RCbKexAJH1WAY+Q== integrity sha512-iQ9gAPZFW5U6TNcFS99ffwYYsB9LNecTnvG73BaDc/zAD0qOWctY1imEACC1pLymmm/xaf/OUq9I9QenfkatTA==
"@babel/code-frame@7.12.11": "@babel/code-frame@7.12.11":
version "7.12.11" version "7.12.11"
@ -972,28 +972,28 @@
"@nodelib/fs.scandir" "2.1.3" "@nodelib/fs.scandir" "2.1.3"
fastq "^1.6.0" fastq "^1.6.0"
"@ogre-tools/fp@^1.4.0": "@ogre-tools/fp@^2.0.0":
version "1.4.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/@ogre-tools/fp/-/fp-1.4.0.tgz#94c50378c5bc51ea1571f775e4428256f22c61b5" resolved "https://registry.yarnpkg.com/@ogre-tools/fp/-/fp-2.0.0.tgz#751b280959e7b7132e85ae031a96ea59c951178f"
integrity sha512-Eh/pK67CoYU/tJPWHeuNFEp+YdE8RPAAxZlSDAoXUDAd8sta3e+1vG7OEJlkYIJW4L8sCGKLWZu2DZ8uI6URhA== integrity sha512-L3UWyIHuA1z746jSsHV4iwy5Yc/qz8g/0YktiMgYjU6aU5jFtX0vaVVS7MRJWMnOAFg5JcJyg3KqgyYXSe5GKA==
dependencies: dependencies:
lodash "^4.17.21" lodash "^4.17.21"
"@ogre-tools/injectable-react@1.5.2": "@ogre-tools/injectable-react@2.0.0":
version "1.5.2" version "2.0.0"
resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-react/-/injectable-react-1.5.2.tgz#7df925ca5abda86210f527333774ddbf027f0693" resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-react/-/injectable-react-2.0.0.tgz#4a0990426dba0485d6c71e9693ba8882aa42a5d0"
integrity sha512-n26NyGLYjwyIbfwsLj1tg0uNPK6SI/H0vGisMNpNfrcdci2QiLQBSKemnLMMRn7LF/+JhA/NQClTetiMkcSCuw== integrity sha512-yhYi7jhhi2CitO07xVPHOWBCOESmTgmGcSILWoY6IPjoKdzl88PqMkTem8kO+k6YO3sTQQexEQcCi9NEmR9hOg==
dependencies: dependencies:
"@ogre-tools/fp" "^1.4.0" "@ogre-tools/fp" "^2.0.0"
"@ogre-tools/injectable" "^1.5.0" "@ogre-tools/injectable" "^2.0.0"
lodash "^4.17.21" lodash "^4.17.21"
"@ogre-tools/injectable@1.5.0", "@ogre-tools/injectable@^1.5.0": "@ogre-tools/injectable@2.0.0", "@ogre-tools/injectable@^2.0.0":
version "1.5.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/@ogre-tools/injectable/-/injectable-1.5.0.tgz#edf911f360e73bb5f10ac669f147108d1465fc45" resolved "https://registry.yarnpkg.com/@ogre-tools/injectable/-/injectable-2.0.0.tgz#16e6255062443ae8aca9a2d149c5b591533b63a8"
integrity sha512-k0Wgc8QqB+p/gHcWPVWJV8N8xX5cMpagEjZ1C5bPVeRyB+73od/yHgb1HOgL2pPzlE6qOtTdkiUrWuTAoqnqUw== integrity sha512-9R8J9vJp/obaKKTGSDiJ+PTodJtZ2JCUdzGexL2lQK4s/xvVTjpBhCgQZVCG87uA/6d0oB6rxov/Dkv001rwCw==
dependencies: dependencies:
"@ogre-tools/fp" "^1.4.0" "@ogre-tools/fp" "^2.0.0"
lodash "^4.17.21" lodash "^4.17.21"
"@panva/asn1.js@^1.0.0": "@panva/asn1.js@^1.0.0":