diff --git a/.changeset/orange-boats-hunt.md b/.changeset/orange-boats-hunt.md
new file mode 100644
index 0000000000..1a3d9b1682
--- /dev/null
+++ b/.changeset/orange-boats-hunt.md
@@ -0,0 +1,6 @@
+---
+'@backstage/frontend-app-api': patch
+'@backstage/core-compat-api': patch
+---
+
+Updates to match the new extension input wrapping.
diff --git a/.changeset/red-readers-search.md b/.changeset/red-readers-search.md
new file mode 100644
index 0000000000..c18d9672ba
--- /dev/null
+++ b/.changeset/red-readers-search.md
@@ -0,0 +1,10 @@
+---
+'@backstage/plugin-catalog-react': patch
+'@backstage/plugin-user-settings': patch
+'@backstage/plugin-graphiql': patch
+'@backstage/plugin-catalog': patch
+'@backstage/plugin-search': patch
+'@backstage/plugin-home': patch
+---
+
+Updates to the `/alpha` exports to match the extension input wrapping change.
diff --git a/.changeset/tasty-dolphins-unite.md b/.changeset/tasty-dolphins-unite.md
new file mode 100644
index 0000000000..b367b0c554
--- /dev/null
+++ b/.changeset/tasty-dolphins-unite.md
@@ -0,0 +1,5 @@
+---
+'@backstage/frontend-plugin-api': minor
+---
+
+Extension inputs are now wrapped into an additional object when passed to the extension factory, with the previous values being available at the `output` property. The `ExtensionInputValues` type has also been replaced by `ResolvedExtensionInputs`.
diff --git a/packages/core-compat-api/src/convertLegacyApp.ts b/packages/core-compat-api/src/convertLegacyApp.ts
index 3b12f0e1fd..9fe07cc783 100644
--- a/packages/core-compat-api/src/convertLegacyApp.ts
+++ b/packages/core-compat-api/src/convertLegacyApp.ts
@@ -117,7 +117,11 @@ export function convertLegacyApp(
factory({ inputs }) {
// Clone the root element, this replaces the FlatRoutes declared in the app with out content input
return {
- element: React.cloneElement(rootEl, undefined, inputs.content.element),
+ element: React.cloneElement(
+ rootEl,
+ undefined,
+ inputs.content.output.element,
+ ),
};
},
});
diff --git a/packages/frontend-app-api/src/extensions/Core.tsx b/packages/frontend-app-api/src/extensions/Core.tsx
index 472ed4905a..d4b3b65468 100644
--- a/packages/frontend-app-api/src/extensions/Core.tsx
+++ b/packages/frontend-app-api/src/extensions/Core.tsx
@@ -45,7 +45,7 @@ export const Core = createExtension({
},
factory({ inputs }) {
return {
- root: inputs.root.element,
+ root: inputs.root.output.element,
};
},
});
diff --git a/packages/frontend-app-api/src/extensions/CoreLayout.tsx b/packages/frontend-app-api/src/extensions/CoreLayout.tsx
index 94681120db..e4f86256f2 100644
--- a/packages/frontend-app-api/src/extensions/CoreLayout.tsx
+++ b/packages/frontend-app-api/src/extensions/CoreLayout.tsx
@@ -47,8 +47,8 @@ export const CoreLayout = createExtension({
return {
element: (
- {inputs.nav.element}
- {inputs.content.element}
+ {inputs.nav.output.element}
+ {inputs.content.output.element}
),
};
diff --git a/packages/frontend-app-api/src/extensions/CoreNav.tsx b/packages/frontend-app-api/src/extensions/CoreNav.tsx
index 21d113d3d6..ab9f29a15d 100644
--- a/packages/frontend-app-api/src/extensions/CoreNav.tsx
+++ b/packages/frontend-app-api/src/extensions/CoreNav.tsx
@@ -99,10 +99,10 @@ export const CoreNav = createExtension({
return {
element: (
-
+
{inputs.items.map((item, index) => (
-
+
))}
),
diff --git a/packages/frontend-app-api/src/extensions/CoreRouter.tsx b/packages/frontend-app-api/src/extensions/CoreRouter.tsx
index 088fd25ae7..4dc73c91af 100644
--- a/packages/frontend-app-api/src/extensions/CoreRouter.tsx
+++ b/packages/frontend-app-api/src/extensions/CoreRouter.tsx
@@ -59,8 +59,8 @@ export const CoreRouter = createExtension({
factory({ inputs }) {
return {
element: (
-
- {inputs.children.element}
+
+ {inputs.children.output.element}
),
};
diff --git a/packages/frontend-app-api/src/extensions/CoreRoutes.tsx b/packages/frontend-app-api/src/extensions/CoreRoutes.tsx
index d77839f7b3..1b79231699 100644
--- a/packages/frontend-app-api/src/extensions/CoreRoutes.tsx
+++ b/packages/frontend-app-api/src/extensions/CoreRoutes.tsx
@@ -48,8 +48,8 @@ export const CoreRoutes = createExtension({
const element = useRoutes([
...inputs.routes.map(route => ({
- path: `${route.path}/*`,
- element: route.element,
+ path: `${route.output.path}/*`,
+ element: route.output.element,
})),
{
path: '*',
diff --git a/packages/frontend-app-api/src/tree/instantiateAppNodeTree.test.ts b/packages/frontend-app-api/src/tree/instantiateAppNodeTree.test.ts
index 7167038184..0be4f0a0c4 100644
--- a/packages/frontend-app-api/src/tree/instantiateAppNodeTree.test.ts
+++ b/packages/frontend-app-api/src/tree/instantiateAppNodeTree.test.ts
@@ -153,7 +153,7 @@ describe('instantiateAppNodeTree', () => {
expect(tree.root.instance).toBeDefined();
expect(childNode?.instance).toBeDefined();
expect(tree.root.instance?.getData(inputMirrorDataRef)).toEqual({
- test: [{ test: 'test' }],
+ test: [{ extensionId: 'child-node', output: { test: 'test' } }],
});
// Multiple calls should have no effect
@@ -296,9 +296,18 @@ describe('createAppNodeInstance', () => {
expect(Array.from(instance.getDataRefs())).toEqual([inputMirrorDataRef]);
expect(instance.getData(inputMirrorDataRef)).toEqual({
- optionalSingletonPresent: { test: 'optionalSingletonPresent' },
- singleton: { test: 'singleton', other: 2 },
- many: [{ test: 'many1' }, { test: 'many2', other: 3 }],
+ optionalSingletonPresent: {
+ extensionId: 'core/test',
+ output: { test: 'optionalSingletonPresent' },
+ },
+ singleton: {
+ extensionId: 'core/test',
+ output: { test: 'singleton', other: 2 },
+ },
+ many: [
+ { extensionId: 'core/test', output: { test: 'many1' } },
+ { extensionId: 'core/test', output: { test: 'many2', other: 3 } },
+ ],
});
});
diff --git a/packages/frontend-app-api/src/tree/instantiateAppNodeTree.ts b/packages/frontend-app-api/src/tree/instantiateAppNodeTree.ts
index 2b1ab04c25..ca51f10921 100644
--- a/packages/frontend-app-api/src/tree/instantiateAppNodeTree.ts
+++ b/packages/frontend-app-api/src/tree/instantiateAppNodeTree.ts
@@ -18,6 +18,7 @@ import {
AnyExtensionDataMap,
AnyExtensionInputMap,
ExtensionDataRef,
+ ResolvedExtensionInputs,
} from '@backstage/frontend-plugin-api';
import mapValues from 'lodash/mapValues';
import { AppNode, AppNodeInstance } from '@backstage/frontend-plugin-api';
@@ -45,7 +46,7 @@ function resolveInputData(
function resolveInputs(
inputMap: AnyExtensionInputMap,
attachments: ReadonlyMap,
-) {
+): ResolvedExtensionInputs {
const undeclaredAttachments = Array.from(attachments.entries()).filter(
([inputName]) => inputMap[inputName] === undefined,
);
@@ -84,13 +85,21 @@ function resolveInputs(
}
throw Error(`input '${inputName}' is required but was not received`);
}
- return resolveInputData(input.extensionData, attachedNodes[0], inputName);
+ return {
+ extensionId: attachedNodes[0].id,
+ output: resolveInputData(
+ input.extensionData,
+ attachedNodes[0],
+ inputName,
+ ),
+ };
}
- return attachedNodes.map(attachment =>
- resolveInputData(input.extensionData, attachment, inputName),
- );
- });
+ return attachedNodes.map(attachment => ({
+ extensionId: attachment.id,
+ output: resolveInputData(input.extensionData, attachment, inputName),
+ }));
+ }) as ResolvedExtensionInputs;
}
/** @internal */
@@ -135,7 +144,7 @@ export function createAppNodeInstance(options: {
} catch (e) {
throw new Error(
`Failed to instantiate extension '${id}'${
- e.name === 'Error' ? `, ${e.message}` : `; caused by ${e}`
+ e.name === 'Error' ? `, ${e.message}` : `; caused by ${e.stack}`
}`,
);
}
diff --git a/packages/frontend-plugin-api/api-report.md b/packages/frontend-plugin-api/api-report.md
index c491579eaf..e8f4f16e97 100644
--- a/packages/frontend-plugin-api/api-report.md
+++ b/packages/frontend-plugin-api/api-report.md
@@ -382,7 +382,7 @@ export function createApiExtension<
api: AnyApiRef;
factory: (options: {
config: TConfig;
- inputs: Expand>;
+ inputs: Expand>;
}) => AnyApiFactory;
}
| {
@@ -413,13 +413,13 @@ export function createComponentExtension<
| {
lazy: (values: {
config: TConfig;
- inputs: Expand>;
+ inputs: Expand>;
}) => Promise;
}
| {
sync: (values: {
config: TConfig;
- inputs: Expand>;
+ inputs: Expand>;
}) => TRef['T'];
};
}): ExtensionDefinition;
@@ -475,7 +475,7 @@ export interface CreateExtensionOptions<
factory(options: {
node: AppNode;
config: TConfig;
- inputs: Expand>;
+ inputs: Expand>;
}): Expand>;
// (undocumented)
inputs?: TInputs;
@@ -556,7 +556,7 @@ export function createPageExtension<
routeRef?: RouteRef;
loader: (options: {
config: TConfig;
- inputs: Expand>;
+ inputs: Expand>;
}) => Promise;
},
): ExtensionDefinition;
@@ -610,7 +610,7 @@ export function createSignInPageExtension<
inputs?: TInputs;
loader: (options: {
config: TConfig;
- inputs: Expand>;
+ inputs: Expand>;
}) => Promise>;
}): ExtensionDefinition;
@@ -657,10 +657,7 @@ export interface Extension {
factory(options: {
node: AppNode;
config: TConfig;
- inputs: Record<
- string,
- undefined | Record | Array>
- >;
+ inputs: ResolvedExtensionInputs;
}): ExtensionDataValues;
// (undocumented)
id: string;
@@ -730,10 +727,7 @@ export interface ExtensionDefinition {
factory(options: {
node: AppNode;
config: TConfig;
- inputs: Record<
- string,
- undefined | Record | Array>
- >;
+ inputs: ResolvedExtensionInputs;
}): ExtensionDataValues;
// (undocumented)
inputs: AnyExtensionInputMap;
@@ -763,21 +757,6 @@ export interface ExtensionInput<
extensionData: TExtensionData;
}
-// @public
-export type ExtensionInputValues<
- TInputs extends {
- [name in string]: ExtensionInput;
- },
-> = {
- [InputName in keyof TInputs]: false extends TInputs[InputName]['config']['singleton']
- ? Array>>
- : false extends TInputs[InputName]['config']['optional']
- ? Expand>
- : Expand<
- ExtensionDataValues | undefined
- >;
-};
-
// @public (undocumented)
export interface ExtensionOverrides {
// (undocumented)
@@ -906,6 +885,28 @@ export { ProfileInfo };
export { ProfileInfoApi };
+// @public
+export type ResolvedExtensionInput =
+ {
+ extensionId: string;
+ output: ExtensionDataValues;
+ };
+
+// @public
+export type ResolvedExtensionInputs<
+ TInputs extends {
+ [name in string]: ExtensionInput;
+ },
+> = {
+ [InputName in keyof TInputs]: false extends TInputs[InputName]['config']['singleton']
+ ? Array>>
+ : false extends TInputs[InputName]['config']['optional']
+ ? Expand>
+ : Expand<
+ ResolvedExtensionInput | undefined
+ >;
+};
+
// @public
export type RouteFunc = (
...[params]: TParams extends undefined
diff --git a/packages/frontend-plugin-api/src/extensions/createApiExtension.ts b/packages/frontend-plugin-api/src/extensions/createApiExtension.ts
index 0f4f721530..bbaef3c849 100644
--- a/packages/frontend-plugin-api/src/extensions/createApiExtension.ts
+++ b/packages/frontend-plugin-api/src/extensions/createApiExtension.ts
@@ -17,7 +17,7 @@
import { AnyApiFactory, AnyApiRef } from '@backstage/core-plugin-api';
import { PortableSchema } from '../schema';
import {
- ExtensionInputValues,
+ ResolvedExtensionInputs,
createExtension,
coreExtensionData,
} from '../wiring';
@@ -34,7 +34,7 @@ export function createApiExtension<
api: AnyApiRef;
factory: (options: {
config: TConfig;
- inputs: Expand>;
+ inputs: Expand>;
}) => AnyApiFactory;
}
| {
diff --git a/packages/frontend-plugin-api/src/extensions/createComponentExtension.tsx b/packages/frontend-plugin-api/src/extensions/createComponentExtension.tsx
index c9780574b6..601ee81d11 100644
--- a/packages/frontend-plugin-api/src/extensions/createComponentExtension.tsx
+++ b/packages/frontend-plugin-api/src/extensions/createComponentExtension.tsx
@@ -17,7 +17,7 @@
import React, { lazy } from 'react';
import {
AnyExtensionInputMap,
- ExtensionInputValues,
+ ResolvedExtensionInputs,
coreExtensionData,
createExtension,
} from '../wiring';
@@ -40,13 +40,13 @@ export function createComponentExtension<
| {
lazy: (values: {
config: TConfig;
- inputs: Expand>;
+ inputs: Expand>;
}) => Promise;
}
| {
sync: (values: {
config: TConfig;
- inputs: Expand>;
+ inputs: Expand>;
}) => TRef['T'];
};
}) {
diff --git a/packages/frontend-plugin-api/src/extensions/createPageExtension.tsx b/packages/frontend-plugin-api/src/extensions/createPageExtension.tsx
index 6796fe884d..3b936ef210 100644
--- a/packages/frontend-plugin-api/src/extensions/createPageExtension.tsx
+++ b/packages/frontend-plugin-api/src/extensions/createPageExtension.tsx
@@ -20,7 +20,7 @@ import { createSchemaFromZod, PortableSchema } from '../schema';
import {
coreExtensionData,
createExtension,
- ExtensionInputValues,
+ ResolvedExtensionInputs,
AnyExtensionInputMap,
} from '../wiring';
import { RouteRef } from '../routing';
@@ -52,7 +52,7 @@ export function createPageExtension<
routeRef?: RouteRef;
loader: (options: {
config: TConfig;
- inputs: Expand>;
+ inputs: Expand>;
}) => Promise;
},
): ExtensionDefinition {
diff --git a/packages/frontend-plugin-api/src/extensions/createSignInPageExtension.tsx b/packages/frontend-plugin-api/src/extensions/createSignInPageExtension.tsx
index 8709403407..d04c29fb9b 100644
--- a/packages/frontend-plugin-api/src/extensions/createSignInPageExtension.tsx
+++ b/packages/frontend-plugin-api/src/extensions/createSignInPageExtension.tsx
@@ -19,7 +19,7 @@ import { ExtensionBoundary } from '../components';
import { PortableSchema } from '../schema';
import {
createExtension,
- ExtensionInputValues,
+ ResolvedExtensionInputs,
AnyExtensionInputMap,
createExtensionDataRef,
ExtensionDefinition,
@@ -47,7 +47,7 @@ export function createSignInPageExtension<
inputs?: TInputs;
loader: (options: {
config: TConfig;
- inputs: Expand>;
+ inputs: Expand>;
}) => Promise>;
}): ExtensionDefinition {
return createExtension({
diff --git a/packages/frontend-plugin-api/src/wiring/createExtension.test.ts b/packages/frontend-plugin-api/src/wiring/createExtension.test.ts
index 07d52f5bb4..22db95082a 100644
--- a/packages/frontend-plugin-api/src/wiring/createExtension.test.ts
+++ b/packages/frontend-plugin-api/src/wiring/createExtension.test.ts
@@ -251,34 +251,34 @@ describe('createExtension', () => {
foo: stringData,
},
factory({ inputs }) {
- const a1: string = inputs.mixed?.[0].required;
+ const a1: string = inputs.mixed?.[0].output.required;
// @ts-expect-error
- const a2: number = inputs.mixed?.[0].required;
+ const a2: number = inputs.mixed?.[0].output.required;
// @ts-expect-error
- const a3: any = inputs.mixed?.[0].nonExistent;
+ const a3: any = inputs.mixed?.[0].output.nonExistent;
unused(a1, a2, a3);
- const b1: string | undefined = inputs.mixed?.[0].optional;
+ const b1: string | undefined = inputs.mixed?.[0].output.optional;
// @ts-expect-error
- const b2: string = inputs.mixed?.[0].optional;
+ const b2: string = inputs.mixed?.[0].output.optional;
// @ts-expect-error
- const b3: number = inputs.mixed?.[0].optional;
+ const b3: number = inputs.mixed?.[0].output.optional;
// @ts-expect-error
- const b4: number | undefined = inputs.mixed?.[0].optional;
+ const b4: number | undefined = inputs.mixed?.[0].output.optional;
unused(b1, b2, b3, b4);
- const c1: string = inputs.onlyRequired?.[0].required;
+ const c1: string = inputs.onlyRequired?.[0].output.required;
// @ts-expect-error
- const c2: number = inputs.onlyRequired?.[0].required;
+ const c2: number = inputs.onlyRequired?.[0].output.required;
unused(c1, c2);
- const d1: string | undefined = inputs.onlyOptional?.[0].optional;
+ const d1: string | undefined = inputs.onlyOptional?.[0].output.optional;
// @ts-expect-error
- const d2: string = inputs.onlyOptional?.[0].optional;
+ const d2: string = inputs.onlyOptional?.[0].output.optional;
// @ts-expect-error
- const d3: number = inputs.onlyOptional?.[0].optional;
+ const d3: number = inputs.onlyOptional?.[0].output.optional;
// @ts-expect-error
- const d4: number | undefined = inputs.onlyOptional?.[0].optional;
+ const d4: number | undefined = inputs.onlyOptional?.[0].output.optional;
unused(d1, d2, d3, d4);
return {
diff --git a/packages/frontend-plugin-api/src/wiring/createExtension.ts b/packages/frontend-plugin-api/src/wiring/createExtension.ts
index e4c79a925b..cac2ac7b49 100644
--- a/packages/frontend-plugin-api/src/wiring/createExtension.ts
+++ b/packages/frontend-plugin-api/src/wiring/createExtension.ts
@@ -52,18 +52,28 @@ export type ExtensionDataValues = {
};
/**
- * Converts an extension input map into the matching concrete input values type.
+ * Convert a single extension input into a matching resolved input.
* @public
*/
-export type ExtensionInputValues<
+export type ResolvedExtensionInput =
+ {
+ extensionId: string;
+ output: ExtensionDataValues;
+ };
+
+/**
+ * Converts an extension input map into a matching collection of resolved inputs.
+ * @public
+ */
+export type ResolvedExtensionInputs<
TInputs extends { [name in string]: ExtensionInput },
> = {
[InputName in keyof TInputs]: false extends TInputs[InputName]['config']['singleton']
- ? Array>>
+ ? Array>>
: false extends TInputs[InputName]['config']['optional']
- ? Expand>
+ ? Expand>
: Expand<
- ExtensionDataValues | undefined
+ ResolvedExtensionInput | undefined
>;
};
@@ -84,7 +94,7 @@ export interface CreateExtensionOptions<
factory(options: {
node: AppNode;
config: TConfig;
- inputs: Expand>;
+ inputs: Expand>;
}): Expand>;
}
@@ -102,10 +112,7 @@ export interface ExtensionDefinition {
factory(options: {
node: AppNode;
config: TConfig;
- inputs: Record<
- string,
- undefined | Record | Array>
- >;
+ inputs: ResolvedExtensionInputs;
}): ExtensionDataValues;
}
@@ -121,10 +128,7 @@ export interface Extension {
factory(options: {
node: AppNode;
config: TConfig;
- inputs: Record<
- string,
- undefined | Record | Array>
- >;
+ inputs: ResolvedExtensionInputs;
}): ExtensionDataValues;
}
@@ -149,7 +153,7 @@ export function createExtension<
factory({ inputs, ...rest }) {
// TODO: Simplify this, but TS wouldn't infer the input type for some reason
return options.factory({
- inputs: inputs as Expand>,
+ inputs: inputs as Expand>,
...rest,
});
},
diff --git a/packages/frontend-plugin-api/src/wiring/createPlugin.test.ts b/packages/frontend-plugin-api/src/wiring/createPlugin.test.ts
index 0653c42d7c..18054a5de2 100644
--- a/packages/frontend-plugin-api/src/wiring/createPlugin.test.ts
+++ b/packages/frontend-plugin-api/src/wiring/createPlugin.test.ts
@@ -65,7 +65,9 @@ const Extension3 = createExtension({
name: nameExtensionDataRef,
},
factory({ inputs }) {
- return { name: `extension-3:${inputs.addons.map(n => n.name).join('-')}` };
+ return {
+ name: `extension-3:${inputs.addons.map(n => n.output.name).join('-')}`,
+ };
},
});
@@ -111,7 +113,7 @@ const outputExtension = createExtension({
factory({ inputs }) {
return {
element: React.createElement('span', {}, [
- `Names: ${inputs.names.map(n => n.name).join(', ')}`,
+ `Names: ${inputs.names.map(n => n.output.name).join(', ')}`,
]),
};
},
diff --git a/packages/frontend-plugin-api/src/wiring/index.ts b/packages/frontend-plugin-api/src/wiring/index.ts
index 24f83be6e5..3f33910ca7 100644
--- a/packages/frontend-plugin-api/src/wiring/index.ts
+++ b/packages/frontend-plugin-api/src/wiring/index.ts
@@ -25,7 +25,8 @@ export {
type ExtensionDefinition,
type CreateExtensionOptions,
type ExtensionDataValues,
- type ExtensionInputValues,
+ type ResolvedExtensionInput,
+ type ResolvedExtensionInputs,
type AnyExtensionInputMap,
type AnyExtensionDataMap,
} from './createExtension';
diff --git a/plugins/catalog-react/api-report-alpha.md b/plugins/catalog-react/api-report-alpha.md
index 1be108f695..27ca640bbc 100644
--- a/plugins/catalog-react/api-report-alpha.md
+++ b/plugins/catalog-react/api-report-alpha.md
@@ -9,7 +9,7 @@ import { AnyExtensionInputMap } from '@backstage/frontend-plugin-api';
import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api';
import { Entity } from '@backstage/catalog-model';
import { ExtensionDefinition } from '@backstage/frontend-plugin-api';
-import { ExtensionInputValues } from '@backstage/frontend-plugin-api';
+import { ResolvedExtensionInputs } from '@backstage/frontend-plugin-api';
import { ResourcePermission } from '@backstage/plugin-permission-common';
import { RouteRef } from '@backstage/frontend-plugin-api';
@@ -29,7 +29,7 @@ export function createEntityCardExtension<
| typeof entityFilterFunctionExtensionDataRef.T
| typeof entityFilterExpressionExtensionDataRef.T;
loader: (options: {
- inputs: Expand>;
+ inputs: Expand>;
}) => Promise;
}): ExtensionDefinition<{
filter?: string | undefined;
@@ -54,7 +54,7 @@ export function createEntityContentExtension<
| typeof entityFilterFunctionExtensionDataRef.T
| typeof entityFilterExpressionExtensionDataRef.T;
loader: (options: {
- inputs: Expand>;
+ inputs: Expand>;
}) => Promise;
}): ExtensionDefinition<{
title: string;
diff --git a/plugins/catalog-react/src/alpha.tsx b/plugins/catalog-react/src/alpha.tsx
index ccb0efbe6d..8f7144681b 100644
--- a/plugins/catalog-react/src/alpha.tsx
+++ b/plugins/catalog-react/src/alpha.tsx
@@ -17,7 +17,7 @@
import {
AnyExtensionInputMap,
ExtensionBoundary,
- ExtensionInputValues,
+ ResolvedExtensionInputs,
RouteRef,
coreExtensionData,
createExtension,
@@ -59,7 +59,7 @@ export function createEntityCardExtension<
| typeof entityFilterFunctionExtensionDataRef.T
| typeof entityFilterExpressionExtensionDataRef.T;
loader: (options: {
- inputs: Expand>;
+ inputs: Expand>;
}) => Promise;
}) {
return createExtension({
@@ -117,7 +117,7 @@ export function createEntityContentExtension<
| typeof entityFilterFunctionExtensionDataRef.T
| typeof entityFilterExpressionExtensionDataRef.T;
loader: (options: {
- inputs: Expand>;
+ inputs: Expand>;
}) => Promise;
}) {
return createExtension({
diff --git a/plugins/catalog/src/alpha/entityContents.tsx b/plugins/catalog/src/alpha/entityContents.tsx
index 72adf4ec60..b278e15735 100644
--- a/plugins/catalog/src/alpha/entityContents.tsx
+++ b/plugins/catalog/src/alpha/entityContents.tsx
@@ -39,7 +39,7 @@ export const OverviewEntityContent = createEntityContentExtension({
},
loader: async ({ inputs }) =>
import('./EntityOverviewPage').then(m => (
-
+ c.output)} />
)),
});
diff --git a/plugins/catalog/src/alpha/pages.tsx b/plugins/catalog/src/alpha/pages.tsx
index 7dd32f7748..ee1da49147 100644
--- a/plugins/catalog/src/alpha/pages.tsx
+++ b/plugins/catalog/src/alpha/pages.tsx
@@ -39,7 +39,7 @@ export const CatalogIndexPage = createPageExtension({
},
loader: async ({ inputs }) => {
const { BaseCatalogPage } = await import('../components/CatalogPage');
- const filters = inputs.filters.map(filter => filter.element);
+ const filters = inputs.filters.map(filter => filter.output.element);
return {filters}>} />;
},
});
@@ -64,11 +64,11 @@ export const CatalogEntityPage = createPageExtension({
{inputs.contents.map(content => (
- {content.element}
+ {content.output.element}
))}
diff --git a/plugins/graphiql/src/alpha.tsx b/plugins/graphiql/src/alpha.tsx
index d9470b7d46..f2c23f14e4 100644
--- a/plugins/graphiql/src/alpha.tsx
+++ b/plugins/graphiql/src/alpha.tsx
@@ -66,7 +66,7 @@ export const graphiqlBrowseApi = createApiExtension({
factory({ inputs }) {
return createApiFactory(
graphQlBrowseApiRef,
- GraphQLEndpoints.from(inputs.endpoints.map(i => i.endpoint)),
+ GraphQLEndpoints.from(inputs.endpoints.map(i => i.output.endpoint)),
);
},
});
diff --git a/plugins/home/src/alpha.tsx b/plugins/home/src/alpha.tsx
index 9ccb4c8ed6..f16881de95 100644
--- a/plugins/home/src/alpha.tsx
+++ b/plugins/home/src/alpha.tsx
@@ -51,8 +51,8 @@ const HomepageCompositionRootExtension = createPageExtension({
loader: ({ inputs }) =>
import('./components/').then(m => (
)),
});
diff --git a/plugins/search-react/src/alpha.test.tsx b/plugins/search-react/src/alpha.test.tsx
index 6950dec664..3b05c61eb2 100644
--- a/plugins/search-react/src/alpha.test.tsx
+++ b/plugins/search-react/src/alpha.test.tsx
@@ -115,10 +115,10 @@ describe('createSearchResultListItemExtension', () => {
);
const getResultItemComponent = (result: SearchResult) => {
- const value = inputs.items.find(({ item }) =>
- item?.predicate?.(result),
+ const value = inputs.items.find(item =>
+ item?.output.item.predicate?.(result),
);
- return value?.item.component ?? DefaultResultItem;
+ return value?.output.item.component ?? DefaultResultItem;
};
const Component = () => {
diff --git a/plugins/search/src/alpha.tsx b/plugins/search/src/alpha.tsx
index 3f1d307237..d18f93391c 100644
--- a/plugins/search/src/alpha.tsx
+++ b/plugins/search/src/alpha.tsx
@@ -112,8 +112,10 @@ export const SearchPage = createPageExtension({
},
loader: async ({ config, inputs }) => {
const getResultItemComponent = (result: SearchResult) => {
- const value = inputs.items.find(({ item }) => item?.predicate?.(result));
- return value?.item.component ?? DefaultResultListItem;
+ const value = inputs.items.find(item =>
+ item?.output.item.predicate?.(result),
+ );
+ return value?.output.item.component ?? DefaultResultListItem;
};
const Component = () => {
diff --git a/plugins/user-settings/src/alpha.tsx b/plugins/user-settings/src/alpha.tsx
index dfcd1d7e2e..cda8301e82 100644
--- a/plugins/user-settings/src/alpha.tsx
+++ b/plugins/user-settings/src/alpha.tsx
@@ -39,7 +39,9 @@ const UserSettingsPage = createPageExtension({
},
loader: ({ inputs }) =>
import('./components/SettingsPage').then(m => (
-
+
)),
});