Move createExtensionDataContainer() to shared, internal location

Signed-off-by: Eric Peterson <ericpeterson@spotify.com>
This commit is contained in:
Eric Peterson
2025-03-04 15:25:44 +01:00
parent c1b40f6a04
commit 4c46e99e2e
8 changed files with 41 additions and 39 deletions
@@ -16,33 +16,11 @@
import {
AnyExtensionDataRef,
ExtensionDataContainer,
ExtensionDataRef,
ExtensionDataValue,
} from './createExtensionDataRef';
} from '@backstage/frontend-plugin-api';
/** @public */
export type ExtensionDataContainer<UExtensionData extends AnyExtensionDataRef> =
Iterable<
UExtensionData extends ExtensionDataRef<
infer IData,
infer IId,
infer IConfig
>
? IConfig['optional'] extends true
? never
: ExtensionDataValue<IData, IId>
: never
> & {
get<TId extends UExtensionData['id']>(
ref: ExtensionDataRef<any, TId, any>,
): UExtensionData extends ExtensionDataRef<infer IData, TId, infer IConfig>
? IConfig['optional'] extends true
? IData | undefined
: IData
: never;
};
/** @internal */
export function createExtensionDataContainer<UData extends AnyExtensionDataRef>(
values: Iterable<
UData extends ExtensionDataRef<infer IData, infer IId>
@@ -14,5 +14,6 @@
* limitations under the License.
*/
export { createExtensionDataContainer } from './createExtensionDataContainer';
export { OpaqueExtensionDefinition } from './InternalExtensionDefinition';
export { OpaqueFrontendPlugin } from './InternalFrontendPlugin';
@@ -20,10 +20,7 @@ import {
ResolveInputValueOverrides,
resolveInputOverrides,
} from './resolveInputOverrides';
import {
ExtensionDataContainer,
createExtensionDataContainer,
} from './createExtensionDataContainer';
import { createExtensionDataContainer } from '@internal/frontend';
import {
AnyExtensionDataRef,
ExtensionDataValue,
@@ -32,6 +29,7 @@ import { ExtensionInput } from './createExtensionInput';
import { z } from 'zod';
import { createSchemaFromZod } from '../schema/createSchemaFromZod';
import { OpaqueExtensionDefinition } from '@internal/frontend';
import { ExtensionDataContainer } from './types';
/**
* This symbol is used to pass parameter overrides from the extension override to the blueprint factory
@@ -28,8 +28,10 @@ import {
import { createExtensionInput } from './createExtensionInput';
import { RouteRef } from '../routing';
import { ExtensionDefinition } from './createExtension';
import { createExtensionDataContainer } from './createExtensionDataContainer';
import { OpaqueExtensionDefinition } from '@internal/frontend';
import {
createExtensionDataContainer,
OpaqueExtensionDefinition,
} from '@internal/frontend';
function unused(..._any: any[]) {}
@@ -30,14 +30,12 @@ import {
AnyExtensionDataRef,
ExtensionDataValue,
} from './createExtensionDataRef';
import {
ExtensionDataContainer,
createExtensionDataContainer,
} from './createExtensionDataContainer';
import { createExtensionDataContainer } from '@internal/frontend';
import {
ResolveInputValueOverrides,
resolveInputOverrides,
} from './resolveInputOverrides';
import { ExtensionDataContainer } from './types';
/**
* @public
@@ -28,7 +28,6 @@ export {
createExtensionInput,
type ExtensionInput,
} from './createExtensionInput';
export { type ExtensionDataContainer } from './createExtensionDataContainer';
export {
createExtensionDataRef,
type AnyExtensionDataRef,
@@ -51,6 +50,7 @@ export { type Extension } from './resolveExtensionDefinition';
export {
type AnyRoutes,
type AnyExternalRoutes,
type ExtensionDataContainer,
type ExtensionOverrides,
type FeatureFlagConfig,
type FrontendFeature,
@@ -17,16 +17,14 @@
import { AppNode } from '../apis';
import { Expand } from '@backstage/types';
import { ResolvedExtensionInput } from './createExtension';
import {
ExtensionDataContainer,
createExtensionDataContainer,
} from './createExtensionDataContainer';
import { createExtensionDataContainer } from '@internal/frontend';
import {
AnyExtensionDataRef,
ExtensionDataRefToValue,
ExtensionDataValue,
} from './createExtensionDataRef';
import { ExtensionInput } from './createExtensionInput';
import { ExtensionDataContainer } from './types';
/** @public */
export type ResolveInputValueOverrides<
@@ -16,6 +16,11 @@
import { ExternalRouteRef, RouteRef, SubRouteRef } from '../routing';
import { ExtensionDefinition } from './createExtension';
import {
AnyExtensionDataRef,
ExtensionDataRef,
ExtensionDataValue,
} from './createExtensionDataRef';
import { FrontendPlugin } from './createFrontendPlugin';
/**
@@ -51,3 +56,25 @@ export interface ExtensionOverrides {
* @deprecated import from {@link @backstage/frontend-app-api#FrontendFeature} instead
*/
export type FrontendFeature = FrontendPlugin | ExtensionOverrides;
/** @public */
export type ExtensionDataContainer<UExtensionData extends AnyExtensionDataRef> =
Iterable<
UExtensionData extends ExtensionDataRef<
infer IData,
infer IId,
infer IConfig
>
? IConfig['optional'] extends true
? never
: ExtensionDataValue<IData, IId>
: never
> & {
get<TId extends UExtensionData['id']>(
ref: ExtensionDataRef<any, TId, any>,
): UExtensionData extends ExtensionDataRef<infer IData, TId, infer IConfig>
? IConfig['optional'] extends true
? IData | undefined
: IData
: never;
};