Remove deprecated AnyExtensionDataRef type

The `AnyExtensionDataRef` type alias was deprecated in favor of using
`ExtensionDataRef` without type parameters, which is equivalent since
all type parameters have defaults. This removes the deprecated type,
its export, and updates `ExtensionDataRefToValue` to use
`ExtensionDataRef` directly.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
This commit is contained in:
Patrik Oldsberg
2026-03-05 10:33:38 +01:00
parent d0b53e39fd
commit 6573901551
5 changed files with 71 additions and 73 deletions
@@ -0,0 +1,5 @@
---
'@backstage/frontend-plugin-api': minor
---
**BREAKING**: Removed the deprecated `AnyExtensionDataRef` type. Use `ExtensionDataRef` without type parameters instead.
@@ -3,13 +3,13 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { ApiRef } from '@backstage/frontend-plugin-api';
import { ApiRef as ApiRef_2 } from '@backstage/frontend-plugin-api';
import { ComponentType } from 'react';
import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api';
import { ExtensionBlueprint } from '@backstage/frontend-plugin-api';
import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api';
import { ExtensionDataRef } from '@backstage/frontend-plugin-api';
import { Expand } from '@backstage/types';
import { JsonObject } from '@backstage/types';
import { JSX as JSX_2 } from 'react';
import { ReactNode } from 'react';
import type { z } from 'zod';
// @alpha
export type PluginWrapperApi = {
@@ -21,8 +21,10 @@ export type PluginWrapperApi = {
};
// @alpha
export const pluginWrapperApiRef: ApiRef<PluginWrapperApi>;
export const pluginWrapperApiRef: ApiRef_2<PluginWrapperApi>;
// Warning: (ae-forgotten-export) The symbol "ExtensionBlueprint" needs to be exported by the entry point alpha.d.ts
//
// @alpha
export const PluginWrapperBlueprint: ExtensionBlueprint<{
kind: 'plugin-wrapper';
@@ -64,5 +66,11 @@ export const PluginWrapperBlueprint: ExtensionBlueprint<{
};
}>;
// Warnings were encountered during analysis:
//
// src/blueprints/PluginWrapperBlueprint.d.ts:9:5 - (ae-forgotten-export) The symbol "ExtensionBlueprintParams" needs to be exported by the entry point alpha.d.ts
// src/blueprints/PluginWrapperBlueprint.d.ts:22:5 - (ae-forgotten-export) The symbol "ExtensionDataRef" needs to be exported by the entry point alpha.d.ts
// src/blueprints/PluginWrapperBlueprint.d.ts:31:9 - (ae-forgotten-export) The symbol "ConfigurableExtensionDataRef" needs to be exported by the entry point alpha.d.ts
// (No @packageDocumentation comment for this package)
```
+51 -59
View File
@@ -3,17 +3,13 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { AnyRouteRefParams as AnyRouteRefParams_2 } from '@backstage/frontend-plugin-api';
import { ApiRef as ApiRef_2 } from '@backstage/frontend-plugin-api';
import { ApiRef as ApiRef_2 } from '@backstage/core-plugin-api';
import { ComponentType } from 'react';
import type { Config } from '@backstage/config';
import { ConfigurableExtensionDataRef as ConfigurableExtensionDataRef_2 } from '@backstage/frontend-plugin-api';
import { Expand } from '@backstage/types';
import { ExpandRecursive } from '@backstage/types';
import { ExtensionBlueprint as ExtensionBlueprint_2 } from '@backstage/frontend-plugin-api';
import { ExtensionBlueprintParams as ExtensionBlueprintParams_2 } from '@backstage/frontend-plugin-api';
import { ExtensionDataRef as ExtensionDataRef_2 } from '@backstage/frontend-plugin-api';
import { ExtensionInput as ExtensionInput_2 } from '@backstage/frontend-plugin-api';
import { JsonObject } from '@backstage/types';
import { JsonValue } from '@backstage/types';
import { JSX as JSX_2 } from 'react';
@@ -21,7 +17,6 @@ import { JSX as JSX_3 } from 'react/jsx-runtime';
import { Observable } from '@backstage/types';
import { PropsWithChildren } from 'react';
import { ReactNode } from 'react';
import { SwappableComponentRef as SwappableComponentRef_2 } from '@backstage/frontend-plugin-api';
import type { z } from 'zod';
// @public
@@ -82,12 +77,12 @@ export type AnalyticsImplementation = {
};
// @public
export const AnalyticsImplementationBlueprint: ExtensionBlueprint_2<{
export const AnalyticsImplementationBlueprint: ExtensionBlueprint<{
kind: 'analytics';
params: <TDeps extends { [name in string]: unknown }>(
params: AnalyticsImplementationFactory<TDeps>,
) => ExtensionBlueprintParams_2<AnalyticsImplementationFactory<{}>>;
output: ExtensionDataRef_2<
) => ExtensionBlueprintParams<AnalyticsImplementationFactory<{}>>;
output: ExtensionDataRef<
AnalyticsImplementationFactory<{}>,
'core.analytics.factory',
{}
@@ -96,7 +91,7 @@ export const AnalyticsImplementationBlueprint: ExtensionBlueprint_2<{
config: {};
configInput: {};
dataRefs: {
factory: ConfigurableExtensionDataRef_2<
factory: ConfigurableExtensionDataRef<
AnalyticsImplementationFactory<{}>,
'core.analytics.factory',
{}
@@ -138,9 +133,6 @@ export type AnyApiFactory = ApiFactory<
// @public
export type AnyApiRef = ApiRef<unknown>;
// @public @deprecated (undocumented)
export type AnyExtensionDataRef = ExtensionDataRef;
// @public
export type AnyRouteRefParams =
| {
@@ -149,7 +141,7 @@ export type AnyRouteRefParams =
| undefined;
// @public
export const ApiBlueprint: ExtensionBlueprint_2<{
export const ApiBlueprint: ExtensionBlueprint<{
kind: 'api';
params: <
TApi,
@@ -157,13 +149,13 @@ export const ApiBlueprint: ExtensionBlueprint_2<{
TDeps extends { [name in string]: unknown },
>(
params: ApiFactory<TApi, TImpl, TDeps>,
) => ExtensionBlueprintParams_2<AnyApiFactory>;
output: ExtensionDataRef_2<AnyApiFactory, 'core.api.factory', {}>;
) => ExtensionBlueprintParams<AnyApiFactory>;
output: ExtensionDataRef<AnyApiFactory, 'core.api.factory', {}>;
inputs: {};
config: {};
configInput: {};
dataRefs: {
factory: ConfigurableExtensionDataRef_2<
factory: ConfigurableExtensionDataRef<
AnyApiFactory,
'core.api.factory',
{}
@@ -388,16 +380,16 @@ export interface ConfigurableExtensionDataRef<
// @public (undocumented)
export const coreExtensionData: {
title: ConfigurableExtensionDataRef_2<string, 'core.title', {}>;
icon: ConfigurableExtensionDataRef_2<IconElement, 'core.icon', {}>;
reactElement: ConfigurableExtensionDataRef_2<
title: ConfigurableExtensionDataRef<string, 'core.title', {}>;
icon: ConfigurableExtensionDataRef<IconElement, 'core.icon', {}>;
reactElement: ConfigurableExtensionDataRef<
JSX_2.Element,
'core.reactElement',
{}
>;
routePath: ConfigurableExtensionDataRef_2<string, 'core.routing.path', {}>;
routeRef: ConfigurableExtensionDataRef_2<
RouteRef<AnyRouteRefParams_2>,
routePath: ConfigurableExtensionDataRef<string, 'core.routing.path', {}>;
routeRef: ConfigurableExtensionDataRef<
RouteRef<AnyRouteRefParams>,
'core.routing.ref',
{}
>;
@@ -909,7 +901,7 @@ export const errorApiRef: ApiRef<ErrorApi>;
// @public (undocumented)
export const ErrorDisplay: {
(props: ErrorDisplayProps): JSX.Element | null;
ref: SwappableComponentRef_2<ErrorDisplayProps, ErrorDisplayProps>;
ref: SwappableComponentRef<ErrorDisplayProps, ErrorDisplayProps>;
};
// @public (undocumented)
@@ -956,7 +948,7 @@ export interface ExtensionBlueprint<
// (undocumented)
make<
TName extends string | undefined,
TParamsInput extends AnyParamsInput_2<NonNullable<T['params']>>,
TParamsInput extends AnyParamsInput<NonNullable<T['params']>>,
UParentInputs extends ExtensionDataRef,
>(args: {
name?: TName;
@@ -1011,7 +1003,7 @@ export interface ExtensionBlueprint<
};
factory(
originalFactory: <
TParamsInput extends AnyParamsInput_2<NonNullable<T['params']>>,
TParamsInput extends AnyParamsInput<NonNullable<T['params']>>,
>(
params: TParamsInput extends ExtensionBlueprintDefineParams
? TParamsInput
@@ -1168,7 +1160,7 @@ export type ExtensionDataRef<
};
// @public (undocumented)
export type ExtensionDataRefToValue<TDataRef extends AnyExtensionDataRef> =
export type ExtensionDataRefToValue<TDataRef extends ExtensionDataRef> =
TDataRef extends ExtensionDataRef<infer IData, infer IId, any>
? ExtensionDataValue<IData, IId>
: never;
@@ -1471,14 +1463,14 @@ export const microsoftAuthApiRef: ApiRef<
>;
// @public
export const NavItemBlueprint: ExtensionBlueprint_2<{
export const NavItemBlueprint: ExtensionBlueprint<{
kind: 'nav-item';
params: {
title: string;
icon: IconComponent;
routeRef: RouteRef<undefined>;
};
output: ExtensionDataRef_2<
output: ExtensionDataRef<
{
title: string;
icon: IconComponent;
@@ -1491,7 +1483,7 @@ export const NavItemBlueprint: ExtensionBlueprint_2<{
config: {};
configInput: {};
dataRefs: {
target: ConfigurableExtensionDataRef_2<
target: ConfigurableExtensionDataRef<
{
title: string;
icon: IconComponent;
@@ -1506,7 +1498,7 @@ export const NavItemBlueprint: ExtensionBlueprint_2<{
// @public (undocumented)
export const NotFoundErrorPage: {
(props: NotFoundErrorPageProps): JSX.Element | null;
ref: SwappableComponentRef_2<NotFoundErrorPageProps, NotFoundErrorPageProps>;
ref: SwappableComponentRef<NotFoundErrorPageProps, NotFoundErrorPageProps>;
};
// @public (undocumented)
@@ -1594,7 +1586,7 @@ export interface OverridableExtensionDefinition<
TExtraInputs extends {
[inputName in string]: ExtensionInput;
},
TParamsInput extends AnyParamsInput<NonNullable<T['params']>>,
TParamsInput extends AnyParamsInput_2<NonNullable<T['params']>>,
UParentInputs extends ExtensionDataRef,
>(
args: Expand<
@@ -1620,7 +1612,7 @@ export interface OverridableExtensionDefinition<
};
factory?(
originalFactory: <
TFactoryParamsReturn extends AnyParamsInput<
TFactoryParamsReturn extends AnyParamsInput_2<
NonNullable<T['params']>
>,
>(
@@ -1719,7 +1711,7 @@ export interface OverridableFrontendPlugin<
}
// @public
export const PageBlueprint: ExtensionBlueprint_2<{
export const PageBlueprint: ExtensionBlueprint<{
kind: 'page';
params: {
defaultPath?: [Error: `Use the 'path' param instead`];
@@ -1731,23 +1723,23 @@ export const PageBlueprint: ExtensionBlueprint_2<{
noHeader?: boolean;
};
output:
| ExtensionDataRef_2<string, 'core.routing.path', {}>
| ExtensionDataRef_2<
RouteRef<AnyRouteRefParams_2>,
| ExtensionDataRef<string, 'core.routing.path', {}>
| ExtensionDataRef<
RouteRef<AnyRouteRefParams>,
'core.routing.ref',
{
optional: true;
}
>
| ExtensionDataRef_2<JSX_2.Element, 'core.reactElement', {}>
| ExtensionDataRef_2<
| ExtensionDataRef<JSX_2.Element, 'core.reactElement', {}>
| ExtensionDataRef<
string,
'core.title',
{
optional: true;
}
>
| ExtensionDataRef_2<
| ExtensionDataRef<
IconElement,
'core.icon',
{
@@ -1755,24 +1747,24 @@ export const PageBlueprint: ExtensionBlueprint_2<{
}
>;
inputs: {
pages: ExtensionInput_2<
| ConfigurableExtensionDataRef_2<JSX_2.Element, 'core.reactElement', {}>
| ConfigurableExtensionDataRef_2<string, 'core.routing.path', {}>
| ConfigurableExtensionDataRef_2<
RouteRef<AnyRouteRefParams_2>,
pages: ExtensionInput<
| ConfigurableExtensionDataRef<JSX_2.Element, 'core.reactElement', {}>
| ConfigurableExtensionDataRef<string, 'core.routing.path', {}>
| ConfigurableExtensionDataRef<
RouteRef<AnyRouteRefParams>,
'core.routing.ref',
{
optional: true;
}
>
| ConfigurableExtensionDataRef_2<
| ConfigurableExtensionDataRef<
string,
'core.title',
{
optional: true;
}
>
| ConfigurableExtensionDataRef_2<
| ConfigurableExtensionDataRef<
IconElement,
'core.icon',
{
@@ -1800,7 +1792,7 @@ export const PageBlueprint: ExtensionBlueprint_2<{
// @public
export const PageLayout: {
(props: PageLayoutProps): JSX.Element | null;
ref: SwappableComponentRef_2<PageLayoutProps, PageLayoutProps>;
ref: SwappableComponentRef<PageLayoutProps, PageLayoutProps>;
};
// @public
@@ -1839,14 +1831,14 @@ export type PendingOAuthRequest = {
};
// @public
export const PluginHeaderActionBlueprint: ExtensionBlueprint_2<{
export const PluginHeaderActionBlueprint: ExtensionBlueprint<{
kind: 'plugin-header-action';
params: (params: {
loader: () => Promise<JSX.Element>;
}) => ExtensionBlueprintParams_2<{
}) => ExtensionBlueprintParams<{
loader: () => Promise<JSX.Element>;
}>;
output: ExtensionDataRef_2<JSX_2, 'core.reactElement', {}>;
output: ExtensionDataRef<JSX_2, 'core.reactElement', {}>;
inputs: {};
config: {};
configInput: {};
@@ -1909,7 +1901,7 @@ export type ProfileInfoApi = {
// @public (undocumented)
export const Progress: {
(props: ProgressProps): JSX.Element | null;
ref: SwappableComponentRef_2<ProgressProps, ProgressProps>;
ref: SwappableComponentRef<ProgressProps, ProgressProps>;
};
// @public (undocumented)
@@ -2020,7 +2012,7 @@ export type StorageValueSnapshot<TValue extends JsonValue> =
};
// @public
export const SubPageBlueprint: ExtensionBlueprint_2<{
export const SubPageBlueprint: ExtensionBlueprint<{
kind: 'sub-page';
params: {
path: string;
@@ -2030,17 +2022,17 @@ export const SubPageBlueprint: ExtensionBlueprint_2<{
routeRef?: RouteRef;
};
output:
| ExtensionDataRef_2<string, 'core.routing.path', {}>
| ExtensionDataRef_2<
RouteRef<AnyRouteRefParams_2>,
| ExtensionDataRef<string, 'core.routing.path', {}>
| ExtensionDataRef<
RouteRef<AnyRouteRefParams>,
'core.routing.ref',
{
optional: true;
}
>
| ExtensionDataRef_2<JSX_2, 'core.reactElement', {}>
| ExtensionDataRef_2<string, 'core.title', {}>
| ExtensionDataRef_2<
| ExtensionDataRef<JSX_2, 'core.reactElement', {}>
| ExtensionDataRef<string, 'core.title', {}>
| ExtensionDataRef<
IconElement,
'core.icon',
{
@@ -34,17 +34,11 @@ export type ExtensionDataRef<
};
/** @public */
export type ExtensionDataRefToValue<TDataRef extends AnyExtensionDataRef> =
export type ExtensionDataRefToValue<TDataRef extends ExtensionDataRef> =
TDataRef extends ExtensionDataRef<infer IData, infer IId, any>
? ExtensionDataValue<IData, IId>
: never;
/**
* @deprecated Use `ExtensionDataRef` without type parameters instead.
* @public
*/
export type AnyExtensionDataRef = ExtensionDataRef;
/** @public */
export interface ConfigurableExtensionDataRef<
TData,
@@ -31,7 +31,6 @@ export {
} from './createExtensionInput';
export {
createExtensionDataRef,
type AnyExtensionDataRef,
type ExtensionDataRef,
type ExtensionDataRefToValue,
type ExtensionDataValue,