diff --git a/.changeset/polite-shoes-allow.md b/.changeset/polite-shoes-allow.md new file mode 100644 index 0000000000..d3c5e34d7a --- /dev/null +++ b/.changeset/polite-shoes-allow.md @@ -0,0 +1,5 @@ +--- +'@backstage/frontend-app-api': patch +--- + +Added the ability to ignore unknown extension config. diff --git a/packages/frontend-app-api/report.api.md b/packages/frontend-app-api/report.api.md index f24d662df4..661da88210 100644 --- a/packages/frontend-app-api/report.api.md +++ b/packages/frontend-app-api/report.api.md @@ -34,6 +34,7 @@ export function createSpecializedApp(options?: { extensionFactoryMiddleware?: | ExtensionFactoryMiddleware | ExtensionFactoryMiddleware[]; + flags?: SpecializedAppFlags; }): { apis: ApiHolder; tree: AppTree; @@ -41,4 +42,9 @@ export function createSpecializedApp(options?: { // @public @deprecated (undocumented) export type FrontendFeature = FrontendFeature_2; + +// @public (undocumented) +export type SpecializedAppFlags = { + allowUnknownExtensionConfig?: boolean; +}; ``` diff --git a/packages/frontend-app-api/src/wiring/createSpecializedApp.tsx b/packages/frontend-app-api/src/wiring/createSpecializedApp.tsx index 3d356e2a74..e1b7f56227 100644 --- a/packages/frontend-app-api/src/wiring/createSpecializedApp.tsx +++ b/packages/frontend-app-api/src/wiring/createSpecializedApp.tsx @@ -74,7 +74,7 @@ import { ApiRegistry } from '../../../core-app-api/src/apis/system/ApiRegistry'; // eslint-disable-next-line @backstage/no-relative-monorepo-imports import { AppIdentityProxy } from '../../../core-app-api/src/apis/implementations/IdentityApi/AppIdentityProxy'; import { BackstageRouteObject } from '../routing/types'; -import { FrontendFeature, RouteInfo } from './types'; +import { FrontendFeature, RouteInfo, SpecializedAppFlags } from './types'; import { matchRoutes } from 'react-router-dom'; function deduplicateFeatures( @@ -208,7 +208,7 @@ export function createSpecializedApp(options?: { extensionFactoryMiddleware?: | ExtensionFactoryMiddleware | ExtensionFactoryMiddleware[]; - flags?: Record; + flags?: SpecializedAppFlags; }): { apis: ApiHolder; tree: AppTree } { const config = options?.config ?? new ConfigReader({}, 'empty-config'); const features = deduplicateFeatures(options?.features ?? []); diff --git a/packages/frontend-app-api/src/wiring/types.ts b/packages/frontend-app-api/src/wiring/types.ts index 2bf08f327f..d7af7bd528 100644 --- a/packages/frontend-app-api/src/wiring/types.ts +++ b/packages/frontend-app-api/src/wiring/types.ts @@ -28,3 +28,8 @@ export type RouteInfo = { routeParents: Map; routeObjects: BackstageRouteObject[]; }; + +/** @public */ +export type SpecializedAppFlags = { + allowUnknownExtensionConfig?: boolean; +};