Merge pull request #21849 from backstage/rugvip/naming

frontend-system: updates to fit new naming patterns
This commit is contained in:
Patrik Oldsberg
2023-12-13 19:57:14 +01:00
committed by GitHub
32 changed files with 222 additions and 202 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-react': patch
---
Grouped all `/alpha` extension data reference exports under `catalogExtensionData`.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog': patch
---
Internal naming updates for `/alpha` exports.
+15
View File
@@ -0,0 +1,15 @@
---
'@backstage/plugin-catalog-import': patch
'@backstage/plugin-stack-overflow': patch
'@backstage/plugin-user-settings': patch
'@backstage/plugin-search-react': patch
'@backstage/plugin-tech-radar': patch
'@backstage/plugin-graphiql': patch
'@backstage/plugin-techdocs': patch
'@backstage/plugin-explore': patch
'@backstage/plugin-search': patch
'@backstage/plugin-home': patch
'@backstage/plugin-adr': patch
---
Updated `/alpha` exports to fit new naming patterns.
+1 -1
View File
@@ -8,7 +8,7 @@ import { ExtensionDefinition } from '@backstage/frontend-plugin-api';
import { TranslationRef } from '@backstage/core-plugin-api/alpha';
// @alpha (undocumented)
export const AdrSearchResultListItemExtension: ExtensionDefinition<{
export const adrSearchResultListItemExtension: ExtensionDefinition<{
lineClamp: number;
noTrack: boolean;
}>;
+2 -2
View File
@@ -29,7 +29,7 @@ function isAdrDocument(result: any): result is AdrDocument {
}
/** @alpha */
export const AdrSearchResultListItemExtension =
export const adrSearchResultListItemExtension =
createSearchResultListItemExtension({
configSchema: createSchemaFromZod(z =>
z.object({
@@ -53,5 +53,5 @@ export const AdrSearchResultListItemExtension =
/** @alpha */
export default createPlugin({
id: 'adr',
extensions: [AdrSearchResultListItemExtension],
extensions: [adrSearchResultListItemExtension],
});
+3 -3
View File
@@ -40,7 +40,7 @@ import { catalogApiRef } from '@backstage/plugin-catalog-react';
// TODO: It's currently possible to override the import page with a custom one. We need to decide
// whether this type of override is typically done with an input or by overriding the entire extension.
const CatalogImportPageExtension = createPageExtension({
const catalogImportPage = createPageExtension({
defaultPath: '/catalog-import',
routeRef: convertLegacyRouteRef(rootRouteRef),
loader: () =>
@@ -49,7 +49,7 @@ const CatalogImportPageExtension = createPageExtension({
),
});
const CatalogImportService = createApiExtension({
const catalogImportApi = createApiExtension({
factory: createApiFactory({
api: catalogImportApiRef,
deps: {
@@ -82,7 +82,7 @@ const CatalogImportService = createApiExtension({
/** @alpha */
export default createPlugin({
id: 'catalog-import',
extensions: [CatalogImportService, CatalogImportPageExtension],
extensions: [catalogImportApi, catalogImportPage],
routes: {
importPage: convertLegacyRouteRef(rootRouteRef),
},
+14 -22
View File
@@ -13,6 +13,16 @@ import { ResolvedExtensionInputs } from '@backstage/frontend-plugin-api';
import { ResourcePermission } from '@backstage/plugin-permission-common';
import { RouteRef } from '@backstage/frontend-plugin-api';
// @alpha (undocumented)
export const catalogExtensionData: {
entityContentTitle: ConfigurableExtensionDataRef<string, {}>;
entityFilterFunction: ConfigurableExtensionDataRef<
(entity: Entity) => boolean,
{}
>;
entityFilterExpression: ConfigurableExtensionDataRef<string, {}>;
};
// @alpha (undocumented)
export function createEntityCardExtension<
TInputs extends AnyExtensionInputMap,
@@ -26,8 +36,8 @@ export function createEntityCardExtension<
disabled?: boolean;
inputs?: TInputs;
filter?:
| typeof entityFilterFunctionExtensionDataRef.T
| typeof entityFilterExpressionExtensionDataRef.T;
| typeof catalogExtensionData.entityFilterFunction.T
| typeof catalogExtensionData.entityFilterExpression.T;
loader: (options: {
inputs: Expand<ResolvedExtensionInputs<TInputs>>;
}) => Promise<JSX.Element>;
@@ -51,8 +61,8 @@ export function createEntityContentExtension<
defaultPath: string;
defaultTitle: string;
filter?:
| typeof entityFilterFunctionExtensionDataRef.T
| typeof entityFilterExpressionExtensionDataRef.T;
| typeof catalogExtensionData.entityFilterFunction.T
| typeof catalogExtensionData.entityFilterExpression.T;
loader: (options: {
inputs: Expand<ResolvedExtensionInputs<TInputs>>;
}) => Promise<JSX.Element>;
@@ -62,24 +72,6 @@ export function createEntityContentExtension<
filter?: string | undefined;
}>;
// @alpha (undocumented)
export const entityContentTitleExtensionDataRef: ConfigurableExtensionDataRef<
string,
{}
>;
// @alpha (undocumented)
export const entityFilterExpressionExtensionDataRef: ConfigurableExtensionDataRef<
string,
{}
>;
// @alpha (undocumented)
export const entityFilterFunctionExtensionDataRef: ConfigurableExtensionDataRef<
(entity: Entity) => boolean,
{}
>;
// @alpha
export function isOwnerOf(owner: Entity, entity: Entity): boolean;
+24 -24
View File
@@ -33,17 +33,17 @@ export { useEntityPermission } from './hooks/useEntityPermission';
export { isOwnerOf } from './utils';
/** @alpha */
export const entityContentTitleExtensionDataRef =
createExtensionDataRef<string>('plugin.catalog.entity.content.title');
/** @alpha */
export const entityFilterFunctionExtensionDataRef = createExtensionDataRef<
(entity: Entity) => boolean
>('plugin.catalog.entity.filter.fn');
/** @alpha */
export const entityFilterExpressionExtensionDataRef =
createExtensionDataRef<string>('plugin.catalog.entity.filter.expression');
export const catalogExtensionData = {
entityContentTitle: createExtensionDataRef<string>(
'catalog.entity-content-title',
),
entityFilterFunction: createExtensionDataRef<(entity: Entity) => boolean>(
'catalog.entity-filter-function',
),
entityFilterExpression: createExtensionDataRef<string>(
'catalog.entity-filter-expression',
),
};
// TODO: Figure out how to merge with provided config schema
/** @alpha */
@@ -56,8 +56,8 @@ export function createEntityCardExtension<
disabled?: boolean;
inputs?: TInputs;
filter?:
| typeof entityFilterFunctionExtensionDataRef.T
| typeof entityFilterExpressionExtensionDataRef.T;
| typeof catalogExtensionData.entityFilterFunction.T
| typeof catalogExtensionData.entityFilterExpression.T;
loader: (options: {
inputs: Expand<ResolvedExtensionInputs<TInputs>>;
}) => Promise<JSX.Element>;
@@ -73,8 +73,8 @@ export function createEntityCardExtension<
disabled: options.disabled ?? true,
output: {
element: coreExtensionData.reactElement,
filterFunction: entityFilterFunctionExtensionDataRef.optional(),
filterExpression: entityFilterExpressionExtensionDataRef.optional(),
filterFunction: catalogExtensionData.entityFilterFunction.optional(),
filterExpression: catalogExtensionData.entityFilterExpression.optional(),
},
inputs: options.inputs,
configSchema: createSchemaFromZod(z =>
@@ -114,8 +114,8 @@ export function createEntityContentExtension<
defaultPath: string;
defaultTitle: string;
filter?:
| typeof entityFilterFunctionExtensionDataRef.T
| typeof entityFilterExpressionExtensionDataRef.T;
| typeof catalogExtensionData.entityFilterFunction.T
| typeof catalogExtensionData.entityFilterExpression.T;
loader: (options: {
inputs: Expand<ResolvedExtensionInputs<TInputs>>;
}) => Promise<JSX.Element>;
@@ -133,9 +133,9 @@ export function createEntityContentExtension<
element: coreExtensionData.reactElement,
path: coreExtensionData.routePath,
routeRef: coreExtensionData.routeRef.optional(),
title: entityContentTitleExtensionDataRef,
filterFunction: entityFilterFunctionExtensionDataRef.optional(),
filterExpression: entityFilterExpressionExtensionDataRef.optional(),
title: catalogExtensionData.entityContentTitle,
filterFunction: catalogExtensionData.entityFilterFunction.optional(),
filterExpression: catalogExtensionData.entityFilterExpression.optional(),
},
inputs: options.inputs,
configSchema: createSchemaFromZod(z =>
@@ -173,15 +173,15 @@ export function createEntityContentExtension<
function mergeFilters(inputs: {
options: {
filter?:
| typeof entityFilterFunctionExtensionDataRef.T
| typeof entityFilterExpressionExtensionDataRef.T;
| typeof catalogExtensionData.entityFilterFunction.T
| typeof catalogExtensionData.entityFilterExpression.T;
};
config: {
filter?: string;
};
}): {
filterFunction?: typeof entityFilterFunctionExtensionDataRef.T;
filterExpression?: typeof entityFilterExpressionExtensionDataRef.T;
filterFunction?: typeof catalogExtensionData.entityFilterFunction.T;
filterExpression?: typeof catalogExtensionData.entityFilterExpression.T;
} {
const { options, config } = inputs;
if (config.filter) {
+3 -3
View File
@@ -28,7 +28,7 @@ import {
} from '@backstage/plugin-catalog-react';
import { DefaultStarredEntitiesApi } from '../apis';
export const CatalogApi = createApiExtension({
export const catalogApi = createApiExtension({
factory: createApiFactory({
api: catalogApiRef,
deps: {
@@ -40,7 +40,7 @@ export const CatalogApi = createApiExtension({
}),
});
export const StarredEntitiesApi = createApiExtension({
export const catalogStarredEntitiesApi = createApiExtension({
factory: createApiFactory({
api: starredEntitiesApiRef,
deps: { storageApi: storageApiRef },
@@ -48,4 +48,4 @@ export const StarredEntitiesApi = createApiExtension({
}),
});
export default [CatalogApi, StarredEntitiesApi];
export default [catalogApi, catalogStarredEntitiesApi];
+18 -18
View File
@@ -18,7 +18,7 @@ import React from 'react';
import { createEntityCardExtension } from '@backstage/plugin-catalog-react/alpha';
import { compatWrapper } from '@backstage/core-compat-api';
export const EntityAboutCard = createEntityCardExtension({
export const catalogAboutEntityCard = createEntityCardExtension({
name: 'about',
loader: async () =>
import('../components/AboutCard').then(m =>
@@ -26,7 +26,7 @@ export const EntityAboutCard = createEntityCardExtension({
),
});
export const EntityLinksCard = createEntityCardExtension({
export const catalogLinksEntityCard = createEntityCardExtension({
name: 'links',
filter: 'has:links',
loader: async () =>
@@ -35,7 +35,7 @@ export const EntityLinksCard = createEntityCardExtension({
),
});
export const EntityLabelsCard = createEntityCardExtension({
export const catalogLabelsEntityCard = createEntityCardExtension({
name: 'labels',
filter: 'has:labels',
loader: async () =>
@@ -44,7 +44,7 @@ export const EntityLabelsCard = createEntityCardExtension({
),
});
export const EntityDependsOnComponentsCard = createEntityCardExtension({
export const catalogDependsOnComponentsEntityCard = createEntityCardExtension({
name: 'depends-on-components',
loader: async () =>
import('../components/DependsOnComponentsCard').then(m =>
@@ -52,7 +52,7 @@ export const EntityDependsOnComponentsCard = createEntityCardExtension({
),
});
export const EntityDependsOnResourcesCard = createEntityCardExtension({
export const catalogDependsOnResourcesEntityCard = createEntityCardExtension({
name: 'depends-on-resources',
loader: async () =>
import('../components/DependsOnResourcesCard').then(m =>
@@ -60,7 +60,7 @@ export const EntityDependsOnResourcesCard = createEntityCardExtension({
),
});
export const EntityHasComponentsCard = createEntityCardExtension({
export const catalogHasComponentsEntityCard = createEntityCardExtension({
name: 'has-components',
loader: async () =>
import('../components/HasComponentsCard').then(m =>
@@ -68,7 +68,7 @@ export const EntityHasComponentsCard = createEntityCardExtension({
),
});
export const EntityHasResourcesCard = createEntityCardExtension({
export const catalogHasResourcesEntityCard = createEntityCardExtension({
name: 'has-resources',
loader: async () =>
import('../components/HasResourcesCard').then(m =>
@@ -76,7 +76,7 @@ export const EntityHasResourcesCard = createEntityCardExtension({
),
});
export const EntityHasSubcomponentsCard = createEntityCardExtension({
export const catalogHasSubcomponentsEntityCard = createEntityCardExtension({
name: 'has-subcomponents',
loader: async () =>
import('../components/HasSubcomponentsCard').then(m =>
@@ -84,7 +84,7 @@ export const EntityHasSubcomponentsCard = createEntityCardExtension({
),
});
export const EntityHasSystemsCard = createEntityCardExtension({
export const catalogHasSystemsEntityCard = createEntityCardExtension({
name: 'has-systems',
loader: async () =>
import('../components/HasSystemsCard').then(m =>
@@ -93,13 +93,13 @@ export const EntityHasSystemsCard = createEntityCardExtension({
});
export default [
EntityAboutCard,
EntityLinksCard,
EntityLabelsCard,
EntityDependsOnComponentsCard,
EntityDependsOnResourcesCard,
EntityHasComponentsCard,
EntityHasResourcesCard,
EntityHasSubcomponentsCard,
EntityHasSystemsCard,
catalogAboutEntityCard,
catalogLinksEntityCard,
catalogLabelsEntityCard,
catalogDependsOnComponentsEntityCard,
catalogDependsOnResourcesEntityCard,
catalogHasComponentsEntityCard,
catalogHasResourcesEntityCard,
catalogHasSubcomponentsEntityCard,
catalogHasSystemsEntityCard,
];
+5 -6
View File
@@ -21,11 +21,10 @@ import {
} from '@backstage/frontend-plugin-api';
import {
createEntityContentExtension,
entityFilterFunctionExtensionDataRef,
entityFilterExpressionExtensionDataRef,
catalogExtensionData,
} from '@backstage/plugin-catalog-react/alpha';
export const OverviewEntityContent = createEntityContentExtension({
export const catalogOverviewEntityContent = createEntityContentExtension({
name: 'overview',
defaultPath: '/',
defaultTitle: 'Overview',
@@ -33,8 +32,8 @@ export const OverviewEntityContent = createEntityContentExtension({
inputs: {
cards: createExtensionInput({
element: coreExtensionData.reactElement,
filterFunction: entityFilterFunctionExtensionDataRef.optional(),
filterExpression: entityFilterExpressionExtensionDataRef.optional(),
filterFunction: catalogExtensionData.entityFilterFunction.optional(),
filterExpression: catalogExtensionData.entityFilterExpression.optional(),
}),
},
loader: async ({ inputs }) =>
@@ -43,4 +42,4 @@ export const OverviewEntityContent = createEntityContentExtension({
)),
});
export default [OverviewEntityContent];
export default [catalogOverviewEntityContent];
+17 -17
View File
@@ -18,7 +18,7 @@ import React from 'react';
import { createCatalogFilterExtension } from './createCatalogFilterExtension';
import { createSchemaFromZod } from '@backstage/frontend-plugin-api';
const CatalogEntityTagFilter = createCatalogFilterExtension({
const catalogTagCatalogFilter = createCatalogFilterExtension({
name: 'tag',
loader: async () => {
const { EntityTagPicker } = await import('@backstage/plugin-catalog-react');
@@ -26,7 +26,7 @@ const CatalogEntityTagFilter = createCatalogFilterExtension({
},
});
const CatalogEntityKindFilter = createCatalogFilterExtension({
const catalogKindCatalogFilter = createCatalogFilterExtension({
name: 'kind',
configSchema: createSchemaFromZod(z =>
z.object({
@@ -41,7 +41,7 @@ const CatalogEntityKindFilter = createCatalogFilterExtension({
},
});
const CatalogEntityTypeFilter = createCatalogFilterExtension({
const catalogTypeCatalogFilter = createCatalogFilterExtension({
name: 'type',
loader: async () => {
const { EntityTypePicker } = await import(
@@ -51,7 +51,7 @@ const CatalogEntityTypeFilter = createCatalogFilterExtension({
},
});
const CatalogEntityOwnerFilter = createCatalogFilterExtension({
const catalogModeCatalogFilter = createCatalogFilterExtension({
name: 'mode',
configSchema: createSchemaFromZod(z =>
z.object({
@@ -66,7 +66,7 @@ const CatalogEntityOwnerFilter = createCatalogFilterExtension({
},
});
const CatalogEntityNamespaceFilter = createCatalogFilterExtension({
const catalogNamespaceCatalogFilter = createCatalogFilterExtension({
name: 'namespace',
loader: async () => {
const { EntityNamespacePicker } = await import(
@@ -76,7 +76,7 @@ const CatalogEntityNamespaceFilter = createCatalogFilterExtension({
},
});
const CatalogEntityLifecycleFilter = createCatalogFilterExtension({
const catalogLifecycleCatalogFilter = createCatalogFilterExtension({
name: 'lifecycle',
loader: async () => {
const { EntityLifecyclePicker } = await import(
@@ -86,8 +86,8 @@ const CatalogEntityLifecycleFilter = createCatalogFilterExtension({
},
});
const CatalogEntityProcessingStatusFilter = createCatalogFilterExtension({
name: 'processing.status',
const catalogProcessingStatusCatalogFilter = createCatalogFilterExtension({
name: 'processing-status',
loader: async () => {
const { EntityProcessingStatusPicker } = await import(
'@backstage/plugin-catalog-react'
@@ -96,7 +96,7 @@ const CatalogEntityProcessingStatusFilter = createCatalogFilterExtension({
},
});
const CatalogUserListFilter = createCatalogFilterExtension({
const catalogListCatalogFilter = createCatalogFilterExtension({
name: 'list',
configSchema: createSchemaFromZod(z =>
z.object({
@@ -110,12 +110,12 @@ const CatalogUserListFilter = createCatalogFilterExtension({
});
export default [
CatalogEntityTagFilter,
CatalogEntityKindFilter,
CatalogEntityTypeFilter,
CatalogEntityOwnerFilter,
CatalogEntityNamespaceFilter,
CatalogEntityLifecycleFilter,
CatalogEntityProcessingStatusFilter,
CatalogUserListFilter,
catalogTagCatalogFilter,
catalogKindCatalogFilter,
catalogTypeCatalogFilter,
catalogModeCatalogFilter,
catalogNamespaceCatalogFilter,
catalogLifecycleCatalogFilter,
catalogProcessingStatusCatalogFilter,
catalogListCatalogFilter,
];
+2 -2
View File
@@ -19,10 +19,10 @@ import { convertLegacyRouteRef } from '@backstage/core-compat-api';
import { createNavItemExtension } from '@backstage/frontend-plugin-api';
import { rootRouteRef } from '../routes';
export const CatalogIndexNavItem = createNavItemExtension({
export const catalogNavItem = createNavItemExtension({
routeRef: convertLegacyRouteRef(rootRouteRef),
title: 'Catalog',
icon: HomeIcon,
});
export default [CatalogIndexNavItem];
export default [catalogNavItem];
+5 -5
View File
@@ -28,11 +28,11 @@ import {
AsyncEntityProvider,
entityRouteRef,
} from '@backstage/plugin-catalog-react';
import { entityContentTitleExtensionDataRef } from '@backstage/plugin-catalog-react/alpha';
import { catalogExtensionData } from '@backstage/plugin-catalog-react/alpha';
import { rootRouteRef } from '../routes';
import { useEntityFromUrl } from '../components/CatalogEntityPage/useEntityFromUrl';
export const CatalogIndexPage = createPageExtension({
export const catalogPage = createPageExtension({
defaultPath: '/catalog',
routeRef: convertLegacyRouteRef(rootRouteRef),
inputs: {
@@ -47,7 +47,7 @@ export const CatalogIndexPage = createPageExtension({
},
});
export const CatalogEntityPage = createPageExtension({
export const catalogEntityPage = createPageExtension({
name: 'entity',
defaultPath: '/catalog/:namespace/:kind/:name',
routeRef: convertLegacyRouteRef(entityRouteRef),
@@ -56,7 +56,7 @@ export const CatalogEntityPage = createPageExtension({
element: coreExtensionData.reactElement,
path: coreExtensionData.routePath,
routeRef: coreExtensionData.routeRef.optional(),
title: entityContentTitleExtensionDataRef,
title: catalogExtensionData.entityContentTitle,
}),
},
loader: async ({ inputs }) => {
@@ -82,4 +82,4 @@ export const CatalogEntityPage = createPageExtension({
},
});
export default [CatalogIndexPage, CatalogEntityPage];
export default [catalogPage, catalogEntityPage];
@@ -16,13 +16,12 @@
import { createSearchResultListItemExtension } from '@backstage/plugin-search-react/alpha';
export const CatalogSearchResultListItemExtension =
createSearchResultListItemExtension({
predicate: result => result.type === 'software-catalog',
component: () =>
import('../components/CatalogSearchResultListItem').then(
m => m.CatalogSearchResultListItem,
),
});
export const catalogSearchResultListItem = createSearchResultListItemExtension({
predicate: result => result.type === 'software-catalog',
component: () =>
import('../components/CatalogSearchResultListItem').then(
m => m.CatalogSearchResultListItem,
),
});
export default [CatalogSearchResultListItemExtension];
export default [catalogSearchResultListItem];
+1 -1
View File
@@ -11,7 +11,7 @@ const _default: BackstagePlugin<{}, {}>;
export default _default;
// @alpha (undocumented)
export const ExploreSearchResultListItemExtension: ExtensionDefinition<{
export const exploreSearchResultListItem: ExtensionDefinition<{
noTrack?: boolean | undefined;
}>;
+8 -9
View File
@@ -18,17 +18,16 @@ import { createPlugin } from '@backstage/frontend-plugin-api';
import { createSearchResultListItemExtension } from '@backstage/plugin-search-react/alpha';
/** @alpha */
export const ExploreSearchResultListItemExtension =
createSearchResultListItemExtension({
predicate: result => result.type === 'tools',
component: () =>
import('./components/ToolSearchResultListItem').then(
m => m.ToolSearchResultListItem,
),
});
export const exploreSearchResultListItem = createSearchResultListItemExtension({
predicate: result => result.type === 'tools',
component: () =>
import('./components/ToolSearchResultListItem').then(
m => m.ToolSearchResultListItem,
),
});
/** @alpha */
export default createPlugin({
id: 'explore',
extensions: [ExploreSearchResultListItemExtension],
extensions: [exploreSearchResultListItem],
});
+4 -4
View File
@@ -33,13 +33,13 @@ export default _default;
export const graphiqlBrowseApi: ExtensionDefinition<{}>;
// @alpha (undocumented)
export const GraphiqlPage: ExtensionDefinition<{
path: string;
export const graphiqlNavItem: ExtensionDefinition<{
title: string;
}>;
// @alpha (undocumented)
export const graphiqlPageSidebarItem: ExtensionDefinition<{
title: string;
export const graphiqlPage: ExtensionDefinition<{
path: string;
}>;
// (No @packageDocumentation comment for this package)
+22 -20
View File
@@ -40,7 +40,7 @@ import {
} from '@backstage/core-compat-api';
/** @alpha */
export const GraphiqlPage = createPageExtension({
export const graphiqlPage = createPageExtension({
defaultPath: '/graphiql',
routeRef: convertLegacyRouteRef(graphiQLRouteRef),
loader: () =>
@@ -48,7 +48,7 @@ export const GraphiqlPage = createPageExtension({
});
/** @alpha */
export const graphiqlPageSidebarItem = createNavItemExtension({
export const graphiqlNavItem = createNavItemExtension({
title: 'GraphiQL',
icon: GraphiQLIcon as IconComponent,
routeRef: convertLegacyRouteRef(graphiQLRouteRef),
@@ -56,7 +56,7 @@ export const graphiqlPageSidebarItem = createNavItemExtension({
/** @internal */
const endpointDataRef = createExtensionDataRef<GraphQLEndpoint>(
'plugin.graphiql.endpoint',
'graphiql.graphiql-endpoint',
);
/** @alpha */
@@ -102,29 +102,31 @@ export function createGraphiQLEndpointExtension<TConfig extends {}>(options: {
}
/** @alpha */
const gitlabGraphiQLBrowseExtension = createGraphiQLEndpointExtension({
name: 'gitlab',
disabled: true,
configSchema: createSchemaFromZod(z =>
z
.object({
id: z.string().default('gitlab'),
title: z.string().default('GitLab'),
url: z.string().default('https://gitlab.com/api/graphql'),
})
.default({}),
),
factory: ({ config }) => ({ endpoint: GraphQLEndpoints.create(config) }),
});
const graphiqlGitlabGraphiQLEndpointExtension = createGraphiQLEndpointExtension(
{
name: 'gitlab',
disabled: true,
configSchema: createSchemaFromZod(z =>
z
.object({
id: z.string().default('gitlab'),
title: z.string().default('GitLab'),
url: z.string().default('https://gitlab.com/api/graphql'),
})
.default({}),
),
factory: ({ config }) => ({ endpoint: GraphQLEndpoints.create(config) }),
},
);
/** @alpha */
export default createPlugin({
id: 'graphiql',
extensions: [
GraphiqlPage,
graphiqlPage,
graphiqlBrowseApi,
gitlabGraphiQLBrowseExtension,
graphiqlPageSidebarItem,
graphiqlGitlabGraphiQLEndpointExtension,
graphiqlNavItem,
],
routes: {
root: convertLegacyRouteRef(graphiQLRouteRef),
+2 -2
View File
@@ -33,7 +33,7 @@ const rootRouteRef = createRouteRef();
*/
export const titleExtensionDataRef = createExtensionDataRef<string>('title');
const HomepageCompositionRootExtension = createPageExtension({
const homePage = createPageExtension({
defaultPath: '/home',
routeRef: rootRouteRef,
inputs: {
@@ -65,5 +65,5 @@ const HomepageCompositionRootExtension = createPageExtension({
*/
export default createPlugin({
id: 'home',
extensions: [HomepageCompositionRootExtension],
extensions: [homePage],
});
+12 -9
View File
@@ -27,6 +27,18 @@ export function createSearchResultListItemExtension<
options: SearchResultItemExtensionOptions<TConfig>,
): ExtensionDefinition<TConfig>;
// @alpha (undocumented)
export namespace createSearchResultListItemExtension {
const // (undocumented)
itemDataRef: ConfigurableExtensionDataRef<
{
predicate?: SearchResultItemExtensionPredicate | undefined;
component: SearchResultItemExtensionComponent;
},
{}
>;
}
// @alpha (undocumented)
export type SearchResultItemExtensionComponent = <
P extends BaseSearchResultListItemProps,
@@ -34,15 +46,6 @@ export type SearchResultItemExtensionComponent = <
props: P,
) => JSX.Element | null;
// @alpha (undocumented)
export const searchResultItemExtensionData: ConfigurableExtensionDataRef<
{
predicate?: SearchResultItemExtensionPredicate | undefined;
component: SearchResultItemExtensionComponent;
},
{}
>;
// @alpha (undocumented)
export type SearchResultItemExtensionOptions<
TConfig extends {
+1 -2
View File
@@ -26,7 +26,6 @@ import React from 'react';
import {
BaseSearchResultListItemProps,
createSearchResultListItemExtension,
searchResultItemExtensionData as searchResultListItemExtensionData,
} from './alpha';
describe('createSearchResultListItemExtension', () => {
@@ -76,7 +75,7 @@ describe('createSearchResultListItemExtension', () => {
defaultPath: '/',
inputs: {
items: createExtensionInput({
item: searchResultListItemExtensionData,
item: createSearchResultListItemExtension.itemDataRef,
}),
},
loader: async ({ inputs }) => {
+9 -7
View File
@@ -47,12 +47,6 @@ export type SearchResultItemExtensionPredicate = (
result: SearchResult,
) => boolean;
/** @alpha */
export const searchResultItemExtensionData = createExtensionDataRef<{
predicate?: SearchResultItemExtensionPredicate;
component: SearchResultItemExtensionComponent;
}>('plugin.search.result.item.data');
/** @alpha */
export type SearchResultItemExtensionOptions<
TConfig extends { noTrack?: boolean },
@@ -109,7 +103,7 @@ export function createSearchResultListItemExtension<
},
configSchema,
output: {
item: searchResultItemExtensionData,
item: createSearchResultListItemExtension.itemDataRef,
},
factory({ config, node }) {
const ExtensionComponent = lazy(() =>
@@ -137,3 +131,11 @@ export function createSearchResultListItemExtension<
},
});
}
/** @alpha */
export namespace createSearchResultListItemExtension {
export const itemDataRef = createExtensionDataRef<{
predicate?: SearchResultItemExtensionPredicate;
component: SearchResultItemExtensionComponent;
}>('search.search-result-list-item.item');
}
+3 -3
View File
@@ -17,15 +17,15 @@ const _default: BackstagePlugin<
export default _default;
// @alpha (undocumented)
export const SearchApi: ExtensionDefinition<{}>;
export const searchApi: ExtensionDefinition<{}>;
// @alpha (undocumented)
export const SearchNavItem: ExtensionDefinition<{
export const searchNavItem: ExtensionDefinition<{
title: string;
}>;
// @alpha (undocumented)
export const SearchPage: ExtensionDefinition<{
export const searchPage: ExtensionDefinition<{
path: string;
noTrack: boolean;
}>;
+6 -6
View File
@@ -61,7 +61,7 @@ import {
} from '@backstage/plugin-search-react';
import { SearchResult } from '@backstage/plugin-search-common';
import { searchApiRef } from '@backstage/plugin-search-react';
import { searchResultItemExtensionData } from '@backstage/plugin-search-react/alpha';
import { createSearchResultListItemExtension } from '@backstage/plugin-search-react/alpha';
import { rootRouteRef } from './plugin';
import { SearchClient } from './apis';
@@ -73,7 +73,7 @@ import {
} from '@backstage/core-compat-api';
/** @alpha */
export const SearchApi = createApiExtension({
export const searchApi = createApiExtension({
factory: {
api: searchApiRef,
deps: { discoveryApi: discoveryApiRef, identityApi: identityApiRef },
@@ -100,7 +100,7 @@ const useSearchPageStyles = makeStyles((theme: Theme) => ({
}));
/** @alpha */
export const SearchPage = createPageExtension({
export const searchPage = createPageExtension({
routeRef: convertLegacyRouteRef(rootRouteRef),
configSchema: createSchemaFromZod(z =>
z.object({
@@ -110,7 +110,7 @@ export const SearchPage = createPageExtension({
),
inputs: {
items: createExtensionInput({
item: searchResultItemExtensionData,
item: createSearchResultListItemExtension.itemDataRef,
}),
},
loader: async ({ config, inputs }) => {
@@ -238,7 +238,7 @@ export const SearchPage = createPageExtension({
});
/** @alpha */
export const SearchNavItem = createNavItemExtension({
export const searchNavItem = createNavItemExtension({
routeRef: convertLegacyRouteRef(rootRouteRef),
title: 'Search',
icon: SearchIcon,
@@ -247,7 +247,7 @@ export const SearchNavItem = createNavItemExtension({
/** @alpha */
export default createPlugin({
id: 'search',
extensions: [SearchApi, SearchPage, SearchNavItem],
extensions: [searchApi, searchPage, searchNavItem],
routes: {
root: convertLegacyRouteRef(rootRouteRef),
},
+3 -3
View File
@@ -23,7 +23,7 @@ import { createSearchResultListItemExtension } from '@backstage/plugin-search-re
import { StackOverflowClient, stackOverflowApiRef } from './api';
/** @alpha */
const StackOverflowApi = createApiExtension({
const stackOverflowApi = createApiExtension({
factory: createApiFactory({
api: stackOverflowApiRef,
deps: { configApi: configApiRef },
@@ -32,7 +32,7 @@ const StackOverflowApi = createApiExtension({
});
/** @alpha */
const StackOverflowSearchResultListItem = createSearchResultListItemExtension({
const stackOverflowSearchResultListItem = createSearchResultListItemExtension({
predicate: result => result.type === 'stack-overflow',
component: () =>
import('./search/StackOverflowSearchResultListItem').then(
@@ -44,5 +44,5 @@ const StackOverflowSearchResultListItem = createSearchResultListItemExtension({
export default createPlugin({
id: 'stack-overflow',
// TODO: Migrate homepage cards when the declarative homepage plugin supports them
extensions: [StackOverflowApi, StackOverflowSearchResultListItem],
extensions: [stackOverflowApi, stackOverflowSearchResultListItem],
});
+2 -2
View File
@@ -17,10 +17,10 @@ const _default: BackstagePlugin<
export default _default;
// @alpha (undocumented)
export const sampleTechRadarApi: ExtensionDefinition<{}>;
export const techRadarApi: ExtensionDefinition<{}>;
// @alpha (undocumented)
export const TechRadarPage: ExtensionDefinition<{
export const techRadarPage: ExtensionDefinition<{
height: number;
width: number;
title: string;
+2 -2
View File
@@ -16,7 +16,7 @@
import { createExtensionTester } from '@backstage/frontend-test-utils';
import { screen } from '@testing-library/react';
import { TechRadarPage, sampleTechRadarApi } from './alpha';
import { techRadarPage, techRadarApi } from './alpha';
describe('TechRadarPage', () => {
beforeAll(() => {
@@ -27,7 +27,7 @@ describe('TechRadarPage', () => {
});
it('renders without exploding', async () => {
createExtensionTester(TechRadarPage).add(sampleTechRadarApi).render();
createExtensionTester(techRadarPage).add(techRadarApi).render();
await expect(screen.findByText('Tech Radar')).resolves.toBeInTheDocument();
});
+3 -3
View File
@@ -31,7 +31,7 @@ import {
import { rootRouteRef } from './plugin';
/** @alpha */
export const TechRadarPage = createPageExtension({
export const techRadarPage = createPageExtension({
defaultPath: '/tech-radar',
routeRef: convertLegacyRouteRef(rootRouteRef),
configSchema: createSchemaFromZod(z =>
@@ -53,14 +53,14 @@ export const TechRadarPage = createPageExtension({
});
/** @alpha */
export const sampleTechRadarApi = createApiExtension({
export const techRadarApi = createApiExtension({
factory: createApiFactory(techRadarApiRef, new SampleTechRadarApi()),
});
/** @alpha */
export default createPlugin({
id: 'tech-radar',
extensions: [TechRadarPage, sampleTechRadarApi],
extensions: [techRadarPage, techRadarApi],
routes: {
root: convertLegacyRouteRef(rootRouteRef),
},
+1 -1
View File
@@ -23,7 +23,7 @@ const _default: BackstagePlugin<
export default _default;
// @alpha (undocumented)
export const TechDocsSearchResultListItemExtension: ExtensionDefinition<{
export const techDocsSearchResultListItemExtension: ExtensionDefinition<{
lineClamp: number;
noTrack: boolean;
asListItem: boolean;
+14 -14
View File
@@ -48,7 +48,7 @@ import {
import { createEntityContentExtension } from '@backstage/plugin-catalog-react/alpha';
/** @alpha */
const techDocsStorage = createApiExtension({
const techDocsStorageApi = createApiExtension({
factory: createApiFactory({
api: techdocsStorageApiRef,
deps: {
@@ -68,7 +68,7 @@ const techDocsStorage = createApiExtension({
});
/** @alpha */
const techDocsClient = createApiExtension({
const techDocsClientApi = createApiExtension({
factory: createApiFactory({
api: techdocsApiRef,
deps: {
@@ -86,7 +86,7 @@ const techDocsClient = createApiExtension({
});
/** @alpha */
export const TechDocsSearchResultListItemExtension =
export const techDocsSearchResultListItemExtension =
createSearchResultListItemExtension({
configSchema: createSchemaFromZod(z =>
z.object({
@@ -113,7 +113,7 @@ export const TechDocsSearchResultListItemExtension =
*
* @alpha
*/
const TechDocsIndexPage = createPageExtension({
const techDocsPage = createPageExtension({
defaultPath: '/docs',
routeRef: convertLegacyRouteRef(rootRouteRef),
loader: () =>
@@ -127,7 +127,7 @@ const TechDocsIndexPage = createPageExtension({
*
* @alpha
*/
const TechDocsReaderPage = createPageExtension({
const techDocsReaderPage = createPageExtension({
name: 'reader',
defaultPath: '/docs/:namespace/:kind/:name',
routeRef: convertLegacyRouteRef(rootDocsRouteRef),
@@ -142,7 +142,7 @@ const TechDocsReaderPage = createPageExtension({
*
* @alpha
*/
const TechDocsEntityContent = createEntityContentExtension({
const techDocsEntityContent = createEntityContentExtension({
defaultPath: 'docs',
defaultTitle: 'TechDocs',
loader: () =>
@@ -150,7 +150,7 @@ const TechDocsEntityContent = createEntityContentExtension({
});
/** @alpha */
const TechDocsNavItem = createNavItemExtension({
const techDocsNavItem = createNavItemExtension({
icon: LibraryBooks,
title: 'Docs',
routeRef: convertLegacyRouteRef(rootRouteRef),
@@ -160,13 +160,13 @@ const TechDocsNavItem = createNavItemExtension({
export default createPlugin({
id: 'techdocs',
extensions: [
techDocsClient,
techDocsStorage,
TechDocsNavItem,
TechDocsIndexPage,
TechDocsReaderPage,
TechDocsEntityContent,
TechDocsSearchResultListItemExtension,
techDocsClientApi,
techDocsStorageApi,
techDocsNavItem,
techDocsPage,
techDocsReaderPage,
techDocsEntityContent,
techDocsSearchResultListItemExtension,
],
routes: {
root: convertLegacyRouteRef(rootRouteRef),
+2 -2
View File
@@ -29,7 +29,7 @@ import React from 'react';
export * from './translation';
const UserSettingsPage = createPageExtension({
const userSettingsPage = createPageExtension({
defaultPath: '/settings',
routeRef: convertLegacyRouteRef(settingsRouteRef),
inputs: {
@@ -55,7 +55,7 @@ const UserSettingsPage = createPageExtension({
*/
export default createPlugin({
id: 'user-settings',
extensions: [UserSettingsPage],
extensions: [userSettingsPage],
routes: {
root: convertLegacyRouteRef(settingsRouteRef),
},