diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index 412c7d0716..4ef0db4910 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -51,6 +51,7 @@ "@backstage/core-components": "workspace:^", "@backstage/core-plugin-api": "workspace:^", "@backstage/errors": "workspace:^", + "@backstage/frontend-plugin-api": "workspace:^", "@backstage/integration-react": "workspace:^", "@backstage/plugin-catalog-common": "workspace:^", "@backstage/plugin-catalog-react": "workspace:^", diff --git a/plugins/catalog/src/alpha.ts b/plugins/catalog/src/alpha.ts index 3509c1fb7f..ffa50ea1f7 100644 --- a/plugins/catalog/src/alpha.ts +++ b/plugins/catalog/src/alpha.ts @@ -15,3 +15,40 @@ */ export * from './translation'; + +import { + DiscoveryApi, + FetchApi, + discoveryApiRef, + fetchApiRef, +} from '@backstage/core-plugin-api'; +import { CatalogClient } from '@backstage/catalog-client'; +import { + createApiExtension, + createPlugin, +} from '@backstage/frontend-plugin-api'; +import { catalogApiRef } from '@backstage/plugin-catalog-react'; + +/** @alpha */ +export const CatalogApi = createApiExtension({ + factory: { + api: catalogApiRef, + deps: { + discoveryApi: discoveryApiRef, + fetchApi: fetchApiRef, + }, + factory: ({ + discoveryApi, + fetchApi, + }: { + discoveryApi: DiscoveryApi; + fetchApi: FetchApi; + }) => new CatalogClient({ discoveryApi, fetchApi }), + }, +}); + +/** @alpha */ +export default createPlugin({ + id: 'plugin.catalog', + extensions: [CatalogApi], +});