From f3f84f1e4b3bd0d0332462793135d27eb7e0dbac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 3 Dec 2025 14:58:44 +0100 Subject: [PATCH] make .withOverrides have a simplified result type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/crazy-hornets-spend.md | 11 +++++ .changeset/fuzzy-rivers-travel.md | 5 +++ packages/frontend-plugin-api/report.api.md | 44 ++++++++++--------- .../src/wiring/createExtensionBlueprint.ts | 42 ++++++++++-------- plugins/api-docs/report-alpha.api.md | 13 +----- plugins/app/report.api.md | 30 ++----------- plugins/catalog-graph/report-alpha.api.md | 25 +---------- plugins/catalog/report-alpha.api.md | 34 ++------------ plugins/org/report-alpha.api.md | 37 ++-------------- plugins/search/report-alpha.api.md | 4 -- plugins/techdocs/report-alpha.api.md | 24 +--------- 11 files changed, 77 insertions(+), 192 deletions(-) create mode 100644 .changeset/crazy-hornets-spend.md create mode 100644 .changeset/fuzzy-rivers-travel.md diff --git a/.changeset/crazy-hornets-spend.md b/.changeset/crazy-hornets-spend.md new file mode 100644 index 0000000000..4db99675ac --- /dev/null +++ b/.changeset/crazy-hornets-spend.md @@ -0,0 +1,11 @@ +--- +'@backstage/plugin-catalog-graph': patch +'@backstage/plugin-api-docs': patch +'@backstage/plugin-techdocs': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-search': patch +'@backstage/plugin-app': patch +'@backstage/plugin-org': patch +--- + +Minor extension type updates after frontend API bump diff --git a/.changeset/fuzzy-rivers-travel.md b/.changeset/fuzzy-rivers-travel.md new file mode 100644 index 0000000000..fa2c08a671 --- /dev/null +++ b/.changeset/fuzzy-rivers-travel.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-plugin-api': patch +--- + +Made the return type of `.withOverrides` to be simplified. diff --git a/packages/frontend-plugin-api/report.api.md b/packages/frontend-plugin-api/report.api.md index 025efabb85..ca4f8a1a0c 100644 --- a/packages/frontend-plugin-api/report.api.md +++ b/packages/frontend-plugin-api/report.api.md @@ -1006,10 +1006,10 @@ export interface ExtensionBlueprint< }, UFactoryOutput extends ExtensionDataValue, UNewOutput extends ExtensionDataRef, + UParentInputs extends ExtensionDataRef, TExtraInputs extends { [inputName in string]: ExtensionInput; - }, - UParentInputs extends ExtensionDataRef, + } = {}, >(args: { name?: TName; attachTo?: ExtensionDefinitionAttachTo & @@ -1063,26 +1063,30 @@ export interface ExtensionBlueprint< UFactoryOutput >; }): OverridableExtensionDefinition<{ - config: (string extends keyof TExtensionConfigSchema - ? {} - : { - [key in keyof TExtensionConfigSchema]: z.infer< - ReturnType - >; - }) & - T['config']; - configInput: (string extends keyof TExtensionConfigSchema - ? {} - : z.input< - z.ZodObject<{ - [key in keyof TExtensionConfigSchema]: ReturnType< - TExtensionConfigSchema[key] + config: Expand< + (string extends keyof TExtensionConfigSchema + ? {} + : { + [key in keyof TExtensionConfigSchema]: z.infer< + ReturnType >; - }> - >) & - T['configInput']; + }) & + T['config'] + >; + configInput: Expand< + (string extends keyof TExtensionConfigSchema + ? {} + : z.input< + z.ZodObject<{ + [key in keyof TExtensionConfigSchema]: ReturnType< + TExtensionConfigSchema[key] + >; + }> + >) & + T['configInput'] + >; output: ExtensionDataRef extends UNewOutput ? T['output'] : UNewOutput; - inputs: T['inputs'] & TExtraInputs; + inputs: Expand; kind: T['kind']; name: string | undefined extends TName ? undefined : TName; params: T['params']; diff --git a/packages/frontend-plugin-api/src/wiring/createExtensionBlueprint.ts b/packages/frontend-plugin-api/src/wiring/createExtensionBlueprint.ts index 70b6209ae3..c6723388ae 100644 --- a/packages/frontend-plugin-api/src/wiring/createExtensionBlueprint.ts +++ b/packages/frontend-plugin-api/src/wiring/createExtensionBlueprint.ts @@ -249,8 +249,8 @@ export interface ExtensionBlueprint< }, UFactoryOutput extends ExtensionDataValue, UNewOutput extends ExtensionDataRef, - TExtraInputs extends { [inputName in string]: ExtensionInput }, UParentInputs extends ExtensionDataRef, + TExtraInputs extends { [inputName in string]: ExtensionInput } = {}, >(args: { name?: TName; attachTo?: ExtensionDefinitionAttachTo & @@ -304,26 +304,30 @@ export interface ExtensionBlueprint< UFactoryOutput >; }): OverridableExtensionDefinition<{ - config: (string extends keyof TExtensionConfigSchema - ? {} - : { - [key in keyof TExtensionConfigSchema]: z.infer< - ReturnType - >; - }) & - T['config']; - configInput: (string extends keyof TExtensionConfigSchema - ? {} - : z.input< - z.ZodObject<{ - [key in keyof TExtensionConfigSchema]: ReturnType< - TExtensionConfigSchema[key] + config: Expand< + (string extends keyof TExtensionConfigSchema + ? {} + : { + [key in keyof TExtensionConfigSchema]: z.infer< + ReturnType >; - }> - >) & - T['configInput']; + }) & + T['config'] + >; + configInput: Expand< + (string extends keyof TExtensionConfigSchema + ? {} + : z.input< + z.ZodObject<{ + [key in keyof TExtensionConfigSchema]: ReturnType< + TExtensionConfigSchema[key] + >; + }> + >) & + T['configInput'] + >; output: ExtensionDataRef extends UNewOutput ? T['output'] : UNewOutput; - inputs: T['inputs'] & TExtraInputs; + inputs: Expand; kind: T['kind']; name: string | undefined extends TName ? undefined : TName; params: T['params']; diff --git a/plugins/api-docs/report-alpha.api.md b/plugins/api-docs/report-alpha.api.md index 3e8b0153d8..1a035bc706 100644 --- a/plugins/api-docs/report-alpha.api.md +++ b/plugins/api-docs/report-alpha.api.md @@ -12,7 +12,6 @@ import { EntityCardType } from '@backstage/plugin-catalog-react/alpha'; import { EntityPredicate } from '@backstage/plugin-catalog-react/alpha'; import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDataRef } from '@backstage/frontend-plugin-api'; -import { ExtensionInput } from '@backstage/frontend-plugin-api'; import { ExternalRouteRef } from '@backstage/core-plugin-api'; import { IconComponent } from '@backstage/frontend-plugin-api'; import { JSX as JSX_2 } from 'react'; @@ -472,12 +471,10 @@ const _default: OverridableFrontendPlugin< 'page:api-docs': OverridableExtensionDefinition<{ config: { initiallySelectedFilter: 'all' | 'owned' | 'starred' | undefined; - } & { path: string | undefined; }; configInput: { initiallySelectedFilter?: 'all' | 'owned' | 'starred' | undefined; - } & { path?: string | undefined; }; output: @@ -490,15 +487,7 @@ const _default: OverridableFrontendPlugin< optional: true; } >; - inputs: { - [x: string]: ExtensionInput< - ExtensionDataRef, - { - singleton: boolean; - optional: boolean; - } - >; - }; + inputs: {}; kind: 'page'; name: undefined; params: { diff --git a/plugins/app/report.api.md b/plugins/app/report.api.md index c9aa1cf9f7..ea34a1731f 100644 --- a/plugins/app/report.api.md +++ b/plugins/app/report.api.md @@ -241,15 +241,7 @@ const appPlugin: OverridableFrontendPlugin< availableLanguages?: string[] | undefined; }; output: ExtensionDataRef; - inputs: { - [x: string]: ExtensionInput< - ExtensionDataRef, - { - singleton: boolean; - optional: boolean; - } - >; - }; + inputs: {}; kind: 'api'; name: 'app-language'; params: < @@ -726,15 +718,7 @@ const appPlugin: OverridableFrontendPlugin< transientTimeoutMs?: number | undefined; }; output: ExtensionDataRef; - inputs: { - [x: string]: ExtensionInput< - ExtensionDataRef, - { - singleton: boolean; - optional: boolean; - } - >; - }; + inputs: {}; kind: 'app-root-element'; name: 'alert-display'; params: { @@ -745,15 +729,7 @@ const appPlugin: OverridableFrontendPlugin< config: {}; configInput: {}; output: ExtensionDataRef; - inputs: { - [x: string]: ExtensionInput< - ExtensionDataRef, - { - singleton: boolean; - optional: boolean; - } - >; - }; + inputs: {}; kind: 'app-root-element'; name: 'dialog-display'; params: { diff --git a/plugins/catalog-graph/report-alpha.api.md b/plugins/catalog-graph/report-alpha.api.md index bf2087e9ec..2ce85431e8 100644 --- a/plugins/catalog-graph/report-alpha.api.md +++ b/plugins/catalog-graph/report-alpha.api.md @@ -11,7 +11,6 @@ import { EntityCardType } from '@backstage/plugin-catalog-react/alpha'; import { EntityPredicate } from '@backstage/plugin-catalog-react/alpha'; import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDataRef } from '@backstage/frontend-plugin-api'; -import { ExtensionInput } from '@backstage/frontend-plugin-api'; import { ExternalRouteRef } from '@backstage/core-plugin-api'; import { JSX as JSX_2 } from 'react'; import { OverridableExtensionDefinition } from '@backstage/frontend-plugin-api'; @@ -92,7 +91,6 @@ const _default: OverridableFrontendPlugin< curve: 'curveStepBefore' | 'curveMonotoneX' | undefined; title: string | undefined; height: number | undefined; - } & { filter: EntityPredicate | undefined; type: 'content' | 'summary' | 'info' | undefined; }; @@ -108,7 +106,6 @@ const _default: OverridableFrontendPlugin< mergeRelations?: boolean | undefined; relationPairs?: [string, string][] | undefined; unidirectional?: boolean | undefined; - } & { filter?: EntityPredicate | undefined; type?: 'content' | 'summary' | 'info' | undefined; }; @@ -135,15 +132,7 @@ const _default: OverridableFrontendPlugin< optional: true; } >; - inputs: { - [x: string]: ExtensionInput< - ExtensionDataRef, - { - singleton: boolean; - optional: boolean; - } - >; - }; + inputs: {}; kind: 'entity-card'; name: 'relations'; params: { @@ -167,7 +156,6 @@ const _default: OverridableFrontendPlugin< relations: string[] | undefined; relationPairs: [string, string][] | undefined; zoom: 'disabled' | 'enabled' | 'enable-on-click' | undefined; - } & { path: string | undefined; }; configInput: { @@ -184,7 +172,6 @@ const _default: OverridableFrontendPlugin< selectedRelations?: string[] | undefined; selectedKinds?: string[] | undefined; showFilters?: boolean | undefined; - } & { path?: string | undefined; }; output: @@ -197,15 +184,7 @@ const _default: OverridableFrontendPlugin< optional: true; } >; - inputs: { - [x: string]: ExtensionInput< - ExtensionDataRef, - { - singleton: boolean; - optional: boolean; - } - >; - }; + inputs: {}; kind: 'page'; name: undefined; params: { diff --git a/plugins/catalog/report-alpha.api.md b/plugins/catalog/report-alpha.api.md index dff2128ef6..f70572e371 100644 --- a/plugins/catalog/report-alpha.api.md +++ b/plugins/catalog/report-alpha.api.md @@ -197,15 +197,7 @@ const _default: OverridableFrontendPlugin< initialFilter?: string | undefined; }; output: ExtensionDataRef; - inputs: { - [x: string]: ExtensionInput< - ExtensionDataRef, - { - singleton: boolean; - optional: boolean; - } - >; - }; + inputs: {}; kind: 'catalog-filter'; name: 'kind'; params: { @@ -231,15 +223,7 @@ const _default: OverridableFrontendPlugin< initialFilter?: 'all' | 'owned' | 'starred' | undefined; }; output: ExtensionDataRef; - inputs: { - [x: string]: ExtensionInput< - ExtensionDataRef, - { - singleton: boolean; - optional: boolean; - } - >; - }; + inputs: {}; kind: 'catalog-filter'; name: 'list'; params: { @@ -254,15 +238,7 @@ const _default: OverridableFrontendPlugin< mode?: 'all' | 'owners-only' | undefined; }; output: ExtensionDataRef; - inputs: { - [x: string]: ExtensionInput< - ExtensionDataRef, - { - singleton: boolean; - optional: boolean; - } - >; - }; + inputs: {}; kind: 'catalog-filter'; name: 'mode'; params: { @@ -995,7 +971,6 @@ const _default: OverridableFrontendPlugin< offset?: number | undefined; limit?: number | undefined; }; - } & { path: string | undefined; }; configInput: { @@ -1007,7 +982,6 @@ const _default: OverridableFrontendPlugin< limit?: number | undefined; } | undefined; - } & { path?: string | undefined; }; output: @@ -1048,7 +1022,6 @@ const _default: OverridableFrontendPlugin< } >[] | undefined; - } & { path: string | undefined; }; configInput: { @@ -1060,7 +1033,6 @@ const _default: OverridableFrontendPlugin< } >[] | undefined; - } & { path?: string | undefined; }; output: diff --git a/plugins/org/report-alpha.api.md b/plugins/org/report-alpha.api.md index 05f1169dfb..93e81f0851 100644 --- a/plugins/org/report-alpha.api.md +++ b/plugins/org/report-alpha.api.md @@ -7,7 +7,6 @@ import { Entity } from '@backstage/catalog-model'; import { EntityCardType } from '@backstage/plugin-catalog-react/alpha'; import { EntityPredicate } from '@backstage/plugin-catalog-react/alpha'; import { ExtensionDataRef } from '@backstage/frontend-plugin-api'; -import { ExtensionInput } from '@backstage/frontend-plugin-api'; import { ExternalRouteRef } from '@backstage/core-plugin-api'; import { JSX as JSX_2 } from 'react'; import { OverridableExtensionDefinition } from '@backstage/frontend-plugin-api'; @@ -66,14 +65,12 @@ const _default: OverridableFrontendPlugin< config: { initialRelationAggregation: 'direct' | 'aggregated' | undefined; showAggregateMembersToggle: boolean | undefined; - } & { filter: EntityPredicate | undefined; type: 'content' | 'summary' | 'info' | undefined; }; configInput: { showAggregateMembersToggle?: boolean | undefined; initialRelationAggregation?: 'direct' | 'aggregated' | undefined; - } & { filter?: EntityPredicate | undefined; type?: 'content' | 'summary' | 'info' | undefined; }; @@ -100,15 +97,7 @@ const _default: OverridableFrontendPlugin< optional: true; } >; - inputs: { - [x: string]: ExtensionInput< - ExtensionDataRef, - { - singleton: boolean; - optional: boolean; - } - >; - }; + inputs: {}; kind: 'entity-card'; name: 'members-list'; params: { @@ -121,14 +110,12 @@ const _default: OverridableFrontendPlugin< config: { initialRelationAggregation: 'direct' | 'aggregated' | undefined; showAggregateMembersToggle: boolean | undefined; - } & { filter: EntityPredicate | undefined; type: 'content' | 'summary' | 'info' | undefined; }; configInput: { showAggregateMembersToggle?: boolean | undefined; initialRelationAggregation?: 'direct' | 'aggregated' | undefined; - } & { filter?: EntityPredicate | undefined; type?: 'content' | 'summary' | 'info' | undefined; }; @@ -155,15 +142,7 @@ const _default: OverridableFrontendPlugin< optional: true; } >; - inputs: { - [x: string]: ExtensionInput< - ExtensionDataRef, - { - singleton: boolean; - optional: boolean; - } - >; - }; + inputs: {}; kind: 'entity-card'; name: 'ownership'; params: { @@ -176,14 +155,12 @@ const _default: OverridableFrontendPlugin< config: { maxRelations: number | undefined; hideIcons: boolean; - } & { filter: EntityPredicate | undefined; type: 'content' | 'summary' | 'info' | undefined; }; configInput: { hideIcons?: boolean | undefined; maxRelations?: number | undefined; - } & { filter?: EntityPredicate | undefined; type?: 'content' | 'summary' | 'info' | undefined; }; @@ -210,15 +187,7 @@ const _default: OverridableFrontendPlugin< optional: true; } >; - inputs: { - [x: string]: ExtensionInput< - ExtensionDataRef, - { - singleton: boolean; - optional: boolean; - } - >; - }; + inputs: {}; kind: 'entity-card'; name: 'user-profile'; params: { diff --git a/plugins/search/report-alpha.api.md b/plugins/search/report-alpha.api.md index 4f6fa8be78..5353fec09e 100644 --- a/plugins/search/report-alpha.api.md +++ b/plugins/search/report-alpha.api.md @@ -67,12 +67,10 @@ const _default: OverridableFrontendPlugin< 'page:search': OverridableExtensionDefinition<{ config: { noTrack: boolean; - } & { path: string | undefined; }; configInput: { noTrack?: boolean | undefined; - } & { path?: string | undefined; }; output: @@ -187,12 +185,10 @@ export const searchNavItem: OverridableExtensionDefinition<{ export const searchPage: OverridableExtensionDefinition<{ config: { noTrack: boolean; - } & { path: string | undefined; }; configInput: { noTrack?: boolean | undefined; - } & { path?: string | undefined; }; output: diff --git a/plugins/techdocs/report-alpha.api.md b/plugins/techdocs/report-alpha.api.md index bc3a5d6c34..96c778b09b 100644 --- a/plugins/techdocs/report-alpha.api.md +++ b/plugins/techdocs/report-alpha.api.md @@ -308,7 +308,6 @@ const _default: OverridableFrontendPlugin< lineClamp: number; asLink: boolean; asListItem: boolean; - } & { noTrack: boolean; }; configInput: { @@ -316,7 +315,6 @@ const _default: OverridableFrontendPlugin< lineClamp?: number | undefined; asListItem?: boolean | undefined; asLink?: boolean | undefined; - } & { noTrack?: boolean | undefined; }; output: ExtensionDataRef< @@ -328,15 +326,7 @@ const _default: OverridableFrontendPlugin< 'search.search-result-list-item.item', {} >; - inputs: { - [x: string]: ExtensionInput< - ExtensionDataRef, - { - singleton: boolean; - optional: boolean; - } - >; - }; + inputs: {}; kind: 'search-result-list-item'; name: undefined; params: SearchResultListItemBlueprintParams; @@ -352,7 +342,6 @@ export const techDocsSearchResultListItemExtension: OverridableExtensionDefiniti lineClamp: number; asLink: boolean; asListItem: boolean; - } & { noTrack: boolean; }; configInput: { @@ -360,7 +349,6 @@ export const techDocsSearchResultListItemExtension: OverridableExtensionDefiniti lineClamp?: number | undefined; asListItem?: boolean | undefined; asLink?: boolean | undefined; - } & { noTrack?: boolean | undefined; }; output: ExtensionDataRef< @@ -372,15 +360,7 @@ export const techDocsSearchResultListItemExtension: OverridableExtensionDefiniti 'search.search-result-list-item.item', {} >; - inputs: { - [x: string]: ExtensionInput< - ExtensionDataRef, - { - singleton: boolean; - optional: boolean; - } - >; - }; + inputs: {}; kind: 'search-result-list-item'; name: undefined; params: SearchResultListItemBlueprintParams;