From e9bdd3d3f475e5fba6aa2528bd025d2ee7d810f4 Mon Sep 17 00:00:00 2001 From: Roman Date: Mon, 3 May 2021 13:17:23 +0300 Subject: [PATCH] refactoring configuration of external packages with explicit function-call (mobx/immer) Signed-off-by: Roman --- src/common/configure-packages.ts | 20 ++++++++++++++++++++ src/common/libs-config.ts | 19 ------------------- src/jest.setup.ts | 5 ++++- src/main/index.ts | 9 +++++---- src/renderer/bootstrap.tsx | 4 +++- 5 files changed, 32 insertions(+), 25 deletions(-) create mode 100644 src/common/configure-packages.ts delete mode 100644 src/common/libs-config.ts diff --git a/src/common/configure-packages.ts b/src/common/configure-packages.ts new file mode 100644 index 0000000000..5ed76771f0 --- /dev/null +++ b/src/common/configure-packages.ts @@ -0,0 +1,20 @@ +// Setup default configuration for external npm-packages. +import * as Mobx from "mobx"; +import * as Immer from "immer"; + +export default function configurePackages() { + // Docs: https://mobx.js.org/configuration.html + Mobx.configure({ + enforceActions: "never", + isolateGlobalState: true, + + // TODO: enable later (read more: https://mobx.js.org/migrating-from-4-or-5.html) + // computedRequiresReaction: true, + // reactionRequiresObservable: true, + // observableRequiresReaction: true, + }); + + // Docs: https://immerjs.github.io/immer/ + Immer.setAutoFreeze(false); // allow to merge mobx observables + Immer.enableMapSet(); // allow to merge maps and sets +} diff --git a/src/common/libs-config.ts b/src/common/libs-config.ts deleted file mode 100644 index cbca218d1b..0000000000 --- a/src/common/libs-config.ts +++ /dev/null @@ -1,19 +0,0 @@ -// Global configuration setup for external packages. -// Should be imported at the top of app's entry points. -import * as Mobx from "mobx"; -import * as Immer from "immer"; - -// Docs: https://mobx.js.org/configuration.html -Mobx.configure({ - enforceActions: "never", - isolateGlobalState: true, - - // TODO: enable later (read more: https://mobx.js.org/migrating-from-4-or-5.html) - // computedRequiresReaction: true, - // reactionRequiresObservable: true, - // observableRequiresReaction: true, -}); - -// Docs: https://immerjs.github.io/immer/ -Immer.setAutoFreeze(false); // allow to merge mobx observables -Immer.enableMapSet(); // allow to merge maps and sets diff --git a/src/jest.setup.ts b/src/jest.setup.ts index 833e2b8bbd..c77d78c9df 100644 --- a/src/jest.setup.ts +++ b/src/jest.setup.ts @@ -1,6 +1,9 @@ -import "./common/libs-config"; +import configurePackages from "./common/configure-packages"; import fetchMock from "jest-fetch-mock"; +// setup default configuration for external npm-packages +configurePackages(); + // rewire global.fetch to call 'fetchMock' fetchMock.enableMocks(); diff --git a/src/main/index.ts b/src/main/index.ts index 028fc06658..6b1079cf5c 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -1,11 +1,10 @@ // Main process import "../common/system-ca"; -import "../common/libs-config"; import "../common/prometheus-providers"; import * as Mobx from "mobx"; import * as LensExtensions from "../extensions/core-api"; -import { app, autoUpdater, ipcMain, dialog, powerMonitor } from "electron"; +import { app, autoUpdater, dialog, ipcMain, powerMonitor } from "electron"; import { appName, isMac, productName } from "../common/vars"; import path from "path"; import { LensProxy } from "./lens-proxy"; @@ -21,7 +20,7 @@ import { UserStore } from "../common/user-store"; import { appEventBus } from "../common/event-bus"; import { ExtensionLoader } from "../extensions/extension-loader"; import { ExtensionsStore } from "../extensions/extensions-store"; -import { InstalledExtension, ExtensionDiscovery } from "../extensions/extension-discovery"; +import { ExtensionDiscovery, InstalledExtension } from "../extensions/extension-discovery"; import type { LensExtensionId } from "../extensions/lens-extension"; import { FilesystemProvisionerStore } from "./extension-filesystem"; import { installDeveloperTools } from "./developer-tools"; @@ -34,6 +33,7 @@ import { CatalogPusher } from "./catalog-pusher"; import { catalogEntityRegistry } from "../common/catalog"; import { HotbarStore } from "../common/hotbar-store"; import { HelmRepoManager } from "./helm/helm-repo-manager"; +import configurePackages from "../common/configure-packages"; const workingDir = path.join(app.getPath("appData"), appName); @@ -55,6 +55,7 @@ if (process.env.LENS_DISABLE_GPU) { app.disableHardwareAcceleration(); } +configurePackages(); mangleProxyEnv(); if (app.commandLine.getSwitchValue("proxy-server") !== "") { @@ -236,7 +237,7 @@ autoUpdater.on("before-quit-for-update", () => blockQuit = false); app.on("will-quit", (event) => { // Quit app on Cmd+Q (MacOS) logger.info("APP:QUIT"); - appEventBus.emit({name: "app", action: "close"}); + appEventBus.emit({ name: "app", action: "close" }); ClusterManager.getInstance(false)?.stop(); // close cluster connections if (blockQuit) { diff --git a/src/renderer/bootstrap.tsx b/src/renderer/bootstrap.tsx index 7152e82978..846a7b6fb8 100644 --- a/src/renderer/bootstrap.tsx +++ b/src/renderer/bootstrap.tsx @@ -1,5 +1,4 @@ import "./components/app.scss"; -import "../common/libs-config"; import React from "react"; import * as Mobx from "mobx"; import * as MobxReact from "mobx-react"; @@ -21,6 +20,9 @@ import { LensApp } from "./lens-app"; import { ThemeStore } from "./theme.store"; import { HelmRepoManager } from "../main/helm/helm-repo-manager"; import { ExtensionInstallationStateStore } from "./components/+extensions/extension-install.store"; +import configurePackages from "../common/configure-packages"; + +configurePackages(); /** * If this is a development buid, wait a second to attach