diff --git a/src/common/libs-config.ts b/src/common/libs-config.ts new file mode 100644 index 0000000000..d0d304721e --- /dev/null +++ b/src/common/libs-config.ts @@ -0,0 +1,13 @@ +// Global configuration setup for external packages. +// Should be imported at the top of app's entry points. +import { configure } from "mobx"; +import { enableMapSet, setAutoFreeze } from "immer"; + +// Mobx +configure({ + enforceActions: "never", // allows to skip using @action when class-method updates some state +}); + +// Immer +setAutoFreeze(false); // allow to merge observables +enableMapSet(); // allow merging maps and sets diff --git a/src/jest.setup.ts b/src/jest.setup.ts index d8c6ce9161..833e2b8bbd 100644 --- a/src/jest.setup.ts +++ b/src/jest.setup.ts @@ -1,4 +1,6 @@ +import "./common/libs-config"; import fetchMock from "jest-fetch-mock"; + // rewire global.fetch to call 'fetchMock' fetchMock.enableMocks(); diff --git a/src/main/index.ts b/src/main/index.ts index 2ba462ce0c..652b28338c 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -1,6 +1,7 @@ // 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"; diff --git a/src/renderer/bootstrap.tsx b/src/renderer/bootstrap.tsx index c9ef607871..3bb853678f 100644 --- a/src/renderer/bootstrap.tsx +++ b/src/renderer/bootstrap.tsx @@ -1,5 +1,5 @@ import "./components/app.scss"; - +import "../common/libs-config"; import React from "react"; import * as Mobx from "mobx"; import * as MobxReact from "mobx-react"; diff --git a/src/renderer/utils/storageHelper.ts b/src/renderer/utils/storageHelper.ts index 98df93814e..7b284edce0 100755 --- a/src/renderer/utils/storageHelper.ts +++ b/src/renderer/utils/storageHelper.ts @@ -1,13 +1,10 @@ // Helper for working with storages (e.g. window.localStorage, NodeJS/file-system, etc.) import { action, comparer, CreateObservableOptions, IObservableValue, observable, reaction, toJS, when } from "mobx"; -import produce, { Draft, enableMapSet, setAutoFreeze } from "immer"; +import produce, { Draft } from "immer"; import { isEqual, isFunction, isPlainObject, merge } from "lodash"; import logger from "../../main/logger"; -setAutoFreeze(false); // allow to merge observables -enableMapSet(); // allow merging maps and sets - export interface StorageAdapter { [metadata: string]: any; getItem(key: string): T | Promise;