From 6d2efb99e7c0851d06e10ec67125e404ad536dce Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Thu, 2 Feb 2023 05:28:56 -0800 Subject: [PATCH] Export more things for the extension API (#7088) * Export more things for the extension API Signed-off-by: Sebastian Malton * Provide more insight into the dist-tag computation Signed-off-by: Sebastian Malton * Fix type errors Signed-off-by: Sebastian Malton --------- Signed-off-by: Sebastian Malton --- .github/workflows/publish-release-npm.yml | 4 +- .../core/src/extensions/common-api/index.ts | 38 +++++++------------ .../core/src/extensions/common-api/k8s-api.ts | 27 +++++++------ .../extensions/common-api/registrations.ts | 17 --------- .../core/src/extensions/common-api/types.ts | 15 +++++++- .../core/src/extensions/common-api/utils.ts | 33 ++++++++-------- .../core/src/extensions/lens-extension.ts | 2 +- .../src/extensions/lens-renderer-extension.ts | 3 +- packages/core/src/renderer/utils/cssNames.ts | 4 +- 9 files changed, 68 insertions(+), 75 deletions(-) delete mode 100644 packages/core/src/extensions/common-api/registrations.ts diff --git a/.github/workflows/publish-release-npm.yml b/.github/workflows/publish-release-npm.yml index f697a69e8e..cb87159709 100644 --- a/.github/workflows/publish-release-npm.yml +++ b/.github/workflows/publish-release-npm.yml @@ -38,7 +38,9 @@ jobs: - name: Publish NPM packages run: | npm config set '//registry.npmjs.org/:_authToken' "${NPM_TOKEN}" - DIST_TAG=$(cat lerna.json | jq '.version' --raw-output | xargs npm exec -- @k8slens/semver --prerelease 0) + VERSION=$(cat lerna.json | jq '.version' --raw-output) + echo ${VERSION} + DIST_TAG=$(npm exec -- @k8slens/semver --prerelease 0 ${VERSION}) yarn lerna \ publish from-package \ --no-push \ diff --git a/packages/core/src/extensions/common-api/index.ts b/packages/core/src/extensions/common-api/index.ts index fb0bcf9fcb..ddfaae5dd6 100644 --- a/packages/core/src/extensions/common-api/index.ts +++ b/packages/core/src/extensions/common-api/index.ts @@ -3,31 +3,21 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -// APIs -import { App } from "./app"; -import * as EventBus from "./event-bus"; -import * as Store from "./stores"; -import { Util } from "./utils"; -import * as Catalog from "./catalog"; -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); +// APIs +export { App } from "./app"; +export * as EventBus from "./event-bus"; +export * as Store from "./stores"; +export * as Util from "./utils"; +export * as Catalog from "./catalog"; +export * as Types from "./types"; +export * as Proxy from "./proxy"; -export { - App, - EventBus, - Catalog, - Store, - Types, - Util, - logger, - Proxy, - Logger, - LensExtension, - LensExtensionManifest, -}; +export type { Logger } from "../../common/logger"; +export type { LensExtension, LensExtensionManifest } from "../lens-extension"; +export type { InstalledExtension } from "../extension-discovery/extension-discovery"; +export type { PackageJson } from "type-fest"; + +export const logger = asLegacyGlobalForExtensionApi(loggerInjectable); diff --git a/packages/core/src/extensions/common-api/k8s-api.ts b/packages/core/src/extensions/common-api/k8s-api.ts index c8b04e3ed9..0b9a05353f 100644 --- a/packages/core/src/extensions/common-api/k8s-api.ts +++ b/packages/core/src/extensions/common-api/k8s-api.ts @@ -108,13 +108,16 @@ export type { CreateKubeApiForLocalClusterConfig as ILocalKubeApiConfig } from " export { KubeObject, KubeStatus, - type OwnerReference, - type KubeObjectMetadata, - type NamespaceScopedMetadata, - type ClusterScopedMetadata, - type BaseKubeJsonApiObjectMetadata, - type KubeJsonApiObjectMetadata, - type KubeStatusData, +} from "../../common/k8s-api/kube-object"; +export type { + OwnerReference, + KubeObjectMetadata, + NamespaceScopedMetadata, + ClusterScopedMetadata, + BaseKubeJsonApiObjectMetadata, + KubeJsonApiObjectMetadata, + KubeStatusData, + KubeJsonApiDataFor, } from "../../common/k8s-api/kube-object"; export type { @@ -177,11 +180,11 @@ export abstract class KubeObjectStore< } } -export { - type JsonPatch, - type KubeObjectStoreLoadAllParams, - type KubeObjectStoreLoadingParams, - type KubeObjectStoreSubscribeParams, +export type { + JsonPatch, + KubeObjectStoreLoadAllParams, + KubeObjectStoreLoadingParams, + KubeObjectStoreSubscribeParams, } from "../../common/k8s-api/kube-object.store"; /** diff --git a/packages/core/src/extensions/common-api/registrations.ts b/packages/core/src/extensions/common-api/registrations.ts deleted file mode 100644 index 3592d7950e..0000000000 --- a/packages/core/src/extensions/common-api/registrations.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ -export type { StatusBarRegistration } from "../../renderer/components/status-bar/status-bar-registration"; -export type { KubeObjectMenuRegistration, KubeObjectMenuComponents } from "../../renderer/components/kube-object-menu/kube-object-menu-registration"; -export type { AppPreferenceRegistration, AppPreferenceComponents } from "../../features/preferences/renderer/compliance-for-legacy-extension-api/app-preference-registration"; -export type { KubeObjectDetailRegistration, KubeObjectDetailComponents } from "../../renderer/components/kube-object-details/kube-object-detail-registration"; -export type { KubeObjectStatusRegistration } from "../../renderer/components/kube-object-status-icon/kube-object-status-registration"; -export type { PageRegistration, RegisteredPage, PageParams, PageComponentProps, PageComponents, PageTarget } from "../../renderer/routes/page-registration"; -export type { ClusterPageMenuRegistration, ClusterPageMenuComponents } from "../../renderer/components/layout/cluster-page-menu"; -export type { ProtocolHandlerRegistration, RouteParams as ProtocolRouteParams, RouteHandler as ProtocolRouteHandler } from "../../common/protocol-handler/registration"; -export type { CustomCategoryViewProps, CustomCategoryViewComponents, CustomCategoryViewRegistration } from "../../renderer/components/+catalog/custom-views"; -export type { ShellEnvModifier, ShellEnvContext } from "../../main/shell-session/shell-env-modifier/shell-env-modifier-registration"; -export type { KubeObjectContextMenuItem, KubeObjectOnContextMenuOpenContext, KubeObjectOnContextMenuOpen, KubeObjectHandlers, KubeObjectHandlerRegistration } from "../../renderer/kube-object/handler"; -export type { TrayMenuRegistration } from "../../main/tray/tray-menu-registration"; -export type { MenuRegistration } from "../../features/application-menu/main/menu-registration"; diff --git a/packages/core/src/extensions/common-api/types.ts b/packages/core/src/extensions/common-api/types.ts index febb2c4e56..e1ed223fc0 100644 --- a/packages/core/src/extensions/common-api/types.ts +++ b/packages/core/src/extensions/common-api/types.ts @@ -3,8 +3,21 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ + export type IpcMainInvokeEvent = Electron.IpcMainInvokeEvent; export type IpcRendererEvent = Electron.IpcRendererEvent; export type IpcMainEvent = Electron.IpcMainEvent; -export * from "./registrations"; +export type { StatusBarRegistration } from "../../renderer/components/status-bar/status-bar-registration"; +export type { KubeObjectMenuRegistration, KubeObjectMenuComponents } from "../../renderer/components/kube-object-menu/kube-object-menu-registration"; +export type { AppPreferenceRegistration, AppPreferenceComponents } from "../../features/preferences/renderer/compliance-for-legacy-extension-api/app-preference-registration"; +export type { KubeObjectDetailRegistration, KubeObjectDetailComponents } from "../../renderer/components/kube-object-details/kube-object-detail-registration"; +export type { KubeObjectStatusRegistration } from "../../renderer/components/kube-object-status-icon/kube-object-status-registration"; +export type { PageRegistration, RegisteredPage, PageParams, PageComponentProps, PageComponents, PageTarget } from "../../renderer/routes/page-registration"; +export type { ClusterPageMenuRegistration, ClusterPageMenuComponents } from "../../renderer/components/layout/cluster-page-menu"; +export type { ProtocolHandlerRegistration, RouteParams as ProtocolRouteParams, RouteHandler as ProtocolRouteHandler } from "../../common/protocol-handler/registration"; +export type { CustomCategoryViewProps, CustomCategoryViewComponents, CustomCategoryViewRegistration } from "../../renderer/components/+catalog/custom-views"; +export type { ShellEnvModifier, ShellEnvContext } from "../../main/shell-session/shell-env-modifier/shell-env-modifier-registration"; +export type { KubeObjectContextMenuItem, KubeObjectOnContextMenuOpenContext, KubeObjectOnContextMenuOpen, KubeObjectHandlers, KubeObjectHandlerRegistration } from "../../renderer/kube-object/handler"; +export type { TrayMenuRegistration } from "../../main/tray/tray-menu-registration"; +export type { MenuRegistration } from "../../features/application-menu/main/menu-registration"; diff --git a/packages/core/src/extensions/common-api/utils.ts b/packages/core/src/extensions/common-api/utils.ts index 077ebe4ad5..a129cfda60 100644 --- a/packages/core/src/extensions/common-api/utils.ts +++ b/packages/core/src/extensions/common-api/utils.ts @@ -7,20 +7,23 @@ import openLinkInBrowserInjectable from "../../common/utils/open-link-in-browser import buildVersionInjectable from "../../main/vars/build-version/build-version.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 { Singleton } from "../../common/utils"; -import { prevDefault, stopPropagation } from "../../renderer/utils/prevDefault"; -import { cssNames } from "../../renderer/utils/cssNames"; -export const Util = { - Singleton, - prevDefault, - stopPropagation, - cssNames, - openExternal: asLegacyGlobalFunctionForExtensionApi(openLinkInBrowserInjectable), - openBrowser: asLegacyGlobalFunctionForExtensionApi(openLinkInBrowserInjectable), - getAppVersion: () => { - const di = getLegacyGlobalDiForExtensionApi(); +export { Singleton } from "../../common/utils"; +export { prevDefault, stopPropagation } from "../../renderer/utils/prevDefault"; - return di.inject(buildVersionInjectable).get(); - }, -} as const; +export type { IClassName, IgnoredClassNames } from "../../renderer/utils"; +export { cssNames } from "../../renderer/utils/cssNames"; + +export type { OpenLinkInBrowser } from "../../common/utils/open-link-in-browser.injectable"; + +export const openExternal = asLegacyGlobalFunctionForExtensionApi(openLinkInBrowserInjectable); +export const openBrowser = asLegacyGlobalFunctionForExtensionApi(openLinkInBrowserInjectable); + +export const getAppVersion = () => { + const di = getLegacyGlobalDiForExtensionApi(); + + return di.inject(buildVersionInjectable).get(); +}; + +export { disposer } from "../../common/utils"; +export type { Disposer, Disposable, ExtendableDisposer } from "../../common/utils"; diff --git a/packages/core/src/extensions/lens-extension.ts b/packages/core/src/extensions/lens-extension.ts index 77a9bf908c..44848d5f84 100644 --- a/packages/core/src/extensions/lens-extension.ts +++ b/packages/core/src/extensions/lens-extension.ts @@ -8,7 +8,7 @@ import { action, computed, makeObservable, observable } from "mobx"; import type { PackageJson } from "type-fest"; import { disposer } from "../common/utils"; import type { LensExtensionDependencies } from "./lens-extension-set-dependencies"; -import type { ProtocolHandlerRegistration } from "./common-api/registrations"; +import type { ProtocolHandlerRegistration } from "../common/protocol-handler/registration"; export type LensExtensionId = string; // path to manifest (package.json) export type LensExtensionConstructor = new (...args: ConstructorParameters) => LensExtension; diff --git a/packages/core/src/extensions/lens-renderer-extension.ts b/packages/core/src/extensions/lens-renderer-extension.ts index b1b024c091..aa00fd8ba3 100644 --- a/packages/core/src/extensions/lens-renderer-extension.ts +++ b/packages/core/src/extensions/lens-renderer-extension.ts @@ -29,7 +29,8 @@ import type { KubeObjectDetailRegistration } from "../renderer/components/kube-o import type { ClusterFrameChildComponent } from "../renderer/frames/cluster-frame/cluster-frame-child-component-injection-token"; import type { EntitySettingRegistration } from "../renderer/components/+entity-settings/extension-registrator.injectable"; import type { CatalogEntityDetailRegistration } from "../renderer/components/+catalog/entity-details/token"; -import type { ClusterPageMenuRegistration, PageRegistration } from "./common-api/registrations"; +import type { PageRegistration } from "../renderer/routes/page-registration"; +import type { ClusterPageMenuRegistration } from "../renderer/components/layout/cluster-page-menu"; export class LensRendererExtension extends LensExtension { globalPages: PageRegistration[] = []; diff --git a/packages/core/src/renderer/utils/cssNames.ts b/packages/core/src/renderer/utils/cssNames.ts index cd1fa37a4a..aebf5cdf72 100755 --- a/packages/core/src/renderer/utils/cssNames.ts +++ b/packages/core/src/renderer/utils/cssNames.ts @@ -6,9 +6,7 @@ import { iter } from "../../common/utils"; export type IgnoredClassNames = number | symbol | Function; - -export type IClassName = string | string[] | IClassNameMap | undefined | null | false | IgnoredClassNames; -export type IClassNameMap = object; +export type IClassName = string | string[] | Record | undefined | null | false | IgnoredClassNames; export function cssNames(...classNames: IClassName[]): string { const classNamesEnabled = new Map();