diff --git a/packages/frontend-app-api/src/extensions/Core.tsx b/packages/frontend-app-api/src/extensions/Core.tsx index cb93b2888f..4cb21a8702 100644 --- a/packages/frontend-app-api/src/extensions/Core.tsx +++ b/packages/frontend-app-api/src/extensions/Core.tsx @@ -17,17 +17,16 @@ import { coreExtensionData, createExtension, + createExtensionInput, } from '@backstage/frontend-plugin-api'; export const Core = createExtension({ id: 'core', at: 'root', inputs: { - apis: { - extensionData: { - api: coreExtensionData.apiFactory, - }, - }, + apis: createExtensionInput({ + api: coreExtensionData.apiFactory, + }), }, output: {}, factory() {}, diff --git a/packages/frontend-app-api/src/extensions/CoreLayout.tsx b/packages/frontend-app-api/src/extensions/CoreLayout.tsx index 29680bf23c..0c5c0446fc 100644 --- a/packages/frontend-app-api/src/extensions/CoreLayout.tsx +++ b/packages/frontend-app-api/src/extensions/CoreLayout.tsx @@ -18,6 +18,7 @@ import React from 'react'; import { createExtension, coreExtensionData, + createExtensionInput, } from '@backstage/frontend-plugin-api'; import { SidebarPage } from '@backstage/core-components'; @@ -25,39 +26,28 @@ export const CoreLayout = createExtension({ id: 'core.layout', at: 'root', inputs: { - nav: { - extensionData: { + nav: createExtensionInput( + { element: coreExtensionData.reactElement, }, - }, - content: { - extensionData: { + { singleton: true }, + ), + content: createExtensionInput( + { element: coreExtensionData.reactElement, }, - }, + { singleton: true }, + ), }, output: { element: coreExtensionData.reactElement, }, factory({ bind, inputs }) { - // TODO: Support this as part of the core system - if (inputs.nav.length !== 1) { - throw Error( - `Extension 'core.layout' did not receive exactly one 'nav' input, got ${inputs.nav.length}`, - ); - } - if (inputs.content.length !== 1) { - throw Error( - `Extension 'core.layout' did not receive exactly one 'content' input, got ${inputs.content.length}`, - ); - } - bind({ - // TODO: set base path using the logic from AppRouter element: ( - {inputs.nav[0].element} - {inputs.content[0].element} + {inputs.nav.element} + {inputs.content.element} ), }); diff --git a/packages/frontend-app-api/src/extensions/CoreRoutes.tsx b/packages/frontend-app-api/src/extensions/CoreRoutes.tsx index 5a6cd87bfd..0d20abfb6b 100644 --- a/packages/frontend-app-api/src/extensions/CoreRoutes.tsx +++ b/packages/frontend-app-api/src/extensions/CoreRoutes.tsx @@ -18,6 +18,7 @@ import React from 'react'; import { createExtension, coreExtensionData, + createExtensionInput, } from '@backstage/frontend-plugin-api'; import { useRoutes } from 'react-router-dom'; @@ -25,13 +26,11 @@ export const CoreRoutes = createExtension({ id: 'core.routes', at: 'core.layout/content', inputs: { - routes: { - extensionData: { - path: coreExtensionData.routePath, - ref: coreExtensionData.routeRef, - element: coreExtensionData.reactElement, - }, - }, + routes: createExtensionInput({ + path: coreExtensionData.routePath, + ref: coreExtensionData.routeRef, + element: coreExtensionData.reactElement, + }), }, output: { element: coreExtensionData.reactElement, diff --git a/plugins/graphiql/src/alpha.tsx b/plugins/graphiql/src/alpha.tsx index 3d1bf839af..9cd956fc1a 100644 --- a/plugins/graphiql/src/alpha.tsx +++ b/plugins/graphiql/src/alpha.tsx @@ -19,6 +19,7 @@ import { createApiExtension, createExtension, createExtensionDataRef, + createExtensionInput, createNavItemExtension, createPageExtension, createPlugin, @@ -64,11 +65,9 @@ const endpointDataRef = createExtensionDataRef( export const graphiqlBrowseApi = createApiExtension({ api: graphQlBrowseApiRef, // apis.plugin.graphiql.browse inputs: { - endpoints: { - extensionData: { - endpoint: endpointDataRef, - }, - }, + endpoints: createExtensionInput({ + endpoint: endpointDataRef, + }), }, factory({ inputs }) { return createApiFactory(