From 6ec38835d34c0aea00d441eedbe84165a1ebc6c0 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Tue, 1 Nov 2022 10:04:12 -0400 Subject: [PATCH] Move files around to fix circular dependencies and fix typing issues Signed-off-by: Sebastian Malton --- src/common/initializable-state/create.test.ts | 18 ++++++++++++++---- src/common/vars/build-version/channel.ts | 10 ++++++++++ .../semantic-version.injectable.ts} | 18 ++++-------------- src/common/vars/build-version/token.ts | 11 +++++++++++ src/common/vars/release-channel.injectable.ts | 2 +- src/extensions/common-api/app.ts | 2 +- .../build-version/setup-channel.injectable.ts | 2 +- .../runnables/setup-lens-proxy.injectable.ts | 5 ++--- src/main/stores/init-user-store.injectable.ts | 4 ++-- .../build-version/build-version.injectable.ts | 2 +- .../stores/init-user-store.injectable.ts | 4 ++-- src/renderer/vars/build-version.injectable.ts | 3 ++- 12 files changed, 51 insertions(+), 30 deletions(-) create mode 100644 src/common/vars/build-version/channel.ts rename src/common/vars/{build-semantic-version.injectable.ts => build-version/semantic-version.injectable.ts} (55%) create mode 100644 src/common/vars/build-version/token.ts diff --git a/src/common/initializable-state/create.test.ts b/src/common/initializable-state/create.test.ts index 4f5fd397cb..7db3237864 100644 --- a/src/common/initializable-state/create.test.ts +++ b/src/common/initializable-state/create.test.ts @@ -8,6 +8,7 @@ import asyncFn from "@async-fn/jest"; import type { DiContainer, Injectable } from "@ogre-tools/injectable"; import { runInAction } from "mobx"; import { getDiForUnitTesting } from "../../main/getDiForUnitTesting"; +import type { Runnable } from "../runnable/run-many-for"; import type { InitializableState } from "./create"; import { createInitializableState } from "./create"; @@ -20,11 +21,15 @@ describe("InitializableState tests", () => { describe("when created", () => { let stateInjectable: Injectable, unknown, void>; + let initStateInjectable: Injectable, Runnable, void>; let initMock: AsyncFnMock<() => number>; beforeEach(() => { initMock = asyncFn(); - ({ value: stateInjectable } = createInitializableState({ + ({ + value: stateInjectable, + initializer: initStateInjectable, + } = createInitializableState({ id: "my-state", init: initMock, when: null as any, @@ -32,6 +37,7 @@ describe("InitializableState tests", () => { runInAction(() => { di.register(stateInjectable); + di.register(initStateInjectable); }); }); @@ -47,8 +53,10 @@ describe("InitializableState tests", () => { }); describe("when init is called", () => { - beforeEach(() => { - state.init(); + beforeEach(async () => { + const initState = di.inject(initStateInjectable); + + await initState.run(); }); it("should call provided initialization function", () => { @@ -69,7 +77,9 @@ describe("InitializableState tests", () => { }); it("when init is called again, throws", async () => { - await expect(() => state.init()).rejects.toThrow("Cannot initialize InitializableState(my-state) more than once"); + const initState = di.inject(initStateInjectable); + + await expect(() => initState.run()).rejects.toThrow("Cannot initialize InitializableState(my-state) more than once"); }); }); }); diff --git a/src/common/vars/build-version/channel.ts b/src/common/vars/build-version/channel.ts new file mode 100644 index 0000000000..f76f15dd11 --- /dev/null +++ b/src/common/vars/build-version/channel.ts @@ -0,0 +1,10 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import type { RequestChannel } from "../../utils/channel/request-channel-listener-injection-token"; + +export const buildVersionChannel: RequestChannel = { + id: "build-version", +}; diff --git a/src/common/vars/build-semantic-version.injectable.ts b/src/common/vars/build-version/semantic-version.injectable.ts similarity index 55% rename from src/common/vars/build-semantic-version.injectable.ts rename to src/common/vars/build-version/semantic-version.injectable.ts index 161820cf33..277d6b6538 100644 --- a/src/common/vars/build-semantic-version.injectable.ts +++ b/src/common/vars/build-version/semantic-version.injectable.ts @@ -3,21 +3,11 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -import { getInjectionToken } from "@ogre-tools/injectable"; import { SemVer } from "semver"; -import { initializeBuildVersionOnMainInjectable } from "../../main/vars/build-version/build-version.injectable"; -import { initializeBuildVersionOnRendererInjectable } from "../../renderer/vars/build-version.injectable"; -import type { InitializableState } from "../initializable-state/create"; -import { createDependentInitializableState } from "../initializable-state/create-dependent"; -import type { RequestChannel } from "../utils/channel/request-channel-listener-injection-token"; - -export const buildVersionInjectionToken = getInjectionToken>({ - id: "build-version-token", -}); - -export const buildVersionChannel: RequestChannel = { - id: "build-version", -}; +import { initializeBuildVersionOnMainInjectable } from "../../../main/vars/build-version/build-version.injectable"; +import { initializeBuildVersionOnRendererInjectable } from "../../../renderer/vars/build-version.injectable"; +import { createDependentInitializableState } from "../../initializable-state/create-dependent"; +import { buildVersionInjectionToken } from "./token"; const { value: buildSemanticVersionInjectable, diff --git a/src/common/vars/build-version/token.ts b/src/common/vars/build-version/token.ts new file mode 100644 index 0000000000..632135f5c5 --- /dev/null +++ b/src/common/vars/build-version/token.ts @@ -0,0 +1,11 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import { getInjectionToken } from "@ogre-tools/injectable"; +import type { InitializableState } from "../../initializable-state/create"; + +export const buildVersionInjectionToken = getInjectionToken>({ + id: "build-version-token", +}); diff --git a/src/common/vars/release-channel.injectable.ts b/src/common/vars/release-channel.injectable.ts index e72d0f3586..6d9f2fc2cf 100644 --- a/src/common/vars/release-channel.injectable.ts +++ b/src/common/vars/release-channel.injectable.ts @@ -2,7 +2,7 @@ * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ -import buildSemanticVersionInjectable, { initBuildSemanticVersionOnMainInjectable, initBuildSemanticVersionOnRendererInjectable } from "./build-semantic-version.injectable"; +import buildSemanticVersionInjectable, { initBuildSemanticVersionOnMainInjectable, initBuildSemanticVersionOnRendererInjectable } from "./build-version/semantic-version.injectable"; import type { ReleaseChannel } from "../../features/application-update/common/update-channels"; import { createDependentInitializableState } from "../initializable-state/create-dependent"; diff --git a/src/extensions/common-api/app.ts b/src/extensions/common-api/app.ts index 92ecd19ef9..d76fe9f6bd 100644 --- a/src/extensions/common-api/app.ts +++ b/src/extensions/common-api/app.ts @@ -14,7 +14,7 @@ import getEnabledExtensionsInjectable from "./get-enabled-extensions/get-enabled import type { UserPreferenceExtensionItems } from "./user-preferences"; import { Preferences } from "./user-preferences"; import { slackUrl, issuesTrackerUrl } from "../../common/vars"; -import { buildVersionInjectionToken } from "../../common/vars/build-semantic-version.injectable"; +import { buildVersionInjectionToken } from "../../common/vars/build-version/token"; export interface AppExtensionItems { readonly Preferences: UserPreferenceExtensionItems; diff --git a/src/main/build-version/setup-channel.injectable.ts b/src/main/build-version/setup-channel.injectable.ts index 05da92db6e..7bc4c8104d 100644 --- a/src/main/build-version/setup-channel.injectable.ts +++ b/src/main/build-version/setup-channel.injectable.ts @@ -2,7 +2,7 @@ * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ -import { buildVersionChannel } from "../../common/vars/build-semantic-version.injectable"; +import { buildVersionChannel } from "../../common/vars/build-version/channel"; import { getRequestChannelListenerInjectable } from "../utils/channel/channel-listeners/listener-tokens"; import buildVersionInjectable from "../vars/build-version/build-version.injectable"; diff --git a/src/main/start-main-application/runnables/setup-lens-proxy.injectable.ts b/src/main/start-main-application/runnables/setup-lens-proxy.injectable.ts index 281c1ff844..3678e9d607 100644 --- a/src/main/start-main-application/runnables/setup-lens-proxy.injectable.ts +++ b/src/main/start-main-application/runnables/setup-lens-proxy.injectable.ts @@ -11,8 +11,7 @@ import lensProxyPortInjectable from "../../lens-proxy/lens-proxy-port.injectable import isWindowsInjectable from "../../../common/vars/is-windows.injectable"; import showErrorPopupInjectable from "../../electron-app/features/show-error-popup.injectable"; import { beforeApplicationIsLoadingInjectionToken } from "../runnable-tokens/before-application-is-loading-injection-token"; -import buildVersionInjectable from "../../vars/build-version/build-version.injectable"; -import initializeBuildVersionInjectable from "../../vars/build-version/init.injectable"; +import buildVersionInjectable, { initializeBuildVersionOnMainInjectable } from "../../vars/build-version/build-version.injectable"; const setupLensProxyInjectable = getInjectable({ id: "setup-lens-proxy", @@ -70,7 +69,7 @@ const setupLensProxyInjectable = getInjectable({ return exitApp(); } }, - runAfter: di.inject(initializeBuildVersionInjectable), + runAfter: di.inject(initializeBuildVersionOnMainInjectable), }; }, diff --git a/src/main/stores/init-user-store.injectable.ts b/src/main/stores/init-user-store.injectable.ts index 0038d29ad8..e2dd85a52d 100644 --- a/src/main/stores/init-user-store.injectable.ts +++ b/src/main/stores/init-user-store.injectable.ts @@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import userStoreFileNameMigrationInjectable from "../../common/user-store/file-name-migration.injectable"; import userStoreInjectable from "../../common/user-store/user-store.injectable"; import { beforeApplicationIsLoadingInjectionToken } from "../start-main-application/runnable-tokens/before-application-is-loading-injection-token"; -import initializeBuildVersionInjectable from "../vars/build-version/init.injectable"; +import { initializeBuildVersionOnMainInjectable } from "../vars/build-version/build-version.injectable"; const initUserStoreInjectable = getInjectable({ id: "init-user-store", @@ -20,7 +20,7 @@ const initUserStoreInjectable = getInjectable({ await userStoreFileNameMigration(); userStore.load(); }, - runAfter: di.inject(initializeBuildVersionInjectable), + runAfter: di.inject(initializeBuildVersionOnMainInjectable), }; }, injectionToken: beforeApplicationIsLoadingInjectionToken, diff --git a/src/main/vars/build-version/build-version.injectable.ts b/src/main/vars/build-version/build-version.injectable.ts index 45a46c0fce..0706b8523a 100644 --- a/src/main/vars/build-version/build-version.injectable.ts +++ b/src/main/vars/build-version/build-version.injectable.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { createInitializableState } from "../../../common/initializable-state/create"; -import { buildVersionInjectionToken } from "../../../common/vars/build-semantic-version.injectable"; +import { buildVersionInjectionToken } from "../../../common/vars/build-version/token"; import { beforeApplicationIsLoadingInjectionToken } from "../../start-main-application/runnable-tokens/before-application-is-loading-injection-token"; import getBuildVersionInjectable from "./get-build-version.injectable"; diff --git a/src/renderer/stores/init-user-store.injectable.ts b/src/renderer/stores/init-user-store.injectable.ts index 5cd86009e3..d58b3cb68c 100644 --- a/src/renderer/stores/init-user-store.injectable.ts +++ b/src/renderer/stores/init-user-store.injectable.ts @@ -5,7 +5,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import userStoreInjectable from "../../common/user-store/user-store.injectable"; import { beforeFrameStartsInjectionToken } from "../before-frame-starts/before-frame-starts-injection-token"; -import initializeBuildVersionInjectable from "../vars/build-version/init.injectable"; +import { initializeBuildVersionOnRendererInjectable } from "../vars/build-version.injectable"; const initUserStoreInjectable = getInjectable({ id: "init-user-store", @@ -15,7 +15,7 @@ const initUserStoreInjectable = getInjectable({ return { id: "init-user-store", run: () => userStore.load(), - runAfter: di.inject(initializeBuildVersionInjectable), + runAfter: di.inject(initializeBuildVersionOnRendererInjectable), }; }, injectionToken: beforeFrameStartsInjectionToken, diff --git a/src/renderer/vars/build-version.injectable.ts b/src/renderer/vars/build-version.injectable.ts index a862e6a420..57919f3084 100644 --- a/src/renderer/vars/build-version.injectable.ts +++ b/src/renderer/vars/build-version.injectable.ts @@ -4,7 +4,8 @@ */ import { createInitializableState } from "../../common/initializable-state/create"; import { requestFromChannelInjectionToken } from "../../common/utils/channel/request-from-channel-injection-token"; -import { buildVersionChannel, buildVersionInjectionToken } from "../../common/vars/build-semantic-version.injectable"; +import { buildVersionChannel } from "../../common/vars/build-version/channel"; +import { buildVersionInjectionToken } from "../../common/vars/build-version/token"; import { beforeFrameStartsInjectionToken } from "../before-frame-starts/before-frame-starts-injection-token"; const {