From dbb87c231a409a212a81f923468f4458ade17bc8 Mon Sep 17 00:00:00 2001 From: Janne Savolainen Date: Mon, 13 Mar 2023 08:54:58 +0200 Subject: [PATCH] Switch to using startable-stoppable from NPM package Signed-off-by: Janne Savolainen --- packages/core/package.json | 1 + ...istening-on-message-channels.injectable.ts | 2 +- .../utils/get-startable-stoppable.test.ts | 62 ------------------- .../common/utils/get-startable-stoppable.ts | 45 -------------- .../application-menu-reactivity.injectable.ts | 2 +- ...periodical-check-for-updates.injectable.ts | 2 +- ...update-should-happen-on-quit.injectable.ts | 2 +- .../catalog-sync-to-renderer.injectable.ts | 2 +- ...-theme-from-operating-system.injectable.ts | 2 +- .../tray/menu-icon/reactive.injectable.ts | 2 +- .../reactive-tray-menu-items.injectable.ts | 2 +- ...istening-on-request-channels.injectable.ts | 2 +- packages/open-lens/package.json | 1 + 13 files changed, 11 insertions(+), 116 deletions(-) delete mode 100644 packages/core/src/common/utils/get-startable-stoppable.test.ts delete mode 100644 packages/core/src/common/utils/get-startable-stoppable.ts diff --git a/packages/core/package.json b/packages/core/package.json index bf304a4c13..6c629b55d9 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -329,6 +329,7 @@ "@k8slens/application-for-electron-main": "^6.5.0-alpha.0", "@k8slens/legacy-extensions": "^1.0.0-alpha.0", "@k8slens/run-many": "^1.0.0-alpha.1", + "@k8slens/startable-stoppable": "^1.0.0-alpha.1", "@k8slens/test-utils": "^1.0.0-alpha.1", "@k8slens/utilities": "^1.0.0-alpha.1", "@types/byline": "^4.2.33", diff --git a/packages/core/src/common/utils/channel/listening-on-message-channels.injectable.ts b/packages/core/src/common/utils/channel/listening-on-message-channels.injectable.ts index 6ebc9ca7c1..eb74752ce4 100644 --- a/packages/core/src/common/utils/channel/listening-on-message-channels.injectable.ts +++ b/packages/core/src/common/utils/channel/listening-on-message-channels.injectable.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import { getStartableStoppable } from "../get-startable-stoppable"; +import { getStartableStoppable } from "@k8slens/startable-stoppable"; import { messageChannelListenerInjectionToken } from "./message-channel-listener-injection-token"; import { enlistMessageChannelListenerInjectionToken } from "./enlist-message-channel-listener-injection-token"; import { disposer } from "@k8slens/utilities"; diff --git a/packages/core/src/common/utils/get-startable-stoppable.test.ts b/packages/core/src/common/utils/get-startable-stoppable.test.ts deleted file mode 100644 index dc8b24dd43..0000000000 --- a/packages/core/src/common/utils/get-startable-stoppable.test.ts +++ /dev/null @@ -1,62 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ -import type { StartableStoppable } from "./get-startable-stoppable"; -import { getStartableStoppable } from "./get-startable-stoppable"; - -describe("getStartableStoppable", () => { - let stopMock: jest.MockedFunction<() => void>; - let startMock: jest.MockedFunction<() => () => void>; - let actual: StartableStoppable; - - beforeEach(() => { - stopMock = jest.fn(); - startMock = jest.fn().mockImplementation(() => stopMock); - actual = getStartableStoppable("some-id", startMock); - }); - - it("does not start yet", () => { - expect(startMock).not.toHaveBeenCalled(); - }); - - it("does not stop yet", () => { - expect(stopMock).not.toHaveBeenCalled(); - }); - - it("when stopping before ever starting, throws", () => { - expect(() => actual.stop()).toThrow("Tried to stop \"some-id\", but it is already stopped."); - }); - - it("is not started", () => { - expect(actual.started).toBe(false); - }); - - describe("when started", () => { - beforeEach(() => { - actual.start(); - }); - - it("calls start function", () => { - expect(startMock).toHaveBeenCalled(); - }); - - it("is started", () => { - expect(actual.started).toBe(true); - }); - - describe("when stopped", () => { - beforeEach(() => { - actual.stop(); - }); - - it("calls stop function", () => { - expect(stopMock).toBeCalled(); - }); - - it("is stopped", () => { - expect(actual.started).toBe(false); - }); - }); - }); -}); diff --git a/packages/core/src/common/utils/get-startable-stoppable.ts b/packages/core/src/common/utils/get-startable-stoppable.ts deleted file mode 100644 index 05d8b4d9af..0000000000 --- a/packages/core/src/common/utils/get-startable-stoppable.ts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -export type Stopper = () => void; -export type Starter = () => Stopper; - -export interface StartableStoppable { - readonly started: boolean; - start: () => void; - stop: () => void; -} - -type StartableStoppableState = "stopped" | "started" | "starting"; - -export function getStartableStoppable(id: string, startAndGetStopper: Starter): StartableStoppable { - let stop: Stopper; - let state: StartableStoppableState = "stopped"; - - return { - get started() { - return state === "started"; - }, - - start: () => { - if (state !== "stopped") { - throw new Error(`Tried to start "${id}", but it is already ${state}.`); - } - - state = "starting"; - stop = startAndGetStopper(); - state = "started"; - }, - - stop: () => { - if (state !== "started") { - throw new Error(`Tried to stop "${id}", but it is already ${state}.`); - } - - stop(); - state = "stopped"; - }, - }; -} diff --git a/packages/core/src/features/application-menu/main/application-menu-reactivity.injectable.ts b/packages/core/src/features/application-menu/main/application-menu-reactivity.injectable.ts index 80bfd108fd..e5d95bf7d8 100644 --- a/packages/core/src/features/application-menu/main/application-menu-reactivity.injectable.ts +++ b/packages/core/src/features/application-menu/main/application-menu-reactivity.injectable.ts @@ -4,7 +4,7 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { autorun } from "mobx"; -import { getStartableStoppable } from "../../../common/utils/get-startable-stoppable"; +import { getStartableStoppable } from "@k8slens/startable-stoppable"; import populateApplicationMenuInjectable from "./populate-application-menu.injectable"; import applicationMenuItemCompositeInjectable from "./application-menu-item-composite.injectable"; diff --git a/packages/core/src/features/application-update/child-features/periodical-checking-of-updates/main/periodical-check-for-updates.injectable.ts b/packages/core/src/features/application-update/child-features/periodical-checking-of-updates/main/periodical-check-for-updates.injectable.ts index 85c687e478..953aa2b45a 100644 --- a/packages/core/src/features/application-update/child-features/periodical-checking-of-updates/main/periodical-check-for-updates.injectable.ts +++ b/packages/core/src/features/application-update/child-features/periodical-checking-of-updates/main/periodical-check-for-updates.injectable.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import { getStartableStoppable } from "../../../../../common/utils/get-startable-stoppable"; +import { getStartableStoppable } from "@k8slens/startable-stoppable"; import processCheckingForUpdatesInjectable from "../../../main/process-checking-for-updates.injectable"; import withOrphanPromiseInjectable from "../../../../../common/utils/with-orphan-promise/with-orphan-promise.injectable"; diff --git a/packages/core/src/features/application-update/main/watch-if-update-should-happen-on-quit/watch-if-update-should-happen-on-quit.injectable.ts b/packages/core/src/features/application-update/main/watch-if-update-should-happen-on-quit/watch-if-update-should-happen-on-quit.injectable.ts index bcad45a0ac..bd949194e6 100644 --- a/packages/core/src/features/application-update/main/watch-if-update-should-happen-on-quit/watch-if-update-should-happen-on-quit.injectable.ts +++ b/packages/core/src/features/application-update/main/watch-if-update-should-happen-on-quit/watch-if-update-should-happen-on-quit.injectable.ts @@ -4,7 +4,7 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { autorun } from "mobx"; -import { getStartableStoppable } from "../../../../common/utils/get-startable-stoppable"; +import { getStartableStoppable } from "@k8slens/startable-stoppable"; import setUpdateOnQuitInjectable from "../../../../main/electron-app/features/set-update-on-quit.injectable"; import selectedUpdateChannelInjectable from "../../common/selected-update-channel/selected-update-channel.injectable"; import type { ReleaseChannel, UpdateChannel } from "../../common/update-channels"; diff --git a/packages/core/src/main/catalog-sync-to-renderer/catalog-sync-to-renderer.injectable.ts b/packages/core/src/main/catalog-sync-to-renderer/catalog-sync-to-renderer.injectable.ts index cd77332185..a2fe077c1d 100644 --- a/packages/core/src/main/catalog-sync-to-renderer/catalog-sync-to-renderer.injectable.ts +++ b/packages/core/src/main/catalog-sync-to-renderer/catalog-sync-to-renderer.injectable.ts @@ -7,7 +7,7 @@ import { reaction } from "mobx"; import ipcMainInjectionToken from "../../common/ipc/ipc-main-injection-token"; import { catalogInitChannel } from "../../common/ipc/catalog"; import { disposer } from "@k8slens/utilities"; -import { getStartableStoppable } from "../../common/utils/get-startable-stoppable"; +import { getStartableStoppable } from "@k8slens/startable-stoppable"; import catalogEntityRegistryInjectable from "../catalog/entity-registry.injectable"; import catalogSyncBroadcasterInjectable from "./broadcaster.injectable"; import { toJS } from "../../common/utils"; diff --git a/packages/core/src/main/electron-app/features/sync-theme-from-operating-system.injectable.ts b/packages/core/src/main/electron-app/features/sync-theme-from-operating-system.injectable.ts index 818bf938ec..02f0c916b6 100644 --- a/packages/core/src/main/electron-app/features/sync-theme-from-operating-system.injectable.ts +++ b/packages/core/src/main/electron-app/features/sync-theme-from-operating-system.injectable.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import { getStartableStoppable } from "../../../common/utils/get-startable-stoppable"; +import { getStartableStoppable } from "@k8slens/startable-stoppable"; import operatingSystemThemeStateInjectable from "../../theme/operating-system-theme-state.injectable"; import nativeThemeInjectable from "./native-theme.injectable"; import getElectronThemeInjectable from "./get-electron-theme.injectable"; diff --git a/packages/core/src/main/tray/menu-icon/reactive.injectable.ts b/packages/core/src/main/tray/menu-icon/reactive.injectable.ts index 8c6d358477..4fbc8c2448 100644 --- a/packages/core/src/main/tray/menu-icon/reactive.injectable.ts +++ b/packages/core/src/main/tray/menu-icon/reactive.injectable.ts @@ -4,7 +4,7 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { reaction } from "mobx"; -import { getStartableStoppable } from "../../../common/utils/get-startable-stoppable"; +import { getStartableStoppable } from "@k8slens/startable-stoppable"; import electronTrayInjectable from "../electron-tray/electron-tray.injectable"; import trayIconInjectable from "./tray-icon.injectable"; diff --git a/packages/core/src/main/tray/reactive-tray-menu-items/reactive-tray-menu-items.injectable.ts b/packages/core/src/main/tray/reactive-tray-menu-items/reactive-tray-menu-items.injectable.ts index 378bceafd9..a216675b01 100644 --- a/packages/core/src/main/tray/reactive-tray-menu-items/reactive-tray-menu-items.injectable.ts +++ b/packages/core/src/main/tray/reactive-tray-menu-items/reactive-tray-menu-items.injectable.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import { getStartableStoppable } from "../../../common/utils/get-startable-stoppable"; +import { getStartableStoppable } from "@k8slens/startable-stoppable"; import { reaction } from "mobx"; import type { MinimalTrayMenuItem } from "../electron-tray/electron-tray.injectable"; import electronTrayInjectable from "../electron-tray/electron-tray.injectable"; diff --git a/packages/core/src/main/utils/channel/channel-listeners/listening-on-request-channels.injectable.ts b/packages/core/src/main/utils/channel/channel-listeners/listening-on-request-channels.injectable.ts index 1e6d0f296c..90a1d2e1d9 100644 --- a/packages/core/src/main/utils/channel/channel-listeners/listening-on-request-channels.injectable.ts +++ b/packages/core/src/main/utils/channel/channel-listeners/listening-on-request-channels.injectable.ts @@ -5,7 +5,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import { disposer } from "@k8slens/utilities"; import type { RequestChannel } from "../../../../common/utils/channel/request-channel-listener-injection-token"; -import { getStartableStoppable } from "../../../../common/utils/get-startable-stoppable"; +import { getStartableStoppable } from "@k8slens/startable-stoppable"; import enlistRequestChannelListenerInjectable from "./enlist-request-channel-listener.injectable"; import { requestChannelListenerInjectionToken } from "./listener-tokens"; diff --git a/packages/open-lens/package.json b/packages/open-lens/package.json index c6fe1d227a..da7069a3b8 100644 --- a/packages/open-lens/package.json +++ b/packages/open-lens/package.json @@ -204,6 +204,7 @@ "@k8slens/legacy-extension-example": "^1.0.0-alpha.1", "@k8slens/legacy-extensions": "^1.0.0-alpha.1", "@k8slens/run-many": "^1.0.0-alpha.1", + "@k8slens/startable-stoppable": "^1.0.0-alpha.1", "@k8slens/test-utils": "^1.0.0-alpha.1", "@k8slens/utilities": "^1.0.0-alpha.1", "@ogre-tools/fp": "^15.1.2",