diff --git a/.changeset/simplify-extension-attach-to.md b/.changeset/simplify-extension-attach-to.md new file mode 100644 index 0000000000..2beb00d056 --- /dev/null +++ b/.changeset/simplify-extension-attach-to.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-plugin-api': minor +--- + +**BREAKING**: Simplified the `ExtensionAttachTo` type to only support a single attachment target. The array form for attaching to multiple extension points has been removed. Also removed the deprecated `ExtensionAttachToSpec` type alias. diff --git a/packages/core-compat-api/src/collectEntityPageContents.test.tsx b/packages/core-compat-api/src/collectEntityPageContents.test.tsx index fd74a7e89b..5ee1439360 100644 --- a/packages/core-compat-api/src/collectEntityPageContents.test.tsx +++ b/packages/core-compat-api/src/collectEntityPageContents.test.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ -import { ExtensionAttachToSpec } from '@backstage/frontend-plugin-api'; +import { ExtensionAttachTo } from '@backstage/frontend-plugin-api'; import { EntityLayout, EntitySwitch, isKind } from '@backstage/plugin-catalog'; import { JSX } from 'react'; import { collectEntityPageContents } from './collectEntityPageContents'; @@ -73,7 +73,7 @@ const otherTestContent = ( function collect(element: JSX.Element) { const result = new Array<{ id: string; - attachTo: ExtensionAttachToSpec; + attachTo: ExtensionAttachTo; }>(); collectEntityPageContents(element, { diff --git a/packages/frontend-app-api/src/tree/resolveAppTree.test.ts b/packages/frontend-app-api/src/tree/resolveAppTree.test.ts index bffc156509..a8e63f82e0 100644 --- a/packages/frontend-app-api/src/tree/resolveAppTree.test.ts +++ b/packages/frontend-app-api/src/tree/resolveAppTree.test.ts @@ -149,7 +149,7 @@ describe('buildAppTree', () => { attachTo: [ { id: 'a', input: 'x' }, { id: 'b', input: 'x' }, - ], + ] as any, }, { ...baseSpec, @@ -157,7 +157,7 @@ describe('buildAppTree', () => { attachTo: [ { id: 'b', input: 'x' }, { id: 'c', input: 'x' }, - ], + ] as any, }, ], collector, diff --git a/packages/frontend-plugin-api/report.api.md b/packages/frontend-plugin-api/report.api.md index c38f158b25..15450efbdd 100644 --- a/packages/frontend-plugin-api/report.api.md +++ b/packages/frontend-plugin-api/report.api.md @@ -921,7 +921,7 @@ export interface Extension { // (undocumented) $$type: '@backstage/Extension'; // (undocumented) - readonly attachTo: ExtensionAttachToSpec; + readonly attachTo: ExtensionAttachTo; // (undocumented) readonly configSchema?: PortableSchema; // (undocumented) @@ -931,18 +931,10 @@ export interface Extension { } // @public (undocumented) -export type ExtensionAttachTo = - | { - id: string; - input: string; - } - | Array<{ - id: string; - input: string; - }>; - -// @public @deprecated (undocumented) -export type ExtensionAttachToSpec = ExtensionAttachTo; +export type ExtensionAttachTo = { + id: string; + input: string; +}; // @public (undocumented) export interface ExtensionBlueprint< diff --git a/packages/frontend-plugin-api/src/wiring/index.ts b/packages/frontend-plugin-api/src/wiring/index.ts index 3ca0be2757..044bf03b67 100644 --- a/packages/frontend-plugin-api/src/wiring/index.ts +++ b/packages/frontend-plugin-api/src/wiring/index.ts @@ -57,7 +57,6 @@ export { export { type Extension, type ExtensionAttachTo, - type ExtensionAttachToSpec, } from './resolveExtensionDefinition'; export { type ExtensionDataContainer, diff --git a/packages/frontend-plugin-api/src/wiring/resolveExtensionDefinition.ts b/packages/frontend-plugin-api/src/wiring/resolveExtensionDefinition.ts index 605e75bfe8..70a0bd7837 100644 --- a/packages/frontend-plugin-api/src/wiring/resolveExtensionDefinition.ts +++ b/packages/frontend-plugin-api/src/wiring/resolveExtensionDefinition.ts @@ -30,21 +30,13 @@ import { } from '@internal/frontend'; /** @public */ -export type ExtensionAttachTo = - | { id: string; input: string } - | Array<{ id: string; input: string }>; - -/** - * @deprecated Use {@link ExtensionAttachTo} instead. - * @public - */ -export type ExtensionAttachToSpec = ExtensionAttachTo; +export type ExtensionAttachTo = { id: string; input: string }; /** @public */ export interface Extension { $$type: '@backstage/Extension'; readonly id: string; - readonly attachTo: ExtensionAttachToSpec; + readonly attachTo: ExtensionAttachTo; readonly disabled: boolean; readonly configSchema?: PortableSchema; } @@ -151,7 +143,7 @@ function resolveExtensionId( function resolveAttachTo( attachTo: ExtensionDefinitionAttachTo | ExtensionDefinitionAttachTo[], namespace?: string, -): ExtensionAttachToSpec { +): ExtensionAttachTo | ExtensionAttachTo[] { const resolveSpec = ( spec: ExtensionDefinitionAttachTo, ): { id: string; input: string } => { @@ -213,7 +205,7 @@ export function resolveExtensionDefinition< return { ...rest, - attachTo: resolveAttachTo(attachTo, namespace), + attachTo: resolveAttachTo(attachTo, namespace) as ExtensionAttachTo, $$type: '@backstage/Extension', version: internalDefinition.version, id,