From c3837441c83b595dc3f352de4239acf97be1530c Mon Sep 17 00:00:00 2001 From: bnechyporenko Date: Wed, 6 Jul 2022 20:01:09 +0200 Subject: [PATCH] Incorporated the feedback. Signed-off-by: bnechyporenko --- .../src/plugin-options/usePluginOptions.tsx | 23 +++++++++++-------- .../core-plugin-api/src/plugin/Plugin.tsx | 16 ++++++------- packages/core-plugin-api/src/plugin/index.ts | 2 -- packages/core-plugin-api/src/plugin/types.ts | 14 +++-------- 4 files changed, 23 insertions(+), 32 deletions(-) diff --git a/packages/core-plugin-api/src/plugin-options/usePluginOptions.tsx b/packages/core-plugin-api/src/plugin-options/usePluginOptions.tsx index 5feda8234b..55e2c28701 100644 --- a/packages/core-plugin-api/src/plugin-options/usePluginOptions.tsx +++ b/packages/core-plugin-api/src/plugin-options/usePluginOptions.tsx @@ -19,13 +19,13 @@ import { createVersionedValueMap, useVersionedContext, } from '@backstage/version-bridge'; -import { BackstagePlugin, AnyPluginOptions } from '../plugin'; +import { BackstagePlugin } from '../plugin'; import React, { ReactNode } from 'react'; const contextKey: string = 'plugin-context'; /** - * Properties for the AsyncEntityProvider component. + * Properties for the PluginProvider component. * * @public */ @@ -38,14 +38,15 @@ export const PluginProvider = ({ children, plugin, }: PluginOptionsProviderProps): JSX.Element => { - const { Provider } = createVersionedContext<{ 1: AnyPluginOptions }>( - contextKey, - ); + const { Provider } = createVersionedContext<{ + 1: { plugin: BackstagePlugin | undefined }; + }>(contextKey); + return ( @@ -61,7 +62,7 @@ export const PluginProvider = ({ * @alpha */ export function usePluginOptions< - TPluginOptions extends AnyPluginOptions = AnyPluginOptions, + TPluginOptions extends {} = {}, >(): TPluginOptions { const versionedHolder = useVersionedContext<{ 1: TPluginOptions }>( contextKey, @@ -78,7 +79,9 @@ export function usePluginOptions< return ( value as unknown as { - getPluginOptions(): AnyPluginOptions; + plugin: { + getPluginOptions(): {}; + }; } - ).getPluginOptions() as TPluginOptions; + ).plugin.getPluginOptions() as TPluginOptions; } diff --git a/packages/core-plugin-api/src/plugin/Plugin.tsx b/packages/core-plugin-api/src/plugin/Plugin.tsx index 8c5153da99..6c5963d3f0 100644 --- a/packages/core-plugin-api/src/plugin/Plugin.tsx +++ b/packages/core-plugin-api/src/plugin/Plugin.tsx @@ -20,8 +20,6 @@ import { Extension, AnyRoutes, AnyExternalRoutes, - AnyPluginOptions, - AnyPluginInputOptions, PluginFeatureFlagConfig, } from './types'; import { AnyApiFactory } from '../apis'; @@ -30,8 +28,8 @@ import { AnyApiFactory } from '../apis'; * @internal */ export class PluginImpl< - PluginInputOptions extends AnyPluginInputOptions, - PluginOptions extends AnyPluginOptions, + PluginInputOptions extends {}, + PluginOptions extends {}, Routes extends AnyRoutes, ExternalRoutes extends AnyExternalRoutes, > implements BackstagePlugin @@ -45,7 +43,7 @@ export class PluginImpl< >, ) {} - options: AnyPluginOptions | undefined = undefined; + options: {} | undefined = undefined; getId(): string { return this.config.id; @@ -77,11 +75,11 @@ export class PluginImpl< } } - getPluginOptions(): AnyPluginOptions { + getPluginOptions(): {} { if (this.config.__experimentalConfigure && !this.options) { this.options = this.config.__experimentalConfigure(); } - return this.options ?? ({} as AnyPluginOptions); + return this.options ?? {}; } toString() { @@ -96,8 +94,8 @@ export class PluginImpl< * @public */ export function createPlugin< - PluginInputOptions extends AnyPluginInputOptions = {}, - PluginOptions extends AnyPluginInputOptions = {}, + PluginInputOptions extends {}, + PluginOptions extends {}, Routes extends AnyRoutes = {}, ExternalRoutes extends AnyExternalRoutes = {}, >( diff --git a/packages/core-plugin-api/src/plugin/index.ts b/packages/core-plugin-api/src/plugin/index.ts index 58fcec03aa..7d088ef823 100644 --- a/packages/core-plugin-api/src/plugin/index.ts +++ b/packages/core-plugin-api/src/plugin/index.ts @@ -18,8 +18,6 @@ export { createPlugin } from './Plugin'; export type { AnyExternalRoutes, - AnyPluginOptions, - AnyPluginInputOptions, AnyRoutes, BackstagePlugin, Extension, diff --git a/packages/core-plugin-api/src/plugin/types.ts b/packages/core-plugin-api/src/plugin/types.ts index 56e0845706..51e75ff416 100644 --- a/packages/core-plugin-api/src/plugin/types.ts +++ b/packages/core-plugin-api/src/plugin/types.ts @@ -44,21 +44,13 @@ export type AnyRoutes = { [name: string]: RouteRef | SubRouteRef }; */ export type AnyExternalRoutes = { [name: string]: ExternalRouteRef }; -/** - * Catch-all metadata type. - * - * @public - */ -export type AnyPluginOptions = { [name: string]: unknown }; -export type AnyPluginInputOptions = { [name: string]: unknown }; - /** * Plugin type. * * @public */ export type BackstagePlugin< - PluginInputOptions extends AnyPluginInputOptions = {}, + PluginInputOptions extends {} = {}, Routes extends AnyRoutes = {}, ExternalRoutes extends AnyExternalRoutes = {}, > = { @@ -90,8 +82,8 @@ export type PluginFeatureFlagConfig = { * @public */ export type PluginConfig< - PluginInputOptions extends AnyPluginInputOptions, - PluginOptions extends AnyPluginOptions, + PluginInputOptions extends {}, + PluginOptions extends {}, Routes extends AnyRoutes, ExternalRoutes extends AnyExternalRoutes, > = {