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

Introduce typing for extension API to prevent breakage

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-09-12 14:40:37 -04:00
parent dbd8e3bebc
commit 80dc137110
3 changed files with 26 additions and 11 deletions

View File

@ -11,11 +11,25 @@ import isWindowsInjectable from "../../common/vars/is-windows.injectable";
import { asLegacyGlobalFunctionForExtensionApi } from "../as-legacy-globals-for-extension-api/as-legacy-global-function-for-extension-api";
import { getLegacyGlobalDiForExtensionApi } from "../as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
import getEnabledExtensionsInjectable from "./get-enabled-extensions/get-enabled-extensions.injectable";
import * as Preferences from "./user-preferences";
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";
const App = {
export interface AppExtensionItems {
readonly Preferences: UserPreferenceExtensionItems;
readonly version: string;
readonly appName: string;
readonly slackUrl: string;
readonly issuesTrackerUrl: string;
readonly isSnap: boolean;
readonly isWindows: boolean;
readonly isMac: boolean;
readonly isLinux: boolean;
getEnabledExtensions: () => string[];
}
export const App: AppExtensionItems = {
Preferences,
getEnabledExtensions: asLegacyGlobalFunctionForExtensionApi(getEnabledExtensionsInjectable),
get version() {
@ -51,5 +65,3 @@ const App = {
slackUrl,
issuesTrackerUrl,
};
export default App;

View File

@ -4,7 +4,7 @@
*/
// APIs
import App from "./app";
import { App } from "./app";
import * as EventBus from "./event-bus";
import * as Store from "./stores";
import * as Util from "./utils";

View File

@ -4,10 +4,13 @@
*/
import { UserStore } from "../../common/user-store";
/**
* Get the configured kubectl binaries path.
*/
export function getKubectlPath(): string | undefined {
return UserStore.getInstance().kubectlBinariesPath;
export interface UserPreferenceExtensionItems {
/**
* Get the configured kubectl binaries path.
*/
getKubectlPath: () => string | undefined;
}
export const Preferences: UserPreferenceExtensionItems = {
getKubectlPath: () => UserStore.getInstance().kubectlBinariesPath,
};