From 87b5e6e34a09e32c1b1910614b485851042e1573 Mon Sep 17 00:00:00 2001 From: James Brooks Date: Fri, 19 Sep 2025 12:52:31 +0100 Subject: [PATCH 1/2] Fix API error in catalog graph plugin Signed-off-by: James Brooks --- .changeset/cool-baboons-count.md | 5 +++++ plugins/catalog-graph/src/alpha.tsx | 18 ++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 .changeset/cool-baboons-count.md diff --git a/.changeset/cool-baboons-count.md b/.changeset/cool-baboons-count.md new file mode 100644 index 0000000000..c5dac494d9 --- /dev/null +++ b/.changeset/cool-baboons-count.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-graph': patch +--- + +Add missing API implementation for catalog graph plugin in NFS apps. diff --git a/plugins/catalog-graph/src/alpha.tsx b/plugins/catalog-graph/src/alpha.tsx index 5fc43f1b4a..9a7f15e553 100644 --- a/plugins/catalog-graph/src/alpha.tsx +++ b/plugins/catalog-graph/src/alpha.tsx @@ -15,6 +15,7 @@ */ import { + ApiBlueprint, createFrontendPlugin, PageBlueprint, } from '@backstage/frontend-plugin-api'; @@ -24,7 +25,11 @@ import { } from '@backstage/core-compat-api'; import { EntityCardBlueprint } from '@backstage/plugin-catalog-react/alpha'; import { catalogGraphRouteRef, catalogEntityRouteRef } from './routes'; -import { Direction } from '@backstage/plugin-catalog-graph'; +import { + catalogGraphApiRef, + DefaultCatalogGraphApi, + Direction, +} from '@backstage/plugin-catalog-graph'; const CatalogGraphEntityCard = EntityCardBlueprint.makeWithOverrides({ name: 'relations', @@ -85,6 +90,15 @@ const CatalogGraphPage = PageBlueprint.makeWithOverrides({ }, }); +const CatalogGraphApi = ApiBlueprint.make({ + params: defineParams => + defineParams({ + api: catalogGraphApiRef, + deps: {}, + factory: () => new DefaultCatalogGraphApi(), + }), +}); + export default createFrontendPlugin({ pluginId: 'catalog-graph', info: { packageJson: () => import('../package.json') }, @@ -94,7 +108,7 @@ export default createFrontendPlugin({ externalRoutes: { catalogEntity: convertLegacyRouteRef(catalogEntityRouteRef), }, - extensions: [CatalogGraphPage, CatalogGraphEntityCard], + extensions: [CatalogGraphPage, CatalogGraphEntityCard, CatalogGraphApi], }); export { catalogGraphTranslationRef } from './translation'; From 7abd78afb2e4f00e28fd6e7dfc47714e1c252a4c Mon Sep 17 00:00:00 2001 From: James Brooks Date: Fri, 19 Sep 2025 13:16:54 +0100 Subject: [PATCH 2/2] Update API report Signed-off-by: James Brooks --- plugins/catalog-graph/report-alpha.api.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/plugins/catalog-graph/report-alpha.api.md b/plugins/catalog-graph/report-alpha.api.md index fe852d8cf6..edf84e936a 100644 --- a/plugins/catalog-graph/report-alpha.api.md +++ b/plugins/catalog-graph/report-alpha.api.md @@ -3,11 +3,14 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts +import { AnyApiFactory } from '@backstage/frontend-plugin-api'; import { AnyRouteRefParams } from '@backstage/frontend-plugin-api'; +import { ApiFactory } from '@backstage/frontend-plugin-api'; import { Direction } from '@backstage/plugin-catalog-graph'; import { Entity } from '@backstage/catalog-model'; import { EntityCardType } from '@backstage/plugin-catalog-react/alpha'; import { EntityPredicate } from '@backstage/plugin-catalog-react/alpha'; +import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDataRef } from '@backstage/frontend-plugin-api'; import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; import { ExtensionInput } from '@backstage/frontend-plugin-api'; @@ -58,6 +61,21 @@ const _default: OverridableFrontendPlugin< }>; }, { + 'api:catalog-graph': ExtensionDefinition<{ + kind: 'api'; + name: undefined; + config: {}; + configInput: {}; + output: ExtensionDataRef; + inputs: {}; + params: < + TApi, + TImpl extends TApi, + TDeps extends { [name in string]: unknown }, + >( + params: ApiFactory, + ) => ExtensionBlueprintParams; + }>; 'entity-card:catalog-graph/relations': ExtensionDefinition<{ config: { kinds: string[] | undefined;