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(