From 20c0fd912fee559e908b9eb5e24b050778fd79f3 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 25 Jan 2023 10:59:21 -0800 Subject: [PATCH] Fix building docs and verify:docs workflow (#7013) * Fix building docs and verify:docs workflow Signed-off-by: Sebastian Malton * Fix commands Signed-off-by: Sebastian Malton Signed-off-by: Sebastian Malton --- .github/workflows/check-docs.yml | 3 ++- nx.json | 5 ++++ .../core/src/common/base-store/base-store.ts | 8 +++++- .../src/common/catalog-entities/general.ts | 2 +- .../core/src/common/catalog/catalog-entity.ts | 4 ++- packages/core/src/common/event-emitter.ts | 12 ++++----- .../core/src/extensions/common-api/app.ts | 25 ++++++------------- .../core/src/extensions/common-api/catalog.ts | 6 +++++ .../src/extensions/common-api/event-bus.ts | 9 ++++++- .../core/src/extensions/common-api/index.ts | 5 ++++ .../core/src/extensions/common-api/stores.ts | 8 +++++- .../extensions/common-api/user-preferences.ts | 19 -------------- .../core/src/extensions/common-api/utils.ts | 15 ++--------- .../core/src/extensions/lens-extension.ts | 13 +++++++++- packages/core/src/main/extension-api.ts | 4 +++ packages/core/src/main/library.ts | 2 +- packages/core/src/renderer/extension-api.ts | 4 +++ packages/extension-api/package.json | 2 +- packages/extension-api/src/extension-api.ts | 16 +++--------- packages/extension-api/typedoc.json | 4 +-- 20 files changed, 87 insertions(+), 79 deletions(-) delete mode 100644 packages/core/src/extensions/common-api/user-preferences.ts diff --git a/.github/workflows/check-docs.yml b/.github/workflows/check-docs.yml index cccb0222cb..0fb857488d 100644 --- a/.github/workflows/check-docs.yml +++ b/.github/workflows/check-docs.yml @@ -1,7 +1,8 @@ name: Check Documentation on: pull_request: - types: [opened, labeled, unlabeled, synchronize] + branches: + - "**" jobs: build: name: Check Docs diff --git a/nx.json b/nx.json index e59f513b0e..460182e190 100644 --- a/nx.json +++ b/nx.json @@ -17,6 +17,11 @@ "^build" ] }, + "build:docs": { + "dependsOn": [ + "^build" + ] + }, "dev": { "dependsOn": [ "prepare:dev" diff --git a/packages/core/src/common/base-store/base-store.ts b/packages/core/src/common/base-store/base-store.ts index 9a786329e4..ecdad5bd4d 100644 --- a/packages/core/src/common/base-store/base-store.ts +++ b/packages/core/src/common/base-store/base-store.ts @@ -51,10 +51,16 @@ export abstract class BaseStore { readonly displayName = kebabCase(this.params.configName).toUpperCase(); + /** + * @ignore + */ + protected readonly dependencies: BaseStoreDependencies; + protected constructor( - protected readonly dependencies: BaseStoreDependencies, + dependencies: BaseStoreDependencies, protected readonly params: BaseStoreParams, ) { + this.dependencies = dependencies; makeObservable(this); } diff --git a/packages/core/src/common/catalog-entities/general.ts b/packages/core/src/common/catalog-entities/general.ts index e81e59cc16..40988a95c8 100644 --- a/packages/core/src/common/catalog-entities/general.ts +++ b/packages/core/src/common/catalog-entities/general.ts @@ -7,7 +7,7 @@ import type { CatalogEntityMetadata, CatalogEntitySpec, CatalogEntityStatus } fr import type { CatalogEntityActionContext } from "../catalog/catalog-entity"; import { CatalogCategory, CatalogEntity, categoryVersion } from "../catalog/catalog-entity"; -interface GeneralEntitySpec extends CatalogEntitySpec { +export interface GeneralEntitySpec extends CatalogEntitySpec { path: string; icon?: { material?: string; diff --git a/packages/core/src/common/catalog/catalog-entity.ts b/packages/core/src/common/catalog/catalog-entity.ts index 7effe60f2f..3a86da757f 100644 --- a/packages/core/src/common/catalog/catalog-entity.ts +++ b/packages/core/src/common/catalog/catalog-entity.ts @@ -9,7 +9,9 @@ import { observable, makeObservable } from "mobx"; import { once } from "lodash"; import type { Disposer } from "../utils"; import { iter } from "../utils"; -import type { CategoryColumnRegistration } from "../../renderer/components/+catalog/custom-category-columns"; +import type { CategoryColumnRegistration, TitleCellProps } from "../../renderer/components/+catalog/custom-category-columns"; + +export type { CategoryColumnRegistration, TitleCellProps }; export type CatalogEntityDataFor = Entity extends CatalogEntity ? CatalogEntityData diff --git a/packages/core/src/common/event-emitter.ts b/packages/core/src/common/event-emitter.ts index 03f8e2754b..982cbdadc8 100644 --- a/packages/core/src/common/event-emitter.ts +++ b/packages/core/src/common/event-emitter.ts @@ -5,23 +5,23 @@ // Custom event emitter -interface Options { +export interface EventEmitterOptions { once?: boolean; // call once and remove prepend?: boolean; // put listener to the beginning } -type Callback = (...data: D) => void | boolean; +export type EventEmitterCallback = (...data: D) => void | boolean; -export class EventEmitter { - protected listeners: [Callback, Options][] = []; +export class EventEmitter { + protected listeners: [EventEmitterCallback, EventEmitterOptions][] = []; - addListener(callback: Callback, options: Options = {}) { + addListener(callback: EventEmitterCallback, options: EventEmitterOptions = {}) { const fn = options.prepend ? "unshift" : "push"; this.listeners[fn]([callback, options]); } - removeListener(callback: Callback) { + removeListener(callback: EventEmitterCallback) { this.listeners = this.listeners.filter(([cb]) => cb !== callback); } diff --git a/packages/core/src/extensions/common-api/app.ts b/packages/core/src/extensions/common-api/app.ts index 92ecd19ef9..dd9227cd0e 100644 --- a/packages/core/src/extensions/common-api/app.ts +++ b/packages/core/src/extensions/common-api/app.ts @@ -11,26 +11,17 @@ 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 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 { asLegacyGlobalForExtensionApi } from "../as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api"; +import userStoreInjectable from "../../common/user-store/user-store.injectable"; -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[]; -} +const userStore = asLegacyGlobalForExtensionApi(userStoreInjectable); -export const App: AppExtensionItems = { - Preferences, +export const App = { + Preferences: { + getKubectlPath: () => userStore.kubectlBinariesPath, + }, getEnabledExtensions: asLegacyGlobalFunctionForExtensionApi(getEnabledExtensionsInjectable), get version() { const di = getLegacyGlobalDiForExtensionApi(); @@ -64,4 +55,4 @@ export const App: AppExtensionItems = { }, slackUrl, issuesTrackerUrl, -}; +} as const; diff --git a/packages/core/src/extensions/common-api/catalog.ts b/packages/core/src/extensions/common-api/catalog.ts index b31059d2c1..26064adc30 100644 --- a/packages/core/src/extensions/common-api/catalog.ts +++ b/packages/core/src/extensions/common-api/catalog.ts @@ -3,6 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ +import type { KubernetesClusterCategory } from "../../common/catalog-entities/kubernetes-cluster"; import kubernetesClusterCategoryInjectable from "../../common/catalog/categories/kubernetes-cluster.injectable"; import { asLegacyGlobalForExtensionApi } from "../as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api"; @@ -12,6 +13,10 @@ export { WebLink, } from "../../common/catalog-entities"; +export type { + KubernetesClusterCategory, +}; + export const kubernetesClusterCategory = asLegacyGlobalForExtensionApi(kubernetesClusterCategoryInjectable); export type { @@ -23,6 +28,7 @@ export type { WebLinkStatusPhase, KubernetesClusterStatusPhase, KubernetesClusterStatus, + GeneralEntitySpec, } from "../../common/catalog-entities"; export * from "../../common/catalog/catalog-entity"; diff --git a/packages/core/src/extensions/common-api/event-bus.ts b/packages/core/src/extensions/common-api/event-bus.ts index d95e3f49d4..31c5446295 100644 --- a/packages/core/src/extensions/common-api/event-bus.ts +++ b/packages/core/src/extensions/common-api/event-bus.ts @@ -5,7 +5,14 @@ import appEventBusInjectable from "../../common/app-event-bus/app-event-bus.injectable"; import { asLegacyGlobalForExtensionApi } from "../as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api"; +import type { AppEvent } from "../../common/app-event-bus/event-bus"; +import type { EventEmitter, EventEmitterCallback, EventEmitterOptions } from "../../common/event-emitter"; -export type { AppEvent } from "../../common/app-event-bus/event-bus"; +export type { + AppEvent, + EventEmitter, + EventEmitterCallback, + EventEmitterOptions, +}; export const appEventBus = asLegacyGlobalForExtensionApi(appEventBusInjectable); diff --git a/packages/core/src/extensions/common-api/index.ts b/packages/core/src/extensions/common-api/index.ts index 01e41ca11c..fb0bcf9fcb 100644 --- a/packages/core/src/extensions/common-api/index.ts +++ b/packages/core/src/extensions/common-api/index.ts @@ -13,6 +13,8 @@ import * as Types from "./types"; import * as Proxy from "./proxy"; import loggerInjectable from "../../common/logger.injectable"; import { asLegacyGlobalForExtensionApi } from "../as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api"; +import type { Logger } from "../../common/logger"; +import type { LensExtension, LensExtensionManifest } from "../lens-extension"; const logger = asLegacyGlobalForExtensionApi(loggerInjectable); @@ -25,4 +27,7 @@ export { Util, logger, Proxy, + Logger, + LensExtension, + LensExtensionManifest, }; diff --git a/packages/core/src/extensions/common-api/stores.ts b/packages/core/src/extensions/common-api/stores.ts index b369579d70..023fc5c7a4 100644 --- a/packages/core/src/extensions/common-api/stores.ts +++ b/packages/core/src/extensions/common-api/stores.ts @@ -3,4 +3,10 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -export { ExtensionStore } from "../extension-store"; +import type { BaseStoreParams } from "../../common/base-store/base-store"; +import { ExtensionStore } from "../extension-store"; + +export { + BaseStoreParams, + ExtensionStore, +}; diff --git a/packages/core/src/extensions/common-api/user-preferences.ts b/packages/core/src/extensions/common-api/user-preferences.ts deleted file mode 100644 index ed925bd05d..0000000000 --- a/packages/core/src/extensions/common-api/user-preferences.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -import userStoreInjectable from "../../common/user-store/user-store.injectable"; -import { asLegacyGlobalForExtensionApi } from "../as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api"; -export interface UserPreferenceExtensionItems { - /** - * Get the configured kubectl binaries path. - */ - getKubectlPath: () => string | undefined; -} - -const userStore = asLegacyGlobalForExtensionApi(userStoreInjectable); - -export const Preferences: UserPreferenceExtensionItems = { - getKubectlPath: () => userStore.kubectlBinariesPath, -}; diff --git a/packages/core/src/extensions/common-api/utils.ts b/packages/core/src/extensions/common-api/utils.ts index a6dfdee447..077ebe4ad5 100644 --- a/packages/core/src/extensions/common-api/utils.ts +++ b/packages/core/src/extensions/common-api/utils.ts @@ -9,20 +9,9 @@ import { asLegacyGlobalFunctionForExtensionApi } from "../as-legacy-globals-for- import { getLegacyGlobalDiForExtensionApi } from "../as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api"; import { Singleton } from "../../common/utils"; import { prevDefault, stopPropagation } from "../../renderer/utils/prevDefault"; -import type { IClassName } from "../../renderer/utils/cssNames"; import { cssNames } from "../../renderer/utils/cssNames"; -export interface UtilsExtensionItems { - Singleton: typeof Singleton; - prevDefault: (callback: (evt: E) => R) => (evt: E) => R; - stopPropagation: (evt: Event | React.SyntheticEvent) => void; - cssNames: (...classNames: IClassName[]) => string; - openExternal: (url: string) => Promise; - openBrowser: (url: string) => Promise; - getAppVersion: () => string; -} - -export const Util: UtilsExtensionItems = { +export const Util = { Singleton, prevDefault, stopPropagation, @@ -34,4 +23,4 @@ export const Util: UtilsExtensionItems = { return di.inject(buildVersionInjectable).get(); }, -}; +} as const; diff --git a/packages/core/src/extensions/lens-extension.ts b/packages/core/src/extensions/lens-extension.ts index 831822fd2b..77a9bf908c 100644 --- a/packages/core/src/extensions/lens-extension.ts +++ b/packages/core/src/extensions/lens-extension.ts @@ -32,7 +32,12 @@ export interface LensExtensionManifest extends PackageJson { export const lensExtensionDependencies = Symbol("lens-extension-dependencies"); export const Disposers = Symbol("disposers"); -export class LensExtension { +export class LensExtension< + /** + * @ignore + */ + Dependencies extends LensExtensionDependencies = LensExtensionDependencies, +> { readonly id: LensExtensionId; readonly manifest: LensExtensionManifest; readonly manifestPath: string; @@ -50,6 +55,9 @@ export class LensExtension