diff --git a/.changeset/gentle-eggs-speak.md b/.changeset/gentle-eggs-speak.md new file mode 100644 index 0000000000..dd65eec447 --- /dev/null +++ b/.changeset/gentle-eggs-speak.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Grouped all `/alpha` extension data reference exports under `catalogExtensionData`. diff --git a/plugins/catalog-react/api-report-alpha.md b/plugins/catalog-react/api-report-alpha.md index 27ca640bbc..cf9fdc6c3a 100644 --- a/plugins/catalog-react/api-report-alpha.md +++ b/plugins/catalog-react/api-report-alpha.md @@ -13,6 +13,16 @@ import { ResolvedExtensionInputs } from '@backstage/frontend-plugin-api'; import { ResourcePermission } from '@backstage/plugin-permission-common'; import { RouteRef } from '@backstage/frontend-plugin-api'; +// @alpha (undocumented) +export const catalogExtensionData: { + entityContentTitle: ConfigurableExtensionDataRef; + entityFilterFunction: ConfigurableExtensionDataRef< + (entity: Entity) => boolean, + {} + >; + entityFilterExpression: ConfigurableExtensionDataRef; +}; + // @alpha (undocumented) export function createEntityCardExtension< TInputs extends AnyExtensionInputMap, @@ -26,8 +36,8 @@ export function createEntityCardExtension< disabled?: boolean; inputs?: TInputs; filter?: - | typeof entityFilterFunctionExtensionDataRef.T - | typeof entityFilterExpressionExtensionDataRef.T; + | typeof catalogExtensionData.entityFilterFunction.T + | typeof catalogExtensionData.entityFilterExpression.T; loader: (options: { inputs: Expand>; }) => Promise; @@ -51,8 +61,8 @@ export function createEntityContentExtension< defaultPath: string; defaultTitle: string; filter?: - | typeof entityFilterFunctionExtensionDataRef.T - | typeof entityFilterExpressionExtensionDataRef.T; + | typeof catalogExtensionData.entityFilterFunction.T + | typeof catalogExtensionData.entityFilterExpression.T; loader: (options: { inputs: Expand>; }) => Promise; @@ -62,24 +72,6 @@ export function createEntityContentExtension< filter?: string | undefined; }>; -// @alpha (undocumented) -export const entityContentTitleExtensionDataRef: ConfigurableExtensionDataRef< - string, - {} ->; - -// @alpha (undocumented) -export const entityFilterExpressionExtensionDataRef: ConfigurableExtensionDataRef< - string, - {} ->; - -// @alpha (undocumented) -export const entityFilterFunctionExtensionDataRef: ConfigurableExtensionDataRef< - (entity: Entity) => boolean, - {} ->; - // @alpha export function isOwnerOf(owner: Entity, entity: Entity): boolean; diff --git a/plugins/catalog-react/src/alpha.tsx b/plugins/catalog-react/src/alpha.tsx index 8f7144681b..330cd573cd 100644 --- a/plugins/catalog-react/src/alpha.tsx +++ b/plugins/catalog-react/src/alpha.tsx @@ -33,17 +33,17 @@ export { useEntityPermission } from './hooks/useEntityPermission'; export { isOwnerOf } from './utils'; /** @alpha */ -export const entityContentTitleExtensionDataRef = - createExtensionDataRef('plugin.catalog.entity.content.title'); - -/** @alpha */ -export const entityFilterFunctionExtensionDataRef = createExtensionDataRef< - (entity: Entity) => boolean ->('plugin.catalog.entity.filter.fn'); - -/** @alpha */ -export const entityFilterExpressionExtensionDataRef = - createExtensionDataRef('plugin.catalog.entity.filter.expression'); +export const catalogExtensionData = { + entityContentTitle: createExtensionDataRef( + 'catalog.entity-content-title', + ), + entityFilterFunction: createExtensionDataRef<(entity: Entity) => boolean>( + 'catalog.entity-filter-function', + ), + entityFilterExpression: createExtensionDataRef( + 'catalog.entity-filter-expression', + ), +}; // TODO: Figure out how to merge with provided config schema /** @alpha */ @@ -56,8 +56,8 @@ export function createEntityCardExtension< disabled?: boolean; inputs?: TInputs; filter?: - | typeof entityFilterFunctionExtensionDataRef.T - | typeof entityFilterExpressionExtensionDataRef.T; + | typeof catalogExtensionData.entityFilterFunction.T + | typeof catalogExtensionData.entityFilterExpression.T; loader: (options: { inputs: Expand>; }) => Promise; @@ -73,8 +73,8 @@ export function createEntityCardExtension< disabled: options.disabled ?? true, output: { element: coreExtensionData.reactElement, - filterFunction: entityFilterFunctionExtensionDataRef.optional(), - filterExpression: entityFilterExpressionExtensionDataRef.optional(), + filterFunction: catalogExtensionData.entityFilterFunction.optional(), + filterExpression: catalogExtensionData.entityFilterExpression.optional(), }, inputs: options.inputs, configSchema: createSchemaFromZod(z => @@ -114,8 +114,8 @@ export function createEntityContentExtension< defaultPath: string; defaultTitle: string; filter?: - | typeof entityFilterFunctionExtensionDataRef.T - | typeof entityFilterExpressionExtensionDataRef.T; + | typeof catalogExtensionData.entityFilterFunction.T + | typeof catalogExtensionData.entityFilterExpression.T; loader: (options: { inputs: Expand>; }) => Promise; @@ -133,9 +133,9 @@ export function createEntityContentExtension< element: coreExtensionData.reactElement, path: coreExtensionData.routePath, routeRef: coreExtensionData.routeRef.optional(), - title: entityContentTitleExtensionDataRef, - filterFunction: entityFilterFunctionExtensionDataRef.optional(), - filterExpression: entityFilterExpressionExtensionDataRef.optional(), + title: catalogExtensionData.entityContentTitle, + filterFunction: catalogExtensionData.entityFilterFunction.optional(), + filterExpression: catalogExtensionData.entityFilterExpression.optional(), }, inputs: options.inputs, configSchema: createSchemaFromZod(z => @@ -173,15 +173,15 @@ export function createEntityContentExtension< function mergeFilters(inputs: { options: { filter?: - | typeof entityFilterFunctionExtensionDataRef.T - | typeof entityFilterExpressionExtensionDataRef.T; + | typeof catalogExtensionData.entityFilterFunction.T + | typeof catalogExtensionData.entityFilterExpression.T; }; config: { filter?: string; }; }): { - filterFunction?: typeof entityFilterFunctionExtensionDataRef.T; - filterExpression?: typeof entityFilterExpressionExtensionDataRef.T; + filterFunction?: typeof catalogExtensionData.entityFilterFunction.T; + filterExpression?: typeof catalogExtensionData.entityFilterExpression.T; } { const { options, config } = inputs; if (config.filter) { diff --git a/plugins/catalog/src/alpha/entityContents.tsx b/plugins/catalog/src/alpha/entityContents.tsx index b278e15735..ebf2bfe705 100644 --- a/plugins/catalog/src/alpha/entityContents.tsx +++ b/plugins/catalog/src/alpha/entityContents.tsx @@ -21,8 +21,7 @@ import { } from '@backstage/frontend-plugin-api'; import { createEntityContentExtension, - entityFilterFunctionExtensionDataRef, - entityFilterExpressionExtensionDataRef, + catalogExtensionData, } from '@backstage/plugin-catalog-react/alpha'; export const OverviewEntityContent = createEntityContentExtension({ @@ -33,8 +32,8 @@ export const OverviewEntityContent = createEntityContentExtension({ inputs: { cards: createExtensionInput({ element: coreExtensionData.reactElement, - filterFunction: entityFilterFunctionExtensionDataRef.optional(), - filterExpression: entityFilterExpressionExtensionDataRef.optional(), + filterFunction: catalogExtensionData.entityFilterFunction.optional(), + filterExpression: catalogExtensionData.entityFilterExpression.optional(), }), }, loader: async ({ inputs }) => diff --git a/plugins/catalog/src/alpha/pages.tsx b/plugins/catalog/src/alpha/pages.tsx index c80e17ba4e..eee8a68d9e 100644 --- a/plugins/catalog/src/alpha/pages.tsx +++ b/plugins/catalog/src/alpha/pages.tsx @@ -28,7 +28,7 @@ import { AsyncEntityProvider, entityRouteRef, } from '@backstage/plugin-catalog-react'; -import { entityContentTitleExtensionDataRef } from '@backstage/plugin-catalog-react/alpha'; +import { catalogExtensionData } from '@backstage/plugin-catalog-react/alpha'; import { rootRouteRef } from '../routes'; import { useEntityFromUrl } from '../components/CatalogEntityPage/useEntityFromUrl'; @@ -56,7 +56,7 @@ export const CatalogEntityPage = createPageExtension({ element: coreExtensionData.reactElement, path: coreExtensionData.routePath, routeRef: coreExtensionData.routeRef.optional(), - title: entityContentTitleExtensionDataRef, + title: catalogExtensionData.entityContentTitle, }), }, loader: async ({ inputs }) => {