From fbe180aa874f36b4f8c24d47c06c2b5aba435879 Mon Sep 17 00:00:00 2001 From: Mike Lewis Date: Fri, 4 Jun 2021 18:16:05 +0100 Subject: [PATCH 001/117] Add support for only filtering available options in the UserListPicker Signed-off-by: Mike Lewis Co-authored-by: Tim Hansen Co-authored-by: Himanshu Mishra --- .../UserListPicker/UserListPicker.tsx | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx index 52127a63bc..65ccb423da 100644 --- a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx +++ b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx @@ -106,13 +106,27 @@ function getFilterGroups(orgName: string | undefined): ButtonGroup[] { type UserListPickerProps = { initialFilter?: UserListFilterKind; + availableFilters?: UserListFilterKind[]; }; -export const UserListPicker = ({ initialFilter }: UserListPickerProps) => { +export const UserListPicker = ({ + initialFilter, + availableFilters, +}: UserListPickerProps) => { const classes = useStyles(); const configApi = useApi(configApiRef); const orgName = configApi.getOptionalString('organization.name') ?? 'Company'; - const filterGroups = getFilterGroups(orgName); + + // Remove group items that aren't in availableFilters and exclude + // any now-empty groups. + const filterGroups = getFilterGroups(orgName) + .map(filterGroup => ({ + ...filterGroup, + items: filterGroup.items.filter( + ({ id }) => !availableFilters || availableFilters.includes(id), + ), + })) + .filter(({ items }) => !!items.length); const { value: user } = useOwnUser(); const { isStarredEntity } = useStarredEntities(); From f3a53bf04631c654028daaf4afa712d70a7d8fbb Mon Sep 17 00:00:00 2001 From: Mike Lewis Date: Fri, 4 Jun 2021 18:18:21 +0100 Subject: [PATCH 002/117] Start working on refactoring the ScaffolderPage to use the useEntityListProvider hook Signed-off-by: Mike Lewis Co-authored-by: Tim Hansen Co-authored-by: Himanshu Mishra --- .../src/hooks/useEntityListProvider.tsx | 3 + .../ScaffolderPage/ScaffolderPage.tsx | 103 +++++++----------- 2 files changed, 42 insertions(+), 64 deletions(-) diff --git a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx index a6802a6d87..13948b4331 100644 --- a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx +++ b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx @@ -113,6 +113,9 @@ export const EntityListProvider = ({ compact(Object.values(outputState.appliedFilters)), ); + // TODO(mtlewis): currently entities will never be requested unless + // there's at least one filter, we should allow an initial request + // to happen with no filters. if (!isEqual(previousBackendFilter, backendFilter)) { // TODO(timbonicus): should limit fields here, but would need filter // fields + table columns diff --git a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx index 1d16e50568..f1e47a1879 100644 --- a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx +++ b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx @@ -14,22 +14,11 @@ * limitations under the License. */ -import { EntityMeta, TemplateEntityV1alpha1 } from '@backstage/catalog-model'; -import { useStarredEntities } from '@backstage/plugin-catalog-react'; -import { Button, Link, makeStyles, Typography } from '@material-ui/core'; -import StarIcon from '@material-ui/icons/Star'; -import React, { useEffect, useMemo, useState } from 'react'; -import { Link as RouterLink } from 'react-router-dom'; -import { EntityFilterGroupsProvider, useFilteredEntities } from '../../filter'; -import { registerComponentRouteRef } from '../../routes'; -import { ResultsFilter } from '../ResultsFilter/ResultsFilter'; -import { ScaffolderFilter } from '../ScaffolderFilter'; -import { ButtonGroup } from '../ScaffolderFilter/ScaffolderFilter'; -import SearchToolbar from '../SearchToolbar/SearchToolbar'; -import { TemplateCard } from '../TemplateCard'; - -import { configApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api'; - +import { + Entity, + EntityMeta, + TemplateEntityV1alpha1, +} from '@backstage/catalog-model'; import { Content, ContentHeader, @@ -41,6 +30,20 @@ import { SupportButton, WarningPanel, } from '@backstage/core-components'; +import { useRouteRef } from '@backstage/core-plugin-api'; +import { + EntityKindPicker, + EntityListProvider, + EntityTypePicker, + useEntityListProvider, + UserListPicker, +} from '@backstage/plugin-catalog-react'; +import { Button, Link, makeStyles, Typography } from '@material-ui/core'; +import React, { useEffect, useState } from 'react'; +import { Link as RouterLink } from 'react-router-dom'; +import { registerComponentRouteRef } from '../../routes'; +import SearchToolbar from '../SearchToolbar/SearchToolbar'; +import { TemplateCard } from '../TemplateCard'; const useStyles = makeStyles(theme => ({ contentWrapper: { @@ -53,45 +56,10 @@ const useStyles = makeStyles(theme => ({ export const ScaffolderPageContents = () => { const styles = useStyles(); - const { - loading, - error, - filteredEntities, - availableCategories, - } = useFilteredEntities(); - const configApi = useApi(configApiRef); - const orgName = configApi.getOptionalString('organization.name') ?? 'Company'; - const { isStarredEntity } = useStarredEntities(); - const filterGroups = useMemo( - () => [ - { - name: orgName, - items: [ - { - id: 'all', - label: 'All', - filterFn: () => true, - }, - ], - }, - { - name: 'Personal', - items: [ - { - id: 'starred', - label: 'Starred', - icon: StarIcon, - filterFn: isStarredEntity, - }, - ], - }, - ], - [isStarredEntity, orgName], - ); + const { loading, error, entities } = useEntityListProvider(); + const [search, setSearch] = useState(''); - const [matchingEntities, setMatchingEntities] = useState( - [] as TemplateEntityV1alpha1[], - ); + const [matchingEntities, setMatchingEntities] = useState([] as Entity[]); const matchesQuery = (metadata: EntityMeta, query: string) => `${metadata.title}`.toLocaleUpperCase('en-US').includes(query) || @@ -101,14 +69,14 @@ export const ScaffolderPageContents = () => { useEffect(() => { if (search.length === 0) { - return setMatchingEntities(filteredEntities); + return setMatchingEntities(entities); } return setMatchingEntities( - filteredEntities.filter(template => + entities.filter(template => matchesQuery(template.metadata, search.toLocaleUpperCase('en-US')), ), ); - }, [search, filteredEntities]); + }, [search, entities]); return ( @@ -142,14 +110,21 @@ export const ScaffolderPageContents = () => {
+ {/* TODO(mtlewis) extract SearchToolbar as a frontend filter */} -
+ {/* TODO(mtlewis) figure out flash of error state when entities are loading */} + {/* TODO(mtlewis) move loading, error handling etc. inside card list */} {loading && } {error && ( @@ -177,7 +152,7 @@ export const ScaffolderPageContents = () => { matchingEntities.map((template, i) => ( ))} @@ -190,7 +165,7 @@ export const ScaffolderPageContents = () => { }; export const ScaffolderPage = () => ( - + - + ); From bc2c35b2e13223e4799e3ef745f50838a5500980 Mon Sep 17 00:00:00 2001 From: Chase Rutherford-Jenkins Date: Fri, 11 Jun 2021 14:39:14 -0700 Subject: [PATCH 003/117] move search logic into SearchToolbar Co-authored-by: Tim Signed-off-by: Chase Rutherford-Jenkins --- .../src/hooks/useEntityListProvider.tsx | 2 + plugins/catalog-react/src/types.ts | 19 +++++++ .../ScaffolderPage/ScaffolderPage.tsx | 56 +++++-------------- .../SearchToolbar/SearchToolbar.test.tsx | 48 +++++++++++++++- .../SearchToolbar/SearchToolbar.tsx | 30 ++++++---- 5 files changed, 101 insertions(+), 54 deletions(-) diff --git a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx index 13948b4331..525ce0a146 100644 --- a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx +++ b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx @@ -31,6 +31,7 @@ import { EntityLifecycleFilter, EntityOwnerFilter, EntityTagFilter, + EntityTextFilter, EntityTypeFilter, UserListFilter, } from '../types'; @@ -44,6 +45,7 @@ export type DefaultEntityFilters = { owners?: EntityOwnerFilter; lifecycles?: EntityLifecycleFilter; tags?: EntityTagFilter; + text?: EntityTextFilter; }; export type EntityListContextProps< diff --git a/plugins/catalog-react/src/types.ts b/plugins/catalog-react/src/types.ts index 7932e4b735..a41e08024a 100644 --- a/plugins/catalog-react/src/types.ts +++ b/plugins/catalog-react/src/types.ts @@ -66,6 +66,25 @@ export class EntityTagFilter implements EntityFilter { } } +// TODO(chaseajen): add unit test for logic +export class EntityTextFilter implements EntityFilter { + constructor(readonly value: string) {} + + filterEntity(entity: Entity): boolean { + const upperCaseValue = this.value.toLocaleUpperCase('en-US'); + + return ( + `${entity.metadata.title}` + .toLocaleUpperCase('en-US') + .includes(upperCaseValue) || + entity.metadata.tags + ?.join('') + .toLocaleUpperCase('en-US') + .indexOf(upperCaseValue) !== -1 + ); + } +} + export class EntityOwnerFilter implements EntityFilter { constructor(readonly values: string[]) {} diff --git a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx index f1e47a1879..f8043791ee 100644 --- a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx +++ b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx @@ -14,11 +14,7 @@ * limitations under the License. */ -import { - Entity, - EntityMeta, - TemplateEntityV1alpha1, -} from '@backstage/catalog-model'; +import { TemplateEntityV1alpha1 } from '@backstage/catalog-model'; import { Content, ContentHeader, @@ -39,7 +35,7 @@ import { UserListPicker, } from '@backstage/plugin-catalog-react'; import { Button, Link, makeStyles, Typography } from '@material-ui/core'; -import React, { useEffect, useState } from 'react'; +import React from 'react'; import { Link as RouterLink } from 'react-router-dom'; import { registerComponentRouteRef } from '../../routes'; import SearchToolbar from '../SearchToolbar/SearchToolbar'; @@ -58,26 +54,8 @@ export const ScaffolderPageContents = () => { const styles = useStyles(); const { loading, error, entities } = useEntityListProvider(); - const [search, setSearch] = useState(''); - const [matchingEntities, setMatchingEntities] = useState([] as Entity[]); - - const matchesQuery = (metadata: EntityMeta, query: string) => - `${metadata.title}`.toLocaleUpperCase('en-US').includes(query) || - metadata.tags?.join('').toLocaleUpperCase('en-US').indexOf(query) !== -1; - const registerComponentLink = useRouteRef(registerComponentRouteRef); - useEffect(() => { - if (search.length === 0) { - return setMatchingEntities(entities); - } - return setMatchingEntities( - entities.filter(template => - matchesQuery(template.metadata, search.toLocaleUpperCase('en-US')), - ), - ); - }, [search, entities]); - return (
{
- {/* TODO(mtlewis) extract SearchToolbar as a frontend filter */} - +
diff --git a/plugins/scaffolder/src/components/TemplateList/TemplateList.tsx b/plugins/scaffolder/src/components/TemplateList/TemplateList.tsx new file mode 100644 index 0000000000..4b9a7030d9 --- /dev/null +++ b/plugins/scaffolder/src/components/TemplateList/TemplateList.tsx @@ -0,0 +1,64 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { TemplateEntityV1alpha1 } from '@backstage/catalog-model'; +import { + ItemCardGrid, + Progress, + WarningPanel, +} from '@backstage/core-components'; +import { useEntityListProvider } from '@backstage/plugin-catalog-react'; +import { Link, Typography } from '@material-ui/core'; +import { TemplateCard } from '../TemplateCard'; + +export const TemplateList = () => { + const { loading, error, entities } = useEntityListProvider(); + return ( + <> + {/* TODO(mtlewis) figure out flash of error state when entities are loading */} + {loading && } + + {error && ( + + {error.message} + + )} + + {!error && !loading && entities && !entities.length && ( + + No templates found that match your filter. Learn more about{' '} + + adding templates + + . + + )} + + + {entities && + entities?.length > 0 && + entities.map((template, i) => ( + + ))} + + + ); +}; diff --git a/plugins/scaffolder/src/components/TemplateList/index.ts b/plugins/scaffolder/src/components/TemplateList/index.ts new file mode 100644 index 0000000000..b9ec700d74 --- /dev/null +++ b/plugins/scaffolder/src/components/TemplateList/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { TemplateList } from './TemplateList'; From d5b3c9c7ecbb63d59b0bb14a3ebdd5e2c02659d9 Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Thu, 24 Jun 2021 20:43:10 -0600 Subject: [PATCH 008/117] Set useEntityListProvider initial loading state Signed-off-by: Tim Hansen --- .../src/hooks/useEntityListProvider.tsx | 60 ++++++++++--------- .../components/TemplateList/TemplateList.tsx | 3 +- 2 files changed, 34 insertions(+), 29 deletions(-) diff --git a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx index 1b96b1f759..0aa52d2227 100644 --- a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx +++ b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx @@ -107,34 +107,40 @@ export const EntityListProvider = ({ // The main async filter worker. Note that while it has a lot of dependencies // in terms of its implementation, the triggering only happens (debounced) // based on the requested filters changing. - const [{ loading, error }, refresh] = useAsyncFn(async () => { - const compacted = compact(Object.values(requestedFilters)); - const entityFilter = reduceEntityFilters(compacted); - const backendFilter = reduceCatalogFilters(compacted); - const previousBackendFilter = reduceCatalogFilters( - compact(Object.values(outputState.appliedFilters)), - ); + const [{ loading, error }, refresh] = useAsyncFn( + async () => { + const compacted = compact(Object.values(requestedFilters)); + const entityFilter = reduceEntityFilters(compacted); + const backendFilter = reduceCatalogFilters(compacted); + const previousBackendFilter = reduceCatalogFilters( + compact(Object.values(outputState.appliedFilters)), + ); - // TODO(mtlewis): currently entities will never be requested unless - // there's at least one filter, we should allow an initial request - // to happen with no filters. - if (!isEqual(previousBackendFilter, backendFilter)) { - // TODO(timbonicus): should limit fields here, but would need filter - // fields + table columns - const response = await catalogApi.getEntities({ filter: backendFilter }); - setOutputState({ - appliedFilters: requestedFilters, - backendEntities: response.items, - entities: response.items.filter(entityFilter), - }); - } else { - setOutputState({ - appliedFilters: requestedFilters, - backendEntities: outputState.backendEntities, - entities: outputState.backendEntities.filter(entityFilter), - }); - } - }, [catalogApi, requestedFilters, outputState]); + // TODO(mtlewis): currently entities will never be requested unless + // there's at least one filter, we should allow an initial request + // to happen with no filters. + if (!isEqual(previousBackendFilter, backendFilter)) { + // TODO(timbonicus): should limit fields here, but would need filter + // fields + table columns + const response = await catalogApi.getEntities({ + filter: backendFilter, + }); + setOutputState({ + appliedFilters: requestedFilters, + backendEntities: response.items, + entities: response.items.filter(entityFilter), + }); + } else { + setOutputState({ + appliedFilters: requestedFilters, + backendEntities: outputState.backendEntities, + entities: outputState.backendEntities.filter(entityFilter), + }); + } + }, + [catalogApi, requestedFilters, outputState], + { loading: true }, + ); // Slight debounce on the refresh, since (especially on page load) several // filters will be calling this in rapid succession. diff --git a/plugins/scaffolder/src/components/TemplateList/TemplateList.tsx b/plugins/scaffolder/src/components/TemplateList/TemplateList.tsx index 4b9a7030d9..f012ab68d0 100644 --- a/plugins/scaffolder/src/components/TemplateList/TemplateList.tsx +++ b/plugins/scaffolder/src/components/TemplateList/TemplateList.tsx @@ -29,7 +29,6 @@ export const TemplateList = () => { const { loading, error, entities } = useEntityListProvider(); return ( <> - {/* TODO(mtlewis) figure out flash of error state when entities are loading */} {loading && } {error && ( @@ -38,7 +37,7 @@ export const TemplateList = () => { )} - {!error && !loading && entities && !entities.length && ( + {!error && !loading && !entities.length && ( No templates found that match your filter. Learn more about{' '} From 8631f422d4470b24ba315959afd9522c1b64adbc Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Thu, 24 Jun 2021 20:52:14 -0600 Subject: [PATCH 009/117] Add tag filter to ScaffolderPage Signed-off-by: Tim Hansen --- .../src/components/ScaffolderPage/ScaffolderPage.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx index 56c371e825..89710a6e34 100644 --- a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx +++ b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx @@ -27,6 +27,7 @@ import { EntityKindPicker, EntityListProvider, EntitySearchBar, + EntityTagPicker, EntityTypePicker, UserListPicker, } from '@backstage/plugin-catalog-react'; @@ -90,7 +91,7 @@ export const ScaffolderPageContents = () => { /> {/* TODO(mtlewis) replace with custom checkbox list? maybe multiselect */} - {/* TODO(mtlewis) consider adding tag picker? */} +
From 7f3f5c9b91ae88b32b2f8339f6d916c630b01ce8 Mon Sep 17 00:00:00 2001 From: Mike Lewis Date: Mon, 28 Jun 2021 18:24:24 +0100 Subject: [PATCH 010/117] Add accessor method to retrieve array filter value from EntityTypeFilter Co-authored-by: Tim Hansen Co-authored-by: Chase Rutherford-Jenkins Co-authored-by: Himanshu Mishra Co-authored-by: Joe Porpeglia Signed-off-by: Mike Lewis --- plugins/catalog-react/src/filters.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/catalog-react/src/filters.ts b/plugins/catalog-react/src/filters.ts index 7a80eb6d31..418afeab92 100644 --- a/plugins/catalog-react/src/filters.ts +++ b/plugins/catalog-react/src/filters.ts @@ -32,10 +32,14 @@ export class EntityKindFilter implements EntityFilter { } export class EntityTypeFilter implements EntityFilter { - constructor(readonly value: string) {} + constructor(readonly value: string | string[]) {} + + getTypes() { + return Array.isArray(this.value) ? this.value : [this.value]; + } getCatalogFilters(): Record { - return { 'spec.type': this.value }; + return { 'spec.type': this.getTypes() }; } } From 77186cf6376379fd0a12c8ee500baf39125bd590 Mon Sep 17 00:00:00 2001 From: Mike Lewis Date: Mon, 28 Jun 2021 18:28:16 +0100 Subject: [PATCH 011/117] Add ability to include multiple types in useEntityTypeFilter Co-authored-by: Tim Hansen Co-authored-by: Chase Rutherford-Jenkins Co-authored-by: Himanshu Mishra Co-authored-by: Joe Porpeglia Signed-off-by: Mike Lewis --- .../src/hooks/useEntityTypeFilter.tsx | 40 +++++++++++++------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx b/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx index aeda12c6f8..e925103ebd 100644 --- a/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx +++ b/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx @@ -30,6 +30,7 @@ type EntityTypeReturn = { types: string[]; selectedType: string | undefined; setType: (type: string | undefined) => void; + setTypes: (types: string[]) => void; }; /** @@ -43,7 +44,7 @@ export function useEntityTypeFilter(): EntityTypeReturn { updateFilters, } = useEntityListProvider(); - const [types, setTypes] = useState([]); + const [allTypes, setAllTypes] = useState([]); const kind = useMemo(() => kindFilter?.value, [kindFilter]); // Load all valid spec.type values straight from the catalogApi, paying attention to only the @@ -69,29 +70,44 @@ export function useEntityTypeFilter(): EntityTypeReturn { (entities ?? []).map(e => e.spec?.type).filter(Boolean) as string[], ), ].sort(); - setTypes(newTypes); + setAllTypes(newTypes); - // Reset type filter if no longer applicable - updateFilters((oldFilters: DefaultEntityFilters) => - oldFilters.type && !newTypes.includes(oldFilters.type.value) - ? { type: undefined } - : {}, - ); + // Update type filter to only valid values when the list of available types has changed + updateFilters((oldFilters: DefaultEntityFilters) => { + // No filter previously set; no-op + if (!oldFilters.type) { + return {}; + } + const stillValidTypes = oldFilters.type + .getTypes() + .filter(value => newTypes.includes(value)); + if (!stillValidTypes.length) { + // None of the previously selected types are present any more; clear the filter + return { type: undefined }; + } + return { type: new EntityTypeFilter(stillValidTypes) }; + }); }, [updateFilters, entities]); - const setType = useCallback( - (type: string | undefined) => + const setTypes = useCallback( + (types: string[]) => updateFilters({ - type: type === undefined ? undefined : new EntityTypeFilter(type), + type: types.length ? undefined : new EntityTypeFilter(types), }), [updateFilters], ); + const setType = (type: string | undefined) => + setTypes(type === undefined ? [] : [type]); + + // TODO(timbonicus): selectedType should be selectedTypes + // TODO(timbonicus): remove setType, make this only array-based return { loading, error, - types, + types: allTypes, selectedType: typeFilter?.value, setType, + setTypes, }; } From 2669b41f2fb6c2a24aab2cb4a3490c26cb2c350c Mon Sep 17 00:00:00 2001 From: Mike Lewis Date: Mon, 28 Jun 2021 18:29:24 +0100 Subject: [PATCH 012/117] Introduce initial TemplateTypePicker component in scaffolder Co-authored-by: Tim Hansen Co-authored-by: Chase Rutherford-Jenkins Co-authored-by: Himanshu Mishra Co-authored-by: Joe Porpeglia Signed-off-by: Mike Lewis --- plugins/scaffolder/package.json | 1 + .../TemplateTypePicker.test.tsx | 134 ++++++++++++++++++ .../TemplateTypePicker/TemplateTypePicker.tsx | 97 +++++++++++++ .../components/TemplateTypePicker/index.ts | 17 +++ 4 files changed, 249 insertions(+) create mode 100644 plugins/scaffolder/src/components/TemplateTypePicker/TemplateTypePicker.test.tsx create mode 100644 plugins/scaffolder/src/components/TemplateTypePicker/TemplateTypePicker.tsx create mode 100644 plugins/scaffolder/src/components/TemplateTypePicker/index.ts diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 88845b402b..c02b63f761 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -51,6 +51,7 @@ "humanize-duration": "^3.25.1", "immer": "^9.0.1", "json-schema": "^0.3.0", + "lodash": "^4.17.21", "luxon": "^1.25.0", "react": "^16.13.1", "react-dom": "^16.13.1", diff --git a/plugins/scaffolder/src/components/TemplateTypePicker/TemplateTypePicker.test.tsx b/plugins/scaffolder/src/components/TemplateTypePicker/TemplateTypePicker.test.tsx new file mode 100644 index 0000000000..fa74b34717 --- /dev/null +++ b/plugins/scaffolder/src/components/TemplateTypePicker/TemplateTypePicker.test.tsx @@ -0,0 +1,134 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { fireEvent, render, waitFor } from '@testing-library/react'; +import { capitalize } from 'lodash'; +import { CatalogApi } from '@backstage/catalog-client'; +import { Entity } from '@backstage/catalog-model'; +import { EntityTypePicker } from './EntityTypePicker'; +import { MockEntityListContextProvider } from '../../testUtils/providers'; +import { catalogApiRef } from '../../api'; +import { EntityKindFilter, EntityTypeFilter } from '../../filters'; + +import { AlertApi, alertApiRef } from '@backstage/core-plugin-api'; +import { ApiProvider, ApiRegistry } from '@backstage/core-app-api'; + +const entities: Entity[] = [ + { + apiVersion: '1', + kind: 'Component', + metadata: { + name: 'component-1', + }, + spec: { + type: 'service', + }, + }, + { + apiVersion: '1', + kind: 'Component', + metadata: { + name: 'component-2', + }, + spec: { + type: 'website', + }, + }, + { + apiVersion: '1', + kind: 'Component', + metadata: { + name: 'component-3', + }, + spec: { + type: 'library', + }, + }, +]; + +const apis = ApiRegistry.from([ + [ + catalogApiRef, + ({ + getEntities: jest + .fn() + .mockImplementation(() => Promise.resolve({ items: entities })), + } as unknown) as CatalogApi, + ], + [ + alertApiRef, + ({ + post: jest.fn(), + } as unknown) as AlertApi, + ], +]); + +describe('', () => { + it('renders available entity types', async () => { + const rendered = render( + + + + + , + ); + expect(rendered.getByText('Type')).toBeInTheDocument(); + + const input = rendered.getByTestId('select'); + fireEvent.click(input); + + await waitFor(() => rendered.getByText('Service')); + + entities.forEach(entity => { + expect( + rendered.getByText(capitalize(entity.spec!.type as string)), + ).toBeInTheDocument(); + }); + }); + + it('sets the selected type filter', async () => { + const updateFilters = jest.fn(); + const rendered = render( + + + + + , + ); + const input = rendered.getByTestId('select'); + fireEvent.click(input); + + await waitFor(() => rendered.getByText('Service')); + fireEvent.click(rendered.getByText('Service')); + + expect(updateFilters).toHaveBeenLastCalledWith({ + type: new EntityTypeFilter('service'), + }); + + fireEvent.click(input); + fireEvent.click(rendered.getByText('All')); + + expect(updateFilters).toHaveBeenLastCalledWith({ type: undefined }); + }); +}); diff --git a/plugins/scaffolder/src/components/TemplateTypePicker/TemplateTypePicker.tsx b/plugins/scaffolder/src/components/TemplateTypePicker/TemplateTypePicker.tsx new file mode 100644 index 0000000000..780f9d2d1e --- /dev/null +++ b/plugins/scaffolder/src/components/TemplateTypePicker/TemplateTypePicker.tsx @@ -0,0 +1,97 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { + Typography, + List, + ListItem, + makeStyles, + Theme, + Checkbox, + ListItemText, +} from '@material-ui/core'; +import { useEntityTypeFilter } from '@backstage/plugin-catalog-react'; +import { alertApiRef, useApi } from '@backstage/core-plugin-api'; + +const useStyles = makeStyles(theme => ({ + checkbox: { + padding: theme.spacing(0, 1, 0, 1), + }, +})); + +export const TemplateTypePicker = () => { + const classes = useStyles(); + const alertApi = useApi(alertApiRef); + // TODO(timbonicus): Use new setTypes returned from the hook + const { error, types, selectedType } = useEntityTypeFilter(); + + if (!types) return null; + + if (error) { + alertApi.post({ + message: `Failed to load entity types`, + severity: 'error', + }); + return null; + } + + return ( + <> + Categories + + {types.map(type => { + const labelId = `checkbox-list-label-${type}`; + return ( + {}} + // TODO(timbonicus): Update to use setTypes + // setSelectedCategories( + // selectedCategories.includes(type) + // ? selectedCategories.filter( + // selectedCategory => selectedCategory !== type, + // ) + // : [...selectedCategories, type], + // ) + // } + > + + + + ); + })} + + + ); +}; diff --git a/plugins/scaffolder/src/components/TemplateTypePicker/index.ts b/plugins/scaffolder/src/components/TemplateTypePicker/index.ts new file mode 100644 index 0000000000..2dcd091311 --- /dev/null +++ b/plugins/scaffolder/src/components/TemplateTypePicker/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { TemplateTypePicker } from './TemplateTypePicker'; From e5abca34f601ab11076c6aaf1b61b281799a5cc0 Mon Sep 17 00:00:00 2001 From: Mike Lewis Date: Mon, 28 Jun 2021 18:29:57 +0100 Subject: [PATCH 013/117] Use new TemplateTypePicker component in ScaffolderPage Co-authored-by: Tim Hansen Co-authored-by: Chase Rutherford-Jenkins Co-authored-by: Himanshu Mishra Co-authored-by: Joe Porpeglia Signed-off-by: Mike Lewis --- .../src/components/ScaffolderPage/ScaffolderPage.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx index 89710a6e34..3fed099500 100644 --- a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx +++ b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx @@ -28,7 +28,6 @@ import { EntityListProvider, EntitySearchBar, EntityTagPicker, - EntityTypePicker, UserListPicker, } from '@backstage/plugin-catalog-react'; import { Button, makeStyles } from '@material-ui/core'; @@ -36,6 +35,7 @@ import React from 'react'; import { Link as RouterLink } from 'react-router-dom'; import { registerComponentRouteRef } from '../../routes'; import { TemplateList } from '../TemplateList'; +import { TemplateTypePicker } from '../TemplateTypePicker'; const useStyles = makeStyles(theme => ({ contentWrapper: { @@ -89,8 +89,7 @@ export const ScaffolderPageContents = () => { initialFilter="all" availableFilters={['all', 'starred']} /> - {/* TODO(mtlewis) replace with custom checkbox list? maybe multiselect */} - +
From 315deb854401339111c01c4494254d5a05691531 Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Mon, 28 Jun 2021 16:04:43 -0600 Subject: [PATCH 014/117] entityTypeFilter improvements - Supports selecting multiple types - Switch TemplateTypePicker to FormGroup instead of List Co-authored-by: Joe Porpeglia Signed-off-by: Tim Hansen --- .../EntityTypePicker/EntityTypePicker.tsx | 19 ++-- plugins/catalog-react/src/filters.ts | 3 +- .../src/hooks/useEntityListProvider.tsx | 2 +- .../src/hooks/useEntityTypeFilter.tsx | 48 +++++----- .../components/CatalogTable/CatalogTable.tsx | 2 +- .../TemplateTypePicker/TemplateTypePicker.tsx | 89 +++++++++---------- 6 files changed, 84 insertions(+), 79 deletions(-) diff --git a/plugins/catalog-react/src/components/EntityTypePicker/EntityTypePicker.tsx b/plugins/catalog-react/src/components/EntityTypePicker/EntityTypePicker.tsx index 52b8ec8ff1..0a7e94d142 100644 --- a/plugins/catalog-react/src/components/EntityTypePicker/EntityTypePicker.tsx +++ b/plugins/catalog-react/src/components/EntityTypePicker/EntityTypePicker.tsx @@ -15,7 +15,7 @@ */ import React from 'react'; -import { capitalize } from 'lodash'; +import capitalize from 'lodash/capitalize'; import { Box } from '@material-ui/core'; import { useEntityTypeFilter } from '../../hooks/useEntityTypeFilter'; @@ -24,9 +24,14 @@ import { Select } from '@backstage/core-components'; export const EntityTypePicker = () => { const alertApi = useApi(alertApiRef); - const { error, types, selectedType, setType } = useEntityTypeFilter(); + const { + error, + availableTypes, + selectedTypes, + setSelectedTypes, + } = useEntityTypeFilter(); - if (!types) return null; + if (!availableTypes) return null; if (error) { alertApi.post({ @@ -38,7 +43,7 @@ export const EntityTypePicker = () => { const items = [ { value: 'all', label: 'All' }, - ...types.map((type: string) => ({ + ...availableTypes.map((type: string) => ({ value: type, label: capitalize(type), })), @@ -49,8 +54,10 @@ export const EntityTypePicker = () => { 1 ? selectedTypes[0] : undefined) ?? 'all'} onChange={value => setSelectedTypes(value === 'all' ? [] : [String(value)]) } diff --git a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx index da7c26228d..b54284da36 100644 --- a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx +++ b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx @@ -200,6 +200,24 @@ describe('', () => { ).toEqual(['1', '0', '2']); }); + it('respects the query parameter filter value', () => { + const updateFilters = jest.fn(); + const queryParameters = { user: 'owned' }; + render( + + + + + , + ); + + expect(updateFilters).toHaveBeenLastCalledWith({ + user: new UserListFilter('owned', mockUser, mockIsStarredEntity), + }); + }); + it('updates user filter when a menuitem is selected', () => { const updateFilters = jest.fn(); const { getByText } = render( diff --git a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx index e03ef79bad..0212c0f0be 100644 --- a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx +++ b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx @@ -129,9 +129,18 @@ export const UserListPicker = ({ })) .filter(({ items }) => !!items.length); + const { + filters, + updateFilters, + backendEntities, + queryParameters, + } = useEntityListProvider(); + const { value: user } = useOwnUser(); const { isStarredEntity } = useStarredEntities(); - const [selectedUserFilter, setSelectedUserFilter] = useState(initialFilter); + const [selectedUserFilter, setSelectedUserFilter] = useState( + [queryParameters.user].flat()[0] ?? initialFilter, + ); // Static filters; used for generating counts of potentially unselected kinds const ownedFilter = useMemo( @@ -143,12 +152,14 @@ export const UserListPicker = ({ [user, isStarredEntity], ); - const { filters, updateFilters, backendEntities } = useEntityListProvider(); - useEffect(() => { updateFilters({ user: selectedUserFilter - ? new UserListFilter(selectedUserFilter, user, isStarredEntity) + ? new UserListFilter( + selectedUserFilter as UserListFilterKind, + user, + isStarredEntity, + ) : undefined, }); }, [selectedUserFilter, user, isStarredEntity, updateFilters]); diff --git a/plugins/catalog-react/src/filters.ts b/plugins/catalog-react/src/filters.ts index 2b23031cc9..98c66e0c26 100644 --- a/plugins/catalog-react/src/filters.ts +++ b/plugins/catalog-react/src/filters.ts @@ -46,6 +46,10 @@ export class EntityTypeFilter implements EntityFilter { getCatalogFilters(): Record { return { 'spec.type': this.getTypes() }; } + + toQueryValue(): string[] { + return this.getTypes(); + } } export class EntityTagFilter implements EntityFilter { @@ -54,6 +58,10 @@ export class EntityTagFilter implements EntityFilter { filterEntity(entity: Entity): boolean { return this.values.every(v => (entity.metadata.tags ?? []).includes(v)); } + + toQueryValue(): string[] { + return this.values; + } } export class EntityTextFilter implements EntityFilter { @@ -87,6 +95,10 @@ export class EntityOwnerFilter implements EntityFilter { ), ); } + + toQueryValue(): string[] { + return this.values; + } } export class EntityLifecycleFilter implements EntityFilter { @@ -95,6 +107,10 @@ export class EntityLifecycleFilter implements EntityFilter { filterEntity(entity: Entity): boolean { return this.values.some(v => entity.spec?.lifecycle === v); } + + toQueryValue(): string[] { + return this.values; + } } export class UserListFilter implements EntityFilter { @@ -114,4 +130,8 @@ export class UserListFilter implements EntityFilter { return true; } } + + toQueryValue(): string { + return this.value; + } } diff --git a/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx b/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx index ee5da0bb12..c66af03da0 100644 --- a/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx +++ b/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx @@ -15,6 +15,8 @@ */ import React, { PropsWithChildren } from 'react'; +import qs from 'qs'; +import { MemoryRouter as Router } from 'react-router-dom'; import { act, renderHook } from '@testing-library/react-hooks'; import { MockStorageApi } from '@backstage/test-utils'; import { CatalogApi } from '@backstage/catalog-client'; @@ -96,16 +98,22 @@ const apis = ApiRegistry.from([ const wrapper = ({ userFilter, + queryParams, children, -}: PropsWithChildren<{ userFilter: UserListFilterKind }>) => { +}: PropsWithChildren<{ + userFilter?: UserListFilterKind; + queryParams?: string; +}>) => { return ( - - - - + + + + + + ); }; @@ -140,6 +148,25 @@ describe('', () => { expect(result.current.entities.length).toBe(1); }); + it('resolves query param filter values', async () => { + const { result, waitFor } = renderHook(() => useEntityListProvider(), { + wrapper, + initialProps: { + queryParams: qs.stringify({ + filters: { + kind: 'component', + type: 'service', + }, + }), + }, + }); + await waitFor(() => !!result.current.queryParameters); + expect(result.current.queryParameters).toEqual({ + kind: 'component', + type: 'service', + }); + }); + it('does not fetch when only frontend filters change', async () => { const { result, waitFor } = renderHook(() => useEntityListProvider(), { wrapper, diff --git a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx index 253184a851..8ca3efd243 100644 --- a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx +++ b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx @@ -16,6 +16,7 @@ import { Entity } from '@backstage/catalog-model'; import { compact, isEqual } from 'lodash'; +import qs from 'qs'; import React, { createContext, PropsWithChildren, @@ -23,6 +24,7 @@ import React, { useContext, useState, } from 'react'; +import { useSearchParams } from 'react-router-dom'; import { useAsyncFn, useDebounce } from 'react-use'; import { catalogApiRef } from '../api'; import { @@ -80,7 +82,7 @@ export type EntityListContextProps< /** * Filter values from query parameters. */ - queryParameters: Record; + queryParameters: Partial>; loading: boolean; error?: Error; @@ -101,6 +103,8 @@ export const EntityListProvider = ({ children, }: PropsWithChildren<{}>) => { const catalogApi = useApi(catalogApiRef); + const [searchParams, setSearchParams] = useSearchParams(); + const allQueryParams = qs.parse(searchParams.toString()); const [requestedFilters, setRequestedFilters] = useState( {} as EntityFilters, ); @@ -108,7 +112,8 @@ export const EntityListProvider = ({ appliedFilters: {} as EntityFilters, entities: [], backendEntities: [], - queryParameters: {}, // TODO: Load (once!!) from query parameters + queryParameters: + (allQueryParams.filters as Record) ?? {}, }); // The main async filter worker. Note that while it has a lot of dependencies @@ -123,14 +128,17 @@ export const EntityListProvider = ({ compact(Object.values(outputState.appliedFilters)), ); - const queryParams = Object.keys(requestedFilters).reduce((params, key) => { - const filter: EntityFilter | undefined = - requestedFilters[key as keyof EntityFilters]; - if (filter?.toQueryValue) { - params[key] = filter.toQueryValue(); - } - return params; - }, {} as Record); + const queryParams = Object.keys(requestedFilters).reduce( + (params, key) => { + const filter: EntityFilter | undefined = + requestedFilters[key as keyof EntityFilters]; + if (filter?.toQueryValue) { + params[key] = filter.toQueryValue(); + } + return params; + }, + {} as Record, + ); // TODO(mtlewis): currently entities will never be requested unless // there's at least one filter, we should allow an initial request @@ -156,7 +164,12 @@ export const EntityListProvider = ({ }); } - // TODO: write queryParams to query string + setSearchParams( + qs.stringify({ ...allQueryParams, filters: queryParams }), + { + replace: true, + }, + ); }, [catalogApi, requestedFilters, outputState], { loading: true }, diff --git a/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx b/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx index 53f3109930..068e995522 100644 --- a/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx +++ b/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx @@ -14,14 +14,11 @@ * limitations under the License. */ -import { useCallback, useEffect, useMemo, useState } from 'react'; +import { useEffect, useMemo, useRef, useState } from 'react'; import { useAsync } from 'react-use'; import { useApi } from '@backstage/core-plugin-api'; import { catalogApiRef } from '../api'; -import { - DefaultEntityFilters, - useEntityListProvider, -} from './useEntityListProvider'; +import { useEntityListProvider } from './useEntityListProvider'; import { EntityTypeFilter } from '../filters'; type EntityTypeReturn = { @@ -40,9 +37,17 @@ export function useEntityTypeFilter(): EntityTypeReturn { const catalogApi = useApi(catalogApiRef); const { filters: { kind: kindFilter, type: typeFilter }, + queryParameters, updateFilters, } = useEntityListProvider(); + const queryParamTypes = [queryParameters.type] + .flat() + .filter(Boolean) as string[]; + const [selectedTypes, setSelectedTypes] = useState( + queryParamTypes.length ? queryParamTypes : typeFilter?.getTypes() ?? [], + ); + const [availableTypes, setAvailableTypes] = useState([]); const kind = useMemo(() => kindFilter?.value, [kindFilter]); @@ -61,7 +66,18 @@ export function useEntityTypeFilter(): EntityTypeReturn { return []; }, [kind, catalogApi]); + const entitiesRef = useRef(entities); useEffect(() => { + const oldEntities = entitiesRef.current; + entitiesRef.current = entities; + // Delay processing hook until kind and entity load updates have settled to generate list of types; + // This prevents reseting the type filter due to saved type value from query params not matching the + // empty set of type values while values are still being loaded; also only run this hook on changes + // to entities + if (loading || !kind || oldEntities === entities) { + return; + } + // Resolve the unique set of types from returned entities; could be optimized by a new endpoint // in the catalog-backend that does this, rather than loading entities with redundant types. if (!entities) return; @@ -83,35 +99,25 @@ export function useEntityTypeFilter(): EntityTypeReturn { setAvailableTypes(newTypes); // Update type filter to only valid values when the list of available types has changed - updateFilters((oldFilters: DefaultEntityFilters) => { - // No filter previously set; no-op - if (!oldFilters.type) { - return {}; - } - const stillValidTypes = oldFilters.type - .getTypes() - .filter(value => newTypes.includes(value)); - if (!stillValidTypes.length) { - // None of the previously selected types are present any more; clear the filter - return { type: undefined }; - } - return { type: new EntityTypeFilter(stillValidTypes) }; - }); - }, [updateFilters, entities]); + const stillValidTypes = selectedTypes.filter(value => + newTypes.includes(value), + ); + setSelectedTypes(stillValidTypes); + }, [loading, kind, selectedTypes, setSelectedTypes, entities]); - const setSelectedTypes = useCallback( - (types: string[]) => - updateFilters({ - type: types.length ? new EntityTypeFilter(types) : undefined, - }), - [updateFilters], - ); + useEffect(() => { + updateFilters({ + type: selectedTypes.length + ? new EntityTypeFilter(selectedTypes) + : undefined, + }); + }, [selectedTypes, updateFilters]); return { loading, error, availableTypes, - selectedTypes: typeFilter?.getTypes() ?? [], + selectedTypes, setSelectedTypes, }; } diff --git a/plugins/catalog-react/src/testUtils/providers.tsx b/plugins/catalog-react/src/testUtils/providers.tsx index 5429e87ebd..3639715da2 100644 --- a/plugins/catalog-react/src/testUtils/providers.tsx +++ b/plugins/catalog-react/src/testUtils/providers.tsx @@ -55,6 +55,7 @@ export const MockEntityListContextProvider = ({ updateFilters: updateFilters, filters: filters, loading: false, + queryParameters: {}, }; // Extract value.filters to avoid overwriting it; some tests exercise filter updates. The value From 9d38188c2b12bf097ad4c8f3da5b3ff8fe234bfa Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Thu, 8 Jul 2021 15:17:57 -0600 Subject: [PATCH 075/117] start-backend Signed-off-by: Tim Hansen --- packages/backend/README.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/backend/README.md b/packages/backend/README.md index cccd84afb8..e6f0c899ca 100644 --- a/packages/backend/README.md +++ b/packages/backend/README.md @@ -47,12 +47,7 @@ To debug the backend in [Visual Studio Code](https://code.visualstudio.com/): - Enable Auto Attach (⌘ + Shift + P > Toggle Auto Attach > Only With Flag) - Open a VSCode terminal (Control + `) -- Run the backend from the VSCode terminal: - -``` -$ cd packages/backend -$ yarn backstage-cli backend:dev --inspect -``` +- Run the backend from the VSCode terminal: `yarn start-backend --inspect` ## Populating The Catalog From 5f6f2fd96ff795a99262b2e6b067536f47ba3ce6 Mon Sep 17 00:00:00 2001 From: Phil Kuang Date: Thu, 8 Jul 2021 17:53:19 -0400 Subject: [PATCH 076/117] feat(db-config): support a ensureExists config option Signed-off-by: Phil Kuang --- .changeset/angry-ghosts-report.md | 16 +++++++++++++ packages/backend-common/config.d.ts | 10 ++++++++ .../src/database/DatabaseManager.ts | 24 +++++++++++++------ 3 files changed, 43 insertions(+), 7 deletions(-) create mode 100644 .changeset/angry-ghosts-report.md diff --git a/.changeset/angry-ghosts-report.md b/.changeset/angry-ghosts-report.md new file mode 100644 index 0000000000..dfa83663a9 --- /dev/null +++ b/.changeset/angry-ghosts-report.md @@ -0,0 +1,16 @@ +--- +'@backstage/backend-common': patch +--- + +Support a `ensureExists` config option to skip ensuring a configured database exists. This allows deployment scenarios where +limited permissions are given for provisioned databases without privileges to create new databases. If set to `false`, the +database connection will not be validated prior to use which means the backend will not attempt to create the database if it +doesn't exist. You can configure this in your app-config.yaml: + +```yaml +backend: + database: + ensureExists: false +``` + +This defaults to `true` if unspecified. You can also configure this per plugin connection and will override the base option. diff --git a/packages/backend-common/config.d.ts b/packages/backend-common/config.d.ts index 4de4631982..bc5e026375 100644 --- a/packages/backend-common/config.d.ts +++ b/packages/backend-common/config.d.ts @@ -64,6 +64,11 @@ export interface Config { connection: string | object; /** Database name prefix override */ prefix?: string; + /** + * Whether to ensure the given database exists by creating it if it does not. + * Defaults to true if unspecified. + */ + ensureExists?: boolean; /** Plugin specific database configuration and client override */ plugin?: { [pluginId: string]: { @@ -74,6 +79,11 @@ export interface Config { * @secret */ connection?: string | object; + /** + * Whether to ensure the given database exists by creating it if it does not. + * Defaults to base config if unspecified. + */ + ensureExists?: boolean; }; }; }; diff --git a/packages/backend-common/src/database/DatabaseManager.ts b/packages/backend-common/src/database/DatabaseManager.ts index 55869e221d..f3a3f218b0 100644 --- a/packages/backend-common/src/database/DatabaseManager.ts +++ b/packages/backend-common/src/database/DatabaseManager.ts @@ -128,6 +128,14 @@ export class DatabaseManager { }; } + private getEnsureExistsConfig(pluginId: string): boolean { + const baseConfig = this.config.getOptionalBoolean('ensureExists') ?? true; + return ( + this.config.getOptionalBoolean(`${pluginPath(pluginId)}.ensureExists`) ?? + baseConfig + ); + } + /** * Provides a Knex connection plugin config by combining base and plugin config. * @@ -203,13 +211,15 @@ export class DatabaseManager { this.getConfigForPlugin(pluginId) as JsonObject, ); - const databaseName = this.getDatabaseName(pluginId); - try { - await ensureDatabaseExists(pluginConfig, databaseName); - } catch (error) { - throw new Error( - `Failed to connect to the database to make sure that '${databaseName}' exists, ${error}`, - ); + if (this.getEnsureExistsConfig(pluginId)) { + const databaseName = this.getDatabaseName(pluginId); + try { + await ensureDatabaseExists(pluginConfig, databaseName); + } catch (error) { + throw new Error( + `Failed to connect to the database to make sure that '${databaseName}' exists, ${error}`, + ); + } } return createDatabaseClient( From c8c15a9af2605436ac49ca85e62cdbe4777708a2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 9 Jul 2021 04:08:56 +0000 Subject: [PATCH 077/117] chore(deps): bump rollup-plugin-dts from 3.0.1 to 3.0.2 Bumps [rollup-plugin-dts](https://github.com/Swatinem/rollup-plugin-dts) from 3.0.1 to 3.0.2. - [Release notes](https://github.com/Swatinem/rollup-plugin-dts/releases) - [Changelog](https://github.com/Swatinem/rollup-plugin-dts/blob/master/CHANGELOG.md) - [Commits](https://github.com/Swatinem/rollup-plugin-dts/compare/v3.0.1...v3.0.2) --- updated-dependencies: - dependency-name: rollup-plugin-dts dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 138b737d0b..9432111d4e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23176,9 +23176,9 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: inherits "^2.0.1" rollup-plugin-dts@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-3.0.1.tgz#4419efb51d935cc0cff6f577f8aad97a980ee524" - integrity sha512-sdTsd0tEIV1b5Bio1k4Ei3N4/7jbwcVRdlYotGYdJOKR59JH7DzqKTSCbfaKPzuAcKTp7k317z2BzYJ3bkhDTw== + version "3.0.2" + resolved "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-3.0.2.tgz#2b628d88f864d271d6eaec2e4c2a60ae4e944c5c" + integrity sha512-hswlsdWu/x7k5pXzaLP6OvKRKcx8Bzprksz9i9mUe72zvt8LvqAb/AZpzs6FkLgmyRaN8B6rUQOVtzA3yEt9Yw== dependencies: magic-string "^0.25.7" optionalDependencies: From cecfe5c7f5a65bba79520146008833176930ba92 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Fri, 9 Jul 2021 09:35:16 +0200 Subject: [PATCH 078/117] [Search] docs updates (#6402) * add link to collator implementation to search docs Signed-off-by: Emma Indal * clean up types from registering new collators as its now a attribute of the collator itself Signed-off-by: Emma Indal * one more Signed-off-by: Emma Indal --- docs/features/search/getting-started.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/docs/features/search/getting-started.md b/docs/features/search/getting-started.md index c412701499..2bd26faf8b 100644 --- a/docs/features/search/getting-started.md +++ b/docs/features/search/getting-started.md @@ -142,7 +142,6 @@ export default async function createPlugin({ const indexBuilder = new IndexBuilder({ logger, searchEngine }); indexBuilder.addCollator({ - type: 'software-catalog', defaultRefreshIntervalSeconds: 600, collator: new DefaultCatalogCollator({ discovery }), }); @@ -262,21 +261,21 @@ const indexBuilder = new IndexBuilder({ logger, searchEngine }); ``` Backstage Search can be used to power search of anything! Plugins like the -Catalog offer default [collators](./concepts.md#collators) which are responsible -for providing documents [to be indexed](./concepts.md#documents-and-indices). -You can register any number of collators with the `IndexBuilder` like this: +Catalog offer default [collators](./concepts.md#collators) (e.g. +[DefaultCatalogCollator](https://github.com/backstage/backstage/blob/df12cc25aa4934a98bc42ed03c07f64a1a0a9d72/plugins/catalog-backend/src/search/DefaultCatalogCollator.ts)) +which are responsible for providing documents +[to be indexed](./concepts.md#documents-and-indices). You can register any +number of collators with the `IndexBuilder` like this: ```typescript const indexBuilder = new IndexBuilder({ logger, searchEngine }); indexBuilder.addCollator({ - type: 'software-catalog', defaultRefreshIntervalSeconds: 600, collator: new DefaultCatalogCollator({ discovery }), }); indexBuilder.addCollator({ - type: 'my-custom-stuff', defaultRefreshIntervalSeconds: 3600, collator: new MyCustomCollator(), }); @@ -290,7 +289,6 @@ its `defaultRefreshIntervalSeconds` value, like this: ```typescript {3} indexBuilder.addCollator({ - type: 'software-catalog', defaultRefreshIntervalSeconds: 600, collator: new DefaultCatalogCollator({ discovery }), }); From 97b2eb37b265e7e44edd698e20860b54f092234d Mon Sep 17 00:00:00 2001 From: Oliver Sand Date: Fri, 9 Jul 2021 11:26:32 +0200 Subject: [PATCH 079/117] Change return value of `SearchEngine.index` to `Promise` Signed-off-by: Oliver Sand --- .changeset/search-mighty-mice-collect.md | 6 ++++ plugins/search-backend-node/api-report.md | 4 +-- .../search-backend-node/src/IndexBuilder.ts | 2 +- .../src/engines/LunrSearchEngine.test.ts | 34 +++++++++---------- .../src/engines/LunrSearchEngine.ts | 10 +++--- plugins/search-backend-node/src/types.ts | 2 +- 6 files changed, 32 insertions(+), 26 deletions(-) create mode 100644 .changeset/search-mighty-mice-collect.md diff --git a/.changeset/search-mighty-mice-collect.md b/.changeset/search-mighty-mice-collect.md new file mode 100644 index 0000000000..bad91ff853 --- /dev/null +++ b/.changeset/search-mighty-mice-collect.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-search-backend-node': minor +--- + +Change return value of `SearchEngine.index` to `Promise` to support +implementation of external search engines. diff --git a/plugins/search-backend-node/api-report.md b/plugins/search-backend-node/api-report.md index ccb7475573..ff35515389 100644 --- a/plugins/search-backend-node/api-report.md +++ b/plugins/search-backend-node/api-report.md @@ -32,7 +32,7 @@ export class LunrSearchEngine implements SearchEngine { // (undocumented) protected docStore: Record; // (undocumented) - index(type: string, documents: IndexableDocument[]): void; + index(type: string, documents: IndexableDocument[]): Promise; // (undocumented) protected logger: Logger_2; // (undocumented) @@ -57,7 +57,7 @@ export class Scheduler { // @public export interface SearchEngine { - index(type: string, documents: IndexableDocument[]): void; + index(type: string, documents: IndexableDocument[]): Promise; query(query: SearchQuery): Promise; setTranslator(translator: QueryTranslator): void; } diff --git a/plugins/search-backend-node/src/IndexBuilder.ts b/plugins/search-backend-node/src/IndexBuilder.ts index 0cabb61f38..9bbbd73067 100644 --- a/plugins/search-backend-node/src/IndexBuilder.ts +++ b/plugins/search-backend-node/src/IndexBuilder.ts @@ -140,7 +140,7 @@ export class IndexBuilder { } // pushing documents to index to a configured search engine. - this.searchEngine.index(type, documents); + await this.searchEngine.index(type, documents); }, this.collators[type].refreshInterval * 1000); }); diff --git a/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts b/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts index 3c7945cbc3..3d59ba4b6f 100644 --- a/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts +++ b/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts @@ -15,9 +15,9 @@ */ import { getVoidLogger } from '@backstage/backend-common'; -import { ConcreteLunrQuery, LunrSearchEngine } from './LunrSearchEngine'; -import { SearchEngine } from '../types'; import lunr from 'lunr'; +import { SearchEngine } from '../types'; +import { ConcreteLunrQuery, LunrSearchEngine } from './LunrSearchEngine'; /** * Just used to test the default translator shipped with LunrSearchEngine. @@ -45,7 +45,7 @@ describe('LunrSearchEngine', () => { testLunrSearchEngine.setTranslator(translatorSpy); // When: querying the search engine - testLunrSearchEngine.query({ + await testLunrSearchEngine.query({ term: 'testTerm', filters: {}, pageCursor: '', @@ -259,7 +259,7 @@ describe('LunrSearchEngine', () => { ]; // Mock indexing of 1 document - testLunrSearchEngine.index('test-index', mockDocuments); + await testLunrSearchEngine.index('test-index', mockDocuments); // Perform search query const mockedSearchResult = await testLunrSearchEngine.query({ @@ -282,7 +282,7 @@ describe('LunrSearchEngine', () => { ]; // Mock indexing of 1 document - testLunrSearchEngine.index('test-index', mockDocuments); + await testLunrSearchEngine.index('test-index', mockDocuments); // Perform search query const mockedSearchResult = await testLunrSearchEngine.query({ @@ -315,7 +315,7 @@ describe('LunrSearchEngine', () => { ]; // Mock indexing of 1 document - testLunrSearchEngine.index('test-index', mockDocuments); + await testLunrSearchEngine.index('test-index', mockDocuments); // Perform search query const mockedSearchResult = await testLunrSearchEngine.query({ @@ -347,7 +347,7 @@ describe('LunrSearchEngine', () => { ]; // Mock indexing of 1 document - testLunrSearchEngine.index('test-index', mockDocuments); + await testLunrSearchEngine.index('test-index', mockDocuments); // Perform search query const mockedSearchResult = await testLunrSearchEngine.query({ @@ -379,7 +379,7 @@ describe('LunrSearchEngine', () => { ]; // Mock indexing of 1 document - testLunrSearchEngine.index('test-index', mockDocuments); + await testLunrSearchEngine.index('test-index', mockDocuments); // Perform search query const mockedSearchResult = await testLunrSearchEngine.query({ @@ -412,7 +412,7 @@ describe('LunrSearchEngine', () => { ]; // Mock indexing of 1 document - testLunrSearchEngine.index('test-index', mockDocuments); + await testLunrSearchEngine.index('test-index', mockDocuments); // Perform search query const mockedSearchResult = await testLunrSearchEngine.query({ @@ -445,7 +445,7 @@ describe('LunrSearchEngine', () => { ]; // Mock indexing of 1 document - testLunrSearchEngine.index('test-index', mockDocuments); + await testLunrSearchEngine.index('test-index', mockDocuments); // Perform search query const mockedSearchResult = await testLunrSearchEngine.query({ @@ -483,7 +483,7 @@ describe('LunrSearchEngine', () => { ]; // Mock indexing of 2 documents - testLunrSearchEngine.index('test-index', mockDocuments); + await testLunrSearchEngine.index('test-index', mockDocuments); // Perform search query const mockedSearchResult = await testLunrSearchEngine.query({ @@ -527,8 +527,8 @@ describe('LunrSearchEngine', () => { ]; // Mock 2 indices with 1 document each - testLunrSearchEngine.index('test-index', mockDocuments); - testLunrSearchEngine.index('test-index-2', mockDocuments2); + await testLunrSearchEngine.index('test-index', mockDocuments); + await testLunrSearchEngine.index('test-index-2', mockDocuments2); // Perform search query scoped to "test-index-2" with a filter on the field "extraField" const mockedSearchResult = await testLunrSearchEngine.query({ term: 'testTitle', @@ -565,7 +565,7 @@ describe('LunrSearchEngine', () => { ]; // Mock indexing of 2 documents - testLunrSearchEngine.index('test-index', mockDocuments); + await testLunrSearchEngine.index('test-index', mockDocuments); // Perform search query const mockedSearchResult = await testLunrSearchEngine.query({ @@ -618,8 +618,8 @@ describe('LunrSearchEngine', () => { ]; // Mock 2 indices with 2 documents each - testLunrSearchEngine.index('test-index', mockDocuments); - testLunrSearchEngine.index('test-index-2', mockDocuments2); + await testLunrSearchEngine.index('test-index', mockDocuments); + await testLunrSearchEngine.index('test-index-2', mockDocuments2); // Perform search query scoped to "test-index-2" const mockedSearchResult = await testLunrSearchEngine.query({ @@ -661,7 +661,7 @@ describe('LunrSearchEngine', () => { ]; // call index func and ensure the index func was invoked. - testLunrSearchEngine.index('test-index', mockDocuments); + await testLunrSearchEngine.index('test-index', mockDocuments); expect(indexSpy).toHaveBeenCalled(); expect(indexSpy).toHaveBeenCalledWith('test-index', [ { title: 'testTerm', text: 'testText', location: 'test/location' }, diff --git a/plugins/search-backend-node/src/engines/LunrSearchEngine.ts b/plugins/search-backend-node/src/engines/LunrSearchEngine.ts index 0979fa4c90..e832e49f85 100644 --- a/plugins/search-backend-node/src/engines/LunrSearchEngine.ts +++ b/plugins/search-backend-node/src/engines/LunrSearchEngine.ts @@ -15,13 +15,13 @@ */ import { - SearchQuery, IndexableDocument, + SearchQuery, SearchResultSet, } from '@backstage/search-common'; import lunr from 'lunr'; import { Logger } from 'winston'; -import { SearchEngine, QueryTranslator } from '../types'; +import { QueryTranslator, SearchEngine } from '../types'; export type ConcreteLunrQuery = { lunrQueryBuilder: lunr.Index.QueryBuilder; @@ -113,7 +113,7 @@ export class LunrSearchEngine implements SearchEngine { this.translator = translator; } - index(type: string, documents: IndexableDocument[]): void { + async index(type: string, documents: IndexableDocument[]): Promise { const lunrBuilder = new lunr.Builder(); lunrBuilder.pipeline.add(lunr.trimmer, lunr.stopWordFilter, lunr.stemmer); @@ -139,7 +139,7 @@ export class LunrSearchEngine implements SearchEngine { this.lunrIndices[type] = lunrBuilder.build(); } - query(query: SearchQuery): Promise { + async query(query: SearchQuery): Promise { const { lunrQueryBuilder, documentTypes } = this.translator( query, ) as ConcreteLunrQuery; @@ -183,6 +183,6 @@ export class LunrSearchEngine implements SearchEngine { }), }; - return Promise.resolve(realResultSet); + return realResultSet; } } diff --git a/plugins/search-backend-node/src/types.ts b/plugins/search-backend-node/src/types.ts index a3b828fb58..28dc1237ba 100644 --- a/plugins/search-backend-node/src/types.ts +++ b/plugins/search-backend-node/src/types.ts @@ -67,7 +67,7 @@ export interface SearchEngine { /** * Add the given documents to the SearchEngine index of the given type. */ - index(type: string, documents: IndexableDocument[]): void; + index(type: string, documents: IndexableDocument[]): Promise; /** * Perform a search query against the SearchEngine. From fb21e406fa8d935ce692a8ebaba6e656af01d4ac Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Fri, 9 Jul 2021 12:22:42 +0200 Subject: [PATCH 080/117] chore: remove empty test.yaml in the project Signed-off-by: Himanshu Mishra --- test.yaml | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test.yaml diff --git a/test.yaml b/test.yaml deleted file mode 100644 index e69de29bb2..0000000000 From 363ac329ab16fca937342e003f9d880f90efd896 Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Fri, 9 Jul 2021 12:50:53 +0200 Subject: [PATCH 081/117] microsite: Update contact Backstage team @ Spotify URL Signed-off-by: Himanshu Mishra --- microsite/blog/2021-05-20-adopting-backstage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/blog/2021-05-20-adopting-backstage.md b/microsite/blog/2021-05-20-adopting-backstage.md index 191422004b..290436c875 100644 --- a/microsite/blog/2021-05-20-adopting-backstage.md +++ b/microsite/blog/2021-05-20-adopting-backstage.md @@ -132,4 +132,4 @@ Integrating infrastructure of this size and complexity can seem overwhelming. It ## More questions about adopting Backstage? -[Contact the Backstage team at Spotify.](https://calendly.com/spotify-backstage) We’ll share more about what we’ve learned from our experience here at Spotify — and from other companies who are already using Backstage to transform their developer experience. +[Contact the Backstage team at Spotify.](https://backstage.spotify.com/) We’ll share more about what we’ve learned from our experience here at Spotify — and from other companies who are already using Backstage to transform their developer experience. From 84d329e2a69020e49aab34721170f4d35faa230a Mon Sep 17 00:00:00 2001 From: OscarDHdz Date: Fri, 9 Jul 2021 12:13:15 -0500 Subject: [PATCH 082/117] Scaffolder: Add handlebar 'eq' helper Signed-off-by: OscarDHdz --- .changeset/pretty-drinks-serve.md | 12 +++++++ .../src/scaffolder/tasks/TaskWorker.test.ts | 33 +++++++++++++++++++ .../src/scaffolder/tasks/TaskWorker.ts | 2 ++ 3 files changed, 47 insertions(+) create mode 100644 .changeset/pretty-drinks-serve.md diff --git a/.changeset/pretty-drinks-serve.md b/.changeset/pretty-drinks-serve.md new file mode 100644 index 0000000000..a012aba11f --- /dev/null +++ b/.changeset/pretty-drinks-serve.md @@ -0,0 +1,12 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +Scaffolder: Added an 'eq' handlebars helper for use in software template YAML files. This can be used to execute a step depending on the value of an input, e.g.: + +```yaml +steps: + id: 'conditional-step' + action: 'custom-action' + if: '{{ eq parameters.myvalue "custom" }}', +``` diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts index 72163a50b4..b5e8d19e62 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts @@ -203,6 +203,39 @@ describe('TaskWorker', () => { expect((event?.body?.output as JsonObject).result).toBe('winning'); }); + it('should execute steps conditionally with eq helper', async () => { + const broker = new StorageTaskBroker(storage, logger); + const taskWorker = new TaskWorker({ + logger, + workingDirectory: os.tmpdir(), + actionRegistry, + taskBroker: broker, + }); + + const { taskId } = await broker.dispatch({ + steps: [ + { id: 'test', name: 'test', action: 'test-action' }, + { + id: 'conditional', + name: 'conditional', + action: 'test-action', + if: '{{ eq steps.test.output.testOutput "winning" }}', + }, + ], + output: { + result: '{{ steps.conditional.output.testOutput }}', + }, + values: {}, + }); + + const task = await broker.claim(); + await taskWorker.runOneTask(task); + + const { events } = await storage.listEvents({ taskId }); + const event = events.find(e => e.type === 'completion'); + expect((event?.body?.output as JsonObject).result).toBe('winning'); + }); + it('should skip steps conditionally', async () => { const broker = new StorageTaskBroker(storage, logger); const taskWorker = new TaskWorker({ diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts index d6067280c3..b4ba936719 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts @@ -56,6 +56,8 @@ export class TaskWorker { this.handlebars.registerHelper('json', obj => JSON.stringify(obj)); this.handlebars.registerHelper('not', value => !isTruthy(value)); + + this.handlebars.registerHelper('eq', (a, b) => a === b); } start() { From e13f0fb9de0098ffe61ed2318aaf2958995d6caa Mon Sep 17 00:00:00 2001 From: Phil Kuang Date: Fri, 9 Jul 2021 13:00:01 -0400 Subject: [PATCH 083/117] fix(useEntityTypeFilter): fetch unique set of types ignoring case sensitivity Signed-off-by: Phil Kuang --- .changeset/green-vans-peel.md | 5 +++++ plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 .changeset/green-vans-peel.md diff --git a/.changeset/green-vans-peel.md b/.changeset/green-vans-peel.md new file mode 100644 index 0000000000..cd4d30139a --- /dev/null +++ b/.changeset/green-vans-peel.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Fix `EntityTypeFilter` so it produces unique case-insensitive set of available types diff --git a/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx b/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx index 068e995522..5fa6b0f1a2 100644 --- a/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx +++ b/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx @@ -86,10 +86,11 @@ export function useEntityTypeFilter(): EntityTypeReturn { const countByType = entities.reduce((acc, entity) => { if (typeof entity.spec?.type !== 'string') return acc; - if (!acc[entity.spec.type]) { - acc[entity.spec.type] = 0; + const entityType = entity.spec.type.toLocaleLowerCase('en-US'); + if (!acc[entityType]) { + acc[entityType] = 0; } - acc[entity.spec.type] += 1; + acc[entityType] += 1; return acc; }, {} as Record); From e2677af9004b4e52890c9ddb3f5701ff9d4b91d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Jul 2021 04:13:23 +0000 Subject: [PATCH 084/117] chore(deps): bump sanitize-html from 2.3.3 to 2.4.0 Bumps [sanitize-html](https://github.com/apostrophecms/sanitize-html) from 2.3.3 to 2.4.0. - [Release notes](https://github.com/apostrophecms/sanitize-html/releases) - [Changelog](https://github.com/apostrophecms/sanitize-html/blob/main/CHANGELOG.md) - [Commits](https://github.com/apostrophecms/sanitize-html/compare/2.3.3...2.4.0) --- updated-dependencies: - dependency-name: sanitize-html dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9432111d4e..9987b67e65 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23344,9 +23344,9 @@ sane@^4.0.3: walker "~1.0.5" sanitize-html@^2.3.2: - version "2.3.3" - resolved "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.3.3.tgz#3db382c9a621cce4c46d90f10c64f1e9da9e8353" - integrity sha512-DCFXPt7Di0c6JUnlT90eIgrjs6TsJl/8HYU3KLdmrVclFN4O0heTcVbJiMa23OKVr6aR051XYtsgd8EWwEBwUA== + version "2.4.0" + resolved "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.4.0.tgz#8da7524332eb210d968971621b068b53f17ab5a3" + integrity sha512-Y1OgkUiTPMqwZNRLPERSEi39iOebn2XJLbeiGOBhaJD/yLqtLGu6GE5w7evx177LeGgSE+4p4e107LMiydOf6A== dependencies: deepmerge "^4.2.2" escape-string-regexp "^4.0.0" From ae33ea3dba2aece6bda45693df63d28c0e64d6be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Jul 2021 04:16:13 +0000 Subject: [PATCH 085/117] chore(deps-dev): bump @types/http-errors from 1.8.0 to 1.8.1 Bumps [@types/http-errors](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/http-errors) from 1.8.0 to 1.8.1. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/http-errors) --- updated-dependencies: - dependency-name: "@types/http-errors" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9432111d4e..fcbfa77066 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5899,9 +5899,9 @@ integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A== "@types/http-errors@^1.6.3": - version "1.8.0" - resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.0.tgz#682477dbbbd07cd032731cb3b0e7eaee3d026b69" - integrity sha512-2aoSC4UUbHDj2uCsCxcG/vRMXey/m17bC7UwitVm5hn22nI8O8Y9iDpA76Orc+DWkQ4zZrOKEshCqR/jSuXAHA== + version "1.8.1" + resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.1.tgz#e81ad28a60bee0328c6d2384e029aec626f1ae67" + integrity sha512-e+2rjEwK6KDaNOm5Aa9wNGgyS9oSZU/4pfSMMPYNOfjvFI0WVXm29+ITRFr6aKDvvKo7uU1jV68MW4ScsfDi7Q== "@types/http-proxy-agent@^2.0.2": version "2.0.2" From 59ab8d2abd637c55565d1a0cec6ef76c2d09d337 Mon Sep 17 00:00:00 2001 From: Raghunandan Date: Mon, 12 Jul 2021 11:04:41 +0200 Subject: [PATCH 086/117] consistent naming for authors Signed-off-by: Raghunandan --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 895106c967..98da194c1b 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,6 @@ Check out [the documentation](https://backstage.io/docs/getting-started) on how ## License -Copyright 2020-2021 © Backstage Project Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage +Copyright 2020-2021 © The Backstage Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0 From e156990a7013ed3df37d1fbb8528a442cdaf2d62 Mon Sep 17 00:00:00 2001 From: Mike Lewis Date: Mon, 12 Jul 2021 12:30:37 +0100 Subject: [PATCH 087/117] docs(scaffolder): update custom actions docs with new options for createRouter Signed-off-by: Mike Lewis --- .../software-templates/writing-custom-actions.md | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/docs/features/software-templates/writing-custom-actions.md b/docs/features/software-templates/writing-custom-actions.md index 90dd603c8f..53a90e2954 100644 --- a/docs/features/software-templates/writing-custom-actions.md +++ b/docs/features/software-templates/writing-custom-actions.md @@ -101,9 +101,7 @@ should have something similar to the below in ```ts return await createRouter({ - preparers, - templaters, - publishers, + containerRunner, logger, config, database, @@ -118,9 +116,7 @@ will set the available actions that the scaffolder has access to. ```ts const actions = [createNewFileAction()]; return await createRouter({ - preparers, - templaters, - publishers, + containerRunner, logger, config, database, @@ -137,18 +133,17 @@ want to have those as well as your new one, you'll need to do the following: import { createBuiltinActions } from '@backstage/plugin-scaffolder-backend'; const builtInActions = createBuiltinActions({ + containerRunner, integrations, + config, catalogClient, - templaters, reader, }); const actions = [...builtInActions, createNewFileAction()]; return await createRouter({ - preparers, - templaters, - publishers, + containerRunner, logger, config, database, From 75a532fbe9aa7db6a00d73a343933aaa77c6771a Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Mon, 12 Jul 2021 20:34:30 +0700 Subject: [PATCH 088/117] add unstable prop for disabling unregister entity Signed-off-by: Prasetya Aria Wibawa --- .changeset/angry-rules-fail.md | 5 +++++ .../EntityContextMenu/EntityContextMenu.tsx | 11 +++++++++++ .../src/components/EntityLayout/EntityLayout.tsx | 8 ++++++++ .../components/EntityPageLayout/EntityPageLayout.tsx | 8 ++++++++ 4 files changed, 32 insertions(+) create mode 100644 .changeset/angry-rules-fail.md diff --git a/.changeset/angry-rules-fail.md b/.changeset/angry-rules-fail.md new file mode 100644 index 0000000000..cc52d4478e --- /dev/null +++ b/.changeset/angry-rules-fail.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Add unstable prop for disabling unregister entity menu diff --git a/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx b/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx index 05d93078b4..f8a724c9d7 100644 --- a/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx +++ b/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx @@ -44,13 +44,20 @@ type ExtraContextMenuItem = { onClick: () => void; }; +// unstable context menu option, eg: disable the unregister entity menu +type contextMenuOptions = { + disableUnregister: boolean; +}; + type Props = { UNSTABLE_extraContextMenuItems?: ExtraContextMenuItem[]; + UNSTABLE_contextMenuOptions?: contextMenuOptions; onUnregisterEntity: () => void; }; export const EntityContextMenu = ({ UNSTABLE_extraContextMenuItems, + UNSTABLE_contextMenuOptions, onUnregisterEntity, }: Props) => { const [anchorEl, setAnchorEl] = useState(); @@ -82,6 +89,9 @@ export const EntityContextMenu = ({ , ]; + const disableUnregister = + UNSTABLE_contextMenuOptions?.disableUnregister ?? false; + return ( <> diff --git a/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx b/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx index 9513050400..9cb0b7c961 100644 --- a/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx +++ b/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx @@ -132,8 +132,14 @@ type ExtraContextMenuItem = { onClick: () => void; }; +// unstable context menu option, eg: disable the unregister entity menu +type contextMenuOptions = { + disableUnregister: boolean; +}; + type EntityLayoutProps = { UNSTABLE_extraContextMenuItems?: ExtraContextMenuItem[]; + UNSTABLE_contextMenuOptions?: contextMenuOptions; children?: React.ReactNode; }; @@ -154,6 +160,7 @@ type EntityLayoutProps = { */ export const EntityLayout = ({ UNSTABLE_extraContextMenuItems, + UNSTABLE_contextMenuOptions, children, }: EntityLayoutProps) => { const { kind, namespace, name } = useEntityCompoundName(); @@ -210,6 +217,7 @@ export const EntityLayout = ({ diff --git a/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx b/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx index 99052e51f0..4abac4e01b 100644 --- a/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx +++ b/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx @@ -112,14 +112,21 @@ type ExtraContextMenuItem = { onClick: () => void; }; +// unstable context menu option, eg: disable the unregister entity menu +type contextMenuOptions = { + disableUnregister: boolean; +}; + type EntityPageLayoutProps = { UNSTABLE_extraContextMenuItems?: ExtraContextMenuItem[]; + UNSTABLE_contextMenuOptions?: contextMenuOptions; children?: React.ReactNode; }; export const EntityPageLayout = ({ children, UNSTABLE_extraContextMenuItems, + UNSTABLE_contextMenuOptions, }: EntityPageLayoutProps) => { const { kind, namespace, name } = useEntityCompoundName(); const { entity, loading, error } = useContext(EntityContext); @@ -152,6 +159,7 @@ export const EntityPageLayout = ({ From 5176099c798dd06d2edbd9d917adeb99920231c8 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Mon, 12 Jul 2021 16:41:39 +0200 Subject: [PATCH 089/117] Allow either out-of-the-box or recommended configurations in TechDocs createRouter Signed-off-by: Eric Peterson --- .../techdocs-backend/src/service/router.ts | 141 +++++++++++------- 1 file changed, 87 insertions(+), 54 deletions(-) diff --git a/plugins/techdocs-backend/src/service/router.ts b/plugins/techdocs-backend/src/service/router.ts index eceae2e3d3..7563dfa2f9 100644 --- a/plugins/techdocs-backend/src/service/router.ts +++ b/plugins/techdocs-backend/src/service/router.ts @@ -31,7 +31,11 @@ import { Logger } from 'winston'; import { DocsBuilder } from '../DocsBuilder'; import { shouldCheckForUpdate } from '../DocsBuilder/BuildMetadataStorage'; -type RouterOptions = { +/** + * All of the required dependencies for running TechDocs in the "out-of-the-box" + * deployment configuration (prepare/generate/publish all in the Backend). + */ +type OutOfTheBoxDeploymentOptions = { preparers: PreparerBuilder; generators: GeneratorBuilder; publisher: PublisherBase; @@ -41,15 +45,39 @@ type RouterOptions = { config: Config; }; -export async function createRouter({ - preparers, - generators, - publisher, - config, - logger, - discovery, -}: RouterOptions): Promise { +/** + * Required dependencies for running TechDocs in the "recommended" deployment + * configuration (prepare/generate handled externally in CI/CD). + */ +type RecommendedDeploymentOptions = { + publisher: PublisherBase; + logger: Logger; + discovery: PluginEndpointDiscovery; + config: Config; +}; + +/** + * One of the two deployment configurations must be provided. + */ +type RouterOptions = + | RecommendedDeploymentOptions + | OutOfTheBoxDeploymentOptions; + +/** + * Typeguard to help createRouter() understand when we are in a "recommended" + * deployment vs. when we are in an out-of-the-box deployment configuration. + */ +function isOutOfTheBoxOption( + opt: RouterOptions, +): opt is OutOfTheBoxDeploymentOptions { + return (opt as OutOfTheBoxDeploymentOptions).preparers !== undefined; +} + +export async function createRouter( + options: RouterOptions, +): Promise { const router = Router(); + const { publisher, config, logger, discovery } = options; router.get('/metadata/techdocs/:namespace/:kind/:name', async (req, res) => { const { kind, namespace, name } = req.params; @@ -158,58 +186,63 @@ export async function createRouter({ }); return; } - const docsBuilder = new DocsBuilder({ - preparers, - generators, - publisher, - logger, - entity, - config, - }); - let foundDocs = false; - switch (publisherType) { - case 'local': - case 'awsS3': - case 'azureBlobStorage': - case 'openStackSwift': - case 'googleGcs': { - // This block should be valid for all storage implementations. So no need to duplicate in future, - // add the publisher type in the list here. - const updated = await docsBuilder.build(); - if (!updated) { - throw new NotModifiedError(); - } + // Set up a DocsBuilder if "out-of-the-box" configuration is provided. + if (isOutOfTheBoxOption(options)) { + const { preparers, generators } = options; + const docsBuilder = new DocsBuilder({ + preparers, + generators, + publisher, + logger, + entity, + config, + }); + let foundDocs = false; + switch (publisherType) { + case 'local': + case 'awsS3': + case 'azureBlobStorage': + case 'openStackSwift': + case 'googleGcs': { + // This block should be valid for all storage implementations. So no need to duplicate in future, + // add the publisher type in the list here. + const updated = await docsBuilder.build(); - // With a maximum of ~5 seconds wait, check if the files got published and if docs will be fetched - // on the user's page. If not, respond with a message asking them to check back later. - // The delay here is to make sure GCS/AWS/etc. registers newly uploaded files which is usually <1 second - for (let attempt = 0; attempt < 5; attempt++) { - if (await publisher.hasDocsBeenGenerated(entity)) { - foundDocs = true; - break; + if (!updated) { + throw new NotModifiedError(); } - await new Promise(r => setTimeout(r, 1000)); + + // With a maximum of ~5 seconds wait, check if the files got published and if docs will be fetched + // on the user's page. If not, respond with a message asking them to check back later. + // The delay here is to make sure GCS/AWS/etc. registers newly uploaded files which is usually <1 second + for (let attempt = 0; attempt < 5; attempt++) { + if (await publisher.hasDocsBeenGenerated(entity)) { + foundDocs = true; + break; + } + await new Promise(r => setTimeout(r, 1000)); + } + if (!foundDocs) { + logger.error( + 'Published files are taking longer to show up in storage. Something went wrong.', + ); + throw new NotFoundError( + 'Sorry! It took too long for the generated docs to show up in storage. Check back later.', + ); + } + + res + .status(201) + .json({ message: 'Docs updated or did not need updating' }); + break; } - if (!foundDocs) { - logger.error( - 'Published files are taking longer to show up in storage. Something went wrong.', - ); + + default: throw new NotFoundError( - 'Sorry! It took too long for the generated docs to show up in storage. Check back later.', + `Publisher type ${publisherType} is not supported by techdocs-backend docs builder.`, ); - } - - res - .status(201) - .json({ message: 'Docs updated or did not need updating' }); - break; } - - default: - throw new NotFoundError( - `Publisher type ${publisherType} is not supported by techdocs-backend docs builder.`, - ); } }); From 35a67722bcbb6effa2464cc0751bcef5413a90bf Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Mon, 12 Jul 2021 16:44:00 +0200 Subject: [PATCH 090/117] Changeset Signed-off-by: Eric Peterson --- .changeset/techdocs-typescript-isnt-fun.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/techdocs-typescript-isnt-fun.md diff --git a/.changeset/techdocs-typescript-isnt-fun.md b/.changeset/techdocs-typescript-isnt-fun.md new file mode 100644 index 0000000000..9341c1c14a --- /dev/null +++ b/.changeset/techdocs-typescript-isnt-fun.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-techdocs-backend': patch +--- + +It is no longer required to provide a generator and a preparer to the TechDocs +router factory when running TechDocs in the "recommended" (e.g. externally +prepared and generated docs) configuration. From 67d100290836a81b5a9bc387c241d7f6cbe5e1ce Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Mon, 12 Jul 2021 17:02:26 +0200 Subject: [PATCH 091/117] Updated API report Signed-off-by: Eric Peterson --- plugins/techdocs-backend/api-report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/techdocs-backend/api-report.md b/plugins/techdocs-backend/api-report.md index 947439533a..3458a14307 100644 --- a/plugins/techdocs-backend/api-report.md +++ b/plugins/techdocs-backend/api-report.md @@ -14,7 +14,7 @@ import { PreparerBuilder } from '@backstage/techdocs-common'; import { PublisherBase } from '@backstage/techdocs-common'; // @public (undocumented) -export function createRouter({ preparers, generators, publisher, config, logger, discovery, }: RouterOptions): Promise; +export function createRouter(options: RouterOptions): Promise; export * from "@backstage/techdocs-common"; From 203d256d3634a7b02a1361aaab2532a618208411 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 12 Jul 2021 19:29:34 +0200 Subject: [PATCH 092/117] chore: reverting fs-extra bump, that seems to have broken all the installs Signed-off-by: blam --- package.json | 2 +- packages/backend-common/package.json | 2 +- packages/cli/package.json | 2 +- packages/config-loader/package.json | 2 +- packages/create-app/package.json | 2 +- packages/docgen/package.json | 2 +- packages/e2e-test/package.json | 2 +- packages/techdocs-common/package.json | 2 +- plugins/app-backend/package.json | 2 +- plugins/auth-backend/package.json | 2 +- plugins/catalog-backend/package.json | 2 +- plugins/kubernetes-backend/package.json | 2 +- plugins/rollbar-backend/package.json | 2 +- plugins/scaffolder-backend/package.json | 2 +- plugins/techdocs-backend/package.json | 2 +- yarn.lock | 29 +++++++++---------------- 16 files changed, 25 insertions(+), 34 deletions(-) diff --git a/package.json b/package.json index 09dc55617b..b9ca7f3d94 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "command-exists": "^1.2.9", "concurrently": "^6.0.0", "eslint-plugin-notice": "^0.9.10", - "fs-extra": "^10.0.0", + "fs-extra": "9.1.0", "husky": "^6.0.0", "lerna": "^4.0.0", "lint-staged": "^10.1.0", diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index e777e947c2..6cf20b8234 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -47,7 +47,7 @@ "dockerode": "^3.2.1", "express": "^4.17.1", "express-promise-router": "^4.1.0", - "fs-extra": "^10.0.0", + "fs-extra": "9.1.0", "git-url-parse": "~11.4.4", "helmet": "^4.0.0", "isomorphic-git": "^1.8.0", diff --git a/packages/cli/package.json b/packages/cli/package.json index c9bde05bd7..a7032879bc 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -77,7 +77,7 @@ "express": "^4.17.1", "file-loader": "^6.2.0", "fork-ts-checker-webpack-plugin": "^6.2.9", - "fs-extra": "^10.0.0", + "fs-extra": "9.1.0", "handlebars": "^4.7.3", "html-webpack-plugin": "^4.3.0", "inquirer": "^7.0.4", diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json index d5a4f600fd..cff324484a 100644 --- a/packages/config-loader/package.json +++ b/packages/config-loader/package.json @@ -34,7 +34,7 @@ "@backstage/config": "^0.1.5", "@types/json-schema": "^7.0.6", "ajv": "^7.0.3", - "fs-extra": "^10.0.0", + "fs-extra": "9.1.0", "json-schema": "^0.3.0", "json-schema-merge-allof": "^0.8.1", "typescript-json-schema": "^0.50.1", diff --git a/packages/create-app/package.json b/packages/create-app/package.json index b961f0ae39..b3f587ac32 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -30,7 +30,7 @@ "@backstage/cli-common": "^0.1.2", "chalk": "^4.0.0", "commander": "^6.1.0", - "fs-extra": "^10.0.0", + "fs-extra": "9.1.0", "handlebars": "^4.7.3", "inquirer": "^7.0.4", "ora": "^5.3.0", diff --git a/packages/docgen/package.json b/packages/docgen/package.json index d6670bcf83..ad47991159 100644 --- a/packages/docgen/package.json +++ b/packages/docgen/package.json @@ -28,7 +28,7 @@ "dependencies": { "chalk": "^4.0.0", "commander": "^6.1.0", - "fs-extra": "^10.0.0", + "fs-extra": "9.1.0", "github-slugger": "^1.3.0", "ts-node": "^10.0.0", "typescript": "^4.0.3" diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json index b4e61a7cc1..900fbba136 100644 --- a/packages/e2e-test/package.json +++ b/packages/e2e-test/package.json @@ -30,7 +30,7 @@ "chalk": "^4.0.0", "commander": "^6.1.0", "cross-fetch": "^3.0.6", - "fs-extra": "^10.0.0", + "fs-extra": "9.1.0", "handlebars": "^4.7.3", "pgtools": "^0.3.0", "tree-kill": "^1.2.2", diff --git a/packages/techdocs-common/package.json b/packages/techdocs-common/package.json index 9b5b614177..de97e9815d 100644 --- a/packages/techdocs-common/package.json +++ b/packages/techdocs-common/package.json @@ -48,7 +48,7 @@ "aws-sdk": "^2.840.0", "cross-fetch": "^3.0.6", "express": "^4.17.1", - "fs-extra": "^10.0.0", + "fs-extra": "9.1.0", "git-url-parse": "~11.4.4", "js-yaml": "^4.0.0", "json5": "^2.1.3", diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index 384d44d82a..cd5b62dfb4 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -35,7 +35,7 @@ "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", - "fs-extra": "^10.0.0", + "fs-extra": "9.1.0", "winston": "^3.2.1", "yn": "^4.0.0" }, diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 719cec7a99..0b108e11cd 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -44,7 +44,7 @@ "express": "^4.17.1", "express-promise-router": "^4.1.0", "express-session": "^1.17.1", - "fs-extra": "^10.0.0", + "fs-extra": "9.1.0", "got": "^11.5.2", "helmet": "^4.0.0", "jose": "^1.27.1", diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index 9ee7aeb7a6..a3d0ff14da 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -46,7 +46,7 @@ "express": "^4.17.1", "express-promise-router": "^4.1.0", "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^10.0.0", + "fs-extra": "9.1.0", "git-url-parse": "~11.4.4", "glob": "^7.1.6", "knex": "^0.95.1", diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index 39bfedbbf4..9888447464 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -44,7 +44,7 @@ "cors": "^2.8.5", "express": "^4.17.1", "express-promise-router": "^4.1.0", - "fs-extra": "^10.0.0", + "fs-extra": "9.1.0", "helmet": "^4.0.0", "lodash": "^4.17.15", "morgan": "^1.10.0", diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index ad3c04698d..6f6d87e30e 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -39,7 +39,7 @@ "cors": "^2.8.5", "express": "^4.17.1", "express-promise-router": "^4.1.0", - "fs-extra": "^10.0.0", + "fs-extra": "9.1.0", "helmet": "^4.0.0", "lodash": "^4.17.15", "morgan": "^1.10.0", diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 7a280f7255..de97a942c1 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -46,7 +46,7 @@ "cross-fetch": "^3.0.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", - "fs-extra": "^10.0.0", + "fs-extra": "9.1.0", "git-url-parse": "~11.4.4", "globby": "^11.0.0", "handlebars": "^4.7.6", diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index 24d7694fe0..714f3ad442 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -40,7 +40,7 @@ "dockerode": "^3.2.1", "express": "^4.17.1", "express-promise-router": "^4.1.0", - "fs-extra": "^10.0.0", + "fs-extra": "9.1.0", "knex": "^0.95.1", "winston": "^3.2.1" }, diff --git a/yarn.lock b/yarn.lock index a9a4fb90b3..b23b93457c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13169,6 +13169,16 @@ fs-constants@^1.0.0: resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== +fs-extra@9.1.0, fs-extra@^9.0.0, fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -13180,15 +13190,6 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" - integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-extra@^7.0.1, fs-extra@~7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -13207,16 +13208,6 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0, fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-minipass@^1.2.5: version "1.2.7" resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" From ae84b20cf6e785d60f381981e97572d7ed342345 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 12 Jul 2021 19:31:22 +0200 Subject: [PATCH 093/117] chore: add changeset Signed-off-by: blam --- .changeset/young-tables-reply.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .changeset/young-tables-reply.md diff --git a/.changeset/young-tables-reply.md b/.changeset/young-tables-reply.md new file mode 100644 index 0000000000..e08a875c14 --- /dev/null +++ b/.changeset/young-tables-reply.md @@ -0,0 +1,16 @@ +--- +'@backstage/backend-common': patch +'@backstage/cli': patch +'@backstage/config-loader': patch +'@backstage/create-app': patch +'@backstage/techdocs-common': patch +'@backstage/plugin-app-backend': patch +'@backstage/plugin-auth-backend': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-kubernetes-backend': patch +'@backstage/plugin-rollbar-backend': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-techdocs-backend': patch +--- + +Revert the upgrade to `fs-extra@10.0.0` as that seemed to have broken all installs inexplicably. From 1fe719dbfe4efc477b445ef4d3f601f44c3fe9af Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 12 Jul 2021 19:46:25 +0200 Subject: [PATCH 094/117] docs: scaffolder is now beta Signed-off-by: blam --- docs/overview/stability-index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/overview/stability-index.md b/docs/overview/stability-index.md index 1cdde89a78..2b730024fd 100644 --- a/docs/overview/stability-index.md +++ b/docs/overview/stability-index.md @@ -332,8 +332,7 @@ Stability: `1` The backend scaffolder plugin that provides an implementation for templates in the catalog. -Stability: `1`. There is planned work to rework the scaffolder in -https://github.com/backstage/backstage/issues/2771. +Stability: `2`. ### `tech-radar` [GitHub](https://github.com/backstage/backstage/tree/master/plugins/tech-radar/) From 9f4d05eb9207543c48d876f1bd78b9408ab991e5 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 11 Jul 2021 16:27:38 +0200 Subject: [PATCH 095/117] root: bump api-extractor packages to latest version Signed-off-by: Patrik Oldsberg --- package.json | 7 ++--- yarn.lock | 78 +++++++++++++++++++--------------------------------- 2 files changed, 31 insertions(+), 54 deletions(-) diff --git a/package.json b/package.json index 09dc55617b..b027d6da47 100644 --- a/package.json +++ b/package.json @@ -44,15 +44,14 @@ "**/@roadiehq/**/@backstage/core": "*", "**/@roadiehq/**/@backstage/plugin-catalog": "*", "**/@roadiehq/**/@backstage/catalog-model": "*", - "**/@microsoft/api-extractor/typescript": "^4.0.3", "graphql-language-service-interface": "2.8.2", "graphql-language-service-parser": "1.9.0" }, "version": "1.0.0", "dependencies": { - "@microsoft/api-documenter": "^7.12.16", - "@microsoft/api-extractor": "7.13.2-pr1916.0", - "@microsoft/api-extractor-model": "^7.12.5" + "@microsoft/api-documenter": "^7.13.30", + "@microsoft/api-extractor": "^7.18.1", + "@microsoft/api-extractor-model": "^7.13.3" }, "devDependencies": { "@changesets/cli": "^2.14.0", diff --git a/yarn.lock b/yarn.lock index a9a4fb90b3..b25b73e3ad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3508,20 +3508,20 @@ dependencies: "@types/whatwg-streams" "^0.0.7" -"@microsoft/api-documenter@^7.12.16": - version "7.13.24" - resolved "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.13.24.tgz#3bae26f7520a993c4009569d8bd229c76d266dc3" - integrity sha512-HH8aE7Yo0D+eQuV86lwF4YGW669wNxUevybGMndsTyQEeRqUpnr4wz9ptFi7FGjaUjTKjGWQKH2bm4dt8BZsUg== +"@microsoft/api-documenter@^7.13.30": + version "7.13.30" + resolved "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.13.30.tgz#f4832b8747ad9f61b3a0d87eb61b6b1aca2aeb60" + integrity sha512-n91XihJptwcHp1g5FUIcrjDXhg/g2q6+Rj+nuPBkvsCAKQP/OwCLNVO3tYNpz+qa+lWrHPWL3Urc8G3th5cn7w== dependencies: "@microsoft/api-extractor-model" "7.13.3" "@microsoft/tsdoc" "0.13.2" "@rushstack/node-core-library" "3.39.0" - "@rushstack/ts-command-line" "4.7.10" + "@rushstack/ts-command-line" "4.8.0" colors "~1.2.1" js-yaml "~3.13.1" resolve "~1.17.0" -"@microsoft/api-extractor-model@7.13.3", "@microsoft/api-extractor-model@^7.12.5": +"@microsoft/api-extractor-model@7.13.3", "@microsoft/api-extractor-model@^7.13.3": version "7.13.3" resolved "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.13.3.tgz#ac01c064c5af520d3661c85d7e5ef95e1ca8ab92" integrity sha512-uXilAhu2GcvyY/0NwVRk3AN7TFYjkPnjHLV2UywTTz9uglS+Af0YjNrCy+aaK8qXtfbFWdBzkH9N2XU8/YBeRQ== @@ -3530,30 +3530,23 @@ "@microsoft/tsdoc-config" "~0.15.2" "@rushstack/node-core-library" "3.39.0" -"@microsoft/api-extractor-model@workspace:*": - version "7.12.5" - resolved "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.12.5.tgz#28d2804865ceba9cd89ab4f05cff99d16fa6c9b8" - integrity sha512-oeHZW83JWjIVoCDvdwI5nsZGPxThbq4gZTLAYNeJGZE/mKEO0iayMPGmI3EllJBjwQsFvNVU+O/HGULhB2to/g== +"@microsoft/api-extractor@^7.18.1": + version "7.18.1" + resolved "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.18.1.tgz#61b39f972b646261dd49f2de9f5d448aa6497e7a" + integrity sha512-qljUF2Q0zAx1vJrjKkJVGN7OVbsXki+Pji99jywyl6L/FK3YZ7PpstUJYE6uBcLPy6rhNPWPAsHNTMpG/kHIsg== dependencies: - "@microsoft/tsdoc" "0.12.24" - "@rushstack/node-core-library" "3.36.2" - -"@microsoft/api-extractor@7.13.2-pr1916.0": - version "7.13.2-pr1916.0" - resolved "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.13.2-pr1916.0.tgz#2e10cb928ea81b56cd5f63264da11f1f9b9310a5" - integrity sha512-0/HajL+NUixuNGMfFZbHmKJn5VEqiF45q2FXhu8UrggutdJ+9M6wZ++fejUHfxlC/WhQVrVVRtf4xvVM3oIW+A== - dependencies: - "@microsoft/api-extractor-model" "workspace:*" - "@microsoft/tsdoc" "0.12.24" - "@rushstack/node-core-library" "workspace:*" - "@rushstack/rig-package" "workspace:*" - "@rushstack/ts-command-line" "workspace:*" + "@microsoft/api-extractor-model" "7.13.3" + "@microsoft/tsdoc" "0.13.2" + "@microsoft/tsdoc-config" "~0.15.2" + "@rushstack/node-core-library" "3.39.0" + "@rushstack/rig-package" "0.2.12" + "@rushstack/ts-command-line" "4.8.0" colors "~1.2.1" lodash "~4.17.15" resolve "~1.17.0" semver "~7.3.0" source-map "~0.6.1" - typescript "~4.1.3" + typescript "~4.3.2" "@microsoft/fetch-event-source@2.0.1": version "2.0.1" @@ -3575,11 +3568,6 @@ jju "~1.4.0" resolve "~1.19.0" -"@microsoft/tsdoc@0.12.24": - version "0.12.24" - resolved "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.24.tgz#30728e34ebc90351dd3aff4e18d038eed2c3e098" - integrity sha512-Mfmij13RUTmHEMi9vRUhMXD7rnGR2VvxeNYtaGtaJ4redwwjT4UXYJ+nzmVJF7hhd4pn/Fx5sncDKxMVFJSWPg== - "@microsoft/tsdoc@0.13.2": version "0.13.2" resolved "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.13.2.tgz#3b0efb6d3903bd49edb073696f60e90df08efb26" @@ -4172,21 +4160,6 @@ estree-walker "^2.0.1" picomatch "^2.2.2" -"@rushstack/node-core-library@3.36.2", "@rushstack/node-core-library@workspace:*": - version "3.36.2" - resolved "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.36.2.tgz#ba00d313577f9b06d5aafaa29da0d94e594874c0" - integrity sha512-5J8xSY/PuCKR+yfxS497l0PP43kBUeD86S4eS3RzrmMle04J4522MWal8mk1T1EIDpYpgi8qScannU9oVxoStA== - dependencies: - "@types/node" "10.17.13" - colors "~1.2.1" - fs-extra "~7.0.1" - import-lazy "~4.0.0" - jju "~1.4.0" - resolve "~1.17.0" - semver "~7.3.0" - timsort "~0.3.0" - z-schema "~3.18.3" - "@rushstack/node-core-library@3.39.0": version "3.39.0" resolved "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.39.0.tgz#38928946d15ae89b773386cf97433d0d1ec83b93" @@ -4202,7 +4175,7 @@ timsort "~0.3.0" z-schema "~3.18.3" -"@rushstack/rig-package@workspace:*": +"@rushstack/rig-package@0.2.12": version "0.2.12" resolved "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.2.12.tgz#c434d62b28e0418a040938226f8913971d0424c7" integrity sha512-nbePcvF8hQwv0ql9aeQxcaMPK/h1OLAC00W7fWCRWIvD2MchZOE8jumIIr66HGrfG2X1sw++m/ZYI4D+BM5ovQ== @@ -4210,10 +4183,10 @@ resolve "~1.17.0" strip-json-comments "~3.1.1" -"@rushstack/ts-command-line@4.7.10", "@rushstack/ts-command-line@workspace:*": - version "4.7.10" - resolved "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.7.10.tgz#a2ec6efb1945b79b496671ce90eb1be4f1397d31" - integrity sha512-8t042g8eerypNOEcdpxwRA3uCmz0duMo21rG4Z2mdz7JxJeylDmzjlU3wDdef2t3P1Z61JCdZB6fbm1Mh0zi7w== +"@rushstack/ts-command-line@4.8.0": + version "4.8.0" + resolved "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.8.0.tgz#611accb931b9ac62ff4d078f68f95c47f6606724" + integrity sha512-nZ8cbzVF1VmFPfSJfy8vEohdiFAH/59Y/Y+B4nsJbn4SkifLJ8LqNZ5+LxCC2UR242EXFumxlsY1d6fPBxck5Q== dependencies: "@types/argparse" "1.0.38" argparse "~1.0.9" @@ -25172,11 +25145,16 @@ typescript-json-schema@^0.50.1: typescript "~4.2.3" yargs "^16.2.0" -typescript@^4.0.3, typescript@~4.1.3, typescript@~4.2.3: +typescript@^4.0.3, typescript@~4.2.3: version "4.2.4" resolved "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== +typescript@~4.3.2: + version "4.3.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" + integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== + ua-parser-js@^0.7.18: version "0.7.28" resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" From 8ae3cffb854153ab58397e2c00b00cd6d1ab54ec Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 11 Jul 2021 16:38:26 +0200 Subject: [PATCH 096/117] recreate all api-reports with latest version of api-extractor Signed-off-by: Patrik Oldsberg --- packages/backend-common/api-report.md | 10 +++++---- packages/core-app-api/api-report.md | 27 +++++++++++------------ packages/core-plugin-api/api-report.md | 3 ++- packages/dev-utils/api-report.md | 3 ++- packages/integration-react/api-report.md | 3 ++- packages/techdocs-common/api-report.md | 7 +++--- plugins/api-docs/api-report.md | 19 ++++++++-------- plugins/badges/api-report.md | 5 +++-- plugins/bitrise/api-report.md | 5 +++-- plugins/catalog-import/api-report.md | 9 ++++---- plugins/circleci/api-report.md | 11 ++++----- plugins/cloudbuild/api-report.md | 17 ++++++-------- plugins/code-coverage/api-report.md | 9 ++++---- plugins/config-schema/api-report.md | 9 ++++---- plugins/cost-insights/api-report.md | 15 ++++++------- plugins/explore/api-report.md | 27 +++++++++++------------ plugins/fossa/api-report.md | 9 ++++---- plugins/gcp-projects/api-report.md | 9 ++++---- plugins/git-release-manager/api-report.md | 7 +++--- plugins/github-actions/api-report.md | 21 ++++++++---------- plugins/gitops-profiles/api-report.md | 19 ++++++++-------- plugins/graphiql/api-report.md | 7 +++--- plugins/ilert/api-report.md | 11 ++++----- plugins/jenkins/api-report.md | 15 +++++-------- plugins/kafka/api-report.md | 13 +++++------ plugins/kubernetes/api-report.md | 13 +++++------ plugins/lighthouse/api-report.md | 17 ++++++-------- plugins/newrelic/api-report.md | 9 ++++---- plugins/org/api-report.md | 21 +++++++++--------- plugins/pagerduty/api-report.md | 9 +++----- plugins/register-component/api-report.md | 9 ++++---- plugins/rollbar/api-report.md | 15 +++++-------- plugins/scaffolder-backend/api-report.md | 5 +++-- plugins/scaffolder/api-report.md | 11 +++++---- plugins/search/api-report.md | 11 +++++---- plugins/sentry/api-report.md | 11 +++++---- plugins/shortcuts/api-report.md | 5 +++-- plugins/sonarqube/api-report.md | 11 +++++---- plugins/splunk-on-call/api-report.md | 11 +++++---- plugins/tech-radar/api-report.md | 9 ++++---- plugins/techdocs/api-report.md | 13 +++++------ plugins/todo/api-report.md | 5 +++-- plugins/user-settings/api-report.md | 9 ++++---- plugins/welcome/api-report.md | 7 +++--- 44 files changed, 228 insertions(+), 263 deletions(-) diff --git a/packages/backend-common/api-report.md b/packages/backend-common/api-report.md index 22eac06ed2..b89bdd1bef 100644 --- a/packages/backend-common/api-report.md +++ b/packages/backend-common/api-report.md @@ -4,6 +4,9 @@ ```ts +/// +/// + import { AzureIntegration } from '@backstage/integration'; import { BitbucketIntegration } from '@backstage/integration'; import { Config } from '@backstage/config'; @@ -79,7 +82,7 @@ export interface CacheClient { export class CacheManager { forPlugin(pluginId: string): PluginCacheManager; static fromConfig(config: Config, options?: CacheManagerOptions): CacheManager; - } +} // @public (undocumented) export const coloredFormat: winston.Logform.Format; @@ -109,7 +112,7 @@ export function createStatusCheckRouter(options: StatusCheckRouterOptions): Prom export class DatabaseManager { forPlugin(pluginId: string): PluginDatabaseManager; static fromConfig(config: Config): DatabaseManager; - } +} // @public (undocumented) export class DockerContainerRunner implements ContainerRunner { @@ -359,7 +362,7 @@ export class SingleHostDiscovery implements PluginEndpointDiscovery { getBaseUrl(pluginId: string): Promise; // (undocumented) getExternalBaseUrl(pluginId: string): Promise; - } +} // @public (undocumented) export type StatusCheck = () => Promise; @@ -392,7 +395,6 @@ export function useHotCleanup(_module: NodeModule, cancelEffect: () => void): vo // @public export function useHotMemoize(_module: NodeModule, valueFactory: () => T): T; - // (No @packageDocumentation comment for this package) ``` diff --git a/packages/core-app-api/api-report.md b/packages/core-app-api/api-report.md index 8cb18cf1ce..ea3198d677 100644 --- a/packages/core-app-api/api-report.md +++ b/packages/core-app-api/api-report.md @@ -61,7 +61,7 @@ export class AlertApiForwarder implements AlertApi { alert$(): Observable; // (undocumented) post(alert: AlertMessage): void; - } +} // @public (undocumented) export type ApiFactoryHolder = { @@ -168,7 +168,7 @@ export class AppThemeSelector implements AppThemeApi { getInstalledThemes(): AppTheme[]; // (undocumented) setActiveThemeId(themeId?: string): void; - } +} // @public (undocumented) export class Auth0Auth { @@ -207,13 +207,13 @@ export const defaultConfigLoader: AppConfigLoader; export class ErrorAlerter implements ErrorApi { constructor(alertApi: AlertApi, errorApi: ErrorApi); // (undocumented) - error$(): Observable<{ - error: { - name: string; - message: string; - stack?: string | undefined; - }; - context?: ErrorContext | undefined; + error$(): Observable< { + error: { + name: string; + message: string; + stack?: string | undefined; + }; + context?: ErrorContext | undefined; }>; // (undocumented) post(error: Error, context?: ErrorContext): void; @@ -228,7 +228,7 @@ export class ErrorApiForwarder implements ErrorApi { }>; // (undocumented) post(error: Error, context?: ErrorContext): void; - } +} // @public (undocumented) export type ErrorBoundaryFallbackProps = { @@ -353,7 +353,7 @@ export class OAuthRequestManager implements OAuthRequestApi { authRequest$(): Observable; // (undocumented) createAuthRequester(options: AuthRequesterOptions): AuthRequester; - } +} // @public (undocumented) export class OktaAuth { @@ -407,7 +407,7 @@ export class UrlPatternDiscovery implements DiscoveryApi { static compile(pattern: string): UrlPatternDiscovery; // (undocumented) getBaseUrl(pluginId: string): Promise; - } +} // @public (undocumented) export class WebStorage implements StorageApi { @@ -424,8 +424,7 @@ export class WebStorage implements StorageApi { remove(key: string): Promise; // (undocumented) set(key: string, data: T): Promise; - } - +} // (No @packageDocumentation comment for this package) diff --git a/packages/core-plugin-api/api-report.md b/packages/core-plugin-api/api-report.md index 90ea1f5e46..cb1bfe1280 100644 --- a/packages/core-plugin-api/api-report.md +++ b/packages/core-plugin-api/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { BackstageTheme } from '@backstage/theme'; import { ComponentType } from 'react'; import { Config } from '@backstage/config'; @@ -550,7 +552,6 @@ export function withApis(apis: TypesToApiRefs):

(WrappedCompo displayName: string; }; - // (No @packageDocumentation comment for this package) ``` diff --git a/packages/dev-utils/api-report.md b/packages/dev-utils/api-report.md index d3852b1c95..1c44b55dac 100644 --- a/packages/dev-utils/api-report.md +++ b/packages/dev-utils/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiFactory } from '@backstage/core-plugin-api'; import { ComponentType } from 'react'; import { createPlugin } from '@backstage/core-plugin-api'; @@ -20,7 +22,6 @@ export const EntityGridItem: ({ entity, classes, ...rest }: Omit JSX.Element; - // (No @packageDocumentation comment for this package) ``` diff --git a/packages/integration-react/api-report.md b/packages/integration-react/api-report.md index fee08efe6f..e3866d7932 100644 --- a/packages/integration-react/api-report.md +++ b/packages/integration-react/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { Config } from '@backstage/config'; import { ScmIntegrationRegistry } from '@backstage/integration'; @@ -22,7 +24,6 @@ export class ScmIntegrationsApi { // @public (undocumented) export const scmIntegrationsApiRef: ApiRef; - // (No @packageDocumentation comment for this package) ``` diff --git a/packages/techdocs-common/api-report.md b/packages/techdocs-common/api-report.md index d25f55bf3a..07bfcafd00 100644 --- a/packages/techdocs-common/api-report.md +++ b/packages/techdocs-common/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { AzureIntegrationConfig } from '@backstage/integration'; import { Config } from '@backstage/config'; import { ContainerRunner } from '@backstage/backend-common'; @@ -34,7 +36,7 @@ export class DirectoryPreparer implements PreparerBase { constructor(config: Config, logger: Logger_2, reader: UrlReader); // (undocumented) prepare(entity: Entity): Promise; - } +} // @public (undocumented) export type GeneratorBase = { @@ -175,8 +177,7 @@ export class UrlPreparer implements PreparerBase { prepare(entity: Entity, options?: { etag?: string; }): Promise; - } - +} // (No @packageDocumentation comment for this package) diff --git a/plugins/api-docs/api-report.md b/plugins/api-docs/api-report.md index c7d3fdc694..ee19bba69f 100644 --- a/plugins/api-docs/api-report.md +++ b/plugins/api-docs/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiEntity } from '@backstage/catalog-model'; import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; @@ -30,14 +32,12 @@ export type ApiDefinitionWidget = { export const apiDocsConfigRef: ApiRef; // @public (undocumented) -const apiDocsPlugin: BackstagePlugin<{ - root: RouteRef; +const apiDocsPlugin: BackstagePlugin< { +root: RouteRef; }, { - createComponent: ExternalRouteRef; +createComponent: ExternalRouteRef; }>; - export { apiDocsPlugin } - export { apiDocsPlugin as plugin } // @public (undocumented) @@ -67,13 +67,13 @@ export const EntityApiDefinitionCard: (_: { // @public (undocumented) export const EntityConsumedApisCard: ({ variant }: { - entity?: Entity| undefined; + entity?: Entity | undefined; variant?: "gridItem" | undefined; }) => JSX.Element; // @public (undocumented) export const EntityConsumingComponentsCard: ({ variant }: { - entity?: Entity| undefined; + entity?: Entity | undefined; variant?: "gridItem" | undefined; }) => JSX.Element; @@ -84,13 +84,13 @@ export const EntityHasApisCard: ({ variant }: { // @public (undocumented) export const EntityProvidedApisCard: ({ variant }: { - entity?: Entity| undefined; + entity?: Entity | undefined; variant?: "gridItem" | undefined; }) => JSX.Element; // @public (undocumented) export const EntityProvidingComponentsCard: ({ variant }: { - entity?: Entity| undefined; + entity?: Entity | undefined; variant?: "gridItem" | undefined; }) => JSX.Element; @@ -109,7 +109,6 @@ export const ProvidedApisCard: ({ variant }: Props_4) => JSX.Element; // @public (undocumented) export const ProvidingComponentsCard: ({ variant }: Props_7) => JSX.Element; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/badges/api-report.md b/plugins/badges/api-report.md index 1dbb256fd1..df54a19a76 100644 --- a/plugins/badges/api-report.md +++ b/plugins/badges/api-report.md @@ -4,10 +4,12 @@ ```ts +/// + import { BackstagePlugin } from '@backstage/core-plugin-api'; // @public (undocumented) -export const badgesPlugin: BackstagePlugin<{}, {}>; +export const badgesPlugin: BackstagePlugin< {}, {}>; // @public (undocumented) export const EntityBadgesDialog: ({ open, onClose }: { @@ -15,7 +17,6 @@ export const EntityBadgesDialog: ({ open, onClose }: { onClose?: (() => any) | undefined; }) => JSX.Element; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/bitrise/api-report.md b/plugins/bitrise/api-report.md index 15c3c74c99..e4244aa5d2 100644 --- a/plugins/bitrise/api-report.md +++ b/plugins/bitrise/api-report.md @@ -4,11 +4,13 @@ ```ts +/// + import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; // @public (undocumented) -export const bitrisePlugin: BackstagePlugin<{}, {}>; +export const bitrisePlugin: BackstagePlugin< {}, {}>; // @public (undocumented) export const EntityBitriseContent: () => JSX.Element; @@ -16,7 +18,6 @@ export const EntityBitriseContent: () => JSX.Element; // @public (undocumented) export const isBitriseAvailable: (entity: Entity) => boolean; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/catalog-import/api-report.md b/plugins/catalog-import/api-report.md index f388c24a55..57f1fba943 100644 --- a/plugins/catalog-import/api-report.md +++ b/plugins/catalog-import/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { CatalogApi } from '@backstage/catalog-client'; @@ -89,12 +91,10 @@ export class CatalogImportClient implements CatalogImportApi { export const CatalogImportPage: (opts: StepperProviderOpts) => JSX.Element; // @public (undocumented) -const catalogImportPlugin: BackstagePlugin<{ - importPage: RouteRef; +const catalogImportPlugin: BackstagePlugin< { +importPage: RouteRef; }, {}>; - export { catalogImportPlugin } - export { catalogImportPlugin as plugin } // @public @@ -124,7 +124,6 @@ export const StepInitAnalyzeUrl: ({ onAnalysis, analysisUrl, disablePullRequest, // @public (undocumented) export const StepPrepareCreatePullRequest: ({ analyzeResult, onPrepare, onGoBack, renderFormFields, defaultTitle, defaultBody, }: Props_8) => JSX.Element; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/circleci/api-report.md b/plugins/circleci/api-report.md index 00b575efb8..3bb2c79140 100644 --- a/plugins/circleci/api-report.md +++ b/plugins/circleci/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { BuildStepAction } from 'circleci-api'; @@ -49,10 +51,8 @@ export const circleCIApiRef: ApiRef; export const circleCIBuildRouteRef: RouteRef; // @public (undocumented) -const circleCIPlugin: BackstagePlugin<{}, {}>; - +const circleCIPlugin: BackstagePlugin< {}, {}>; export { circleCIPlugin } - export { circleCIPlugin as plugin } // @public (undocumented) @@ -60,22 +60,19 @@ export const circleCIRouteRef: RouteRef; // @public (undocumented) export const EntityCircleCIContent: (_props: { - entity?: Entity| undefined; + entity?: Entity | undefined; }) => JSX.Element; export { GitType } // @public (undocumented) const isCircleCIAvailable: (entity: Entity) => boolean; - export { isCircleCIAvailable } - export { isCircleCIAvailable as isPluginApplicableToEntity } // @public (undocumented) export const Router: (_props: Props) => JSX.Element; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/cloudbuild/api-report.md b/plugins/cloudbuild/api-report.md index 2ebc1eb737..441cc4f3f5 100644 --- a/plugins/cloudbuild/api-report.md +++ b/plugins/cloudbuild/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; @@ -100,28 +102,26 @@ export class CloudbuildClient implements CloudbuildApi { } // @public (undocumented) -const cloudbuildPlugin: BackstagePlugin<{ - entityContent: RouteRef; +const cloudbuildPlugin: BackstagePlugin< { +entityContent: RouteRef; }, {}>; - export { cloudbuildPlugin } - export { cloudbuildPlugin as plugin } // @public (undocumented) export const EntityCloudbuildContent: (_props: { - entity?: Entity| undefined; + entity?: Entity | undefined; }) => JSX.Element; // @public (undocumented) export const EntityLatestCloudbuildRunCard: ({ branch, }: { - entity?: Entity| undefined; + entity?: Entity | undefined; branch: string; }) => JSX.Element; // @public (undocumented) export const EntityLatestCloudbuildsForBranchCard: ({ branch, }: { - entity?: Entity| undefined; + entity?: Entity | undefined; branch: string; }) => JSX.Element; @@ -135,9 +135,7 @@ export interface FETCHSOURCE { // @public (undocumented) const isCloudbuildAvailable: (entity: Entity) => boolean; - export { isCloudbuildAvailable } - export { isCloudbuildAvailable as isPluginApplicableToEntity } // @public (undocumented) @@ -277,7 +275,6 @@ export interface Volume { path: string; } - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/code-coverage/api-report.md b/plugins/code-coverage/api-report.md index dffbaeec2a..c850f0cb48 100644 --- a/plugins/code-coverage/api-report.md +++ b/plugins/code-coverage/api-report.md @@ -4,13 +4,15 @@ ```ts +/// + import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) -export const codeCoveragePlugin: BackstagePlugin<{ - root: RouteRef; +export const codeCoveragePlugin: BackstagePlugin< { +root: RouteRef; }, {}>; // @public (undocumented) @@ -18,15 +20,12 @@ export const EntityCodeCoverageContent: () => JSX.Element; // @public (undocumented) const isCodeCoverageAvailable: (entity: Entity) => boolean; - export { isCodeCoverageAvailable } - export { isCodeCoverageAvailable as isPluginApplicableToEntity } // @public (undocumented) export const Router: () => JSX.Element; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/config-schema/api-report.md b/plugins/config-schema/api-report.md index f623789076..fee63e9f23 100644 --- a/plugins/config-schema/api-report.md +++ b/plugins/config-schema/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Observable } from '@backstage/core-plugin-api'; @@ -23,8 +25,8 @@ export const configSchemaApiRef: ApiRef; export const ConfigSchemaPage: () => JSX.Element; // @public (undocumented) -export const configSchemaPlugin: BackstagePlugin<{ - root: RouteRef; +export const configSchemaPlugin: BackstagePlugin< { +root: RouteRef; }, {}>; // @public @@ -34,8 +36,7 @@ export class StaticSchemaLoader implements ConfigSchemaApi { }); // (undocumented) schema$(): Observable; - } - +} // (No @packageDocumentation comment for this package) diff --git a/plugins/cost-insights/api-report.md b/plugins/cost-insights/api-report.md index 97dd33e5ad..a679715671 100644 --- a/plugins/cost-insights/api-report.md +++ b/plugins/cost-insights/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePalette } from '@backstage/theme'; import { BackstagePlugin } from '@backstage/core-plugin-api'; @@ -278,14 +280,12 @@ export type CostInsightsPalette = BackstagePalette & CostInsightsPaletteAddition export type CostInsightsPaletteOptions = PaletteOptions & CostInsightsPaletteAdditions; // @public (undocumented) -const costInsightsPlugin: BackstagePlugin<{ - root: RouteRef; - growthAlerts: RouteRef; - unlabeledDataflowAlerts: RouteRef; +const costInsightsPlugin: BackstagePlugin< { +root: RouteRef; +growthAlerts: RouteRef; +unlabeledDataflowAlerts: RouteRef; }, {}>; - export { costInsightsPlugin } - export { costInsightsPlugin as plugin } // @public (undocumented) @@ -393,7 +393,7 @@ export class ExampleCostInsightsClient implements CostInsightsApi { getProjectDailyCost(project: string, intervals: string): Promise; // (undocumented) getUserGroups(userId: string): Promise; - } +} // @public (undocumented) export type Group = { @@ -615,7 +615,6 @@ export interface UnlabeledDataflowData { unlabeledCost: number; } - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/explore/api-report.md b/plugins/explore/api-report.md index 6755b0cfc2..4084c6a203 100644 --- a/plugins/explore/api-report.md +++ b/plugins/explore/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { BackstagePlugin } from '@backstage/core-plugin-api'; import { default } from 'react'; import { ExternalRouteRef } from '@backstage/core-plugin-api'; @@ -11,10 +13,10 @@ import { RouteRef } from '@backstage/core-plugin-api'; import { TabProps } from '@material-ui/core'; // @public (undocumented) -export const catalogEntityRouteRef: ExternalRouteRef<{ - name: string; - kind: string; - namespace: string; +export const catalogEntityRouteRef: ExternalRouteRef< { +name: string; +kind: string; +namespace: string; }, false>; // @public (undocumented) @@ -32,18 +34,16 @@ export const ExploreLayout: { export const ExplorePage: () => JSX.Element; // @public (undocumented) -const explorePlugin: BackstagePlugin<{ - explore: RouteRef; +const explorePlugin: BackstagePlugin< { +explore: RouteRef; }, { - catalogEntity: ExternalRouteRef<{ - name: string; - kind: string; - namespace: string; - }, false>; +catalogEntity: ExternalRouteRef< { +name: string; +kind: string; +namespace: string; +}, false>; }>; - export { explorePlugin } - export { explorePlugin as plugin } // @public (undocumented) @@ -59,7 +59,6 @@ export const ToolExplorerContent: ({ title }: { title?: string | undefined; }) => JSX.Element; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/fossa/api-report.md b/plugins/fossa/api-report.md index a02fba732f..2ecb1bc161 100644 --- a/plugins/fossa/api-report.md +++ b/plugins/fossa/api-report.md @@ -4,24 +4,25 @@ ```ts +/// + import { BackstagePlugin } from '@backstage/core-plugin-api'; import { InfoCardVariants } from '@backstage/core-components'; import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) export const EntityFossaCard: ({ variant }: { - variant?: InfoCardVariants| undefined; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) export const FossaPage: () => JSX.Element; // @public (undocumented) -export const fossaPlugin: BackstagePlugin<{ - fossaOverview: RouteRef; +export const fossaPlugin: BackstagePlugin< { +fossaOverview: RouteRef; }, {}>; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/gcp-projects/api-report.md b/plugins/gcp-projects/api-report.md index bbe8d3edac..dde26fd0bc 100644 --- a/plugins/gcp-projects/api-report.md +++ b/plugins/gcp-projects/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { OAuthApi } from '@backstage/core-plugin-api'; @@ -42,12 +44,10 @@ export class GcpClient implements GcpApi { export const GcpProjectsPage: () => JSX.Element; // @public (undocumented) -const gcpProjectsPlugin: BackstagePlugin<{ - root: RouteRef; +const gcpProjectsPlugin: BackstagePlugin< { +root: RouteRef; }, {}>; - export { gcpProjectsPlugin } - export { gcpProjectsPlugin as plugin } // @public (undocumented) @@ -80,7 +80,6 @@ export type Status = { details: string[]; }; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/git-release-manager/api-report.md b/plugins/git-release-manager/api-report.md index 2948f441bc..d3e2daa349 100644 --- a/plugins/git-release-manager/api-report.md +++ b/plugins/git-release-manager/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; @@ -15,11 +17,10 @@ export const gitReleaseManagerApiRef: ApiRef; export const GitReleaseManagerPage: GitReleaseManager; // @public (undocumented) -export const gitReleaseManagerPlugin: BackstagePlugin<{ - root: RouteRef; +export const gitReleaseManagerPlugin: BackstagePlugin< { +root: RouteRef; }, {}>; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/github-actions/api-report.md b/plugins/github-actions/api-report.md index d3fe532c7b..e4e984d03b 100644 --- a/plugins/github-actions/api-report.md +++ b/plugins/github-actions/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { ConfigApi } from '@backstage/core-plugin-api'; @@ -27,21 +29,21 @@ export enum BuildStatus { // @public (undocumented) export const EntityGithubActionsContent: (_props: { - entity?: Entity| undefined; + entity?: Entity | undefined; }) => JSX.Element; // @public (undocumented) export const EntityLatestGithubActionRunCard: ({ branch, variant, }: { - entity?: Entity| undefined; + entity?: Entity | undefined; branch: string; - variant?: InfoCardVariants| undefined; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) export const EntityLatestGithubActionsForBranchCard: ({ branch, variant, }: { - entity?: Entity| undefined; + entity?: Entity | undefined; branch: string; - variant?: InfoCardVariants| undefined; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) @@ -152,19 +154,15 @@ export class GithubActionsClient implements GithubActionsApi { } // @public (undocumented) -const githubActionsPlugin: BackstagePlugin<{ - entityContent: RouteRef; +const githubActionsPlugin: BackstagePlugin< { +entityContent: RouteRef; }, {}>; - export { githubActionsPlugin } - export { githubActionsPlugin as plugin } // @public (undocumented) const isGithubActionsAvailable: (entity: Entity) => boolean; - export { isGithubActionsAvailable } - export { isGithubActionsAvailable as isPluginApplicableToEntity } // @public (undocumented) @@ -207,7 +205,6 @@ export type Step = { completed_at: string; }; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/gitops-profiles/api-report.md b/plugins/gitops-profiles/api-report.md index 4690e41414..42534fbb7c 100644 --- a/plugins/gitops-profiles/api-report.md +++ b/plugins/gitops-profiles/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; @@ -113,17 +115,15 @@ export const GitopsProfilesClusterPage: () => JSX.Element; export const GitopsProfilesCreatePage: () => JSX.Element; // @public (undocumented) -const gitopsProfilesPlugin: BackstagePlugin<{ - listPage: RouteRef; - detailsPage: RouteRef<{ - owner: string; - repo: string; - }>; - createPage: RouteRef; +const gitopsProfilesPlugin: BackstagePlugin< { +listPage: RouteRef; +detailsPage: RouteRef< { +owner: string; +repo: string; +}>; +createPage: RouteRef; }, {}>; - export { gitopsProfilesPlugin } - export { gitopsProfilesPlugin as plugin } // @public (undocumented) @@ -191,7 +191,6 @@ export interface StatusResponse { status: string; } - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/graphiql/api-report.md b/plugins/graphiql/api-report.md index 4e78e34f6a..50c86eeeca 100644 --- a/plugins/graphiql/api-report.md +++ b/plugins/graphiql/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { ErrorApi } from '@backstage/core-plugin-api'; @@ -38,10 +40,8 @@ export const GraphiQLIcon: IconComponent; export const GraphiQLPage: () => JSX.Element; // @public (undocumented) -const graphiqlPlugin: BackstagePlugin<{}, {}>; - +const graphiqlPlugin: BackstagePlugin< {}, {}>; export { graphiqlPlugin } - export { graphiqlPlugin as plugin } // @public (undocumented) @@ -76,7 +76,6 @@ export class GraphQLEndpoints implements GraphQLBrowseApi { // @public (undocumented) export const Router: () => JSX.Element; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/ilert/api-report.md b/plugins/ilert/api-report.md index 376e7e4dfd..3b5d6a8e9d 100644 --- a/plugins/ilert/api-report.md +++ b/plugins/ilert/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { ConfigApi } from '@backstage/core-plugin-api'; @@ -172,12 +174,10 @@ export const ILertIcon: IconComponent; export const ILertPage: () => JSX.Element; // @public (undocumented) -const ilertPlugin: BackstagePlugin<{ - root: RouteRef; +const ilertPlugin: BackstagePlugin< { +root: RouteRef; }, {}>; - export { ilertPlugin } - export { ilertPlugin as plugin } // @public (undocumented) @@ -185,9 +185,7 @@ export const iLertRouteRef: RouteRef; // @public (undocumented) const isPluginApplicableToEntity: (entity: Entity) => boolean; - export { isPluginApplicableToEntity as isILertAvailable } - export { isPluginApplicableToEntity } // @public (undocumented) @@ -199,7 +197,6 @@ export type TableState = { pageSize: number; }; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/jenkins/api-report.md b/plugins/jenkins/api-report.md index 1a1c77479d..2071ecf49f 100644 --- a/plugins/jenkins/api-report.md +++ b/plugins/jenkins/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { DiscoveryApi } from '@backstage/core-plugin-api'; @@ -13,20 +15,18 @@ import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) export const EntityJenkinsContent: (_props: { - entity?: Entity| undefined; + entity?: Entity | undefined; }) => JSX.Element; // @public (undocumented) export const EntityLatestJenkinsRunCard: ({ branch, variant, }: { branch: string; - variant?: InfoCardVariants| undefined; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) const isJenkinsAvailable: (entity: Entity) => boolean; - export { isJenkinsAvailable } - export { isJenkinsAvailable as isPluginApplicableToEntity } // @public (undocumented) @@ -60,12 +60,10 @@ export class JenkinsApi { export const jenkinsApiRef: ApiRef; // @public (undocumented) -const jenkinsPlugin: BackstagePlugin<{ - entityContent: RouteRef; +const jenkinsPlugin: BackstagePlugin< { +entityContent: RouteRef; }, {}>; - export { jenkinsPlugin } - export { jenkinsPlugin as plugin } // @public (undocumented) @@ -77,7 +75,6 @@ export const LatestRunCard: ({ branch, variant, }: { // @public (undocumented) export const Router: (_props: Props) => JSX.Element; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/kafka/api-report.md b/plugins/kafka/api-report.md index 66551aa71e..ba26dbecb0 100644 --- a/plugins/kafka/api-report.md +++ b/plugins/kafka/api-report.md @@ -4,38 +4,35 @@ ```ts +/// + import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) export const EntityKafkaContent: (_props: { - entity?: Entity| undefined; + entity?: Entity | undefined; }) => JSX.Element; // @public (undocumented) const isPluginApplicableToEntity: (entity: Entity) => boolean; - export { isPluginApplicableToEntity as isKafkaAvailable } - export { isPluginApplicableToEntity } // @public (undocumented) export const KAFKA_CONSUMER_GROUP_ANNOTATION = "kafka.apache.org/consumer-groups"; // @public (undocumented) -const kafkaPlugin: BackstagePlugin<{ - entityContent: RouteRef; +const kafkaPlugin: BackstagePlugin< { +entityContent: RouteRef; }, {}>; - export { kafkaPlugin } - export { kafkaPlugin as plugin } // @public (undocumented) export const Router: (_props: Props) => JSX.Element; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/kubernetes/api-report.md b/plugins/kubernetes/api-report.md index 9c8a1fe537..561e5ea56c 100644 --- a/plugins/kubernetes/api-report.md +++ b/plugins/kubernetes/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; @@ -13,7 +15,7 @@ import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) export const EntityKubernetesContent: (_props: { - entity?: Entity| undefined; + entity?: Entity | undefined; }) => JSX.Element; // @public (undocumented) @@ -23,24 +25,21 @@ export class KubernetesAuthProviders implements KubernetesAuthProvidersApi { }); // (undocumented) decorateRequestBodyForAuth(authProvider: string, requestBody: KubernetesRequestBody): Promise; - } +} // @public (undocumented) export const kubernetesAuthProvidersApiRef: ApiRef; // @public (undocumented) -const kubernetesPlugin: BackstagePlugin<{ - entityContent: RouteRef; +const kubernetesPlugin: BackstagePlugin< { +entityContent: RouteRef; }, {}>; - export { kubernetesPlugin } - export { kubernetesPlugin as plugin } // @public (undocumented) export const Router: (_props: Props) => JSX.Element; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/lighthouse/api-report.md b/plugins/lighthouse/api-report.md index 1a2295f891..2d437a3c94 100644 --- a/plugins/lighthouse/api-report.md +++ b/plugins/lighthouse/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Config } from '@backstage/config'; @@ -46,12 +48,12 @@ export const EmbeddedRouter: (_props: Props) => JSX.Element; // @public (undocumented) export const EntityLastLighthouseAuditCard: ({ dense, variant, }: { dense?: boolean | undefined; - variant?: InfoCardVariants| undefined; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) export const EntityLighthouseContent: (_props: { - entity?: Entity| undefined; + entity?: Entity | undefined; }) => JSX.Element; // @public (undocumented) @@ -64,9 +66,7 @@ export class FetchError extends Error { // @public (undocumented) const isLighthouseAvailable: (entity: Entity) => boolean; - export { isLighthouseAvailable } - export { isLighthouseAvailable as isPluginApplicableToEntity } // @public (undocumented) @@ -124,13 +124,11 @@ export type LighthouseCategoryId = 'pwa' | 'seo' | 'performance' | 'accessibilit export const LighthousePage: () => JSX.Element; // @public (undocumented) -const lighthousePlugin: BackstagePlugin<{ - root: RouteRef; - entityContent: RouteRef; +const lighthousePlugin: BackstagePlugin< { +root: RouteRef; +entityContent: RouteRef; }, {}>; - export { lighthousePlugin } - export { lighthousePlugin as plugin } // @public (undocumented) @@ -180,7 +178,6 @@ export interface Website { // @public (undocumented) export type WebsiteListResponse = LASListResponse; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/newrelic/api-report.md b/plugins/newrelic/api-report.md index db5dd073df..ad61c72d61 100644 --- a/plugins/newrelic/api-report.md +++ b/plugins/newrelic/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { BackstagePlugin } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; @@ -11,15 +13,12 @@ import { RouteRef } from '@backstage/core-plugin-api'; export const NewRelicPage: () => JSX.Element; // @public (undocumented) -const newRelicPlugin: BackstagePlugin<{ - root: RouteRef; +const newRelicPlugin: BackstagePlugin< { +root: RouteRef; }, {}>; - export { newRelicPlugin } - export { newRelicPlugin as plugin } - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/org/api-report.md b/plugins/org/api-report.md index fa8d3ea80e..bf714dc81e 100644 --- a/plugins/org/api-report.md +++ b/plugins/org/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { GroupEntity } from '@backstage/catalog-model'; @@ -12,25 +14,25 @@ import { UserEntity } from '@backstage/catalog-model'; // @public (undocumented) export const EntityGroupProfileCard: ({ variant, }: { - entity?: GroupEntity| undefined; - variant?: InfoCardVariants| undefined; + entity?: GroupEntity | undefined; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) export const EntityMembersListCard: (_props: { - entity?: GroupEntity| undefined; + entity?: GroupEntity | undefined; }) => JSX.Element; // @public (undocumented) export const EntityOwnershipCard: ({ variant, }: { - entity?: Entity| undefined; - variant?: InfoCardVariants| undefined; + entity?: Entity | undefined; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) export const EntityUserProfileCard: ({ variant, }: { - entity?: UserEntity| undefined; - variant?: InfoCardVariants| undefined; + entity?: UserEntity | undefined; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) @@ -45,10 +47,8 @@ export const MembersListCard: (_props: { }) => JSX.Element; // @public (undocumented) -const orgPlugin: BackstagePlugin<{}, {}>; - +const orgPlugin: BackstagePlugin< {}, {}>; export { orgPlugin } - export { orgPlugin as plugin } // @public (undocumented) @@ -63,7 +63,6 @@ export const UserProfileCard: ({ variant, }: { variant?: InfoCardVariants | undefined; }) => JSX.Element; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/pagerduty/api-report.md b/plugins/pagerduty/api-report.md index bb3853ae49..e5d7cc212c 100644 --- a/plugins/pagerduty/api-report.md +++ b/plugins/pagerduty/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { ConfigApi } from '@backstage/core-plugin-api'; @@ -16,9 +18,7 @@ export const EntityPagerDutyCard: () => JSX.Element; // @public (undocumented) const isPluginApplicableToEntity: (entity: Entity) => boolean; - export { isPluginApplicableToEntity as isPagerDutyAvailable } - export { isPluginApplicableToEntity } // @public (undocumented) @@ -43,10 +43,8 @@ export class PagerDutyClient implements PagerDutyApi { } // @public (undocumented) -const pagerDutyPlugin: BackstagePlugin<{}, {}>; - +const pagerDutyPlugin: BackstagePlugin< {}, {}>; export { pagerDutyPlugin } - export { pagerDutyPlugin as plugin } // @public (undocumented) @@ -56,7 +54,6 @@ export function TriggerButton({ children, }: PropsWithChildren + import { BackstagePlugin } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; @@ -13,12 +15,10 @@ export const RegisterComponentPage: ({ catalogRouteRef, }: { }) => JSX.Element; // @public (undocumented) -const registerComponentPlugin: BackstagePlugin<{ - root: RouteRef; +const registerComponentPlugin: BackstagePlugin< { +root: RouteRef; }, {}>; - export { registerComponentPlugin as plugin } - export { registerComponentPlugin } // @public @deprecated @@ -26,7 +26,6 @@ export const Router: ({ catalogRouteRef }: { catalogRouteRef: RouteRef; }) => JSX.Element; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/rollbar/api-report.md b/plugins/rollbar/api-report.md index 44bd9d0d5e..c112b430f8 100644 --- a/plugins/rollbar/api-report.md +++ b/plugins/rollbar/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { DiscoveryApi } from '@backstage/core-plugin-api'; @@ -16,14 +18,12 @@ export const EntityPageRollbar: (_props: Props) => JSX.Element; // @public (undocumented) export const EntityRollbarContent: (_props: { - entity?: Entity| undefined; + entity?: Entity | undefined; }) => JSX.Element; // @public (undocumented) const isPluginApplicableToEntity: (entity: Entity) => boolean; - export { isPluginApplicableToEntity } - export { isPluginApplicableToEntity as isRollbarAvailable } // @public (undocumented) @@ -58,21 +58,18 @@ export class RollbarClient implements RollbarApi { getProjectItems(project: string): Promise; // (undocumented) getTopActiveItems(project: string, hours?: number, environment?: string): Promise; - } +} // @public (undocumented) -const rollbarPlugin: BackstagePlugin<{ - entityContent: RouteRef; +const rollbarPlugin: BackstagePlugin< { +entityContent: RouteRef; }, {}>; - export { rollbarPlugin as plugin } - export { rollbarPlugin } // @public (undocumented) export const Router: (_props: Props_2) => JSX.Element; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index cca05b3333..b0e3795d19 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { CatalogApi } from '@backstage/catalog-client'; import { Config } from '@backstage/config'; import { ContainerRunner } from '@backstage/backend-common'; @@ -121,7 +123,7 @@ export function createRouter(options: RouterOptions): Promise; // @public (undocumented) export const createTemplateAction: | undefined; + [name: string]: JsonValue | Partial | undefined; }>>(templateAction: TemplateAction) => TemplateAction; // @public (undocumented) @@ -177,7 +179,6 @@ export class TemplateActionRegistry { register(action: TemplateAction): void; } - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/scaffolder/api-report.md b/plugins/scaffolder/api-report.md index 7982ad997e..1df280404e 100644 --- a/plugins/scaffolder/api-report.md +++ b/plugins/scaffolder/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiHolder } from '@backstage/core-plugin-api'; import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; @@ -109,17 +111,14 @@ export const ScaffolderFieldExtensions: React_2.ComponentType; export const ScaffolderPage: () => JSX.Element; // @public (undocumented) -const scaffolderPlugin: BackstagePlugin<{ - root: RouteRef; +const scaffolderPlugin: BackstagePlugin< { +root: RouteRef; }, { - registerComponent: ExternalRouteRef; +registerComponent: ExternalRouteRef; }>; - export { scaffolderPlugin as plugin } - export { scaffolderPlugin } - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/search/api-report.md b/plugins/search/api-report.md index 5451ed9adb..02391f4d42 100644 --- a/plugins/search/api-report.md +++ b/plugins/search/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { AsyncState } from 'react-use/lib/useAsync'; import { BackstagePlugin } from '@backstage/core-plugin-api'; @@ -74,13 +76,11 @@ export const SearchPage: () => JSX.Element; export const SearchPageNext: () => JSX.Element; // @public (undocumented) -const searchPlugin: BackstagePlugin<{ - root: RouteRef; - nextRoot: RouteRef; +const searchPlugin: BackstagePlugin< { +root: RouteRef; +nextRoot: RouteRef; }, {}>; - export { searchPlugin as plugin } - export { searchPlugin } // @public (undocumented) @@ -96,7 +96,6 @@ export const SidebarSearch: () => JSX.Element; // @public (undocumented) export const useSearch: () => SearchContextValue; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/sentry/api-report.md b/plugins/sentry/api-report.md index c3cce9ed7c..69e1f0238b 100644 --- a/plugins/sentry/api-report.md +++ b/plugins/sentry/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { DiscoveryApi } from '@backstage/core-plugin-api'; @@ -28,7 +30,7 @@ export class ProductionSentryApi implements SentryApi { constructor(discoveryApi: DiscoveryApi, organization: string); // (undocumented) fetchIssues(project: string, statsFor: string): Promise; - } +} // @public (undocumented) export const Router: ({ entity }: { @@ -86,15 +88,12 @@ export const SentryIssuesWidget: ({ entity, statsFor, variant, }: { }) => JSX.Element; // @public (undocumented) -const sentryPlugin: BackstagePlugin<{ - root: RouteRef; +const sentryPlugin: BackstagePlugin< { +root: RouteRef; }, {}>; - export { sentryPlugin as plugin } - export { sentryPlugin } - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/shortcuts/api-report.md b/plugins/shortcuts/api-report.md index b29328d2e6..862af42e5e 100644 --- a/plugins/shortcuts/api-report.md +++ b/plugins/shortcuts/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Observable } from '@backstage/core-plugin-api'; @@ -48,8 +50,7 @@ export const Shortcuts: () => JSX.Element; export const shortcutsApiRef: ApiRef; // @public (undocumented) -export const shortcutsPlugin: BackstagePlugin<{}, {}>; - +export const shortcutsPlugin: BackstagePlugin< {}, {}>; // (No @packageDocumentation comment for this package) diff --git a/plugins/sonarqube/api-report.md b/plugins/sonarqube/api-report.md index 46bffb0a44..657eea0c66 100644 --- a/plugins/sonarqube/api-report.md +++ b/plugins/sonarqube/api-report.md @@ -4,14 +4,16 @@ ```ts +/// + import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { InfoCardVariants } from '@backstage/core-components'; // @public (undocumented) export const EntitySonarQubeCard: ({ variant, duplicationRatings, }: { - entity?: Entity| undefined; - variant?: InfoCardVariants| undefined; + entity?: Entity | undefined; + variant?: InfoCardVariants | undefined; duplicationRatings?: { greaterThan: number; rating: "1.0" | "2.0" | "3.0" | "4.0" | "5.0"; @@ -29,13 +31,10 @@ export const SonarQubeCard: ({ variant, duplicationRatings, }: { }) => JSX.Element; // @public (undocumented) -const sonarQubePlugin: BackstagePlugin<{}, {}>; - +const sonarQubePlugin: BackstagePlugin< {}, {}>; export { sonarQubePlugin as plugin } - export { sonarQubePlugin } - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/splunk-on-call/api-report.md b/plugins/splunk-on-call/api-report.md index 8ffe13660d..f8940e6f52 100644 --- a/plugins/splunk-on-call/api-report.md +++ b/plugins/splunk-on-call/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { ConfigApi } from '@backstage/core-plugin-api'; @@ -37,7 +39,7 @@ export class SplunkOnCallClient implements SplunkOnCallApi { getUsers(): Promise; // (undocumented) incidentAction({ routingKey, incidentType, incidentId, incidentDisplayName, incidentMessage, incidentStartTime, }: TriggerAlarmRequest): Promise; - } +} // @public (undocumented) export const SplunkOnCallPage: { @@ -50,19 +52,16 @@ export const SplunkOnCallPage: { }; // @public (undocumented) -const splunkOnCallPlugin: BackstagePlugin<{ - root: RouteRef; +const splunkOnCallPlugin: BackstagePlugin< { +root: RouteRef; }, {}>; - export { splunkOnCallPlugin as plugin } - export { splunkOnCallPlugin } // @public (undocumented) export class UnauthorizedError extends Error { } - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/tech-radar/api-report.md b/plugins/tech-radar/api-report.md index 8b98f1e494..985084c913 100644 --- a/plugins/tech-radar/api-report.md +++ b/plugins/tech-radar/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; @@ -110,15 +112,12 @@ export const TechRadarPage: { }; // @public (undocumented) -const techRadarPlugin: BackstagePlugin<{ - root: RouteRef; +const techRadarPlugin: BackstagePlugin< { +root: RouteRef; }, {}>; - export { techRadarPlugin as plugin } - export { techRadarPlugin } - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/techdocs/api-report.md b/plugins/techdocs/api-report.md index dbd5e3ab26..d6bb4b80ea 100644 --- a/plugins/techdocs/api-report.md +++ b/plugins/techdocs/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Config } from '@backstage/config'; @@ -31,7 +33,7 @@ export const EmbeddedDocsRouter: (_props: Props) => JSX.Element; // @public (undocumented) export const EntityTechdocsContent: (_props: { - entity?: Entity| undefined; + entity?: Entity | undefined; }) => JSX.Element; // @public (undocumented) @@ -87,13 +89,11 @@ export const TechDocsCustomHome: ({ tabsConfig, }: { export const TechdocsPage: () => JSX.Element; // @public (undocumented) -const techdocsPlugin: BackstagePlugin<{ - root: RouteRef; - entityContent: RouteRef; +const techdocsPlugin: BackstagePlugin< { +root: RouteRef; +entityContent: RouteRef; }, {}>; - export { techdocsPlugin as plugin } - export { techdocsPlugin } // @public (undocumented) @@ -143,7 +143,6 @@ export class TechDocsStorageClient implements TechDocsStorageApi { syncEntityDocs(entityId: EntityName): Promise; } - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/todo/api-report.md b/plugins/todo/api-report.md index bdfea8b8f9..7763642c65 100644 --- a/plugins/todo/api-report.md +++ b/plugins/todo/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; @@ -15,8 +17,7 @@ export const EntityTodoContent: () => JSX.Element; export const todoApiRef: ApiRef; // @public (undocumented) -export const todoPlugin: BackstagePlugin<{}, {}>; - +export const todoPlugin: BackstagePlugin< {}, {}>; // (No @packageDocumentation comment for this package) diff --git a/plugins/user-settings/api-report.md b/plugins/user-settings/api-report.md index dc85df0d3d..47ecf012d5 100644 --- a/plugins/user-settings/api-report.md +++ b/plugins/user-settings/api-report.md @@ -4,6 +4,8 @@ ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; import { IconComponent } from '@backstage/core-plugin-api'; @@ -47,12 +49,10 @@ export const UserSettingsPage: ({ providerSettings }: { export const UserSettingsPinToggle: () => JSX.Element; // @public (undocumented) -const userSettingsPlugin: BackstagePlugin<{ - settingsPage: RouteRef; +const userSettingsPlugin: BackstagePlugin< { +settingsPage: RouteRef; }, {}>; - export { userSettingsPlugin as plugin } - export { userSettingsPlugin } // @public (undocumented) @@ -70,7 +70,6 @@ export const useUserProfile: () => { displayName: string; }; - // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/welcome/api-report.md b/plugins/welcome/api-report.md index 727be3ad75..8ad4a57c6d 100644 --- a/plugins/welcome/api-report.md +++ b/plugins/welcome/api-report.md @@ -4,19 +4,18 @@ ```ts +/// + import { BackstagePlugin } from '@backstage/core-plugin-api'; // @public (undocumented) export const WelcomePage: () => JSX.Element; // @public (undocumented) -const welcomePlugin: BackstagePlugin<{}, {}>; - +const welcomePlugin: BackstagePlugin< {}, {}>; export { welcomePlugin as plugin } - export { welcomePlugin } - // (No @packageDocumentation comment for this package) ``` From 1a6362b423ea03c130c265b13fbdce0b0c14b52b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 11 Jul 2021 16:40:46 +0200 Subject: [PATCH 097/117] scripts/api-extractor: generate api-reports for previously unsupported packages Signed-off-by: Patrik Oldsberg --- packages/core-components/api-report.md | 581 ++++++++++++++++++++ plugins/catalog-backend/api-report.md | 671 +++++++++++++++++++++++ plugins/catalog-react/api-report.md | 329 +++++++++++ plugins/catalog/api-report.md | 198 +++++++ plugins/github-deployments/api-report.md | 59 ++ scripts/api-extractor.ts | 8 - 6 files changed, 1838 insertions(+), 8 deletions(-) create mode 100644 packages/core-components/api-report.md create mode 100644 plugins/catalog-backend/api-report.md create mode 100644 plugins/catalog-react/api-report.md create mode 100644 plugins/catalog/api-report.md create mode 100644 plugins/github-deployments/api-report.md diff --git a/packages/core-components/api-report.md b/packages/core-components/api-report.md new file mode 100644 index 0000000000..5ab3682508 --- /dev/null +++ b/packages/core-components/api-report.md @@ -0,0 +1,581 @@ +## API Report File for "@backstage/core-components" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +/// + +import { ApiRef } from '@backstage/core-plugin-api'; +import { BackstageIdentityApi } from '@backstage/core-plugin-api'; +import { Breadcrumbs as Breadcrumbs_2 } from '@material-ui/core'; +import { ButtonProps } from '@material-ui/core'; +import { ButtonTypeMap } from '@material-ui/core'; +import { CardHeaderProps } from '@material-ui/core'; +import { Column } from 'material-table'; +import { CommonProps } from '@material-ui/core/OverridableComponent'; +import { ComponentClass } from 'react'; +import { ComponentProps } from 'react'; +import { ComponentType } from 'react'; +import { Context } from 'react'; +import { default as CSS_2 } from 'csstype'; +import { CSSProperties } from 'react'; +import { default as dagre_2 } from 'dagre'; +import { ElementType } from 'react'; +import { ErrorInfo } from 'react'; +import { IconComponent } from '@backstage/core-plugin-api'; +import { LinearProgressProps } from '@material-ui/core'; +import { LinkProps as LinkProps_2 } from '@material-ui/core'; +import { LinkProps as LinkProps_3 } from 'react-router-dom'; +import { MaterialTableProps } from 'material-table'; +import { NavLinkProps } from 'react-router-dom'; +import { ProfileInfoApi } from '@backstage/core-plugin-api'; +import { PropsWithChildren } from 'react'; +import PropTypes from 'prop-types'; +import { default as React_2 } from 'react'; +import * as React_3 from 'react'; +import { ReactElement } from 'react'; +import { ReactNode } from 'react'; +import { SessionApi } from '@backstage/core-plugin-api'; +import { SignInPageProps } from '@backstage/core-plugin-api'; +import { SparklinesLineProps } from 'react-sparklines'; +import { SparklinesProps } from 'react-sparklines'; +import { StyledComponentProps } from '@material-ui/core'; +import { StyleRules } from '@material-ui/styles'; +import { TabProps } from '@material-ui/core'; +import { TextTruncateProps } from 'react-text-truncate'; +import { Theme } from '@material-ui/core'; +import { TooltipProps } from '@material-ui/core'; +import { WithStyles } from '@material-ui/core'; + +// @public (undocumented) +export const AlertDisplay: () => JSX.Element | null; + +// @public (undocumented) +enum Alignment { + // (undocumented) + DOWN_LEFT = "DL", + // (undocumented) + DOWN_RIGHT = "DR", + // (undocumented) + UP_LEFT = "UL", + // (undocumented) + UP_RIGHT = "UR" +} + +// @public (undocumented) +export const Avatar: ({ displayName, picture, customStyles }: AvatarProps) => JSX.Element; + +// @public (undocumented) +export const Breadcrumbs: ({ children, ...props }: Props_25) => JSX.Element; + +// @public (undocumented) +export const BrokenImageIcon: IconComponent; + +// @public +export const Button: React_2.ForwardRefExoticComponent>> & React_2.RefAttributes>; + +// @public (undocumented) +export const CardTab: ({ children, ...props }: PropsWithChildren) => JSX.Element; + +// @public (undocumented) +export const CatalogIcon: IconComponent; + +// @public (undocumented) +export const ChatIcon: IconComponent; + +// @public (undocumented) +export const CodeSnippet: ({ text, language, showLineNumbers, showCopyCodeButton, highlightedNumbers, customStyle, }: Props_2) => JSX.Element; + +// @public (undocumented) +export const Content: ({ className, stretch, noPadding, children, ...props }: PropsWithChildren) => JSX.Element; + +// @public (undocumented) +export const ContentHeader: ({ description, title, titleComponent: TitleComponent, children, textAlign, }: PropsWithChildren) => JSX.Element; + +// @public (undocumented) +export const CopyTextButton: { + (props: Props_3): JSX.Element; + propTypes: { + text: PropTypes.Validator; + tooltipDelay: PropTypes.Requireable; + tooltipText: PropTypes.Requireable; + }; +}; + +// @public (undocumented) +export const DashboardIcon: IconComponent; + +// @public (undocumented) +type DependencyEdge = T & { + from: string; + to: string; + label?: string; +}; + +// @public (undocumented) +export function DependencyGraph({ edges, nodes, renderNode, direction, align, nodeMargin, edgeMargin, rankMargin, paddingX, paddingY, acyclicer, ranker, labelPosition, labelOffset, edgeRanks, edgeWeight, renderLabel, defs, ...svgProps }: DependencyGraphProps): JSX.Element; + +declare namespace DependencyGraphTypes { + export { + DependencyEdge, + GraphEdge, + RenderLabelProps, + RenderLabelFunction, + DependencyNode, + GraphNode, + RenderNodeProps, + RenderNodeFunction, + EdgeProperties, + Direction, + Alignment, + Ranker, + LabelPosition + } +} +export { DependencyGraphTypes } + +// @public (undocumented) +type DependencyNode = T & { + id: string; +}; + +// @public (undocumented) +enum Direction { + // (undocumented) + BOTTOM_TOP = "BT", + // (undocumented) + LEFT_RIGHT = "LR", + // (undocumented) + RIGHT_LEFT = "RL", + // (undocumented) + TOP_BOTTOM = "TB" +} + +// @public (undocumented) +export const DismissableBanner: ({ variant, message, id, fixed, }: Props_4) => JSX.Element; + +// @public (undocumented) +export const DocsIcon: IconComponent; + +// @public (undocumented) +type EdgeProperties = { + label?: string; + width?: number; + height?: number; + labeloffset?: number; + labelpos?: LabelPosition; + minlen?: number; + weight?: number; + [customKey: string]: any; +}; + +// @public (undocumented) +export const EmailIcon: IconComponent; + +// @public (undocumented) +export const EmptyState: ({ title, description, missing, action }: Props_5) => JSX.Element; + +// @public (undocumented) +export const ErrorBoundary: ComponentClass; + +// @public (undocumented) +export type ErrorBoundaryProps = { + slackChannel?: string | SlackChannel; + onError?: (error: Error, errorInfo: string) => null; +}; + +// @public (undocumented) +export const ErrorPage: ({ status, statusMessage, additionalInfo, }: IErrorPageProps) => JSX.Element; + +// @public +export const ErrorPanel: ({ title, error, defaultExpanded, children, }: PropsWithChildren) => JSX.Element; + +// @public (undocumented) +export type ErrorPanelProps = { + error: Error; + defaultExpanded?: boolean; + title?: string; +}; + +// @public (undocumented) +export const FeatureCalloutCircular: ({ featureId, title, description, children, }: PropsWithChildren) => JSX.Element; + +// @public (undocumented) +export const Gauge: (props: Props_14) => JSX.Element; + +// @public (undocumented) +export const GaugeCard: (props: Props_13) => JSX.Element; + +// @public (undocumented) +export const GitHubIcon: IconComponent; + +// @public (undocumented) +type GraphEdge = DependencyEdge & dagre_2.GraphEdge & EdgeProperties; + +// @public (undocumented) +type GraphNode = dagre_2.Node>; + +// @public (undocumented) +export const GroupIcon: IconComponent; + +// @public (undocumented) +export const Header: ({ children, pageTitleOverride, style, subtitle, title, tooltip, type, typeLink, }: PropsWithChildren) => JSX.Element; + +// @public (undocumented) +export const HeaderIconLinkRow: ({ links }: Props_8) => JSX.Element; + +// @public (undocumented) +export const HeaderLabel: ({ label, value, url }: HeaderLabelProps) => JSX.Element; + +// @public (undocumented) +export const HeaderTabs: ({ tabs, onChange, selectedIndex, }: HeaderTabsProps) => JSX.Element; + +// @public (undocumented) +export const HelpIcon: IconComponent; + +// @public (undocumented) +export const HomepageTimer: () => JSX.Element | null; + +// @public (undocumented) +export const HorizontalScrollGrid: (props: PropsWithChildren) => JSX.Element; + +// @public (undocumented) +export type IconLinkVerticalProps = { + color?: 'primary' | 'secondary'; + disabled?: boolean; + href?: string; + icon?: React_2.ReactNode; + label: string; + onClick?: React_2.MouseEventHandler; + title?: string; +}; + +// @public (undocumented) +export const InfoCard: ({ title, subheader, divider, deepLink, slackChannel, errorBoundaryProps, variant, children, headerStyle, headerProps, action, actionsClassName, actions, cardClassName, actionsTopRight, className, noPadding, titleTypographyProps, }: Props_20) => JSX.Element; + +// @public (undocumented) +export type InfoCardVariants = 'flex' | 'fullHeight' | 'gridItem'; + +// @public (undocumented) +export const IntroCard: (props: IntroCardProps) => JSX.Element; + +// @public @deprecated +export const ItemCard: ({ description, tags, title, type, subtitle, label, onClick, href, }: ItemCardProps) => JSX.Element; + +// @public +export const ItemCardGrid: (props: ItemCardGridProps) => JSX.Element; + +// @public (undocumented) +export type ItemCardGridProps = Partial> & { + children?: React_2.ReactNode; +}; + +// @public +export const ItemCardHeader: (props: ItemCardHeaderProps) => JSX.Element; + +// @public (undocumented) +export type ItemCardHeaderProps = Partial> & { + title?: React_2.ReactNode; + subtitle?: React_2.ReactNode; + children?: React_2.ReactNode; +}; + +// @public (undocumented) +enum LabelPosition { + // (undocumented) + CENTER = "c", + // (undocumented) + LEFT = "l", + // (undocumented) + RIGHT = "r" +} + +// @public (undocumented) +export const Lifecycle: (props: Props_10) => JSX.Element; + +// @public (undocumented) +export const LinearGauge: ({ value }: Props_15) => JSX.Element | null; + +// @public +export const Link: React_2.ForwardRefExoticComponent & React_2.RefAttributes>; + +// @public (undocumented) +export type LinkProps = LinkProps_2 & LinkProps_3 & { + component?: ElementType; +}; + +// @public +export const MarkdownContent: ({ content, dialect }: Props_11) => JSX.Element; + +// @public (undocumented) +export const MissingAnnotationEmptyState: ({ annotation }: Props_6) => JSX.Element; + +// @public (undocumented) +export const OAuthRequestDialog: () => JSX.Element; + +// @public (undocumented) +export const OverflowTooltip: (props: Props_12) => JSX.Element; + +// @public (undocumented) +export const Page: ({ themeId, children }: PropsWithChildren) => JSX.Element; + +// @public (undocumented) +export const Progress: (props: PropsWithChildren) => JSX.Element; + +// @public (undocumented) +enum Ranker { + // (undocumented) + LONGEST_PATH = "longest-path", + // (undocumented) + NETWORK_SIMPLEX = "network-simplex", + // (undocumented) + TIGHT_TREE = "tight-tree" +} + +// @public (undocumented) +type RenderLabelFunction = (props: RenderLabelProps) => React.ReactNode; + +// @public (undocumented) +type RenderLabelProps = { + edge: DependencyEdge; +}; + +// @public (undocumented) +type RenderNodeFunction = (props: RenderNodeProps) => React.ReactNode; + +// @public (undocumented) +type RenderNodeProps = { + node: DependencyNode; +}; + +// @public +export const ResponseErrorPanel: ({ title, error, defaultExpanded, }: ErrorPanelProps) => JSX.Element; + +// @public (undocumented) +export const RoutedTabs: ({ routes }: { + routes: SubRoute_2[]; +}) => JSX.Element; + +// @public (undocumented) +export const Select: ({ multiple, items, label, placeholder, selected, onChange, triggerReset, }: SelectProps) => JSX.Element; + +// @public (undocumented) +export const Sidebar: ({ openDelayMs, closeDelayMs, children, }: PropsWithChildren) => JSX.Element; + +// @public (undocumented) +export const SIDEBAR_INTRO_LOCAL_STORAGE = "@backstage/core/sidebar-intro-dismissed"; + +// @public (undocumented) +export const sidebarConfig: { + drawerWidthClosed: number; + drawerWidthOpen: number; + defaultOpenDelayMs: number; + defaultCloseDelayMs: number; + defaultFadeDuration: number; + logoHeight: number; + iconContainerWidth: number; + iconSize: number; + iconPadding: number; + selectedIndicatorWidth: number; + userBadgePadding: number; + userBadgeDiameter: number; +}; + +// @public (undocumented) +export const SidebarContext: Context; + +// @public (undocumented) +export type SidebarContextType = { + isOpen: boolean; +}; + +// @public (undocumented) +export const SidebarDivider: React_2.ComponentType, HTMLHRElement>, "children" | "slot" | "style" | "title" | "id" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | keyof React_2.ClassAttributes> & StyledComponentProps<"root"> & { + className?: string | undefined; +}>; + +// @public (undocumented) +export const SidebarIntro: () => JSX.Element | null; + +// @public (undocumented) +export const SidebarItem: React_2.ForwardRefExoticComponent>; + +// @public (undocumented) +export const SidebarPage: (props: PropsWithChildren<{}>) => JSX.Element; + +// @public (undocumented) +export const SidebarPinStateContext: React_2.Context; + +// @public (undocumented) +export type SidebarPinStateContextType = { + isPinned: boolean; + toggleSidebarPinState: () => any; +}; + +// @public (undocumented) +export const SidebarScrollWrapper: React_2.ComponentType, HTMLDivElement>, "children" | "slot" | "style" | "title" | "id" | keyof React_2.ClassAttributes | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture"> & StyledComponentProps<"root"> & { + className?: string | undefined; +}>; + +// @public (undocumented) +export const SidebarSearchField: (props: SidebarSearchFieldProps) => JSX.Element; + +// @public (undocumented) +export const SidebarSpace: React_2.ComponentType, HTMLDivElement>, "children" | "slot" | "style" | "title" | "id" | keyof React_2.ClassAttributes | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture"> & StyledComponentProps<"root"> & { + className?: string | undefined; +}>; + +// @public (undocumented) +export const SidebarSpacer: React_2.ComponentType, HTMLDivElement>, "children" | "slot" | "style" | "title" | "id" | keyof React_2.ClassAttributes | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture"> & StyledComponentProps<"root"> & { + className?: string | undefined; +}>; + +// @public (undocumented) +export const SignInPage: (props: Props_23) => JSX.Element; + +// @public (undocumented) +export type SignInProviderConfig = { + id: string; + title: string; + message: string; + apiRef: ApiRef; +}; + +// @public (undocumented) +export const SimpleStepper: ({ children, elevated, onStepChange, activeStep, }: PropsWithChildren) => JSX.Element; + +// @public (undocumented) +export const SimpleStepperStep: ({ title, children, end, actions, ...muiProps }: PropsWithChildren) => JSX.Element; + +// @public (undocumented) +export const StatusAborted: (props: PropsWithChildren<{}>) => JSX.Element; + +// @public (undocumented) +export const StatusError: (props: PropsWithChildren<{}>) => JSX.Element; + +// @public (undocumented) +export const StatusOK: (props: PropsWithChildren<{}>) => JSX.Element; + +// @public (undocumented) +export const StatusPending: (props: PropsWithChildren<{}>) => JSX.Element; + +// @public (undocumented) +export const StatusRunning: (props: PropsWithChildren<{}>) => JSX.Element; + +// @public (undocumented) +export const StatusWarning: (props: PropsWithChildren<{}>) => JSX.Element; + +// @public (undocumented) +export const StructuredMetadataTable: ({ metadata, dense, options, }: Props_16) => JSX.Element; + +// @public (undocumented) +export const SubvalueCell: ({ value, subvalue }: SubvalueCellProps) => JSX.Element; + +// @public (undocumented) +export const SupportButton: ({ title, children }: SupportButtonProps) => JSX.Element; + +// @public (undocumented) +export type SupportConfig = { + url: string; + items: SupportItem[]; +}; + +// @public (undocumented) +export type SupportItem = { + title: string; + icon?: string; + links: SupportItemLink[]; +}; + +// @public (undocumented) +export type SupportItemLink = { + url: string; + title: string; +}; + +// @public (undocumented) +export type Tab = { + id: string; + label: string; + tabProps?: TabProps; +}; + +// @public (undocumented) +export const TabbedCard: ({ slackChannel, errorBoundaryProps, children, title, deepLink, value, onChange, }: PropsWithChildren) => JSX.Element; + +// @public +export const TabbedLayout: { + ({ children }: PropsWithChildren<{}>): JSX.Element; + Route: (props: SubRoute) => null; +}; + +// @public (undocumented) +export function Table({ columns, options, title, subtitle, filters, initialState, emptyContent, onStateChange, ...props }: TableProps): JSX.Element; + +// @public (undocumented) +export interface TableColumn extends Column { + // (undocumented) + highlight?: boolean; + // (undocumented) + width?: string; +} + +// @public (undocumented) +export type TableFilter = { + column: string; + type: 'select' | 'multiple-select' | 'checkbox-tree'; +}; + +// @public (undocumented) +export interface TableProps extends MaterialTableProps { + // (undocumented) + columns: TableColumn[]; + // (undocumented) + emptyContent?: ReactNode; + // (undocumented) + filters?: TableFilter[]; + // (undocumented) + initialState?: TableState; + // (undocumented) + onStateChange?: (state: TableState) => any; + // (undocumented) + subtitle?: string; +} + +// @public (undocumented) +export type TableState = { + search?: string; + filtersOpen?: boolean; + filters?: SelectedFilters; +}; + +// @public (undocumented) +export const Tabs: ({ tabs }: TabsProps) => JSX.Element; + +// @public (undocumented) +export const TrendLine: (props: SparklinesProps & Pick & { + title?: string; +}) => JSX.Element | null; + +// @public (undocumented) +export function useQueryParamState(stateName: string, +debounceTime?: number): [T | undefined, SetQueryParams]; + +// @public (undocumented) +export const UserIcon: IconComponent; + +// @public (undocumented) +export function useSupportConfig(): SupportConfig; + +// @public (undocumented) +export const WarningIcon: IconComponent; + +// @public +export const WarningPanel: (props: Props_17) => JSX.Element; + +// (No @packageDocumentation comment for this package) + +``` diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md new file mode 100644 index 0000000000..a2c7e0b3a7 --- /dev/null +++ b/plugins/catalog-backend/api-report.md @@ -0,0 +1,671 @@ +## API Report File for "@backstage/plugin-catalog-backend" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +/// + +import { Account } from 'aws-sdk/clients/organizations'; +import { BitbucketIntegration } from '@backstage/integration'; +import { Config } from '@backstage/config'; +import { DocumentCollator } from '@backstage/search-common'; +import { Entity } from '@backstage/catalog-model'; +import { EntityName } from '@backstage/catalog-model'; +import { EntityPolicy } from '@backstage/catalog-model'; +import { EntityRelationSpec } from '@backstage/catalog-model'; +import express from 'express'; +import { IndexableDocument } from '@backstage/search-common'; +import { JsonObject } from '@backstage/config'; +import { JsonValue } from '@backstage/config'; +import { Knex } from 'knex'; +import { Location as Location_2 } from '@backstage/catalog-model'; +import { LocationSpec } from '@backstage/catalog-model'; +import { Logger as Logger_2 } from 'winston'; +import { Organizations } from 'aws-sdk'; +import { PluginDatabaseManager } from '@backstage/backend-common'; +import { PluginEndpointDiscovery } from '@backstage/backend-common'; +import { ResourceEntityV1alpha1 } from '@backstage/catalog-model'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { ScmIntegrations } from '@backstage/integration'; +import { UrlReader } from '@backstage/backend-common'; +import { Validators } from '@backstage/catalog-model'; + +// @public (undocumented) +export type AddLocationResult = { + location: Location_2; + entities: Entity[]; +}; + +// @public (undocumented) +export type AnalyzeLocationRequest = { + location: LocationSpec; +}; + +// @public (undocumented) +export type AnalyzeLocationResponse = { + existingEntityFiles: AnalyzeLocationExistingEntity[]; + generateEntities: AnalyzeLocationGenerateEntity[]; +}; + +// @public (undocumented) +export class AnnotateLocationEntityProcessor implements CatalogProcessor { + constructor(options: Options_2); + // (undocumented) + preProcessEntity(entity: Entity, location: LocationSpec, _: CatalogProcessorEmit, originLocation: LocationSpec): Promise; +} + +// @public (undocumented) +export class AnnotateScmSlugEntityProcessor implements CatalogProcessor { + constructor(opts: { + scmIntegrationRegistry: ScmIntegrationRegistry; + }); + // (undocumented) + static fromConfig(config: Config): AnnotateScmSlugEntityProcessor; + // (undocumented) + preProcessEntity(entity: Entity, location: LocationSpec): Promise; +} + +// @public +export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor { + constructor(options: { + provider: AwsOrganizationProviderConfig; + logger: Logger_2; + }); + // (undocumented) + extractInformationFromArn(arn: string): { + accountId: string; + organizationId: string; + }; + // (undocumented) + static fromConfig(config: Config, options: { + logger: Logger_2; + }): AwsOrganizationCloudAccountProcessor; + // (undocumented) + getAwsAccounts(): Promise; + // (undocumented) + logger: Logger_2; + // (undocumented) + mapAccountToComponent(account: Account): ResourceEntityV1alpha1; + // (undocumented) + normalizeName(name: string): string; + // (undocumented) + organizations: Organizations; + // (undocumented) + provider: AwsOrganizationProviderConfig; + // (undocumented) + readLocation(location: LocationSpec, _optional: boolean, emit: CatalogProcessorEmit): Promise; +} + +// @public (undocumented) +export class BitbucketDiscoveryProcessor implements CatalogProcessor { + constructor(options: { + integrations: ScmIntegrationRegistry; + parser?: BitbucketRepositoryParser; + logger: Logger_2; + }); + // (undocumented) + static fromConfig(config: Config, options: { + parser?: BitbucketRepositoryParser; + logger: Logger_2; + }): BitbucketDiscoveryProcessor; + // (undocumented) + readLocation(location: LocationSpec, _optional: boolean, emit: CatalogProcessorEmit): Promise; +} + +// @public (undocumented) +export type BitbucketRepositoryParser = (options: { + integration: BitbucketIntegration; + target: string; + logger: Logger_2; +}) => AsyncIterable; + +// @public (undocumented) +export class BuiltinKindsEntityProcessor implements CatalogProcessor { + // (undocumented) + postProcessEntity(entity: Entity, _location: LocationSpec, emit: CatalogProcessorEmit): Promise; + // (undocumented) + validateEntityKind(entity: Entity): Promise; +} + +// @public +export class CatalogBuilder { + constructor(env: CatalogEnvironment); + addEntityPolicy(...policies: EntityPolicy[]): CatalogBuilder; + addProcessor(...processors: CatalogProcessor[]): CatalogBuilder; + build(): Promise<{ + entitiesCatalog: EntitiesCatalog; + locationsCatalog: LocationsCatalog; + higherOrderOperation: HigherOrderOperation; + locationAnalyzer: LocationAnalyzer; + }>; + // (undocumented) + static create(env: CatalogEnvironment): Promise; + replaceEntityPolicies(policies: EntityPolicy[]): CatalogBuilder; + replaceProcessors(processors: CatalogProcessor[]): CatalogBuilder; + setEntityDataParser(parser: CatalogProcessorParser): CatalogBuilder; + setFieldFormatValidators(validators: Partial): CatalogBuilder; + setPlaceholderResolver(key: string, resolver: PlaceholderResolver): CatalogBuilder; +} + +// @public (undocumented) +export interface CatalogEntityDocument extends IndexableDocument { + // (undocumented) + componentType: string; + // (undocumented) + kind: string; + // (undocumented) + lifecycle: string; + // (undocumented) + namespace: string; + // (undocumented) + owner: string; +} + +// @public (undocumented) +export interface CatalogProcessingOrchestrator { + // (undocumented) + process(request: EntityProcessingRequest): Promise; +} + +// @public (undocumented) +export type CatalogProcessor = { + readLocation?(location: LocationSpec, optional: boolean, emit: CatalogProcessorEmit, parser: CatalogProcessorParser): Promise; + preProcessEntity?(entity: Entity, location: LocationSpec, emit: CatalogProcessorEmit, originLocation: LocationSpec): Promise; + validateEntityKind?(entity: Entity): Promise; + postProcessEntity?(entity: Entity, location: LocationSpec, emit: CatalogProcessorEmit): Promise; + handleError?(error: Error, location: LocationSpec, emit: CatalogProcessorEmit): Promise; +}; + +// @public (undocumented) +export type CatalogProcessorEmit = (generated: CatalogProcessorResult) => void; + +// @public (undocumented) +export type CatalogProcessorEntityResult = { + type: 'entity'; + entity: Entity; + location: LocationSpec; +}; + +// @public (undocumented) +export type CatalogProcessorErrorResult = { + type: 'error'; + error: Error; + location: LocationSpec; +}; + +// @public (undocumented) +export type CatalogProcessorLocationResult = { + type: 'location'; + location: LocationSpec; + optional: boolean; +}; + +// @public +export type CatalogProcessorParser = (options: { + data: Buffer; + location: LocationSpec; +}) => AsyncIterable; + +// @public (undocumented) +export type CatalogProcessorRelationResult = { + type: 'relation'; + relation: EntityRelationSpec; + entityRef?: string; +}; + +// @public (undocumented) +export type CatalogProcessorResult = CatalogProcessorLocationResult | CatalogProcessorEntityResult | CatalogProcessorRelationResult | CatalogProcessorErrorResult; + +// @public (undocumented) +export class CodeOwnersProcessor implements CatalogProcessor { + constructor(options: { + integrations: ScmIntegrations; + logger: Logger_2; + reader: UrlReader; + }); + // (undocumented) + static fromConfig(config: Config, options: { + logger: Logger_2; + reader: UrlReader; + }): CodeOwnersProcessor; + // (undocumented) + preProcessEntity(entity: Entity, location: LocationSpec): Promise; +} + +// @public +export class CommonDatabase implements Database { + constructor(database: Knex, logger: Logger_2); + // (undocumented) + addEntities(txOpaque: Transaction, request: DbEntityRequest[]): Promise; + // (undocumented) + addLocation(txOpaque: Transaction, location: Location_2): Promise; + // (undocumented) + addLocationUpdateLogEvent(locationId: string, status: DatabaseLocationUpdateLogStatus, entityName?: string | string[], message?: string): Promise; + // (undocumented) + entities(txOpaque: Transaction, request?: DbEntitiesRequest): Promise; + // (undocumented) + entityByName(txOpaque: Transaction, name: EntityName): Promise; + // (undocumented) + entityByUid(txOpaque: Transaction, uid: string): Promise; + // (undocumented) + location(id: string): Promise; + // (undocumented) + locationHistory(id: string): Promise; + // (undocumented) + locations(): Promise; + // (undocumented) + removeEntityByUid(txOpaque: Transaction, uid: string): Promise; + // (undocumented) + removeLocation(txOpaque: Transaction, id: string): Promise; + // (undocumented) + setRelations(txOpaque: Transaction, originatingEntityId: string, relations: EntityRelationSpec[]): Promise; + // (undocumented) + transaction(fn: (tx: Transaction) => Promise): Promise; + // (undocumented) + updateEntity(txOpaque: Transaction, request: DbEntityRequest, matchingEtag?: string, matchingGeneration?: number): Promise; +} + +// @public (undocumented) +export function createNextRouter(options: RouterOptions_2): Promise; + +// @public (undocumented) +export function createRouter(options: RouterOptions): Promise; + +// @public +export type Database = { + transaction(fn: (tx: Transaction) => Promise): Promise; + addEntities(tx: Transaction, request: DbEntityRequest[]): Promise; + updateEntity(tx: Transaction, request: DbEntityRequest, matchingEtag?: string, matchingGeneration?: number): Promise; + entities(tx: Transaction, request?: DbEntitiesRequest): Promise; + entityByName(tx: Transaction, name: EntityName): Promise; + entityByUid(tx: Transaction, uid: string): Promise; + removeEntityByUid(tx: Transaction, uid: string): Promise; + setRelations(tx: Transaction, entityUid: string, relations: EntityRelationSpec[]): Promise; + addLocation(tx: Transaction, location: Location_2): Promise; + removeLocation(tx: Transaction, id: string): Promise; + location(id: string): Promise; + locations(): Promise; + locationHistory(id: string): Promise; + addLocationUpdateLogEvent(locationId: string, status: DatabaseLocationUpdateLogStatus, entityName?: string | string[], message?: string): Promise; +}; + +// @public (undocumented) +export class DatabaseEntitiesCatalog implements EntitiesCatalog { + constructor(database: Database, logger: Logger_2); + // (undocumented) + batchAddOrUpdateEntities(requests: EntityUpsertRequest[], options?: { + locationId?: string; + dryRun?: boolean; + outputEntities?: boolean; + }): Promise; + // (undocumented) + entities(request?: EntitiesRequest): Promise; + // (undocumented) + removeEntityByUid(uid: string): Promise; +} + +// @public (undocumented) +export class DatabaseLocationsCatalog implements LocationsCatalog { + constructor(database: Database); + // (undocumented) + addLocation(location: Location_2): Promise; + // (undocumented) + location(id: string): Promise; + // (undocumented) + locationHistory(id: string): Promise; + // (undocumented) + locations(): Promise; + // (undocumented) + logUpdateFailure(locationId: string, error?: Error, entityName?: string): Promise; + // (undocumented) + logUpdateSuccess(locationId: string, entityName?: string | string[]): Promise; + // (undocumented) + removeLocation(id: string): Promise; +} + +// @public (undocumented) +export class DatabaseManager { + // (undocumented) + static createDatabase(knex: Knex, options?: Partial): Promise; + // (undocumented) + static createInMemoryDatabase(): Promise; + // (undocumented) + static createInMemoryDatabaseConnection(): Promise; + // (undocumented) + static createTestDatabase(): Promise; + // (undocumented) + static createTestDatabaseConnection(): Promise; +} + +// @public (undocumented) +export type DbEntityRequest = { + locationId?: string; + entity: Entity; + relations: EntityRelationSpec[]; +}; + +// @public (undocumented) +export type DbEntityResponse = { + locationId?: string; + entity: Entity; +}; + +// @public (undocumented) +export class DefaultCatalogCollator implements DocumentCollator { + constructor({ discovery, locationTemplate, }: { + discovery: PluginEndpointDiscovery; + locationTemplate?: string; + }); + // (undocumented) + protected applyArgsToFormat(format: string, args: Record): string; + // (undocumented) + protected discovery: PluginEndpointDiscovery; + // (undocumented) + execute(): Promise; + // (undocumented) + protected locationTemplate: string; + // (undocumented) + readonly type: string; +} + +// @public (undocumented) +export class DefaultCatalogProcessingOrchestrator implements CatalogProcessingOrchestrator { + constructor(options: { + processors: CatalogProcessor[]; + integrations: ScmIntegrationRegistry; + logger: Logger_2; + parser: CatalogProcessorParser; + policy: EntityPolicy; + }); + // (undocumented) + process(request: EntityProcessingRequest): Promise; +} + +// @public +export function durationText(startTimestamp: [number, number]): string; + +// @public (undocumented) +export type EntitiesCatalog = { + entities(request?: EntitiesRequest): Promise; + removeEntityByUid(uid: string): Promise; + batchAddOrUpdateEntities(requests: EntityUpsertRequest[], options?: { + locationId?: string; + dryRun?: boolean; + outputEntities?: boolean; + }): Promise; +}; + +// @public +export type EntitiesSearchFilter = { + key: string; + matchValueIn?: string[]; +}; + +// @public (undocumented) +function entity(atLocation: LocationSpec, newEntity: Entity): CatalogProcessorResult; + +// @public +export type EntityFilter = { + anyOf: { + allOf: EntitiesSearchFilter[]; + }[]; +}; + +// @public +export type EntityPagination = { + limit?: number; + offset?: number; + after?: string; +}; + +// @public (undocumented) +export type EntityProcessingRequest = { + entity: Entity; + state: Map; +}; + +// @public (undocumented) +export type EntityProcessingResult = { + ok: true; + state: Map; + completedEntity: Entity; + deferredEntities: DeferredEntity[]; + relations: EntityRelationSpec[]; + errors: Error[]; +} | { + ok: false; + errors: Error[]; +}; + +// @public (undocumented) +export class FileReaderProcessor implements CatalogProcessor { + // (undocumented) + readLocation(location: LocationSpec, optional: boolean, emit: CatalogProcessorEmit): Promise; +} + +// @public (undocumented) +function generalError(atLocation: LocationSpec, message: string): CatalogProcessorResult; + +// @public +export class GithubDiscoveryProcessor implements CatalogProcessor { + constructor(options: { + integrations: ScmIntegrations; + logger: Logger_2; + }); + // (undocumented) + static fromConfig(config: Config, options: { + logger: Logger_2; + }): GithubDiscoveryProcessor; + // (undocumented) + readLocation(location: LocationSpec, _optional: boolean, emit: CatalogProcessorEmit): Promise; +} + +// @alpha +export class GithubMultiOrgReaderProcessor implements CatalogProcessor { + constructor(options: { + integrations: ScmIntegrations; + logger: Logger_2; + orgs: GithubMultiOrgConfig; + }); + // (undocumented) + static fromConfig(config: Config, options: { + logger: Logger_2; + }): GithubMultiOrgReaderProcessor; + // (undocumented) + readLocation(location: LocationSpec, _optional: boolean, emit: CatalogProcessorEmit): Promise; +} + +// @public +export class GithubOrgReaderProcessor implements CatalogProcessor { + constructor(options: { + integrations: ScmIntegrations; + logger: Logger_2; + }); + // (undocumented) + static fromConfig(config: Config, options: { + logger: Logger_2; + }): GithubOrgReaderProcessor; + // (undocumented) + readLocation(location: LocationSpec, _optional: boolean, emit: CatalogProcessorEmit): Promise; +} + +// @public (undocumented) +export type HigherOrderOperation = { + addLocation(spec: LocationSpec, options?: { + dryRun?: boolean; + }): Promise; + refreshAllLocations(): Promise; +}; + +// @public +export class HigherOrderOperations implements HigherOrderOperation { + constructor(entitiesCatalog: EntitiesCatalog, locationsCatalog: LocationsCatalog, locationReader: LocationReader, logger: Logger_2); + addLocation(spec: LocationSpec, options?: { + dryRun?: boolean; + }): Promise; + refreshAllLocations(): Promise; +} + +// @public (undocumented) +function inputError(atLocation: LocationSpec, message: string): CatalogProcessorResult; + +// @public (undocumented) +function location_2(newLocation: LocationSpec, optional: boolean): CatalogProcessorResult; + +// @public (undocumented) +export type LocationAnalyzer = { + analyzeLocation(location: AnalyzeLocationRequest): Promise; +}; + +// @public (undocumented) +export class LocationEntityProcessor implements CatalogProcessor { + constructor(options: Options_3); + // (undocumented) + postProcessEntity(entity: Entity, location: LocationSpec, emit: CatalogProcessorEmit): Promise; +} + +// @public (undocumented) +export type LocationReader = { + read(location: LocationSpec): Promise; +}; + +// @public +export class LocationReaders implements LocationReader { + constructor(options: Options); + // (undocumented) + read(location: LocationSpec): Promise; +} + +// @public (undocumented) +export type LocationsCatalog = { + addLocation(location: Location_2): Promise; + removeLocation(id: string): Promise; + locations(): Promise; + location(id: string): Promise; + locationHistory(id: string): Promise; + logUpdateSuccess(locationId: string, entityName?: string | string[]): Promise; + logUpdateFailure(locationId: string, error?: Error, entityName?: string): Promise; +}; + +// @public +export class NextCatalogBuilder { + constructor(env: CatalogEnvironment_2); + addEntityPolicy(...policies: EntityPolicy[]): NextCatalogBuilder; + addEntityProvider(...providers: EntityProvider[]): NextCatalogBuilder; + addProcessor(...processors: CatalogProcessor[]): NextCatalogBuilder; + build(): Promise<{ + entitiesCatalog: EntitiesCatalog; + locationsCatalog: LocationsCatalog; + locationAnalyzer: LocationAnalyzer; + processingEngine: CatalogProcessingEngine; + locationService: LocationService; + }>; + replaceEntityPolicies(policies: EntityPolicy[]): NextCatalogBuilder; + replaceProcessors(processors: CatalogProcessor[]): NextCatalogBuilder; + setEntityDataParser(parser: CatalogProcessorParser): NextCatalogBuilder; + setFieldFormatValidators(validators: Partial): NextCatalogBuilder; + setPlaceholderResolver(key: string, resolver: PlaceholderResolver): NextCatalogBuilder; + setRefreshIntervalSeconds(seconds: number): NextCatalogBuilder; +} + +// @public (undocumented) +function notFoundError(atLocation: LocationSpec, message: string): CatalogProcessorResult; + +// @public (undocumented) +export function parseEntityYaml(data: Buffer, location: LocationSpec): Iterable; + +// @public +export class PlaceholderProcessor implements CatalogProcessor { + constructor(options: Options_4); + // (undocumented) + preProcessEntity(entity: Entity, location: LocationSpec): Promise; +} + +// @public (undocumented) +export type PlaceholderResolver = (params: ResolverParams) => Promise; + +// @public (undocumented) +export type ReadLocationEntity = { + location: LocationSpec; + entity: Entity; + relations: EntityRelationSpec[]; +}; + +// @public (undocumented) +export type ReadLocationError = { + location: LocationSpec; + error: Error; +}; + +// @public (undocumented) +export type ReadLocationResult = { + entities: ReadLocationEntity[]; + errors: ReadLocationError[]; +}; + +// @public +export type RecursivePartial = { + [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial[] : T[P] extends object ? RecursivePartial : T[P]; +}; + +// @public (undocumented) +function relation(spec: EntityRelationSpec): CatalogProcessorResult; + +declare namespace results { + export { + notFoundError, + inputError, + generalError, + location_2 as location, + entity, + relation + } +} +export { results } + +// @public (undocumented) +export interface RouterOptions { + // (undocumented) + config: Config; + // (undocumented) + entitiesCatalog?: EntitiesCatalog; + // (undocumented) + higherOrderOperation?: HigherOrderOperation; + // (undocumented) + locationAnalyzer?: LocationAnalyzer; + // (undocumented) + locationsCatalog?: LocationsCatalog; + // (undocumented) + locationService?: LocationService; + // (undocumented) + logger: Logger_2; +} + +// @public +export function runPeriodically(fn: () => any, delayMs: number): () => void; + +// @public (undocumented) +export class StaticLocationProcessor implements StaticLocationProcessor { + constructor(staticLocations: LocationSpec[]); + // (undocumented) + static fromConfig(config: Config): StaticLocationProcessor; + // (undocumented) + readLocation(location: LocationSpec, _optional: boolean, emit: CatalogProcessorEmit): Promise; +} + +// @public +export type Transaction = { + rollback(): Promise; +}; + +// @public (undocumented) +export class UrlReaderProcessor implements CatalogProcessor { + constructor(options: Options_5); + // (undocumented) + readLocation(location: LocationSpec, optional: boolean, emit: CatalogProcessorEmit, parser: CatalogProcessorParser): Promise; +} + +// (No @packageDocumentation comment for this package) + +``` diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md new file mode 100644 index 0000000000..38fe62bc41 --- /dev/null +++ b/plugins/catalog-react/api-report.md @@ -0,0 +1,329 @@ +## API Report File for "@backstage/plugin-catalog-react" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +/// + +import { ApiRef } from '@backstage/core-plugin-api'; +import { AsyncState } from 'react-use/lib/useAsync'; +import { CatalogApi } from '@backstage/catalog-client'; +import { ComponentEntity } from '@backstage/catalog-model'; +import { Context } from 'react'; +import { Entity } from '@backstage/catalog-model'; +import { EntityName } from '@backstage/catalog-model'; +import { LinkProps } from '@backstage/core-components'; +import { PropsWithChildren } from 'react'; +import { default as React_2 } from 'react'; +import { ReactNode } from 'react'; +import { RouteRef } from '@backstage/core-plugin-api'; +import { ScmIntegrationRegistry } from '@backstage/integration'; +import { SystemEntity } from '@backstage/catalog-model'; +import { TableColumn } from '@backstage/core-components'; +import { UserEntity } from '@backstage/catalog-model'; + +export { CatalogApi } + +// @public (undocumented) +export const catalogApiRef: ApiRef; + +// @public (undocumented) +export const catalogRouteRef: RouteRef; + +// @public (undocumented) +function createDomainColumn(): TableColumn; + +// @public (undocumented) +function createEntityRefColumn({ defaultKind, }: { + defaultKind?: string; +}): TableColumn; + +// @public (undocumented) +function createEntityRelationColumn({ title, relation, defaultKind, filter: entityFilter, }: { + title: string; + relation: string; + defaultKind?: string; + filter?: { + kind: string; + }; +}): TableColumn; + +// @public (undocumented) +function createMetadataDescriptionColumn(): TableColumn; + +// @public (undocumented) +function createOwnerColumn(): TableColumn; + +// @public (undocumented) +function createSpecLifecycleColumn(): TableColumn; + +// @public (undocumented) +function createSpecTypeColumn(): TableColumn; + +// @public (undocumented) +function createSystemColumn(): TableColumn; + +// @public (undocumented) +export type DefaultEntityFilters = { + kind?: EntityKindFilter; + type?: EntityTypeFilter; + user?: UserListFilter; + owners?: EntityOwnerFilter; + lifecycles?: EntityLifecycleFilter; + tags?: EntityTagFilter; + text?: EntityTextFilter; +}; + +// @public (undocumented) +export const EntityContext: Context; + +// @public (undocumented) +export type EntityFilter = { + getCatalogFilters?: () => Record; + filterEntity?: (entity: Entity) => boolean; + toQueryValue?: () => string | string[]; +}; + +// @public (undocumented) +export class EntityKindFilter implements EntityFilter { + constructor(value: string); + // (undocumented) + getCatalogFilters(): Record; + // (undocumented) + toQueryValue(): string; + // (undocumented) + readonly value: string; +} + +// @public (undocumented) +export const EntityKindPicker: ({ initialFilter, hidden, }: EntityKindFilterProps) => JSX.Element | null; + +// @public (undocumented) +export class EntityLifecycleFilter implements EntityFilter { + constructor(values: string[]); + // (undocumented) + filterEntity(entity: Entity): boolean; + // (undocumented) + toQueryValue(): string[]; + // (undocumented) + readonly values: string[]; +} + +// @public (undocumented) +export const EntityLifecyclePicker: () => JSX.Element | null; + +// @public (undocumented) +export const EntityListContext: React_2.Context | undefined>; + +// @public (undocumented) +export const EntityListProvider: ({ children, }: PropsWithChildren<{}>) => JSX.Element; + +// @public (undocumented) +export class EntityOwnerFilter implements EntityFilter { + constructor(values: string[]); + // (undocumented) + filterEntity(entity: Entity): boolean; + // (undocumented) + toQueryValue(): string[]; + // (undocumented) + readonly values: string[]; +} + +// @public (undocumented) +export const EntityOwnerPicker: () => JSX.Element | null; + +// @public (undocumented) +export const EntityProvider: ({ entity, children }: EntityProviderProps) => JSX.Element; + +// @public (undocumented) +export const EntityRefLink: React_2.ForwardRefExoticComponent & React_2.RefAttributes>; + +// @public (undocumented) +export const EntityRefLinks: ({ entityRefs, defaultKind, ...linkProps }: EntityRefLinksProps) => JSX.Element; + +// @public (undocumented) +export const entityRoute: RouteRef< { +name: string; +kind: string; +namespace: string; +}>; + +// @public (undocumented) +export function entityRouteParams(entity: Entity): { + readonly kind: string; + readonly namespace: string; + readonly name: string; +}; + +// @public (undocumented) +export const entityRouteRef: RouteRef< { +name: string; +kind: string; +namespace: string; +}>; + +// @public (undocumented) +export const EntitySearchBar: () => JSX.Element; + +// @public (undocumented) +export type EntitySourceLocation = { + locationTargetUrl: string; + integrationType?: string; +}; + +// @public (undocumented) +export function EntityTable({ entities, title, emptyContent, variant, columns, }: Props): JSX.Element; + +// @public (undocumented) +export namespace EntityTable { + var // (undocumented) + columns: typeof columnFactories; + var // (undocumented) + systemEntityColumns: TableColumn[]; + var // (undocumented) + componentEntityColumns: TableColumn[]; +} + +// @public (undocumented) +export class EntityTagFilter implements EntityFilter { + constructor(values: string[]); + // (undocumented) + filterEntity(entity: Entity): boolean; + // (undocumented) + toQueryValue(): string[]; + // (undocumented) + readonly values: string[]; +} + +// @public (undocumented) +export const EntityTagPicker: () => JSX.Element | null; + +// @public (undocumented) +export class EntityTextFilter implements EntityFilter { + constructor(value: string); + // (undocumented) + filterEntity(entity: Entity): boolean; + // (undocumented) + readonly value: string; +} + +// @public (undocumented) +export class EntityTypeFilter implements EntityFilter { + constructor(value: string | string[]); + // (undocumented) + getCatalogFilters(): Record; + // (undocumented) + getTypes(): string[]; + // (undocumented) + toQueryValue(): string[]; + // (undocumented) + readonly value: string | string[]; +} + +// @public (undocumented) +export const EntityTypePicker: () => JSX.Element | null; + +// @public (undocumented) +export function formatEntityRefTitle(entityRef: Entity | EntityName, opts?: { + defaultKind?: string; +}): string; + +// @public (undocumented) +export function getEntityMetadataEditUrl(entity: Entity): string | undefined; + +// @public (undocumented) +export function getEntityMetadataViewUrl(entity: Entity): string | undefined; + +// @public +export function getEntityRelations(entity: Entity | undefined, relationType: string, filter?: { + kind: string; +}): EntityName[]; + +// @public (undocumented) +export function getEntitySourceLocation(entity: Entity, scmIntegrationsApi: ScmIntegrationRegistry): EntitySourceLocation | undefined; + +// @public +export function isOwnerOf(owner: Entity, owned: Entity): boolean; + +// @public (undocumented) +export const MockEntityListContextProvider: ({ children, value, }: React_2.PropsWithChildren<{ + value: Partial; +}>) => JSX.Element; + +// @public (undocumented) +export function reduceCatalogFilters(filters: EntityFilter[]): Record; + +// @public (undocumented) +export function reduceEntityFilters(filters: EntityFilter[]): (entity: Entity) => boolean; + +// @public (undocumented) +export const rootRoute: RouteRef; + +// @public +export function useEntity(): { + entity: T; + loading: boolean; + error: Error | undefined; +}; + +// @public +export const useEntityCompoundName: () => { + kind: string; + namespace: string; + name: string; +}; + +// @public (undocumented) +export const useEntityFromUrl: () => EntityLoadingStatus; + +// @public (undocumented) +export function useEntityListProvider(): EntityListContextProps; + +// @public +export function useEntityTypeFilter(): EntityTypeReturn; + +// @public +export function useOwnUser(): AsyncState; + +// @public (undocumented) +export function useRelatedEntities(entity: Entity, { type, kind }: { + type?: string; + kind?: string; +}): { + entities: Entity[] | undefined; + loading: boolean; + error: Error | undefined; +}; + +// @public (undocumented) +export class UserListFilter implements EntityFilter { + constructor(value: UserListFilterKind, user: UserEntity | undefined, isStarredEntity: (entity: Entity) => boolean); + // (undocumented) + filterEntity(entity: Entity): boolean; + // (undocumented) + readonly isStarredEntity: (entity: Entity) => boolean; + // (undocumented) + toQueryValue(): string; + // (undocumented) + readonly user: UserEntity | undefined; + // (undocumented) + readonly value: UserListFilterKind; +} + +// @public (undocumented) +export type UserListFilterKind = 'owned' | 'starred' | 'all'; + +// @public (undocumented) +export const UserListPicker: ({ initialFilter, availableFilters, }: UserListPickerProps) => JSX.Element; + +// @public (undocumented) +export const useStarredEntities: () => { + starredEntities: Set; + toggleStarredEntity: (entity: Entity) => void; + isStarredEntity: (entity: Entity) => boolean; +}; + +// (No @packageDocumentation comment for this package) + +``` diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md new file mode 100644 index 0000000000..7bfd286440 --- /dev/null +++ b/plugins/catalog/api-report.md @@ -0,0 +1,198 @@ +## API Report File for "@backstage/plugin-catalog" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +/// + +import { BackstagePlugin } from '@backstage/core-plugin-api'; +import { Entity } from '@backstage/catalog-model'; +import { EntityName } from '@backstage/catalog-model'; +import { ExternalRouteRef } from '@backstage/core-plugin-api'; +import { IconComponent } from '@backstage/core-plugin-api'; +import { InfoCardVariants } from '@backstage/core-components'; +import { PropsWithChildren } from 'react'; +import { default as React_2 } from 'react'; +import { ReactNode } from 'react'; +import { RouteRef } from '@backstage/core-plugin-api'; +import { TableColumn } from '@backstage/core-components'; +import { TableProps } from '@backstage/core-components'; +import { TabProps } from '@material-ui/core'; +import { UserListFilterKind } from '@backstage/plugin-catalog-react'; + +// @public (undocumented) +export function AboutCard({ variant }: AboutCardProps): JSX.Element; + +// @public (undocumented) +export const AboutContent: ({ entity }: Props_2) => JSX.Element; + +// @public (undocumented) +export const AboutField: ({ label, value, gridSizes, children }: Props_3) => JSX.Element; + +// @public (undocumented) +export const CatalogEntityPage: () => JSX.Element; + +// @public (undocumented) +export const CatalogIndexPage: ({ initiallySelectedFilter, columns, actions, }: CatalogPageProps) => JSX.Element; + +// @public (undocumented) +export const CatalogLayout: ({ children }: Props) => JSX.Element; + +// @public (undocumented) +const catalogPlugin: BackstagePlugin< { +catalogIndex: RouteRef; +catalogEntity: RouteRef< { +name: string; +kind: string; +namespace: string; +}>; +}, { +createComponent: ExternalRouteRef; +}>; +export { catalogPlugin } +export { catalogPlugin as plugin } + +// @public (undocumented) +export const CatalogResultListItem: ({ result }: any) => JSX.Element; + +// @public (undocumented) +export const CatalogTable: { + ({ columns, actions }: CatalogTableProps): JSX.Element; + columns: typeof columnFactories; +}; + +// @public (undocumented) +export type CatalogTableRow = { + entity: Entity; + resolved: { + name: string; + partOfSystemRelationTitle?: string; + partOfSystemRelations: EntityName[]; + ownedByRelationsTitle?: string; + ownedByRelations: EntityName[]; + }; +}; + +// @public (undocumented) +export const CreateComponentButton: () => JSX.Element | null; + +// @public (undocumented) +export function createMetadataDescriptionColumn(): TableColumn; + +// @public (undocumented) +export function createNameColumn(props?: NameColumnProps): TableColumn; + +// @public (undocumented) +export function createOwnerColumn(): TableColumn; + +// @public (undocumented) +export function createSpecLifecycleColumn(): TableColumn; + +// @public (undocumented) +export function createSpecTypeColumn(): TableColumn; + +// @public (undocumented) +export function createSystemColumn(): TableColumn; + +// @public (undocumented) +export function createTagsColumn(): TableColumn; + +// @public (undocumented) +export const EntityAboutCard: AboutCard; + +// @public (undocumented) +export const EntityDependencyOfComponentsCard: ({ variant, title, }: { + variant?: "gridItem" | undefined; + title?: string | undefined; +}) => JSX.Element; + +// @public (undocumented) +export const EntityDependsOnComponentsCard: ({ variant, title, }: { + variant?: "gridItem" | undefined; + title?: string | undefined; +}) => JSX.Element; + +// @public (undocumented) +export const EntityDependsOnResourcesCard: ({ variant }: { + variant?: "gridItem" | undefined; +}) => JSX.Element; + +// @public (undocumented) +export const EntityHasComponentsCard: ({ variant }: { + variant?: "gridItem" | undefined; +}) => JSX.Element; + +// @public (undocumented) +export const EntityHasResourcesCard: ({ variant }: { + variant?: "gridItem" | undefined; +}) => JSX.Element; + +// @public (undocumented) +export const EntityHasSubcomponentsCard: ({ variant }: { + variant?: "gridItem" | undefined; +}) => JSX.Element; + +// @public (undocumented) +export const EntityHasSystemsCard: ({ variant }: { + variant?: "gridItem" | undefined; +}) => JSX.Element; + +// @public +export const EntityLayout: { + ({ UNSTABLE_extraContextMenuItems, children, }: EntityLayoutProps): JSX.Element; + Route: (props: SubRoute) => null; +}; + +// @public (undocumented) +export const EntityLinksCard: ({ cols, variant }: { + entity?: Entity | undefined; + cols?: number | ColumnBreakpoints | undefined; + variant?: "gridItem" | undefined; +}) => JSX.Element; + +// @public +export const EntityOrphanWarning: () => JSX.Element; + +// @public (undocumented) +export const EntityPageLayout: { + ({ children, UNSTABLE_extraContextMenuItems, }: EntityPageLayoutProps): JSX.Element; + Content: (_props: { + path: string; + title: string; + element: JSX.Element; + }) => null; +}; + +// @public (undocumented) +export const EntitySwitch: { + ({ children }: PropsWithChildren<{}>): JSX.Element | null; + Case: (_: { + if?: ((entity: Entity) => boolean) | undefined; + children: ReactNode; + }) => null; +}; + +// @public (undocumented) +export const EntitySystemDiagramCard: SystemDiagramCard; + +// @public (undocumented) +export function isComponentType(type: string): (entity: Entity) => boolean; + +// @public (undocumented) +export function isKind(kind: string): (entity: Entity) => boolean; + +// @public (undocumented) +export function isNamespace(namespace: string): (entity: Entity) => boolean; + +// @public (undocumented) +export const isOrphan: (entity: Entity) => boolean; + +// @public (undocumented) +export const Router: ({ EntityPage, }: { + EntityPage?: React_2.ComponentType<{}> | undefined; +}) => JSX.Element; + +// (No @packageDocumentation comment for this package) + +``` diff --git a/plugins/github-deployments/api-report.md b/plugins/github-deployments/api-report.md new file mode 100644 index 0000000000..09007e5dde --- /dev/null +++ b/plugins/github-deployments/api-report.md @@ -0,0 +1,59 @@ +## API Report File for "@backstage/plugin-github-deployments" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +/// + +import { BackstagePlugin } from '@backstage/core-plugin-api'; +import { Entity } from '@backstage/catalog-model'; +import { TableColumn } from '@backstage/core-components'; + +// @public (undocumented) +function createCommitColumn(): TableColumn; + +// @public (undocumented) +function createCreatorColumn(): TableColumn; + +// @public (undocumented) +function createEnvironmentColumn(): TableColumn; + +// @public (undocumented) +function createLastUpdatedColumn(): TableColumn; + +// @public (undocumented) +function createStatusColumn(): TableColumn; + +// @public (undocumented) +export const EntityGithubDeploymentsCard: ({ last, lastStatuses, columns, }: { + last?: number | undefined; + lastStatuses?: number | undefined; + columns?: TableColumn[] | undefined; +}) => JSX.Element; + +// @public (undocumented) +export const githubDeploymentsPlugin: BackstagePlugin< {}, {}>; + +// @public (undocumented) +export function GithubDeploymentsTable({ deployments, isLoading, reload, columns, }: GithubDeploymentsTableProps): JSX.Element; + +// @public (undocumented) +export namespace GithubDeploymentsTable { + var // (undocumented) + columns: typeof columnFactories; + var // (undocumented) + defaultDeploymentColumns: TableColumn[]; +} + +// @public (undocumented) +const GithubStateIndicator: ({ state }: { + state: string; +}) => JSX.Element; + +// @public (undocumented) +export const isGithubDeploymentsAvailable: (entity: Entity) => boolean; + +// (No @packageDocumentation comment for this package) + +``` diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index 2631f7de93..ab302606df 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -73,14 +73,6 @@ const SKIPPED_PACKAGES = [ 'packages/e2e-test', 'packages/storybook', 'packages/techdocs-cli', - - // TODO(Rugvip): Enable these once `import * as ...` and `import()` PRs have landed, #1796 & #1916. - 'packages/core-components', - 'plugins/catalog', - 'plugins/catalog-backend', - 'plugins/catalog-react', - 'plugins/github-deployments', - 'plugins/sentry-backend', ]; async function findPackageDirs() { From e87aa59df31c51dc850fba6394ae1fec6c778ddf Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 12 Jul 2021 11:19:31 +0200 Subject: [PATCH 098/117] scripts/api-extractor: run prettier on generated API reports Signed-off-by: Patrik Oldsberg --- scripts/api-extractor.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/scripts/api-extractor.ts b/scripts/api-extractor.ts index ab302606df..f88b30d1fd 100644 --- a/scripts/api-extractor.ts +++ b/scripts/api-extractor.ts @@ -23,6 +23,7 @@ import { dirname, join, } from 'path'; +import prettier from 'prettier'; import fs from 'fs-extra'; import { Extractor, @@ -61,6 +62,27 @@ PackageJsonLookup.prototype.tryGetPackageJsonFilePathFor = function tryGetPackag return old.call(this, path); }; +/** + * Another monkey patch where we apply prettier to the API reports. This has to be patched into + * the middle of the process as API Extractor does a comparison of the contents of the old + * and new files during generation. This inserts the formatting just before that comparison. + */ +const { + ApiReportGenerator, +} = require('@microsoft/api-extractor/lib/generators/ApiReportGenerator'); + +const originalGenerateReviewFileContent = + ApiReportGenerator.generateReviewFileContent; +ApiReportGenerator.generateReviewFileContent = function decoratedGenerateReviewFileContent( + ...args +) { + const content = originalGenerateReviewFileContent.apply(this, args); + return prettier.format(content, { + ...require('@spotify/prettier-config'), + parser: 'markdown', + }); +}; + const PACKAGE_ROOTS = ['packages', 'plugins']; const SKIPPED_PACKAGES = [ From 602b5b59bbc21286c6e3a5b1991753a04f826e59 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 12 Jul 2021 11:20:25 +0200 Subject: [PATCH 099/117] packages: regenerate all API reports with prettier Signed-off-by: Patrik Oldsberg --- packages/backend-common/api-report.md | 482 ++-- packages/backend-test-utils/api-report.md | 27 +- packages/catalog-client/api-report.md | 145 +- packages/catalog-model/api-report.md | 654 ++--- packages/config-loader/api-report.md | 20 +- packages/config/api-report.md | 123 +- packages/core-app-api/api-report.md | 532 ++-- packages/core-components/api-report.md | 2220 +++++++++++++++-- packages/core-plugin-api/api-report.md | 530 ++-- packages/dev-utils/api-report.md | 10 +- packages/errors/api-report.md | 82 +- packages/integration-react/api-report.md | 12 +- packages/integration/api-report.md | 384 +-- packages/search-common/api-report.md | 49 +- packages/techdocs-common/api-report.md | 219 +- packages/test-utils-core/api-report.md | 102 +- packages/test-utils/api-report.md | 85 +- packages/theme/api-report.md | 47 +- plugins/api-docs/api-report.md | 83 +- plugins/app-backend/api-report.md | 17 +- plugins/auth-backend/api-report.md | 248 +- plugins/badges-backend/api-report.md | 103 +- plugins/badges/api-report.md | 13 +- plugins/bitrise/api-report.md | 4 +- .../catalog-backend-module-ldap/api-report.md | 182 +- .../api-report.md | 160 +- plugins/catalog-backend/api-report.md | 976 +++++--- plugins/catalog-graphql/api-report.md | 11 +- plugins/catalog-import/api-report.md | 174 +- plugins/catalog-react/api-report.md | 592 ++++- plugins/catalog/api-report.md | 165 +- plugins/circleci/api-report.md | 60 +- plugins/cloudbuild/api-report.md | 357 +-- plugins/code-coverage-backend/api-report.md | 27 +- plugins/code-coverage/api-report.md | 15 +- plugins/config-schema/api-report.md | 23 +- plugins/cost-insights/api-report.md | 695 +++--- plugins/explore-react/api-report.md | 19 +- plugins/fossa/api-report.md | 17 +- plugins/gcp-projects/api-report.md | 79 +- plugins/git-release-manager/api-report.md | 11 +- plugins/github-actions/api-report.md | 382 ++- plugins/github-deployments/api-report.md | 31 +- plugins/gitops-profiles/api-report.md | 227 +- plugins/graphiql/api-report.md | 54 +- plugins/graphql/api-report.md | 11 +- plugins/ilert/api-report.md | 310 +-- plugins/jenkins/api-report.md | 86 +- plugins/kafka-backend/api-report.md | 3 - plugins/kafka/api-report.md | 24 +- plugins/kubernetes-backend/api-report.md | 105 +- plugins/kubernetes-common/api-report.md | 127 +- plugins/kubernetes/api-report.md | 28 +- plugins/lighthouse/api-report.md | 189 +- plugins/newrelic/api-report.md | 15 +- plugins/org/api-report.md | 70 +- plugins/pagerduty/api-report.md | 49 +- plugins/proxy-backend/api-report.md | 3 - plugins/register-component/api-report.md | 27 +- plugins/rollbar-backend/api-report.md | 80 +- plugins/rollbar/api-report.md | 70 +- .../api-report.md | 9 +- plugins/scaffolder-backend/api-report.md | 170 +- plugins/scaffolder/api-report.md | 145 +- plugins/search-backend-node/api-report.md | 72 +- plugins/search-backend/api-report.md | 8 +- plugins/search/api-report.md | 76 +- plugins/sentry/api-report.md | 105 +- plugins/shortcuts/api-report.md | 42 +- plugins/sonarqube/api-report.md | 36 +- plugins/splunk-on-call/api-report.md | 70 +- plugins/tech-radar/api-report.md | 137 +- plugins/techdocs-backend/api-report.md | 5 +- plugins/techdocs/api-report.md | 152 +- plugins/todo-backend/api-report.md | 90 +- plugins/todo/api-report.md | 4 +- plugins/user-settings/api-report.md | 40 +- plugins/welcome/api-report.md | 8 +- 78 files changed, 8153 insertions(+), 4661 deletions(-) diff --git a/packages/backend-common/api-report.md b/packages/backend-common/api-report.md index b89bdd1bef..94f1147b5a 100644 --- a/packages/backend-common/api-report.md +++ b/packages/backend-common/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// /// @@ -35,53 +34,62 @@ import { Writable } from 'stream'; // @public (undocumented) export class AzureUrlReader implements UrlReader { - constructor(integration: AzureIntegration, deps: { - treeResponseFactory: ReadTreeResponseFactory; - }); - // (undocumented) - static factory: ReaderFactory; - // (undocumented) - read(url: string): Promise; - // (undocumented) - readTree(url: string, options?: ReadTreeOptions): Promise; - // (undocumented) - readUrl(url: string, _options?: ReadUrlOptions): Promise; - // (undocumented) - search(url: string, options?: SearchOptions): Promise; - // (undocumented) - toString(): string; + constructor( + integration: AzureIntegration, + deps: { + treeResponseFactory: ReadTreeResponseFactory; + }, + ); + // (undocumented) + static factory: ReaderFactory; + // (undocumented) + read(url: string): Promise; + // (undocumented) + readTree(url: string, options?: ReadTreeOptions): Promise; + // (undocumented) + readUrl(url: string, _options?: ReadUrlOptions): Promise; + // (undocumented) + search(url: string, options?: SearchOptions): Promise; + // (undocumented) + toString(): string; } // @public export class BitbucketUrlReader implements UrlReader { - constructor(integration: BitbucketIntegration, deps: { - treeResponseFactory: ReadTreeResponseFactory; - }); - // (undocumented) - static factory: ReaderFactory; - // (undocumented) - read(url: string): Promise; - // (undocumented) - readTree(url: string, options?: ReadTreeOptions): Promise; - // (undocumented) - readUrl(url: string, _options?: ReadUrlOptions): Promise; - // (undocumented) - search(url: string, options?: SearchOptions): Promise; - // (undocumented) - toString(): string; + constructor( + integration: BitbucketIntegration, + deps: { + treeResponseFactory: ReadTreeResponseFactory; + }, + ); + // (undocumented) + static factory: ReaderFactory; + // (undocumented) + read(url: string): Promise; + // (undocumented) + readTree(url: string, options?: ReadTreeOptions): Promise; + // (undocumented) + readUrl(url: string, _options?: ReadUrlOptions): Promise; + // (undocumented) + search(url: string, options?: SearchOptions): Promise; + // (undocumented) + toString(): string; } // @public export interface CacheClient { - delete(key: string): Promise; - get(key: string): Promise; - set(key: string, value: JsonValue, options?: CacheSetOptions): Promise; + delete(key: string): Promise; + get(key: string): Promise; + set(key: string, value: JsonValue, options?: CacheSetOptions): Promise; } // @public export class CacheManager { - forPlugin(pluginId: string): PluginCacheManager; - static fromConfig(config: Config, options?: CacheManagerOptions): CacheManager; + forPlugin(pluginId: string): PluginCacheManager; + static fromConfig( + config: Config, + options?: CacheManagerOptions, + ): CacheManager; } // @public (undocumented) @@ -89,51 +97,70 @@ export const coloredFormat: winston.Logform.Format; // @public (undocumented) export interface ContainerRunner { - // (undocumented) - runContainer(opts: RunContainerOptions): Promise; + // (undocumented) + runContainer(opts: RunContainerOptions): Promise; } // @public @deprecated export const createDatabase: typeof createDatabaseClient; // @public -export function createDatabaseClient(dbConfig: Config, overrides?: Partial): Knex; +export function createDatabaseClient( + dbConfig: Config, + overrides?: Partial, +): Knex; // @public (undocumented) -export function createRootLogger(options?: winston.LoggerOptions, env?: NodeJS.ProcessEnv): winston.Logger; +export function createRootLogger( + options?: winston.LoggerOptions, + env?: NodeJS.ProcessEnv, +): winston.Logger; // @public export function createServiceBuilder(_module: NodeModule): ServiceBuilderImpl; // @public (undocumented) -export function createStatusCheckRouter(options: StatusCheckRouterOptions): Promise; +export function createStatusCheckRouter( + options: StatusCheckRouterOptions, +): Promise; // @public (undocumented) export class DatabaseManager { - forPlugin(pluginId: string): PluginDatabaseManager; - static fromConfig(config: Config): DatabaseManager; + forPlugin(pluginId: string): PluginDatabaseManager; + static fromConfig(config: Config): DatabaseManager; } // @public (undocumented) export class DockerContainerRunner implements ContainerRunner { - constructor({ dockerClient }: { - dockerClient: Docker; - }); - // (undocumented) - runContainer({ imageName, command, args, logStream, mountDirs, workingDir, envVars, }: RunContainerOptions): Promise; + constructor({ dockerClient }: { dockerClient: Docker }); + // (undocumented) + runContainer({ + imageName, + command, + args, + logStream, + mountDirs, + workingDir, + envVars, + }: RunContainerOptions): Promise; } // @public -export function ensureDatabaseExists(dbConfig: Config, ...databases: Array): Promise; +export function ensureDatabaseExists( + dbConfig: Config, + ...databases: Array +): Promise; // @public -export function errorHandler(options?: ErrorHandlerOptions): ErrorRequestHandler; +export function errorHandler( + options?: ErrorHandlerOptions, +): ErrorRequestHandler; // @public (undocumented) export type ErrorHandlerOptions = { - showStackTraces?: boolean; - logger?: Logger_2; - logClientErrors?: boolean; + showStackTraces?: boolean; + logger?: Logger_2; + logClientErrors?: boolean; }; // @public (undocumented) @@ -144,128 +171,154 @@ export function getVoidLogger(): winston.Logger; // @public (undocumented) export class Git { - // (undocumented) - add({ dir, filepath, }: { - dir: string; - filepath: string; - }): Promise; - // (undocumented) - addRemote({ dir, url, remote, }: { - dir: string; - remote: string; - url: string; - }): Promise; - // (undocumented) - clone({ url, dir, ref, }: { - url: string; - dir: string; - ref?: string; - }): Promise; - // (undocumented) - commit({ dir, message, author, committer, }: { - dir: string; - message: string; - author: { - name: string; - email: string; - }; - committer: { - name: string; - email: string; - }; - }): Promise; - // (undocumented) - currentBranch({ dir, fullName, }: { - dir: string; - fullName?: boolean; - }): Promise; - // (undocumented) - fetch({ dir, remote, }: { - dir: string; - remote?: string; - }): Promise; - // (undocumented) - static fromAuth: ({ username, password, logger, }: { - username?: string | undefined; - password?: string | undefined; - logger?: Logger_2 | undefined; - }) => Git; - // (undocumented) - init({ dir, defaultBranch, }: { - dir: string; - defaultBranch?: string; - }): Promise; - // (undocumented) - merge({ dir, theirs, ours, author, committer, }: { - dir: string; - theirs: string; - ours?: string; - author: { - name: string; - email: string; - }; - committer: { - name: string; - email: string; - }; - }): Promise; - // (undocumented) - push({ dir, remote }: { - dir: string; - remote: string; - }): Promise; - // (undocumented) - readCommit({ dir, sha, }: { - dir: string; - sha: string; - }): Promise; - // (undocumented) - resolveRef({ dir, ref, }: { - dir: string; - ref: string; - }): Promise; + // (undocumented) + add({ dir, filepath }: { dir: string; filepath: string }): Promise; + // (undocumented) + addRemote({ + dir, + url, + remote, + }: { + dir: string; + remote: string; + url: string; + }): Promise; + // (undocumented) + clone({ + url, + dir, + ref, + }: { + url: string; + dir: string; + ref?: string; + }): Promise; + // (undocumented) + commit({ + dir, + message, + author, + committer, + }: { + dir: string; + message: string; + author: { + name: string; + email: string; + }; + committer: { + name: string; + email: string; + }; + }): Promise; + // (undocumented) + currentBranch({ + dir, + fullName, + }: { + dir: string; + fullName?: boolean; + }): Promise; + // (undocumented) + fetch({ dir, remote }: { dir: string; remote?: string }): Promise; + // (undocumented) + static fromAuth: ({ + username, + password, + logger, + }: { + username?: string | undefined; + password?: string | undefined; + logger?: Logger_2 | undefined; + }) => Git; + // (undocumented) + init({ + dir, + defaultBranch, + }: { + dir: string; + defaultBranch?: string; + }): Promise; + // (undocumented) + merge({ + dir, + theirs, + ours, + author, + committer, + }: { + dir: string; + theirs: string; + ours?: string; + author: { + name: string; + email: string; + }; + committer: { + name: string; + email: string; + }; + }): Promise; + // (undocumented) + push({ dir, remote }: { dir: string; remote: string }): Promise; + // (undocumented) + readCommit({ + dir, + sha, + }: { + dir: string; + sha: string; + }): Promise; + // (undocumented) + resolveRef({ dir, ref }: { dir: string; ref: string }): Promise; } // @public export class GithubUrlReader implements UrlReader { - constructor(integration: GitHubIntegration, deps: { - treeResponseFactory: ReadTreeResponseFactory; - credentialsProvider: GithubCredentialsProvider; - }); - // (undocumented) - static factory: ReaderFactory; - // (undocumented) - read(url: string): Promise; - // (undocumented) - readTree(url: string, options?: ReadTreeOptions): Promise; - // (undocumented) - readUrl(url: string, options?: ReadUrlOptions): Promise; - // (undocumented) - search(url: string, options?: SearchOptions): Promise; - // (undocumented) - toString(): string; + constructor( + integration: GitHubIntegration, + deps: { + treeResponseFactory: ReadTreeResponseFactory; + credentialsProvider: GithubCredentialsProvider; + }, + ); + // (undocumented) + static factory: ReaderFactory; + // (undocumented) + read(url: string): Promise; + // (undocumented) + readTree(url: string, options?: ReadTreeOptions): Promise; + // (undocumented) + readUrl(url: string, options?: ReadUrlOptions): Promise; + // (undocumented) + search(url: string, options?: SearchOptions): Promise; + // (undocumented) + toString(): string; } // @public (undocumented) export class GitlabUrlReader implements UrlReader { - constructor(integration: GitLabIntegration, deps: { - treeResponseFactory: ReadTreeResponseFactory; - }); - // (undocumented) - static factory: ReaderFactory; - // (undocumented) - read(url: string): Promise; - // (undocumented) - readTree(url: string, options?: ReadTreeOptions): Promise; - // (undocumented) - readUrl(url: string, options?: ReadUrlOptions): Promise; - // (undocumented) - search(url: string, options?: SearchOptions): Promise; - // (undocumented) - toString(): string; + constructor( + integration: GitLabIntegration, + deps: { + treeResponseFactory: ReadTreeResponseFactory; + }, + ); + // (undocumented) + static factory: ReaderFactory; + // (undocumented) + read(url: string): Promise; + // (undocumented) + readTree(url: string, options?: ReadTreeOptions): Promise; + // (undocumented) + readUrl(url: string, options?: ReadUrlOptions): Promise; + // (undocumented) + search(url: string, options?: SearchOptions): Promise; + // (undocumented) + toString(): string; } -export { isChildPath } +export { isChildPath }; // @public export function loadBackendConfig(options: Options): Promise; @@ -275,32 +328,32 @@ export function notFoundHandler(): RequestHandler; // @public export type PluginCacheManager = { - getClient: (options?: ClientOptions) => CacheClient; + getClient: (options?: ClientOptions) => CacheClient; }; // @public export interface PluginDatabaseManager { - getClient(): Promise; + getClient(): Promise; } // @public export type PluginEndpointDiscovery = { - getBaseUrl(pluginId: string): Promise; - getExternalBaseUrl(pluginId: string): Promise; + getBaseUrl(pluginId: string): Promise; + getExternalBaseUrl(pluginId: string): Promise; }; // @public export type ReadTreeResponse = { - files(): Promise; - archive(): Promise; - dir(options?: ReadTreeResponseDirOptions): Promise; - etag: string; + files(): Promise; + archive(): Promise; + dir(options?: ReadTreeResponseDirOptions): Promise; + etag: string; }; // @public export type ReadTreeResponseFile = { - path: string; - content(): Promise; + path: string; + content(): Promise; }; // @public @@ -314,37 +367,37 @@ export function resolveSafeChildPath(base: string, path: string): string; // @public (undocumented) export type RunContainerOptions = { - imageName: string; - command?: string | string[]; - args: string[]; - logStream?: Writable; - mountDirs?: Record; - workingDir?: string; - envVars?: Record; + imageName: string; + command?: string | string[]; + args: string[]; + logStream?: Writable; + mountDirs?: Record; + workingDir?: string; + envVars?: Record; }; // @public export type SearchResponse = { - files: SearchResponseFile[]; - etag: string; + files: SearchResponseFile[]; + etag: string; }; // @public export type SearchResponseFile = { - url: string; - content(): Promise; + url: string; + content(): Promise; }; // @public (undocumented) export type ServiceBuilder = { - loadConfig(config: ConfigReader): ServiceBuilder; - setPort(port: number): ServiceBuilder; - setHost(host: string): ServiceBuilder; - setLogger(logger: Logger_2): ServiceBuilder; - enableCors(options: cors.CorsOptions): ServiceBuilder; - setHttpsSettings(settings: HttpsSettings): ServiceBuilder; - addRouter(root: string, router: Router | RequestHandler): ServiceBuilder; - start(): Promise; + loadConfig(config: ConfigReader): ServiceBuilder; + setPort(port: number): ServiceBuilder; + setHost(host: string): ServiceBuilder; + setLogger(logger: Logger_2): ServiceBuilder; + enableCors(options: cors.CorsOptions): ServiceBuilder; + setHttpsSettings(settings: HttpsSettings): ServiceBuilder; + addRouter(root: string, router: Router | RequestHandler): ServiceBuilder; + start(): Promise; }; // @public (undocumented) @@ -355,46 +408,53 @@ export const SingleConnectionDatabaseManager: typeof DatabaseManager; // @public export class SingleHostDiscovery implements PluginEndpointDiscovery { - static fromConfig(config: Config, options?: { - basePath?: string; - }): SingleHostDiscovery; - // (undocumented) - getBaseUrl(pluginId: string): Promise; - // (undocumented) - getExternalBaseUrl(pluginId: string): Promise; + static fromConfig( + config: Config, + options?: { + basePath?: string; + }, + ): SingleHostDiscovery; + // (undocumented) + getBaseUrl(pluginId: string): Promise; + // (undocumented) + getExternalBaseUrl(pluginId: string): Promise; } // @public (undocumented) export type StatusCheck = () => Promise; // @public -export function statusCheckHandler(options?: StatusCheckHandlerOptions): Promise; +export function statusCheckHandler( + options?: StatusCheckHandlerOptions, +): Promise; // @public (undocumented) export interface StatusCheckHandlerOptions { - statusCheck?: StatusCheck; + statusCheck?: StatusCheck; } // @public export type UrlReader = { - read(url: string): Promise; - readUrl?(url: string, options?: ReadUrlOptions): Promise; - readTree(url: string, options?: ReadTreeOptions): Promise; - search(url: string, options?: SearchOptions): Promise; + read(url: string): Promise; + readUrl?(url: string, options?: ReadUrlOptions): Promise; + readTree(url: string, options?: ReadTreeOptions): Promise; + search(url: string, options?: SearchOptions): Promise; }; // @public export class UrlReaders { - static create({ logger, config, factories }: CreateOptions): UrlReader; - static default({ logger, config, factories }: CreateOptions): UrlReader; + static create({ logger, config, factories }: CreateOptions): UrlReader; + static default({ logger, config, factories }: CreateOptions): UrlReader; } // @public -export function useHotCleanup(_module: NodeModule, cancelEffect: () => void): void; +export function useHotCleanup( + _module: NodeModule, + cancelEffect: () => void, +): void; // @public export function useHotMemoize(_module: NodeModule, valueFactory: () => T): T; // (No @packageDocumentation comment for this package) - ``` diff --git a/packages/backend-test-utils/api-report.md b/packages/backend-test-utils/api-report.md index 28d4a00463..184ed74978 100644 --- a/packages/backend-test-utils/api-report.md +++ b/packages/backend-test-utils/api-report.md @@ -3,29 +3,30 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { Knex } from 'knex'; // @public (undocumented) export function isDockerDisabledForTests(): boolean; // @public -export type TestDatabaseId = 'POSTGRES_13' | 'POSTGRES_9' | 'MYSQL_8' | 'SQLITE_3'; +export type TestDatabaseId = + | 'POSTGRES_13' + | 'POSTGRES_9' + | 'MYSQL_8' + | 'SQLITE_3'; // @public export class TestDatabases { - static create(options?: { - ids?: TestDatabaseId[]; - disableDocker?: boolean; - }): TestDatabases; - // (undocumented) - eachSupportedId(): [TestDatabaseId][]; - init(id: TestDatabaseId): Promise; - // (undocumented) - supports(id: TestDatabaseId): boolean; + static create(options?: { + ids?: TestDatabaseId[]; + disableDocker?: boolean; + }): TestDatabases; + // (undocumented) + eachSupportedId(): [TestDatabaseId][]; + init(id: TestDatabaseId): Promise; + // (undocumented) + supports(id: TestDatabaseId): boolean; } - // (No @packageDocumentation comment for this package) - ``` diff --git a/packages/catalog-client/api-report.md b/packages/catalog-client/api-report.md index 1f911c84e9..2abdeb8c75 100644 --- a/packages/catalog-client/api-report.md +++ b/packages/catalog-client/api-report.md @@ -3,83 +3,130 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { Entity } from '@backstage/catalog-model'; import { EntityName } from '@backstage/catalog-model'; import { Location as Location_2 } from '@backstage/catalog-model'; // @public (undocumented) export type AddLocationRequest = { - type?: string; - target: string; - dryRun?: boolean; - presence?: 'optional' | 'required'; + type?: string; + target: string; + dryRun?: boolean; + presence?: 'optional' | 'required'; }; // @public (undocumented) export type AddLocationResponse = { - location: Location_2; - entities: Entity[]; + location: Location_2; + entities: Entity[]; }; // @public (undocumented) export interface CatalogApi { - // (undocumented) - addLocation(location: AddLocationRequest, options?: CatalogRequestOptions): Promise; - // (undocumented) - getEntities(request?: CatalogEntitiesRequest, options?: CatalogRequestOptions): Promise>; - // (undocumented) - getEntityByName(name: EntityName, options?: CatalogRequestOptions): Promise; - // (undocumented) - getLocationByEntity(entity: Entity, options?: CatalogRequestOptions): Promise; - // (undocumented) - getLocationById(id: string, options?: CatalogRequestOptions): Promise; - // (undocumented) - getOriginLocationByEntity(entity: Entity, options?: CatalogRequestOptions): Promise; - // (undocumented) - removeEntityByUid(uid: string, options?: CatalogRequestOptions): Promise; - // (undocumented) - removeLocationById(id: string, options?: CatalogRequestOptions): Promise; + // (undocumented) + addLocation( + location: AddLocationRequest, + options?: CatalogRequestOptions, + ): Promise; + // (undocumented) + getEntities( + request?: CatalogEntitiesRequest, + options?: CatalogRequestOptions, + ): Promise>; + // (undocumented) + getEntityByName( + name: EntityName, + options?: CatalogRequestOptions, + ): Promise; + // (undocumented) + getLocationByEntity( + entity: Entity, + options?: CatalogRequestOptions, + ): Promise; + // (undocumented) + getLocationById( + id: string, + options?: CatalogRequestOptions, + ): Promise; + // (undocumented) + getOriginLocationByEntity( + entity: Entity, + options?: CatalogRequestOptions, + ): Promise; + // (undocumented) + removeEntityByUid( + uid: string, + options?: CatalogRequestOptions, + ): Promise; + // (undocumented) + removeLocationById( + id: string, + options?: CatalogRequestOptions, + ): Promise; } // @public (undocumented) export class CatalogClient implements CatalogApi { - constructor(options: { - discoveryApi: DiscoveryApi; - }); - // (undocumented) - addLocation({ type, target, dryRun, presence }: AddLocationRequest, options?: CatalogRequestOptions): Promise; - // (undocumented) - getEntities(request?: CatalogEntitiesRequest, options?: CatalogRequestOptions): Promise>; - // (undocumented) - getEntityByName(compoundName: EntityName, options?: CatalogRequestOptions): Promise; - // (undocumented) - getLocationByEntity(entity: Entity, options?: CatalogRequestOptions): Promise; - // (undocumented) - getLocationById(id: string, options?: CatalogRequestOptions): Promise; - // (undocumented) - getOriginLocationByEntity(entity: Entity, options?: CatalogRequestOptions): Promise; - // (undocumented) - removeEntityByUid(uid: string, options?: CatalogRequestOptions): Promise; - // (undocumented) - removeLocationById(id: string, options?: CatalogRequestOptions): Promise; - } + constructor(options: { discoveryApi: DiscoveryApi }); + // (undocumented) + addLocation( + { type, target, dryRun, presence }: AddLocationRequest, + options?: CatalogRequestOptions, + ): Promise; + // (undocumented) + getEntities( + request?: CatalogEntitiesRequest, + options?: CatalogRequestOptions, + ): Promise>; + // (undocumented) + getEntityByName( + compoundName: EntityName, + options?: CatalogRequestOptions, + ): Promise; + // (undocumented) + getLocationByEntity( + entity: Entity, + options?: CatalogRequestOptions, + ): Promise; + // (undocumented) + getLocationById( + id: string, + options?: CatalogRequestOptions, + ): Promise; + // (undocumented) + getOriginLocationByEntity( + entity: Entity, + options?: CatalogRequestOptions, + ): Promise; + // (undocumented) + removeEntityByUid( + uid: string, + options?: CatalogRequestOptions, + ): Promise; + // (undocumented) + removeLocationById( + id: string, + options?: CatalogRequestOptions, + ): Promise; +} // @public (undocumented) export type CatalogEntitiesRequest = { - filter?: Record[] | Record | undefined; - fields?: string[] | undefined; + filter?: + | Record[] + | Record + | undefined; + fields?: string[] | undefined; }; // @public (undocumented) export type CatalogListResponse = { - items: T[]; + items: T[]; }; // @public -export const ENTITY_STATUS_CATALOG_PROCESSING_TYPE = "backstage.io/catalog-processing"; - +export const ENTITY_STATUS_CATALOG_PROCESSING_TYPE = + 'backstage.io/catalog-processing'; // (No @packageDocumentation comment for this package) - ``` diff --git a/packages/catalog-model/api-report.md b/packages/catalog-model/api-report.md index 5d055566be..74027716de 100644 --- a/packages/catalog-model/api-report.md +++ b/packages/catalog-model/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { JsonObject } from '@backstage/config'; import { JSONSchema7 } from 'json-schema'; import { JsonValue } from '@backstage/config'; @@ -11,204 +10,222 @@ import { SerializedError } from '@backstage/errors'; import * as yup from 'yup'; // @public @deprecated (undocumented) -export const analyzeLocationSchema: yup.ObjectSchema<{ +export const analyzeLocationSchema: yup.ObjectSchema< + { location: LocationSpec; -}, object>; + }, + object +>; // @public (undocumented) interface ApiEntityV1alpha1 extends Entity { - // (undocumented) - apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1'; - // (undocumented) - kind: 'API'; - // (undocumented) - spec: { - type: string; - lifecycle: string; - owner: string; - definition: string; - system?: string; - }; + // (undocumented) + apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1'; + // (undocumented) + kind: 'API'; + // (undocumented) + spec: { + type: string; + lifecycle: string; + owner: string; + definition: string; + system?: string; + }; } - -export { ApiEntityV1alpha1 as ApiEntity } - -export { ApiEntityV1alpha1 } +export { ApiEntityV1alpha1 as ApiEntity }; +export { ApiEntityV1alpha1 }; // @public (undocumented) export const apiEntityV1alpha1Validator: KindValidator; // @public export class CommonValidatorFunctions { - static isJsonSafe(value: unknown): boolean; - static isValidDnsLabel(value: unknown): boolean; - static isValidDnsSubdomain(value: unknown): boolean; - static isValidPrefixAndOrSuffix(value: unknown, separator: string, isValidPrefix: (value: string) => boolean, isValidSuffix: (value: string) => boolean): boolean; - static isValidString(value: unknown): boolean; - static isValidUrl(value: unknown): boolean; + static isJsonSafe(value: unknown): boolean; + static isValidDnsLabel(value: unknown): boolean; + static isValidDnsSubdomain(value: unknown): boolean; + static isValidPrefixAndOrSuffix( + value: unknown, + separator: string, + isValidPrefix: (value: string) => boolean, + isValidSuffix: (value: string) => boolean, + ): boolean; + static isValidString(value: unknown): boolean; + static isValidUrl(value: unknown): boolean; } // @public -export function compareEntityToRef(entity: Entity, ref: EntityRef | EntityName, context?: EntityRefContext): boolean; +export function compareEntityToRef( + entity: Entity, + ref: EntityRef | EntityName, + context?: EntityRefContext, +): boolean; // @public (undocumented) interface ComponentEntityV1alpha1 extends Entity { - // (undocumented) - apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1'; - // (undocumented) - kind: 'Component'; - // (undocumented) - spec: { - type: string; - lifecycle: string; - owner: string; - subcomponentOf?: string; - providesApis?: string[]; - consumesApis?: string[]; - dependsOn?: string[]; - system?: string; - }; + // (undocumented) + apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1'; + // (undocumented) + kind: 'Component'; + // (undocumented) + spec: { + type: string; + lifecycle: string; + owner: string; + subcomponentOf?: string; + providesApis?: string[]; + consumesApis?: string[]; + dependsOn?: string[]; + system?: string; + }; } - -export { ComponentEntityV1alpha1 as ComponentEntity } - -export { ComponentEntityV1alpha1 } +export { ComponentEntityV1alpha1 as ComponentEntity }; +export { ComponentEntityV1alpha1 }; // @public (undocumented) export const componentEntityV1alpha1Validator: KindValidator; // @public export class DefaultNamespaceEntityPolicy implements EntityPolicy { - constructor(namespace?: string); - // (undocumented) - enforce(entity: Entity): Promise; - } + constructor(namespace?: string); + // (undocumented) + enforce(entity: Entity): Promise; +} // @public (undocumented) interface DomainEntityV1alpha1 extends Entity { - // (undocumented) - apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1'; - // (undocumented) - kind: 'Domain'; - // (undocumented) - spec: { - owner: string; - }; + // (undocumented) + apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1'; + // (undocumented) + kind: 'Domain'; + // (undocumented) + spec: { + owner: string; + }; } - -export { DomainEntityV1alpha1 as DomainEntity } - -export { DomainEntityV1alpha1 } +export { DomainEntityV1alpha1 as DomainEntity }; +export { DomainEntityV1alpha1 }; // @public (undocumented) export const domainEntityV1alpha1Validator: KindValidator; // @public (undocumented) -export const EDIT_URL_ANNOTATION = "backstage.io/edit-url"; +export const EDIT_URL_ANNOTATION = 'backstage.io/edit-url'; // @public export type Entity = { - apiVersion: string; - kind: string; - metadata: EntityMeta; - spec?: JsonObject; - relations?: EntityRelation[]; - status?: UNSTABLE_EntityStatus; + apiVersion: string; + kind: string; + metadata: EntityMeta; + spec?: JsonObject; + relations?: EntityRelation[]; + status?: UNSTABLE_EntityStatus; }; // @public -export const ENTITY_DEFAULT_NAMESPACE = "default"; +export const ENTITY_DEFAULT_NAMESPACE = 'default'; // @public -export const ENTITY_META_GENERATED_FIELDS: readonly ["uid", "etag", "generation"]; +export const ENTITY_META_GENERATED_FIELDS: readonly [ + 'uid', + 'etag', + 'generation', +]; // @public export type EntityEnvelope = { - apiVersion: string; - kind: string; - metadata: { - name: string; - namespace?: string; - }; + apiVersion: string; + kind: string; + metadata: { + name: string; + namespace?: string; + }; }; // @public -export function entityEnvelopeSchemaValidator(schema?: unknown): (data: unknown) => T; +export function entityEnvelopeSchemaValidator< + T extends EntityEnvelope = EntityEnvelope +>(schema?: unknown): (data: unknown) => T; // @public export function entityHasChanges(previous: Entity, next: Entity): boolean; // @public -export function entityKindSchemaValidator(schema: unknown): (data: unknown) => T | false; +export function entityKindSchemaValidator( + schema: unknown, +): (data: unknown) => T | false; // @public export type EntityLink = { - url: string; - title?: string; - icon?: string; + url: string; + title?: string; + icon?: string; }; // @public export type EntityMeta = JsonObject & { - uid?: string; - etag?: string; - generation?: number; - name: string; - namespace?: string; - description?: string; - labels?: Record; - annotations?: Record; - tags?: string[]; - links?: EntityLink[]; + uid?: string; + etag?: string; + generation?: number; + name: string; + namespace?: string; + description?: string; + labels?: Record; + annotations?: Record; + tags?: string[]; + links?: EntityLink[]; }; // @public export type EntityName = { - kind: string; - namespace: string; - name: string; + kind: string; + namespace: string; + name: string; }; // @public (undocumented) export const EntityPolicies: { - allOf(policies: EntityPolicy[]): AllEntityPolicies; - oneOf(policies: EntityPolicy[]): AnyEntityPolicy; + allOf(policies: EntityPolicy[]): AllEntityPolicies; + oneOf(policies: EntityPolicy[]): AnyEntityPolicy; }; // @public export type EntityPolicy = { - enforce(entity: Entity): Promise; + enforce(entity: Entity): Promise; }; // @public -export type EntityRef = string | { - kind?: string; - namespace?: string; - name: string; -}; +export type EntityRef = + | string + | { + kind?: string; + namespace?: string; + name: string; + }; // @public export type EntityRelation = { - type: string; - target: EntityName; + type: string; + target: EntityName; }; // @public export type EntityRelationSpec = { - source: EntityName; - type: string; - target: EntityName; + source: EntityName; + type: string; + target: EntityName; }; // @public -export function entitySchemaValidator(schema?: unknown): (data: unknown) => T; +export function entitySchemaValidator( + schema?: unknown, +): (data: unknown) => T; // @public export class FieldFormatEntityPolicy implements EntityPolicy { - constructor(validators?: Validators); - // (undocumented) - enforce(entity: Entity): Promise; - } + constructor(validators?: Validators); + // (undocumented) + enforce(entity: Entity): Promise; +} // @public export function generateEntityEtag(): string; @@ -223,95 +240,93 @@ export function generateUpdatedEntity(previous: Entity, next: Entity): Entity; export function getEntityName(entity: Entity): EntityName; // @public -export function getEntitySourceLocation(entity: Entity): { - type: string; - target: string; +export function getEntitySourceLocation( + entity: Entity, +): { + type: string; + target: string; }; // @public (undocumented) interface GroupEntityV1alpha1 extends Entity { - // (undocumented) - apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1'; - // (undocumented) - kind: 'Group'; - // (undocumented) - spec: { - type: string; - profile?: { - displayName?: string; - email?: string; - picture?: string; - }; - parent?: string; - children: string[]; - members?: string[]; + // (undocumented) + apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1'; + // (undocumented) + kind: 'Group'; + // (undocumented) + spec: { + type: string; + profile?: { + displayName?: string; + email?: string; + picture?: string; }; + parent?: string; + children: string[]; + members?: string[]; + }; } - -export { GroupEntityV1alpha1 as GroupEntity } - -export { GroupEntityV1alpha1 } +export { GroupEntityV1alpha1 as GroupEntity }; +export { GroupEntityV1alpha1 }; // @public (undocumented) export const groupEntityV1alpha1Validator: KindValidator; // @public (undocumented) -export type JSONSchema = JSONSchema7 & { +export type JSONSchema = JSONSchema7 & + { [key in string]?: JsonValue; -}; + }; // @public export type KindValidator = { - check(entity: Entity): Promise; + check(entity: Entity): Promise; }; // @public export class KubernetesValidatorFunctions { - // (undocumented) - static isValidAnnotationKey(value: unknown): boolean; - // (undocumented) - static isValidAnnotationValue(value: unknown): boolean; - // (undocumented) - static isValidApiVersion(value: unknown): boolean; - // (undocumented) - static isValidKind(value: unknown): boolean; - // (undocumented) - static isValidLabelKey(value: unknown): boolean; - // (undocumented) - static isValidLabelValue(value: unknown): boolean; - // (undocumented) - static isValidNamespace(value: unknown): boolean; - // (undocumented) - static isValidObjectName(value: unknown): boolean; + // (undocumented) + static isValidAnnotationKey(value: unknown): boolean; + // (undocumented) + static isValidAnnotationValue(value: unknown): boolean; + // (undocumented) + static isValidApiVersion(value: unknown): boolean; + // (undocumented) + static isValidKind(value: unknown): boolean; + // (undocumented) + static isValidLabelKey(value: unknown): boolean; + // (undocumented) + static isValidLabelValue(value: unknown): boolean; + // (undocumented) + static isValidNamespace(value: unknown): boolean; + // (undocumented) + static isValidObjectName(value: unknown): boolean; } // @public (undocumented) type Location_2 = { - id: string; + id: string; } & LocationSpec; - -export { Location_2 as Location } +export { Location_2 as Location }; // @public (undocumented) -export const LOCATION_ANNOTATION = "backstage.io/managed-by-location"; +export const LOCATION_ANNOTATION = 'backstage.io/managed-by-location'; // @public (undocumented) interface LocationEntityV1alpha1 extends Entity { - // (undocumented) - apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1'; - // (undocumented) - kind: 'Location'; - // (undocumented) - spec: { - type?: string; - target?: string; - targets?: string[]; - }; + // (undocumented) + apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1'; + // (undocumented) + kind: 'Location'; + // (undocumented) + spec: { + type?: string; + target?: string; + targets?: string[]; + }; } - -export { LocationEntityV1alpha1 as LocationEntity } - -export { LocationEntityV1alpha1 } +export { LocationEntityV1alpha1 as LocationEntity }; +export { LocationEntityV1alpha1 }; // @public (undocumented) export const locationEntityV1alpha1Validator: KindValidator; @@ -321,9 +336,9 @@ export const locationSchema: yup.ObjectSchema; // @public (undocumented) export type LocationSpec = { - type: string; - target: string; - presence?: 'optional' | 'required'; + type: string; + target: string; + presence?: 'optional' | 'required'; }; // @public @deprecated (undocumented) @@ -334,190 +349,209 @@ export function makeValidator(overrides?: Partial): Validators; // @public export class NoForeignRootFieldsEntityPolicy implements EntityPolicy { - constructor(knownFields?: string[]); - // (undocumented) - enforce(entity: Entity): Promise; - } + constructor(knownFields?: string[]); + // (undocumented) + enforce(entity: Entity): Promise; +} // @public (undocumented) -export const ORIGIN_LOCATION_ANNOTATION = "backstage.io/managed-by-origin-location"; +export const ORIGIN_LOCATION_ANNOTATION = + 'backstage.io/managed-by-origin-location'; // @public -export function parseEntityName(ref: EntityRef, context?: EntityRefContext): EntityName; +export function parseEntityName( + ref: EntityRef, + context?: EntityRefContext, +): EntityName; // @public -export function parseEntityRef(ref: EntityRef, context?: { +export function parseEntityRef( + ref: EntityRef, + context?: { defaultKind: string; defaultNamespace: string; -}): { - kind: string; - namespace: string; - name: string; + }, +): { + kind: string; + namespace: string; + name: string; }; // @public (undocumented) -export function parseEntityRef(ref: EntityRef, context?: { +export function parseEntityRef( + ref: EntityRef, + context?: { defaultKind: string; -}): { - kind: string; - namespace?: string; - name: string; + }, +): { + kind: string; + namespace?: string; + name: string; }; // @public (undocumented) -export function parseEntityRef(ref: EntityRef, context?: { +export function parseEntityRef( + ref: EntityRef, + context?: { defaultNamespace: string; -}): { - kind?: string; - namespace: string; - name: string; + }, +): { + kind?: string; + namespace: string; + name: string; }; // @public -export function parseLocationReference(ref: string): { - type: string; - target: string; +export function parseLocationReference( + ref: string, +): { + type: string; + target: string; }; // @public (undocumented) -export const RELATION_API_CONSUMED_BY = "apiConsumedBy"; +export const RELATION_API_CONSUMED_BY = 'apiConsumedBy'; // @public (undocumented) -export const RELATION_API_PROVIDED_BY = "apiProvidedBy"; +export const RELATION_API_PROVIDED_BY = 'apiProvidedBy'; // @public (undocumented) -export const RELATION_CHILD_OF = "childOf"; +export const RELATION_CHILD_OF = 'childOf'; // @public -export const RELATION_CONSUMES_API = "consumesApi"; +export const RELATION_CONSUMES_API = 'consumesApi'; // @public (undocumented) -export const RELATION_DEPENDENCY_OF = "dependencyOf"; +export const RELATION_DEPENDENCY_OF = 'dependencyOf'; // @public -export const RELATION_DEPENDS_ON = "dependsOn"; +export const RELATION_DEPENDS_ON = 'dependsOn'; // @public (undocumented) -export const RELATION_HAS_MEMBER = "hasMember"; +export const RELATION_HAS_MEMBER = 'hasMember'; // @public (undocumented) -export const RELATION_HAS_PART = "hasPart"; +export const RELATION_HAS_PART = 'hasPart'; // @public -export const RELATION_MEMBER_OF = "memberOf"; +export const RELATION_MEMBER_OF = 'memberOf'; // @public -export const RELATION_OWNED_BY = "ownedBy"; +export const RELATION_OWNED_BY = 'ownedBy'; // @public (undocumented) -export const RELATION_OWNER_OF = "ownerOf"; +export const RELATION_OWNER_OF = 'ownerOf'; // @public -export const RELATION_PARENT_OF = "parentOf"; +export const RELATION_PARENT_OF = 'parentOf'; // @public -export const RELATION_PART_OF = "partOf"; +export const RELATION_PART_OF = 'partOf'; // @public (undocumented) -export const RELATION_PROVIDES_API = "providesApi"; +export const RELATION_PROVIDES_API = 'providesApi'; // @public (undocumented) interface ResourceEntityV1alpha1 extends Entity { - // (undocumented) - apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1'; - // (undocumented) - kind: 'Resource'; - // (undocumented) - spec: { - type: string; - owner: string; - dependsOn?: string[]; - system?: string; - }; + // (undocumented) + apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1'; + // (undocumented) + kind: 'Resource'; + // (undocumented) + spec: { + type: string; + owner: string; + dependsOn?: string[]; + system?: string; + }; } - -export { ResourceEntityV1alpha1 as ResourceEntity } - -export { ResourceEntityV1alpha1 } +export { ResourceEntityV1alpha1 as ResourceEntity }; +export { ResourceEntityV1alpha1 }; // @public (undocumented) export const resourceEntityV1alpha1Validator: KindValidator; // @public export class SchemaValidEntityPolicy implements EntityPolicy { - // (undocumented) - enforce(entity: Entity): Promise; - } + // (undocumented) + enforce(entity: Entity): Promise; +} // @public @deprecated -export function serializeEntityRef(ref: Entity | { - kind?: string; - namespace?: string; - name: string; -}): EntityRef; +export function serializeEntityRef( + ref: + | Entity + | { + kind?: string; + namespace?: string; + name: string; + }, +): EntityRef; // @public (undocumented) -export const SOURCE_LOCATION_ANNOTATION = "backstage.io/source-location"; +export const SOURCE_LOCATION_ANNOTATION = 'backstage.io/source-location'; // @public -export function stringifyEntityRef(ref: Entity | { - kind: string; - namespace?: string; - name: string; -}): string; +export function stringifyEntityRef( + ref: + | Entity + | { + kind: string; + namespace?: string; + name: string; + }, +): string; // @public export function stringifyLocationReference(ref: { - type: string; - target: string; + type: string; + target: string; }): string; // @public (undocumented) interface SystemEntityV1alpha1 extends Entity { - // (undocumented) - apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1'; - // (undocumented) - kind: 'System'; - // (undocumented) - spec: { - owner: string; - domain?: string; - }; + // (undocumented) + apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1'; + // (undocumented) + kind: 'System'; + // (undocumented) + spec: { + owner: string; + domain?: string; + }; } - -export { SystemEntityV1alpha1 as SystemEntity } - -export { SystemEntityV1alpha1 } +export { SystemEntityV1alpha1 as SystemEntity }; +export { SystemEntityV1alpha1 }; // @public (undocumented) export const systemEntityV1alpha1Validator: KindValidator; // @public (undocumented) export interface TemplateEntityV1beta2 extends Entity { - // (undocumented) - apiVersion: 'backstage.io/v1beta2'; - // (undocumented) - kind: 'Template'; - // (undocumented) - metadata: EntityMeta & { - title?: string; - }; - // (undocumented) - spec: { - type: string; - parameters?: JsonObject | JsonObject[]; - steps: Array<{ - id?: string; - name?: string; - action: string; - input?: JsonObject; - if?: string | boolean; - }>; - output?: { - [name: string]: string; - }; - owner?: string; + // (undocumented) + apiVersion: 'backstage.io/v1beta2'; + // (undocumented) + kind: 'Template'; + // (undocumented) + metadata: EntityMeta & { + title?: string; + }; + // (undocumented) + spec: { + type: string; + parameters?: JsonObject | JsonObject[]; + steps: Array<{ + id?: string; + name?: string; + action: string; + input?: JsonObject; + if?: string | boolean; + }>; + output?: { + [name: string]: string; }; + owner?: string; + }; } // @public (undocumented) @@ -525,15 +559,15 @@ export const templateEntityV1beta2Validator: KindValidator; // @alpha export type UNSTABLE_EntityStatus = { - items?: UNSTABLE_EntityStatusItem[]; + items?: UNSTABLE_EntityStatusItem[]; }; // @alpha export type UNSTABLE_EntityStatusItem = { - type: string; - level: UNSTABLE_EntityStatusLevel; - message: string; - error?: SerializedError; + type: string; + level: UNSTABLE_EntityStatusLevel; + message: string; + error?: SerializedError; }; // @alpha @@ -541,45 +575,41 @@ export type UNSTABLE_EntityStatusLevel = 'info' | 'warning' | 'error'; // @public (undocumented) interface UserEntityV1alpha1 extends Entity { - // (undocumented) - apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1'; - // (undocumented) - kind: 'User'; - // (undocumented) - spec: { - profile?: { - displayName?: string; - email?: string; - picture?: string; - }; - memberOf: string[]; + // (undocumented) + apiVersion: 'backstage.io/v1alpha1' | 'backstage.io/v1beta1'; + // (undocumented) + kind: 'User'; + // (undocumented) + spec: { + profile?: { + displayName?: string; + email?: string; + picture?: string; }; + memberOf: string[]; + }; } - -export { UserEntityV1alpha1 as UserEntity } - -export { UserEntityV1alpha1 } +export { UserEntityV1alpha1 as UserEntity }; +export { UserEntityV1alpha1 }; // @public (undocumented) export const userEntityV1alpha1Validator: KindValidator; // @public (undocumented) export type Validators = { - isValidApiVersion(value: unknown): boolean; - isValidKind(value: unknown): boolean; - isValidEntityName(value: unknown): boolean; - isValidNamespace(value: unknown): boolean; - isValidLabelKey(value: unknown): boolean; - isValidLabelValue(value: unknown): boolean; - isValidAnnotationKey(value: unknown): boolean; - isValidAnnotationValue(value: unknown): boolean; - isValidTag(value: unknown): boolean; + isValidApiVersion(value: unknown): boolean; + isValidKind(value: unknown): boolean; + isValidEntityName(value: unknown): boolean; + isValidNamespace(value: unknown): boolean; + isValidLabelKey(value: unknown): boolean; + isValidLabelValue(value: unknown): boolean; + isValidAnnotationKey(value: unknown): boolean; + isValidAnnotationValue(value: unknown): boolean; + isValidTag(value: unknown): boolean; }; // @public -export const VIEW_URL_ANNOTATION = "backstage.io/view-url"; - +export const VIEW_URL_ANNOTATION = 'backstage.io/view-url'; // (No @packageDocumentation comment for this package) - ``` diff --git a/packages/config-loader/api-report.md b/packages/config-loader/api-report.md index a09311b786..ffd15b0c9a 100644 --- a/packages/config-loader/api-report.md +++ b/packages/config-loader/api-report.md @@ -3,15 +3,17 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { AppConfig } from '@backstage/config'; import { JsonObject } from '@backstage/config'; import { JSONSchema7 } from 'json-schema'; // @public export type ConfigSchema = { - process(appConfigs: AppConfig[], options?: ConfigProcessingOptions): AppConfig[]; - serialize(): JsonObject; + process( + appConfigs: AppConfig[], + options?: ConfigProcessingOptions, + ): AppConfig[]; + serialize(): JsonObject; }; // @public @@ -22,10 +24,10 @@ export function loadConfig(options: LoadConfigOptions): Promise; // @public (undocumented) export type LoadConfigOptions = { - configRoot: string; - configPaths: string[]; - env?: string; - experimentalEnvFunc?: EnvFunc; + configRoot: string; + configPaths: string[]; + env?: string; + experimentalEnvFunc?: EnvFunc; }; // @public @@ -36,10 +38,8 @@ export function mergeConfigSchemas(schemas: JSONSchema7[]): JSONSchema7; // @public export function readEnvConfig(env: { - [name: string]: string | undefined; + [name: string]: string | undefined; }): AppConfig[]; - // (No @packageDocumentation comment for this package) - ``` diff --git a/packages/config/api-report.md b/packages/config/api-report.md index be250778ec..0c243aab48 100644 --- a/packages/config/api-report.md +++ b/packages/config/api-report.md @@ -3,79 +3,82 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - // @public (undocumented) export type AppConfig = { - context: string; - data: JsonObject; + context: string; + data: JsonObject; }; // @public (undocumented) export type Config = { - has(key: string): boolean; - keys(): string[]; - get(key?: string): T; - getOptional(key?: string): T | undefined; - getConfig(key: string): Config; - getOptionalConfig(key: string): Config | undefined; - getConfigArray(key: string): Config[]; - getOptionalConfigArray(key: string): Config[] | undefined; - getNumber(key: string): number; - getOptionalNumber(key: string): number | undefined; - getBoolean(key: string): boolean; - getOptionalBoolean(key: string): boolean | undefined; - getString(key: string): string; - getOptionalString(key: string): string | undefined; - getStringArray(key: string): string[]; - getOptionalStringArray(key: string): string[] | undefined; + has(key: string): boolean; + keys(): string[]; + get(key?: string): T; + getOptional(key?: string): T | undefined; + getConfig(key: string): Config; + getOptionalConfig(key: string): Config | undefined; + getConfigArray(key: string): Config[]; + getOptionalConfigArray(key: string): Config[] | undefined; + getNumber(key: string): number; + getOptionalNumber(key: string): number | undefined; + getBoolean(key: string): boolean; + getOptionalBoolean(key: string): boolean | undefined; + getString(key: string): string; + getOptionalString(key: string): string | undefined; + getStringArray(key: string): string[]; + getOptionalStringArray(key: string): string[] | undefined; }; // @public (undocumented) export class ConfigReader implements Config { - constructor(data: JsonObject | undefined, context?: string, fallback?: ConfigReader | undefined, prefix?: string); - // (undocumented) - static fromConfigs(configs: AppConfig[]): ConfigReader; - // (undocumented) - get(key?: string): T; - // (undocumented) - getBoolean(key: string): boolean; - // (undocumented) - getConfig(key: string): ConfigReader; - // (undocumented) - getConfigArray(key: string): ConfigReader[]; - // (undocumented) - getNumber(key: string): number; - // (undocumented) - getOptional(key?: string): T | undefined; - // (undocumented) - getOptionalBoolean(key: string): boolean | undefined; - // (undocumented) - getOptionalConfig(key: string): ConfigReader | undefined; - // (undocumented) - getOptionalConfigArray(key: string): ConfigReader[] | undefined; - // (undocumented) - getOptionalNumber(key: string): number | undefined; - // (undocumented) - getOptionalString(key: string): string | undefined; - // (undocumented) - getOptionalStringArray(key: string): string[] | undefined; - // (undocumented) - getString(key: string): string; - // (undocumented) - getStringArray(key: string): string[]; - // (undocumented) - has(key: string): boolean; - // (undocumented) - keys(): string[]; - } - -// @public (undocumented) -export interface JsonArray extends Array { + constructor( + data: JsonObject | undefined, + context?: string, + fallback?: ConfigReader | undefined, + prefix?: string, + ); + // (undocumented) + static fromConfigs(configs: AppConfig[]): ConfigReader; + // (undocumented) + get(key?: string): T; + // (undocumented) + getBoolean(key: string): boolean; + // (undocumented) + getConfig(key: string): ConfigReader; + // (undocumented) + getConfigArray(key: string): ConfigReader[]; + // (undocumented) + getNumber(key: string): number; + // (undocumented) + getOptional(key?: string): T | undefined; + // (undocumented) + getOptionalBoolean(key: string): boolean | undefined; + // (undocumented) + getOptionalConfig(key: string): ConfigReader | undefined; + // (undocumented) + getOptionalConfigArray(key: string): ConfigReader[] | undefined; + // (undocumented) + getOptionalNumber(key: string): number | undefined; + // (undocumented) + getOptionalString(key: string): string | undefined; + // (undocumented) + getOptionalStringArray(key: string): string[] | undefined; + // (undocumented) + getString(key: string): string; + // (undocumented) + getStringArray(key: string): string[]; + // (undocumented) + has(key: string): boolean; + // (undocumented) + keys(): string[]; } +// @public (undocumented) +export interface JsonArray extends Array {} + // @public (undocumented) export type JsonObject = { - [key in string]?: JsonValue; + [key in string]?: JsonValue; }; // @public (undocumented) @@ -84,7 +87,5 @@ export type JsonPrimitive = number | string | boolean | null; // @public (undocumented) export type JsonValue = JsonObject | JsonArray | JsonPrimitive; - // (No @packageDocumentation comment for this package) - ``` diff --git a/packages/core-app-api/api-report.md b/packages/core-app-api/api-report.md index ea3198d677..af86f042a0 100644 --- a/packages/core-app-api/api-report.md +++ b/packages/core-app-api/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { AlertApi } from '@backstage/core-plugin-api'; import { AlertMessage } from '@backstage/core-plugin-api'; import { AnyApiFactory } from '@backstage/core-plugin-api'; @@ -57,72 +56,97 @@ import { SubRouteRef } from '@backstage/core-plugin-api'; // @public export class AlertApiForwarder implements AlertApi { - // (undocumented) - alert$(): Observable; - // (undocumented) - post(alert: AlertMessage): void; + // (undocumented) + alert$(): Observable; + // (undocumented) + post(alert: AlertMessage): void; } // @public (undocumented) export type ApiFactoryHolder = { - get(api: ApiRef): ApiFactory | undefined; + get( + api: ApiRef, + ): + | ApiFactory< + T, + T, + { + [key in string]: unknown; + } + > + | undefined; }; // @public export class ApiFactoryRegistry implements ApiFactoryHolder { - // (undocumented) - get(api: ApiRef): ApiFactory | undefined; - // (undocumented) - getAllApis(): Set; - register(scope: ApiFactoryScope, factory: ApiFactory): boolean; + // (undocumented) + get( + api: ApiRef, + ): + | ApiFactory< + T, + T, + { + [x: string]: unknown; + } + > + | undefined; + // (undocumented) + getAllApis(): Set; + register< + Api, + Impl extends Api, + Deps extends { + [name in string]: unknown; + } + >(scope: ApiFactoryScope, factory: ApiFactory): boolean; } // @public (undocumented) export const ApiProvider: { - ({ apis, children, }: PropsWithChildren): JSX.Element; - propTypes: { - apis: PropTypes.Validator any>; - }>>; - children: PropTypes.Requireable; - }; + ({ apis, children }: PropsWithChildren): JSX.Element; + propTypes: { + apis: PropTypes.Validator< + PropTypes.InferProps<{ + get: PropTypes.Validator<(...args: any[]) => any>; + }> + >; + children: PropTypes.Requireable; + }; }; // @public (undocumented) export class ApiRegistry implements ApiHolder { - constructor(apis: Map); - // (undocumented) - static builder(): ApiRegistryBuilder; - // (undocumented) - static from(apis: ApiImpl[]): ApiRegistry; - // (undocumented) - get(api: ApiRef): T | undefined; - static with(api: ApiRef, impl: T): ApiRegistry; - with(api: ApiRef, impl: T): ApiRegistry; + constructor(apis: Map); + // (undocumented) + static builder(): ApiRegistryBuilder; + // (undocumented) + static from(apis: ApiImpl[]): ApiRegistry; + // (undocumented) + get(api: ApiRef): T | undefined; + static with(api: ApiRef, impl: T): ApiRegistry; + with(api: ApiRef, impl: T): ApiRegistry; } // @public (undocumented) export class ApiResolver implements ApiHolder { - constructor(factories: ApiFactoryHolder); - // (undocumented) - get(ref: ApiRef): T | undefined; - static validateFactories(factories: ApiFactoryHolder, apis: Iterable): void; + constructor(factories: ApiFactoryHolder); + // (undocumented) + get(ref: ApiRef): T | undefined; + static validateFactories( + factories: ApiFactoryHolder, + apis: Iterable, + ): void; } // @public (undocumented) export type AppComponents = { - NotFoundErrorPage: ComponentType<{}>; - BootErrorPage: ComponentType; - Progress: ComponentType<{}>; - Router: ComponentType<{}>; - ErrorBoundaryFallback: ComponentType; - SignInPage?: ComponentType; + NotFoundErrorPage: ComponentType<{}>; + BootErrorPage: ComponentType; + Progress: ComponentType<{}>; + Router: ComponentType<{}>; + ErrorBoundaryFallback: ComponentType; + SignInPage?: ComponentType; }; // @public @@ -130,72 +154,88 @@ export type AppConfigLoader = () => Promise; // @public (undocumented) export type AppContext = { - getPlugins(): BackstagePlugin[]; - getSystemIcon(key: string): IconComponent | undefined; - getComponents(): AppComponents; + getPlugins(): BackstagePlugin[]; + getSystemIcon(key: string): IconComponent | undefined; + getComponents(): AppComponents; }; // @public (undocumented) export type AppOptions = { - apis?: Iterable; - icons?: Partial & { - [key in string]: IconComponent; + apis?: Iterable; + icons?: Partial & + { + [key in string]: IconComponent; }; - plugins?: BackstagePluginWithAnyOutput[]; - components?: Partial; - themes?: AppTheme[]; - configLoader?: AppConfigLoader; - bindRoutes?(context: { - bind: AppRouteBinder; - }): void; + plugins?: BackstagePluginWithAnyOutput[]; + components?: Partial; + themes?: AppTheme[]; + configLoader?: AppConfigLoader; + bindRoutes?(context: { bind: AppRouteBinder }): void; }; // @public (undocumented) -export type AppRouteBinder = (externalRoutes: ExternalRoutes, targetRoutes: PartialKeys, KeysWithType>>) => void; + } +>( + externalRoutes: ExternalRoutes, + targetRoutes: PartialKeys< + TargetRouteMap, + KeysWithType> + >, +) => void; // @public (undocumented) export class AppThemeSelector implements AppThemeApi { - constructor(themes: AppTheme[]); - // (undocumented) - activeThemeId$(): Observable; - // (undocumented) - static createWithStorage(themes: AppTheme[]): AppThemeSelector; - // (undocumented) - getActiveThemeId(): string | undefined; - // (undocumented) - getInstalledThemes(): AppTheme[]; - // (undocumented) - setActiveThemeId(themeId?: string): void; + constructor(themes: AppTheme[]); + // (undocumented) + activeThemeId$(): Observable; + // (undocumented) + static createWithStorage(themes: AppTheme[]): AppThemeSelector; + // (undocumented) + getActiveThemeId(): string | undefined; + // (undocumented) + getInstalledThemes(): AppTheme[]; + // (undocumented) + setActiveThemeId(themeId?: string): void; } // @public (undocumented) export class Auth0Auth { - // (undocumented) - static create({ discoveryApi, environment, provider, oauthRequestApi, defaultScopes, }: OAuthApiCreateOptions): typeof auth0AuthApiRef.T; + // (undocumented) + static create({ + discoveryApi, + environment, + provider, + oauthRequestApi, + defaultScopes, + }: OAuthApiCreateOptions): typeof auth0AuthApiRef.T; } // @public (undocumented) export type BackstageApp = { - getPlugins(): BackstagePlugin[]; - getSystemIcon(key: string): IconComponent | undefined; - getProvider(): ComponentType<{}>; - getRouter(): ComponentType<{}>; + getPlugins(): BackstagePlugin[]; + getSystemIcon(key: string): IconComponent | undefined; + getProvider(): ComponentType<{}>; + getRouter(): ComponentType<{}>; }; // @public (undocumented) -export type BackstagePluginWithAnyOutput = Omit, 'output'> & { - output(): (PluginOutput | UnknownPluginOutput)[]; +export type BackstagePluginWithAnyOutput = Omit< + BackstagePlugin, + 'output' +> & { + output(): (PluginOutput | UnknownPluginOutput)[]; }; // @public (undocumented) export type BootErrorPageProps = { - step: 'load-config' | 'load-chunk'; - error: Error; + step: 'load-config' | 'load-chunk'; + error: Error; }; -export { ConfigReader } +export { ConfigReader }; // @public export function createApp(options?: AppOptions): PrivateAppImpl; @@ -205,36 +245,36 @@ export const defaultConfigLoader: AppConfigLoader; // @public export class ErrorAlerter implements ErrorApi { - constructor(alertApi: AlertApi, errorApi: ErrorApi); - // (undocumented) - error$(): Observable< { + constructor(alertApi: AlertApi, errorApi: ErrorApi); + // (undocumented) + error$(): Observable<{ error: { - name: string; - message: string; - stack?: string | undefined; + name: string; + message: string; + stack?: string | undefined; }; context?: ErrorContext | undefined; - }>; - // (undocumented) - post(error: Error, context?: ErrorContext): void; + }>; + // (undocumented) + post(error: Error, context?: ErrorContext): void; } // @public export class ErrorApiForwarder implements ErrorApi { - // (undocumented) - error$(): Observable<{ - error: Error; - context?: ErrorContext; - }>; - // (undocumented) - post(error: Error, context?: ErrorContext): void; + // (undocumented) + error$(): Observable<{ + error: Error; + context?: ErrorContext; + }>; + // (undocumented) + post(error: Error, context?: ErrorContext): void; } // @public (undocumented) export type ErrorBoundaryFallbackProps = { - plugin?: BackstagePlugin; - error: Error; - resetError: () => void; + plugin?: BackstagePlugin; + error: Error; + resetError: () => void; }; // @public (undocumented) @@ -242,190 +282,254 @@ export const FeatureFlagged: (props: FeatureFlaggedProps) => JSX.Element; // @public (undocumented) export type FeatureFlaggedProps = { - children: ReactNode; -} & ({ - with: string; -} | { - without: string; -}); + children: ReactNode; +} & ( + | { + with: string; + } + | { + without: string; + } +); // @public (undocumented) export const FlatRoutes: (props: FlatRoutesProps) => JSX.Element | null; // @public (undocumented) export class GithubAuth implements OAuthApi, SessionApi { - constructor(sessionManager: SessionManager); - // (undocumented) - static create({ discoveryApi, environment, provider, oauthRequestApi, defaultScopes, }: OAuthApiCreateOptions): GithubAuth; - // (undocumented) - getAccessToken(scope?: string, options?: AuthRequestOptions): Promise; - // (undocumented) - getBackstageIdentity(options?: AuthRequestOptions): Promise; - // (undocumented) - getProfile(options?: AuthRequestOptions): Promise; - // (undocumented) - static normalizeScope(scope?: string): Set; - // (undocumented) - sessionState$(): Observable; - // (undocumented) - signIn(): Promise; - // (undocumented) - signOut(): Promise; + constructor(sessionManager: SessionManager); + // (undocumented) + static create({ + discoveryApi, + environment, + provider, + oauthRequestApi, + defaultScopes, + }: OAuthApiCreateOptions): GithubAuth; + // (undocumented) + getAccessToken(scope?: string, options?: AuthRequestOptions): Promise; + // (undocumented) + getBackstageIdentity( + options?: AuthRequestOptions, + ): Promise; + // (undocumented) + getProfile(options?: AuthRequestOptions): Promise; + // (undocumented) + static normalizeScope(scope?: string): Set; + // (undocumented) + sessionState$(): Observable; + // (undocumented) + signIn(): Promise; + // (undocumented) + signOut(): Promise; } // @public (undocumented) export type GithubSession = { - providerInfo: { - accessToken: string; - scopes: Set; - expiresAt: Date; - }; - profile: ProfileInfo; - backstageIdentity: BackstageIdentity; + providerInfo: { + accessToken: string; + scopes: Set; + expiresAt: Date; + }; + profile: ProfileInfo; + backstageIdentity: BackstageIdentity; }; // @public (undocumented) export class GitlabAuth { - // (undocumented) - static create({ discoveryApi, environment, provider, oauthRequestApi, defaultScopes, }: OAuthApiCreateOptions): typeof gitlabAuthApiRef.T; + // (undocumented) + static create({ + discoveryApi, + environment, + provider, + oauthRequestApi, + defaultScopes, + }: OAuthApiCreateOptions): typeof gitlabAuthApiRef.T; } // @public (undocumented) export class GoogleAuth { - // (undocumented) - static create({ discoveryApi, oauthRequestApi, environment, provider, defaultScopes, }: OAuthApiCreateOptions): typeof googleAuthApiRef.T; + // (undocumented) + static create({ + discoveryApi, + oauthRequestApi, + environment, + provider, + defaultScopes, + }: OAuthApiCreateOptions): typeof googleAuthApiRef.T; } // @public export class LocalStorageFeatureFlags implements FeatureFlagsApi { - // (undocumented) - getRegisteredFlags(): FeatureFlag[]; - // (undocumented) - isActive(name: string): boolean; - // (undocumented) - registerFlag(flag: FeatureFlag): void; - // (undocumented) - save(options: FeatureFlagsSaveOptions): void; + // (undocumented) + getRegisteredFlags(): FeatureFlag[]; + // (undocumented) + isActive(name: string): boolean; + // (undocumented) + registerFlag(flag: FeatureFlag): void; + // (undocumented) + save(options: FeatureFlagsSaveOptions): void; } // @public (undocumented) export class MicrosoftAuth { - // (undocumented) - static create({ environment, provider, oauthRequestApi, discoveryApi, defaultScopes, }: OAuthApiCreateOptions): typeof microsoftAuthApiRef.T; + // (undocumented) + static create({ + environment, + provider, + oauthRequestApi, + discoveryApi, + defaultScopes, + }: OAuthApiCreateOptions): typeof microsoftAuthApiRef.T; } // @public (undocumented) -export class OAuth2 implements OAuthApi, OpenIdConnectApi, ProfileInfoApi, BackstageIdentityApi, SessionApi { - constructor(options: Options); - // (undocumented) - static create({ discoveryApi, environment, provider, oauthRequestApi, defaultScopes, scopeTransform, }: CreateOptions): OAuth2; - // (undocumented) - getAccessToken(scope?: string | string[], options?: AuthRequestOptions): Promise; - // (undocumented) - getBackstageIdentity(options?: AuthRequestOptions): Promise; - // (undocumented) - getIdToken(options?: AuthRequestOptions): Promise; - // (undocumented) - getProfile(options?: AuthRequestOptions): Promise; - // (undocumented) - sessionState$(): Observable; - // (undocumented) - signIn(): Promise; - // (undocumented) - signOut(): Promise; +export class OAuth2 + implements + OAuthApi, + OpenIdConnectApi, + ProfileInfoApi, + BackstageIdentityApi, + SessionApi { + constructor(options: Options); + // (undocumented) + static create({ + discoveryApi, + environment, + provider, + oauthRequestApi, + defaultScopes, + scopeTransform, + }: CreateOptions): OAuth2; + // (undocumented) + getAccessToken( + scope?: string | string[], + options?: AuthRequestOptions, + ): Promise; + // (undocumented) + getBackstageIdentity( + options?: AuthRequestOptions, + ): Promise; + // (undocumented) + getIdToken(options?: AuthRequestOptions): Promise; + // (undocumented) + getProfile(options?: AuthRequestOptions): Promise; + // (undocumented) + sessionState$(): Observable; + // (undocumented) + signIn(): Promise; + // (undocumented) + signOut(): Promise; } // @public (undocumented) export type OAuth2Session = { - providerInfo: { - idToken: string; - accessToken: string; - scopes: Set; - expiresAt: Date; - }; - profile: ProfileInfo; - backstageIdentity: BackstageIdentity; + providerInfo: { + idToken: string; + accessToken: string; + scopes: Set; + expiresAt: Date; + }; + profile: ProfileInfo; + backstageIdentity: BackstageIdentity; }; // @public export class OAuthRequestManager implements OAuthRequestApi { - // (undocumented) - authRequest$(): Observable; - // (undocumented) - createAuthRequester(options: AuthRequesterOptions): AuthRequester; + // (undocumented) + authRequest$(): Observable; + // (undocumented) + createAuthRequester(options: AuthRequesterOptions): AuthRequester; } // @public (undocumented) export class OktaAuth { - // (undocumented) - static create({ discoveryApi, environment, provider, oauthRequestApi, defaultScopes, }: OAuthApiCreateOptions): typeof oktaAuthApiRef.T; + // (undocumented) + static create({ + discoveryApi, + environment, + provider, + oauthRequestApi, + defaultScopes, + }: OAuthApiCreateOptions): typeof oktaAuthApiRef.T; } // @public (undocumented) export class OneLoginAuth { - // (undocumented) - static create({ discoveryApi, environment, provider, oauthRequestApi, }: CreateOptions_2): typeof oneloginAuthApiRef.T; + // (undocumented) + static create({ + discoveryApi, + environment, + provider, + oauthRequestApi, + }: CreateOptions_2): typeof oneloginAuthApiRef.T; } // @public (undocumented) -export class SamlAuth implements ProfileInfoApi, BackstageIdentityApi, SessionApi { - constructor(sessionManager: SessionManager); - // (undocumented) - static create({ discoveryApi, environment, provider, }: AuthApiCreateOptions): SamlAuth; - // (undocumented) - getBackstageIdentity(options?: AuthRequestOptions): Promise; - // (undocumented) - getProfile(options?: AuthRequestOptions): Promise; - // (undocumented) - sessionState$(): Observable; - // (undocumented) - signIn(): Promise; - // (undocumented) - signOut(): Promise; +export class SamlAuth + implements ProfileInfoApi, BackstageIdentityApi, SessionApi { + constructor(sessionManager: SessionManager); + // (undocumented) + static create({ + discoveryApi, + environment, + provider, + }: AuthApiCreateOptions): SamlAuth; + // (undocumented) + getBackstageIdentity( + options?: AuthRequestOptions, + ): Promise; + // (undocumented) + getProfile(options?: AuthRequestOptions): Promise; + // (undocumented) + sessionState$(): Observable; + // (undocumented) + signIn(): Promise; + // (undocumented) + signOut(): Promise; } // @public (undocumented) export type SignInPageProps = { - onResult(result: SignInResult): void; + onResult(result: SignInResult): void; }; // @public (undocumented) export type SignInResult = { - userId: string; - profile: ProfileInfo; - getIdToken?: () => Promise; - signOut?: () => Promise; + userId: string; + profile: ProfileInfo; + getIdToken?: () => Promise; + signOut?: () => Promise; }; // @public (undocumented) export class UnhandledErrorForwarder { - static forward(errorApi: ErrorApi, errorContext: ErrorContext): void; + static forward(errorApi: ErrorApi, errorContext: ErrorContext): void; } // @public export class UrlPatternDiscovery implements DiscoveryApi { - static compile(pattern: string): UrlPatternDiscovery; - // (undocumented) - getBaseUrl(pluginId: string): Promise; + static compile(pattern: string): UrlPatternDiscovery; + // (undocumented) + getBaseUrl(pluginId: string): Promise; } // @public (undocumented) export class WebStorage implements StorageApi { - constructor(namespace: string, errorApi: ErrorApi); - // (undocumented) - static create(options: CreateStorageApiOptions): WebStorage; - // (undocumented) - forBucket(name: string): WebStorage; - // (undocumented) - get(key: string): T | undefined; - // (undocumented) - observe$(key: string): Observable>; - // (undocumented) - remove(key: string): Promise; - // (undocumented) - set(key: string, data: T): Promise; + constructor(namespace: string, errorApi: ErrorApi); + // (undocumented) + static create(options: CreateStorageApiOptions): WebStorage; + // (undocumented) + forBucket(name: string): WebStorage; + // (undocumented) + get(key: string): T | undefined; + // (undocumented) + observe$(key: string): Observable>; + // (undocumented) + remove(key: string): Promise; + // (undocumented) + set(key: string, data: T): Promise; } // (No @packageDocumentation comment for this package) - ``` diff --git a/packages/core-components/api-report.md b/packages/core-components/api-report.md index 5ab3682508..3d8e60d4fb 100644 --- a/packages/core-components/api-report.md +++ b/packages/core-components/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -53,18 +52,22 @@ export const AlertDisplay: () => JSX.Element | null; // @public (undocumented) enum Alignment { - // (undocumented) - DOWN_LEFT = "DL", - // (undocumented) - DOWN_RIGHT = "DR", - // (undocumented) - UP_LEFT = "UL", - // (undocumented) - UP_RIGHT = "UR" + // (undocumented) + DOWN_LEFT = 'DL', + // (undocumented) + DOWN_RIGHT = 'DR', + // (undocumented) + UP_LEFT = 'UL', + // (undocumented) + UP_RIGHT = 'UR', } // @public (undocumented) -export const Avatar: ({ displayName, picture, customStyles }: AvatarProps) => JSX.Element; +export const Avatar: ({ + displayName, + picture, + customStyles, +}: AvatarProps) => JSX.Element; // @public (undocumented) export const Breadcrumbs: ({ children, ...props }: Props_25) => JSX.Element; @@ -73,10 +76,319 @@ export const Breadcrumbs: ({ children, ...props }: Props_25) => JSX.Element; export const BrokenImageIcon: IconComponent; // @public -export const Button: React_2.ForwardRefExoticComponent>> & React_2.RefAttributes>; +export const Button: React_2.ForwardRefExoticComponent< + Pick< + Props, + | 'replace' + | 'media' + | 'hidden' + | 'dir' + | 'form' + | 'slot' + | 'title' + | 'disabled' + | 'color' + | 'size' + | 'underline' + | 'display' + | 'translate' + | 'prefix' + | 'children' + | 'key' + | 'value' + | 'id' + | 'name' + | 'action' + | 'defaultChecked' + | 'defaultValue' + | 'suppressContentEditableWarning' + | 'suppressHydrationWarning' + | 'accessKey' + | 'contentEditable' + | 'contextMenu' + | 'draggable' + | 'lang' + | 'placeholder' + | 'spellCheck' + | 'tabIndex' + | 'radioGroup' + | 'role' + | 'about' + | 'datatype' + | 'inlist' + | 'property' + | 'resource' + | 'typeof' + | 'vocab' + | 'autoCapitalize' + | 'autoCorrect' + | 'autoSave' + | 'itemProp' + | 'itemScope' + | 'itemType' + | 'itemID' + | 'itemRef' + | 'results' + | 'security' + | 'unselectable' + | 'inputMode' + | 'is' + | 'aria-activedescendant' + | 'aria-atomic' + | 'aria-autocomplete' + | 'aria-busy' + | 'aria-checked' + | 'aria-colcount' + | 'aria-colindex' + | 'aria-colspan' + | 'aria-controls' + | 'aria-current' + | 'aria-describedby' + | 'aria-details' + | 'aria-disabled' + | 'aria-dropeffect' + | 'aria-errormessage' + | 'aria-expanded' + | 'aria-flowto' + | 'aria-grabbed' + | 'aria-haspopup' + | 'aria-hidden' + | 'aria-invalid' + | 'aria-keyshortcuts' + | 'aria-label' + | 'aria-labelledby' + | 'aria-level' + | 'aria-live' + | 'aria-modal' + | 'aria-multiline' + | 'aria-multiselectable' + | 'aria-orientation' + | 'aria-owns' + | 'aria-placeholder' + | 'aria-posinset' + | 'aria-pressed' + | 'aria-readonly' + | 'aria-relevant' + | 'aria-required' + | 'aria-roledescription' + | 'aria-rowcount' + | 'aria-rowindex' + | 'aria-rowspan' + | 'aria-selected' + | 'aria-setsize' + | 'aria-sort' + | 'aria-valuemax' + | 'aria-valuemin' + | 'aria-valuenow' + | 'aria-valuetext' + | 'dangerouslySetInnerHTML' + | 'onCopy' + | 'onCopyCapture' + | 'onCut' + | 'onCutCapture' + | 'onPaste' + | 'onPasteCapture' + | 'onCompositionEnd' + | 'onCompositionEndCapture' + | 'onCompositionStart' + | 'onCompositionStartCapture' + | 'onCompositionUpdate' + | 'onCompositionUpdateCapture' + | 'onFocus' + | 'onFocusCapture' + | 'onBlur' + | 'onBlurCapture' + | 'onChange' + | 'onChangeCapture' + | 'onBeforeInput' + | 'onBeforeInputCapture' + | 'onInput' + | 'onInputCapture' + | 'onReset' + | 'onResetCapture' + | 'onSubmit' + | 'onSubmitCapture' + | 'onInvalid' + | 'onInvalidCapture' + | 'onLoad' + | 'onLoadCapture' + | 'onError' + | 'onErrorCapture' + | 'onKeyDown' + | 'onKeyDownCapture' + | 'onKeyPress' + | 'onKeyPressCapture' + | 'onKeyUp' + | 'onKeyUpCapture' + | 'onAbort' + | 'onAbortCapture' + | 'onCanPlay' + | 'onCanPlayCapture' + | 'onCanPlayThrough' + | 'onCanPlayThroughCapture' + | 'onDurationChange' + | 'onDurationChangeCapture' + | 'onEmptied' + | 'onEmptiedCapture' + | 'onEncrypted' + | 'onEncryptedCapture' + | 'onEnded' + | 'onEndedCapture' + | 'onLoadedData' + | 'onLoadedDataCapture' + | 'onLoadedMetadata' + | 'onLoadedMetadataCapture' + | 'onLoadStart' + | 'onLoadStartCapture' + | 'onPause' + | 'onPauseCapture' + | 'onPlay' + | 'onPlayCapture' + | 'onPlaying' + | 'onPlayingCapture' + | 'onProgress' + | 'onProgressCapture' + | 'onRateChange' + | 'onRateChangeCapture' + | 'onSeeked' + | 'onSeekedCapture' + | 'onSeeking' + | 'onSeekingCapture' + | 'onStalled' + | 'onStalledCapture' + | 'onSuspend' + | 'onSuspendCapture' + | 'onTimeUpdate' + | 'onTimeUpdateCapture' + | 'onVolumeChange' + | 'onVolumeChangeCapture' + | 'onWaiting' + | 'onWaitingCapture' + | 'onAuxClick' + | 'onAuxClickCapture' + | 'onClick' + | 'onClickCapture' + | 'onContextMenu' + | 'onContextMenuCapture' + | 'onDoubleClick' + | 'onDoubleClickCapture' + | 'onDrag' + | 'onDragCapture' + | 'onDragEnd' + | 'onDragEndCapture' + | 'onDragEnter' + | 'onDragEnterCapture' + | 'onDragExit' + | 'onDragExitCapture' + | 'onDragLeave' + | 'onDragLeaveCapture' + | 'onDragOver' + | 'onDragOverCapture' + | 'onDragStart' + | 'onDragStartCapture' + | 'onDrop' + | 'onDropCapture' + | 'onMouseDown' + | 'onMouseDownCapture' + | 'onMouseEnter' + | 'onMouseLeave' + | 'onMouseMove' + | 'onMouseMoveCapture' + | 'onMouseOut' + | 'onMouseOutCapture' + | 'onMouseOver' + | 'onMouseOverCapture' + | 'onMouseUp' + | 'onMouseUpCapture' + | 'onSelect' + | 'onSelectCapture' + | 'onTouchCancel' + | 'onTouchCancelCapture' + | 'onTouchEnd' + | 'onTouchEndCapture' + | 'onTouchMove' + | 'onTouchMoveCapture' + | 'onTouchStart' + | 'onTouchStartCapture' + | 'onPointerDown' + | 'onPointerDownCapture' + | 'onPointerMove' + | 'onPointerMoveCapture' + | 'onPointerUp' + | 'onPointerUpCapture' + | 'onPointerCancel' + | 'onPointerCancelCapture' + | 'onPointerEnter' + | 'onPointerEnterCapture' + | 'onPointerLeave' + | 'onPointerLeaveCapture' + | 'onPointerOver' + | 'onPointerOverCapture' + | 'onPointerOut' + | 'onPointerOutCapture' + | 'onGotPointerCapture' + | 'onGotPointerCaptureCapture' + | 'onLostPointerCapture' + | 'onLostPointerCaptureCapture' + | 'onScroll' + | 'onScrollCapture' + | 'onWheel' + | 'onWheelCapture' + | 'onAnimationStart' + | 'onAnimationStartCapture' + | 'onAnimationEnd' + | 'onAnimationEndCapture' + | 'onAnimationIteration' + | 'onAnimationIterationCapture' + | 'onTransitionEnd' + | 'onTransitionEndCapture' + | 'component' + | 'variant' + | 'download' + | 'href' + | 'hrefLang' + | 'ping' + | 'rel' + | 'target' + | 'type' + | 'referrerPolicy' + | 'disableElevation' + | 'fullWidth' + | 'startIcon' + | 'endIcon' + | 'noWrap' + | 'gutterBottom' + | 'paragraph' + | 'autoFocus' + | 'formAction' + | 'formEncType' + | 'formMethod' + | 'formNoValidate' + | 'formTarget' + | 'disableFocusRipple' + | 'buttonRef' + | 'centerRipple' + | 'disableRipple' + | 'disableTouchRipple' + | 'focusRipple' + | 'focusVisibleClassName' + | 'onFocusVisible' + | 'TouchRippleProps' + | 'align' + | 'variantMapping' + | 'to' + | 'state' + | 'TypographyClasses' + | keyof CommonProps> + > & + React_2.RefAttributes +>; // @public (undocumented) -export const CardTab: ({ children, ...props }: PropsWithChildren) => JSX.Element; +export const CardTab: ({ + children, + ...props +}: PropsWithChildren) => JSX.Element; // @public (undocumented) export const CatalogIcon: IconComponent; @@ -85,22 +397,41 @@ export const CatalogIcon: IconComponent; export const ChatIcon: IconComponent; // @public (undocumented) -export const CodeSnippet: ({ text, language, showLineNumbers, showCopyCodeButton, highlightedNumbers, customStyle, }: Props_2) => JSX.Element; +export const CodeSnippet: ({ + text, + language, + showLineNumbers, + showCopyCodeButton, + highlightedNumbers, + customStyle, +}: Props_2) => JSX.Element; // @public (undocumented) -export const Content: ({ className, stretch, noPadding, children, ...props }: PropsWithChildren) => JSX.Element; +export const Content: ({ + className, + stretch, + noPadding, + children, + ...props +}: PropsWithChildren) => JSX.Element; // @public (undocumented) -export const ContentHeader: ({ description, title, titleComponent: TitleComponent, children, textAlign, }: PropsWithChildren) => JSX.Element; +export const ContentHeader: ({ + description, + title, + titleComponent: TitleComponent, + children, + textAlign, +}: PropsWithChildren) => JSX.Element; // @public (undocumented) export const CopyTextButton: { - (props: Props_3): JSX.Element; - propTypes: { - text: PropTypes.Validator; - tooltipDelay: PropTypes.Requireable; - tooltipText: PropTypes.Requireable; - }; + (props: Props_3): JSX.Element; + propTypes: { + text: PropTypes.Validator; + tooltipDelay: PropTypes.Requireable; + tooltipText: PropTypes.Requireable; + }; }; // @public (undocumented) @@ -108,98 +439,142 @@ export const DashboardIcon: IconComponent; // @public (undocumented) type DependencyEdge = T & { - from: string; - to: string; - label?: string; + from: string; + to: string; + label?: string; }; // @public (undocumented) -export function DependencyGraph({ edges, nodes, renderNode, direction, align, nodeMargin, edgeMargin, rankMargin, paddingX, paddingY, acyclicer, ranker, labelPosition, labelOffset, edgeRanks, edgeWeight, renderLabel, defs, ...svgProps }: DependencyGraphProps): JSX.Element; +export function DependencyGraph({ + edges, + nodes, + renderNode, + direction, + align, + nodeMargin, + edgeMargin, + rankMargin, + paddingX, + paddingY, + acyclicer, + ranker, + labelPosition, + labelOffset, + edgeRanks, + edgeWeight, + renderLabel, + defs, + ...svgProps +}: DependencyGraphProps): JSX.Element; declare namespace DependencyGraphTypes { - export { - DependencyEdge, - GraphEdge, - RenderLabelProps, - RenderLabelFunction, - DependencyNode, - GraphNode, - RenderNodeProps, - RenderNodeFunction, - EdgeProperties, - Direction, - Alignment, - Ranker, - LabelPosition - } + export { + DependencyEdge, + GraphEdge, + RenderLabelProps, + RenderLabelFunction, + DependencyNode, + GraphNode, + RenderNodeProps, + RenderNodeFunction, + EdgeProperties, + Direction, + Alignment, + Ranker, + LabelPosition, + }; } -export { DependencyGraphTypes } +export { DependencyGraphTypes }; // @public (undocumented) type DependencyNode = T & { - id: string; + id: string; }; // @public (undocumented) enum Direction { - // (undocumented) - BOTTOM_TOP = "BT", - // (undocumented) - LEFT_RIGHT = "LR", - // (undocumented) - RIGHT_LEFT = "RL", - // (undocumented) - TOP_BOTTOM = "TB" + // (undocumented) + BOTTOM_TOP = 'BT', + // (undocumented) + LEFT_RIGHT = 'LR', + // (undocumented) + RIGHT_LEFT = 'RL', + // (undocumented) + TOP_BOTTOM = 'TB', } // @public (undocumented) -export const DismissableBanner: ({ variant, message, id, fixed, }: Props_4) => JSX.Element; +export const DismissableBanner: ({ + variant, + message, + id, + fixed, +}: Props_4) => JSX.Element; // @public (undocumented) export const DocsIcon: IconComponent; // @public (undocumented) type EdgeProperties = { - label?: string; - width?: number; - height?: number; - labeloffset?: number; - labelpos?: LabelPosition; - minlen?: number; - weight?: number; - [customKey: string]: any; + label?: string; + width?: number; + height?: number; + labeloffset?: number; + labelpos?: LabelPosition; + minlen?: number; + weight?: number; + [customKey: string]: any; }; // @public (undocumented) export const EmailIcon: IconComponent; // @public (undocumented) -export const EmptyState: ({ title, description, missing, action }: Props_5) => JSX.Element; +export const EmptyState: ({ + title, + description, + missing, + action, +}: Props_5) => JSX.Element; // @public (undocumented) export const ErrorBoundary: ComponentClass; // @public (undocumented) export type ErrorBoundaryProps = { - slackChannel?: string | SlackChannel; - onError?: (error: Error, errorInfo: string) => null; + slackChannel?: string | SlackChannel; + onError?: (error: Error, errorInfo: string) => null; }; // @public (undocumented) -export const ErrorPage: ({ status, statusMessage, additionalInfo, }: IErrorPageProps) => JSX.Element; +export const ErrorPage: ({ + status, + statusMessage, + additionalInfo, +}: IErrorPageProps) => JSX.Element; // @public -export const ErrorPanel: ({ title, error, defaultExpanded, children, }: PropsWithChildren) => JSX.Element; +export const ErrorPanel: ({ + title, + error, + defaultExpanded, + children, +}: PropsWithChildren) => JSX.Element; // @public (undocumented) export type ErrorPanelProps = { - error: Error; - defaultExpanded?: boolean; - title?: string; + error: Error; + defaultExpanded?: boolean; + title?: string; }; // @public (undocumented) -export const FeatureCalloutCircular: ({ featureId, title, description, children, }: PropsWithChildren) => JSX.Element; +export const FeatureCalloutCircular: ({ + featureId, + title, + description, + children, +}: PropsWithChildren) => JSX.Element; // @public (undocumented) export const Gauge: (props: Props_14) => JSX.Element; @@ -211,7 +586,9 @@ export const GaugeCard: (props: Props_13) => JSX.Element; export const GitHubIcon: IconComponent; // @public (undocumented) -type GraphEdge = DependencyEdge & dagre_2.GraphEdge & EdgeProperties; +type GraphEdge = DependencyEdge & + dagre_2.GraphEdge & + EdgeProperties; // @public (undocumented) type GraphNode = dagre_2.Node>; @@ -220,16 +597,33 @@ type GraphNode = dagre_2.Node>; export const GroupIcon: IconComponent; // @public (undocumented) -export const Header: ({ children, pageTitleOverride, style, subtitle, title, tooltip, type, typeLink, }: PropsWithChildren) => JSX.Element; +export const Header: ({ + children, + pageTitleOverride, + style, + subtitle, + title, + tooltip, + type, + typeLink, +}: PropsWithChildren) => JSX.Element; // @public (undocumented) export const HeaderIconLinkRow: ({ links }: Props_8) => JSX.Element; // @public (undocumented) -export const HeaderLabel: ({ label, value, url }: HeaderLabelProps) => JSX.Element; +export const HeaderLabel: ({ + label, + value, + url, +}: HeaderLabelProps) => JSX.Element; // @public (undocumented) -export const HeaderTabs: ({ tabs, onChange, selectedIndex, }: HeaderTabsProps) => JSX.Element; +export const HeaderTabs: ({ + tabs, + onChange, + selectedIndex, +}: HeaderTabsProps) => JSX.Element; // @public (undocumented) export const HelpIcon: IconComponent; @@ -238,21 +632,42 @@ export const HelpIcon: IconComponent; export const HomepageTimer: () => JSX.Element | null; // @public (undocumented) -export const HorizontalScrollGrid: (props: PropsWithChildren) => JSX.Element; +export const HorizontalScrollGrid: ( + props: PropsWithChildren, +) => JSX.Element; // @public (undocumented) export type IconLinkVerticalProps = { - color?: 'primary' | 'secondary'; - disabled?: boolean; - href?: string; - icon?: React_2.ReactNode; - label: string; - onClick?: React_2.MouseEventHandler; - title?: string; + color?: 'primary' | 'secondary'; + disabled?: boolean; + href?: string; + icon?: React_2.ReactNode; + label: string; + onClick?: React_2.MouseEventHandler; + title?: string; }; // @public (undocumented) -export const InfoCard: ({ title, subheader, divider, deepLink, slackChannel, errorBoundaryProps, variant, children, headerStyle, headerProps, action, actionsClassName, actions, cardClassName, actionsTopRight, className, noPadding, titleTypographyProps, }: Props_20) => JSX.Element; +export const InfoCard: ({ + title, + subheader, + divider, + deepLink, + slackChannel, + errorBoundaryProps, + variant, + children, + headerStyle, + headerProps, + action, + actionsClassName, + actions, + cardClassName, + actionsTopRight, + className, + noPadding, + titleTypographyProps, +}: Props_20) => JSX.Element; // @public (undocumented) export type InfoCardVariants = 'flex' | 'fullHeight' | 'gridItem'; @@ -261,14 +676,23 @@ export type InfoCardVariants = 'flex' | 'fullHeight' | 'gridItem'; export const IntroCard: (props: IntroCardProps) => JSX.Element; // @public @deprecated -export const ItemCard: ({ description, tags, title, type, subtitle, label, onClick, href, }: ItemCardProps) => JSX.Element; +export const ItemCard: ({ + description, + tags, + title, + type, + subtitle, + label, + onClick, + href, +}: ItemCardProps) => JSX.Element; // @public export const ItemCardGrid: (props: ItemCardGridProps) => JSX.Element; // @public (undocumented) export type ItemCardGridProps = Partial> & { - children?: React_2.ReactNode; + children?: React_2.ReactNode; }; // @public @@ -276,19 +700,19 @@ export const ItemCardHeader: (props: ItemCardHeaderProps) => JSX.Element; // @public (undocumented) export type ItemCardHeaderProps = Partial> & { - title?: React_2.ReactNode; - subtitle?: React_2.ReactNode; - children?: React_2.ReactNode; + title?: React_2.ReactNode; + subtitle?: React_2.ReactNode; + children?: React_2.ReactNode; }; // @public (undocumented) enum LabelPosition { - // (undocumented) - CENTER = "c", - // (undocumented) - LEFT = "l", - // (undocumented) - RIGHT = "r" + // (undocumented) + CENTER = 'c', + // (undocumented) + LEFT = 'l', + // (undocumented) + RIGHT = 'r', } // @public (undocumented) @@ -298,18 +722,305 @@ export const Lifecycle: (props: Props_10) => JSX.Element; export const LinearGauge: ({ value }: Props_15) => JSX.Element | null; // @public -export const Link: React_2.ForwardRefExoticComponent & React_2.RefAttributes>; +export const Link: React_2.ForwardRefExoticComponent< + Pick< + LinkProps, + | 'replace' + | 'media' + | 'hidden' + | 'dir' + | 'slot' + | 'style' + | 'title' + | 'color' + | 'underline' + | 'display' + | 'translate' + | 'prefix' + | 'children' + | 'key' + | 'id' + | 'classes' + | 'defaultChecked' + | 'defaultValue' + | 'suppressContentEditableWarning' + | 'suppressHydrationWarning' + | 'accessKey' + | 'className' + | 'contentEditable' + | 'contextMenu' + | 'draggable' + | 'lang' + | 'placeholder' + | 'spellCheck' + | 'tabIndex' + | 'radioGroup' + | 'role' + | 'about' + | 'datatype' + | 'inlist' + | 'property' + | 'resource' + | 'typeof' + | 'vocab' + | 'autoCapitalize' + | 'autoCorrect' + | 'autoSave' + | 'itemProp' + | 'itemScope' + | 'itemType' + | 'itemID' + | 'itemRef' + | 'results' + | 'security' + | 'unselectable' + | 'inputMode' + | 'is' + | 'aria-activedescendant' + | 'aria-atomic' + | 'aria-autocomplete' + | 'aria-busy' + | 'aria-checked' + | 'aria-colcount' + | 'aria-colindex' + | 'aria-colspan' + | 'aria-controls' + | 'aria-current' + | 'aria-describedby' + | 'aria-details' + | 'aria-disabled' + | 'aria-dropeffect' + | 'aria-errormessage' + | 'aria-expanded' + | 'aria-flowto' + | 'aria-grabbed' + | 'aria-haspopup' + | 'aria-hidden' + | 'aria-invalid' + | 'aria-keyshortcuts' + | 'aria-label' + | 'aria-labelledby' + | 'aria-level' + | 'aria-live' + | 'aria-modal' + | 'aria-multiline' + | 'aria-multiselectable' + | 'aria-orientation' + | 'aria-owns' + | 'aria-placeholder' + | 'aria-posinset' + | 'aria-pressed' + | 'aria-readonly' + | 'aria-relevant' + | 'aria-required' + | 'aria-roledescription' + | 'aria-rowcount' + | 'aria-rowindex' + | 'aria-rowspan' + | 'aria-selected' + | 'aria-setsize' + | 'aria-sort' + | 'aria-valuemax' + | 'aria-valuemin' + | 'aria-valuenow' + | 'aria-valuetext' + | 'dangerouslySetInnerHTML' + | 'onCopy' + | 'onCopyCapture' + | 'onCut' + | 'onCutCapture' + | 'onPaste' + | 'onPasteCapture' + | 'onCompositionEnd' + | 'onCompositionEndCapture' + | 'onCompositionStart' + | 'onCompositionStartCapture' + | 'onCompositionUpdate' + | 'onCompositionUpdateCapture' + | 'onFocus' + | 'onFocusCapture' + | 'onBlur' + | 'onBlurCapture' + | 'onChange' + | 'onChangeCapture' + | 'onBeforeInput' + | 'onBeforeInputCapture' + | 'onInput' + | 'onInputCapture' + | 'onReset' + | 'onResetCapture' + | 'onSubmit' + | 'onSubmitCapture' + | 'onInvalid' + | 'onInvalidCapture' + | 'onLoad' + | 'onLoadCapture' + | 'onError' + | 'onErrorCapture' + | 'onKeyDown' + | 'onKeyDownCapture' + | 'onKeyPress' + | 'onKeyPressCapture' + | 'onKeyUp' + | 'onKeyUpCapture' + | 'onAbort' + | 'onAbortCapture' + | 'onCanPlay' + | 'onCanPlayCapture' + | 'onCanPlayThrough' + | 'onCanPlayThroughCapture' + | 'onDurationChange' + | 'onDurationChangeCapture' + | 'onEmptied' + | 'onEmptiedCapture' + | 'onEncrypted' + | 'onEncryptedCapture' + | 'onEnded' + | 'onEndedCapture' + | 'onLoadedData' + | 'onLoadedDataCapture' + | 'onLoadedMetadata' + | 'onLoadedMetadataCapture' + | 'onLoadStart' + | 'onLoadStartCapture' + | 'onPause' + | 'onPauseCapture' + | 'onPlay' + | 'onPlayCapture' + | 'onPlaying' + | 'onPlayingCapture' + | 'onProgress' + | 'onProgressCapture' + | 'onRateChange' + | 'onRateChangeCapture' + | 'onSeeked' + | 'onSeekedCapture' + | 'onSeeking' + | 'onSeekingCapture' + | 'onStalled' + | 'onStalledCapture' + | 'onSuspend' + | 'onSuspendCapture' + | 'onTimeUpdate' + | 'onTimeUpdateCapture' + | 'onVolumeChange' + | 'onVolumeChangeCapture' + | 'onWaiting' + | 'onWaitingCapture' + | 'onAuxClick' + | 'onAuxClickCapture' + | 'onClick' + | 'onClickCapture' + | 'onContextMenu' + | 'onContextMenuCapture' + | 'onDoubleClick' + | 'onDoubleClickCapture' + | 'onDrag' + | 'onDragCapture' + | 'onDragEnd' + | 'onDragEndCapture' + | 'onDragEnter' + | 'onDragEnterCapture' + | 'onDragExit' + | 'onDragExitCapture' + | 'onDragLeave' + | 'onDragLeaveCapture' + | 'onDragOver' + | 'onDragOverCapture' + | 'onDragStart' + | 'onDragStartCapture' + | 'onDrop' + | 'onDropCapture' + | 'onMouseDown' + | 'onMouseDownCapture' + | 'onMouseEnter' + | 'onMouseLeave' + | 'onMouseMove' + | 'onMouseMoveCapture' + | 'onMouseOut' + | 'onMouseOutCapture' + | 'onMouseOver' + | 'onMouseOverCapture' + | 'onMouseUp' + | 'onMouseUpCapture' + | 'onSelect' + | 'onSelectCapture' + | 'onTouchCancel' + | 'onTouchCancelCapture' + | 'onTouchEnd' + | 'onTouchEndCapture' + | 'onTouchMove' + | 'onTouchMoveCapture' + | 'onTouchStart' + | 'onTouchStartCapture' + | 'onPointerDown' + | 'onPointerDownCapture' + | 'onPointerMove' + | 'onPointerMoveCapture' + | 'onPointerUp' + | 'onPointerUpCapture' + | 'onPointerCancel' + | 'onPointerCancelCapture' + | 'onPointerEnter' + | 'onPointerEnterCapture' + | 'onPointerLeave' + | 'onPointerLeaveCapture' + | 'onPointerOver' + | 'onPointerOverCapture' + | 'onPointerOut' + | 'onPointerOutCapture' + | 'onGotPointerCapture' + | 'onGotPointerCaptureCapture' + | 'onLostPointerCapture' + | 'onLostPointerCaptureCapture' + | 'onScroll' + | 'onScrollCapture' + | 'onWheel' + | 'onWheelCapture' + | 'onAnimationStart' + | 'onAnimationStartCapture' + | 'onAnimationEnd' + | 'onAnimationEndCapture' + | 'onAnimationIteration' + | 'onAnimationIterationCapture' + | 'onTransitionEnd' + | 'onTransitionEndCapture' + | 'component' + | 'variant' + | 'innerRef' + | 'download' + | 'href' + | 'hrefLang' + | 'ping' + | 'rel' + | 'target' + | 'type' + | 'referrerPolicy' + | 'noWrap' + | 'gutterBottom' + | 'paragraph' + | 'align' + | 'variantMapping' + | 'to' + | 'state' + | 'TypographyClasses' + > & + React_2.RefAttributes +>; // @public (undocumented) -export type LinkProps = LinkProps_2 & LinkProps_3 & { +export type LinkProps = LinkProps_2 & + LinkProps_3 & { component?: ElementType; -}; + }; // @public export const MarkdownContent: ({ content, dialect }: Props_11) => JSX.Element; // @public (undocumented) -export const MissingAnnotationEmptyState: ({ annotation }: Props_6) => JSX.Element; +export const MissingAnnotationEmptyState: ({ + annotation, +}: Props_6) => JSX.Element; // @public (undocumented) export const OAuthRequestDialog: () => JSX.Element; @@ -318,19 +1029,24 @@ export const OAuthRequestDialog: () => JSX.Element; export const OverflowTooltip: (props: Props_12) => JSX.Element; // @public (undocumented) -export const Page: ({ themeId, children }: PropsWithChildren) => JSX.Element; +export const Page: ({ + themeId, + children, +}: PropsWithChildren) => JSX.Element; // @public (undocumented) -export const Progress: (props: PropsWithChildren) => JSX.Element; +export const Progress: ( + props: PropsWithChildren, +) => JSX.Element; // @public (undocumented) enum Ranker { - // (undocumented) - LONGEST_PATH = "longest-path", - // (undocumented) - NETWORK_SIMPLEX = "network-simplex", - // (undocumented) - TIGHT_TREE = "tight-tree" + // (undocumented) + LONGEST_PATH = 'longest-path', + // (undocumented) + NETWORK_SIMPLEX = 'network-simplex', + // (undocumented) + TIGHT_TREE = 'tight-tree', } // @public (undocumented) @@ -338,7 +1054,7 @@ type RenderLabelFunction = (props: RenderLabelProps) => React.ReactNode; // @public (undocumented) type RenderLabelProps = { - edge: DependencyEdge; + edge: DependencyEdge; }; // @public (undocumented) @@ -346,40 +1062,55 @@ type RenderNodeFunction = (props: RenderNodeProps) => React.ReactNode; // @public (undocumented) type RenderNodeProps = { - node: DependencyNode; + node: DependencyNode; }; // @public -export const ResponseErrorPanel: ({ title, error, defaultExpanded, }: ErrorPanelProps) => JSX.Element; +export const ResponseErrorPanel: ({ + title, + error, + defaultExpanded, +}: ErrorPanelProps) => JSX.Element; // @public (undocumented) -export const RoutedTabs: ({ routes }: { - routes: SubRoute_2[]; -}) => JSX.Element; +export const RoutedTabs: ({ routes }: { routes: SubRoute_2[] }) => JSX.Element; // @public (undocumented) -export const Select: ({ multiple, items, label, placeholder, selected, onChange, triggerReset, }: SelectProps) => JSX.Element; +export const Select: ({ + multiple, + items, + label, + placeholder, + selected, + onChange, + triggerReset, +}: SelectProps) => JSX.Element; // @public (undocumented) -export const Sidebar: ({ openDelayMs, closeDelayMs, children, }: PropsWithChildren) => JSX.Element; +export const Sidebar: ({ + openDelayMs, + closeDelayMs, + children, +}: PropsWithChildren) => JSX.Element; // @public (undocumented) -export const SIDEBAR_INTRO_LOCAL_STORAGE = "@backstage/core/sidebar-intro-dismissed"; +export const SIDEBAR_INTRO_LOCAL_STORAGE = + '@backstage/core/sidebar-intro-dismissed'; // @public (undocumented) export const sidebarConfig: { - drawerWidthClosed: number; - drawerWidthOpen: number; - defaultOpenDelayMs: number; - defaultCloseDelayMs: number; - defaultFadeDuration: number; - logoHeight: number; - iconContainerWidth: number; - iconSize: number; - iconPadding: number; - selectedIndicatorWidth: number; - userBadgePadding: number; - userBadgeDiameter: number; + drawerWidthClosed: number; + drawerWidthOpen: number; + defaultOpenDelayMs: number; + defaultCloseDelayMs: number; + defaultFadeDuration: number; + logoHeight: number; + iconContainerWidth: number; + iconSize: number; + iconPadding: number; + selectedIndicatorWidth: number; + userBadgePadding: number; + userBadgeDiameter: number; }; // @public (undocumented) @@ -387,19 +1118,283 @@ export const SidebarContext: Context; // @public (undocumented) export type SidebarContextType = { - isOpen: boolean; + isOpen: boolean; }; // @public (undocumented) -export const SidebarDivider: React_2.ComponentType, HTMLHRElement>, "children" | "slot" | "style" | "title" | "id" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | keyof React_2.ClassAttributes> & StyledComponentProps<"root"> & { - className?: string | undefined; -}>; +export const SidebarDivider: React_2.ComponentType< + Pick< + React_2.DetailedHTMLProps< + React_2.HTMLAttributes, + HTMLHRElement + >, + | 'hidden' + | 'dir' + | 'slot' + | 'style' + | 'title' + | 'color' + | 'translate' + | 'prefix' + | 'children' + | 'id' + | 'defaultChecked' + | 'defaultValue' + | 'suppressContentEditableWarning' + | 'suppressHydrationWarning' + | 'accessKey' + | 'contentEditable' + | 'contextMenu' + | 'draggable' + | 'lang' + | 'placeholder' + | 'spellCheck' + | 'tabIndex' + | 'radioGroup' + | 'role' + | 'about' + | 'datatype' + | 'inlist' + | 'property' + | 'resource' + | 'typeof' + | 'vocab' + | 'autoCapitalize' + | 'autoCorrect' + | 'autoSave' + | 'itemProp' + | 'itemScope' + | 'itemType' + | 'itemID' + | 'itemRef' + | 'results' + | 'security' + | 'unselectable' + | 'inputMode' + | 'is' + | 'aria-activedescendant' + | 'aria-atomic' + | 'aria-autocomplete' + | 'aria-busy' + | 'aria-checked' + | 'aria-colcount' + | 'aria-colindex' + | 'aria-colspan' + | 'aria-controls' + | 'aria-current' + | 'aria-describedby' + | 'aria-details' + | 'aria-disabled' + | 'aria-dropeffect' + | 'aria-errormessage' + | 'aria-expanded' + | 'aria-flowto' + | 'aria-grabbed' + | 'aria-haspopup' + | 'aria-hidden' + | 'aria-invalid' + | 'aria-keyshortcuts' + | 'aria-label' + | 'aria-labelledby' + | 'aria-level' + | 'aria-live' + | 'aria-modal' + | 'aria-multiline' + | 'aria-multiselectable' + | 'aria-orientation' + | 'aria-owns' + | 'aria-placeholder' + | 'aria-posinset' + | 'aria-pressed' + | 'aria-readonly' + | 'aria-relevant' + | 'aria-required' + | 'aria-roledescription' + | 'aria-rowcount' + | 'aria-rowindex' + | 'aria-rowspan' + | 'aria-selected' + | 'aria-setsize' + | 'aria-sort' + | 'aria-valuemax' + | 'aria-valuemin' + | 'aria-valuenow' + | 'aria-valuetext' + | 'dangerouslySetInnerHTML' + | 'onCopy' + | 'onCopyCapture' + | 'onCut' + | 'onCutCapture' + | 'onPaste' + | 'onPasteCapture' + | 'onCompositionEnd' + | 'onCompositionEndCapture' + | 'onCompositionStart' + | 'onCompositionStartCapture' + | 'onCompositionUpdate' + | 'onCompositionUpdateCapture' + | 'onFocus' + | 'onFocusCapture' + | 'onBlur' + | 'onBlurCapture' + | 'onChange' + | 'onChangeCapture' + | 'onBeforeInput' + | 'onBeforeInputCapture' + | 'onInput' + | 'onInputCapture' + | 'onReset' + | 'onResetCapture' + | 'onSubmit' + | 'onSubmitCapture' + | 'onInvalid' + | 'onInvalidCapture' + | 'onLoad' + | 'onLoadCapture' + | 'onError' + | 'onErrorCapture' + | 'onKeyDown' + | 'onKeyDownCapture' + | 'onKeyPress' + | 'onKeyPressCapture' + | 'onKeyUp' + | 'onKeyUpCapture' + | 'onAbort' + | 'onAbortCapture' + | 'onCanPlay' + | 'onCanPlayCapture' + | 'onCanPlayThrough' + | 'onCanPlayThroughCapture' + | 'onDurationChange' + | 'onDurationChangeCapture' + | 'onEmptied' + | 'onEmptiedCapture' + | 'onEncrypted' + | 'onEncryptedCapture' + | 'onEnded' + | 'onEndedCapture' + | 'onLoadedData' + | 'onLoadedDataCapture' + | 'onLoadedMetadata' + | 'onLoadedMetadataCapture' + | 'onLoadStart' + | 'onLoadStartCapture' + | 'onPause' + | 'onPauseCapture' + | 'onPlay' + | 'onPlayCapture' + | 'onPlaying' + | 'onPlayingCapture' + | 'onProgress' + | 'onProgressCapture' + | 'onRateChange' + | 'onRateChangeCapture' + | 'onSeeked' + | 'onSeekedCapture' + | 'onSeeking' + | 'onSeekingCapture' + | 'onStalled' + | 'onStalledCapture' + | 'onSuspend' + | 'onSuspendCapture' + | 'onTimeUpdate' + | 'onTimeUpdateCapture' + | 'onVolumeChange' + | 'onVolumeChangeCapture' + | 'onWaiting' + | 'onWaitingCapture' + | 'onAuxClick' + | 'onAuxClickCapture' + | 'onClick' + | 'onClickCapture' + | 'onContextMenu' + | 'onContextMenuCapture' + | 'onDoubleClick' + | 'onDoubleClickCapture' + | 'onDrag' + | 'onDragCapture' + | 'onDragEnd' + | 'onDragEndCapture' + | 'onDragEnter' + | 'onDragEnterCapture' + | 'onDragExit' + | 'onDragExitCapture' + | 'onDragLeave' + | 'onDragLeaveCapture' + | 'onDragOver' + | 'onDragOverCapture' + | 'onDragStart' + | 'onDragStartCapture' + | 'onDrop' + | 'onDropCapture' + | 'onMouseDown' + | 'onMouseDownCapture' + | 'onMouseEnter' + | 'onMouseLeave' + | 'onMouseMove' + | 'onMouseMoveCapture' + | 'onMouseOut' + | 'onMouseOutCapture' + | 'onMouseOver' + | 'onMouseOverCapture' + | 'onMouseUp' + | 'onMouseUpCapture' + | 'onSelect' + | 'onSelectCapture' + | 'onTouchCancel' + | 'onTouchCancelCapture' + | 'onTouchEnd' + | 'onTouchEndCapture' + | 'onTouchMove' + | 'onTouchMoveCapture' + | 'onTouchStart' + | 'onTouchStartCapture' + | 'onPointerDown' + | 'onPointerDownCapture' + | 'onPointerMove' + | 'onPointerMoveCapture' + | 'onPointerUp' + | 'onPointerUpCapture' + | 'onPointerCancel' + | 'onPointerCancelCapture' + | 'onPointerEnter' + | 'onPointerEnterCapture' + | 'onPointerLeave' + | 'onPointerLeaveCapture' + | 'onPointerOver' + | 'onPointerOverCapture' + | 'onPointerOut' + | 'onPointerOutCapture' + | 'onGotPointerCapture' + | 'onGotPointerCaptureCapture' + | 'onLostPointerCapture' + | 'onLostPointerCaptureCapture' + | 'onScroll' + | 'onScrollCapture' + | 'onWheel' + | 'onWheelCapture' + | 'onAnimationStart' + | 'onAnimationStartCapture' + | 'onAnimationEnd' + | 'onAnimationEndCapture' + | 'onAnimationIteration' + | 'onAnimationIterationCapture' + | 'onTransitionEnd' + | 'onTransitionEndCapture' + | keyof React_2.ClassAttributes + > & + StyledComponentProps<'root'> & { + className?: string | undefined; + } +>; // @public (undocumented) export const SidebarIntro: () => JSX.Element | null; // @public (undocumented) -export const SidebarItem: React_2.ForwardRefExoticComponent>; +export const SidebarItem: React_2.ForwardRefExoticComponent< + SidebarItemProps & React_2.RefAttributes +>; // @public (undocumented) export const SidebarPage: (props: PropsWithChildren<{}>) => JSX.Element; @@ -409,44 +1404,843 @@ export const SidebarPinStateContext: React_2.Context // @public (undocumented) export type SidebarPinStateContextType = { - isPinned: boolean; - toggleSidebarPinState: () => any; + isPinned: boolean; + toggleSidebarPinState: () => any; }; // @public (undocumented) -export const SidebarScrollWrapper: React_2.ComponentType, HTMLDivElement>, "children" | "slot" | "style" | "title" | "id" | keyof React_2.ClassAttributes | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture"> & StyledComponentProps<"root"> & { - className?: string | undefined; -}>; +export const SidebarScrollWrapper: React_2.ComponentType< + Pick< + React_2.DetailedHTMLProps< + React_2.HTMLAttributes, + HTMLDivElement + >, + | 'hidden' + | 'dir' + | 'slot' + | 'style' + | 'title' + | 'color' + | 'translate' + | 'prefix' + | 'children' + | 'id' + | 'defaultChecked' + | 'defaultValue' + | 'suppressContentEditableWarning' + | 'suppressHydrationWarning' + | 'accessKey' + | 'contentEditable' + | 'contextMenu' + | 'draggable' + | 'lang' + | 'placeholder' + | 'spellCheck' + | 'tabIndex' + | 'radioGroup' + | 'role' + | 'about' + | 'datatype' + | 'inlist' + | 'property' + | 'resource' + | 'typeof' + | 'vocab' + | 'autoCapitalize' + | 'autoCorrect' + | 'autoSave' + | 'itemProp' + | 'itemScope' + | 'itemType' + | 'itemID' + | 'itemRef' + | 'results' + | 'security' + | 'unselectable' + | 'inputMode' + | 'is' + | 'aria-activedescendant' + | 'aria-atomic' + | 'aria-autocomplete' + | 'aria-busy' + | 'aria-checked' + | 'aria-colcount' + | 'aria-colindex' + | 'aria-colspan' + | 'aria-controls' + | 'aria-current' + | 'aria-describedby' + | 'aria-details' + | 'aria-disabled' + | 'aria-dropeffect' + | 'aria-errormessage' + | 'aria-expanded' + | 'aria-flowto' + | 'aria-grabbed' + | 'aria-haspopup' + | 'aria-hidden' + | 'aria-invalid' + | 'aria-keyshortcuts' + | 'aria-label' + | 'aria-labelledby' + | 'aria-level' + | 'aria-live' + | 'aria-modal' + | 'aria-multiline' + | 'aria-multiselectable' + | 'aria-orientation' + | 'aria-owns' + | 'aria-placeholder' + | 'aria-posinset' + | 'aria-pressed' + | 'aria-readonly' + | 'aria-relevant' + | 'aria-required' + | 'aria-roledescription' + | 'aria-rowcount' + | 'aria-rowindex' + | 'aria-rowspan' + | 'aria-selected' + | 'aria-setsize' + | 'aria-sort' + | 'aria-valuemax' + | 'aria-valuemin' + | 'aria-valuenow' + | 'aria-valuetext' + | 'dangerouslySetInnerHTML' + | 'onCopy' + | 'onCopyCapture' + | 'onCut' + | 'onCutCapture' + | 'onPaste' + | 'onPasteCapture' + | 'onCompositionEnd' + | 'onCompositionEndCapture' + | 'onCompositionStart' + | 'onCompositionStartCapture' + | 'onCompositionUpdate' + | 'onCompositionUpdateCapture' + | 'onFocus' + | 'onFocusCapture' + | 'onBlur' + | 'onBlurCapture' + | 'onChange' + | 'onChangeCapture' + | 'onBeforeInput' + | 'onBeforeInputCapture' + | 'onInput' + | 'onInputCapture' + | 'onReset' + | 'onResetCapture' + | 'onSubmit' + | 'onSubmitCapture' + | 'onInvalid' + | 'onInvalidCapture' + | 'onLoad' + | 'onLoadCapture' + | 'onError' + | 'onErrorCapture' + | 'onKeyDown' + | 'onKeyDownCapture' + | 'onKeyPress' + | 'onKeyPressCapture' + | 'onKeyUp' + | 'onKeyUpCapture' + | 'onAbort' + | 'onAbortCapture' + | 'onCanPlay' + | 'onCanPlayCapture' + | 'onCanPlayThrough' + | 'onCanPlayThroughCapture' + | 'onDurationChange' + | 'onDurationChangeCapture' + | 'onEmptied' + | 'onEmptiedCapture' + | 'onEncrypted' + | 'onEncryptedCapture' + | 'onEnded' + | 'onEndedCapture' + | 'onLoadedData' + | 'onLoadedDataCapture' + | 'onLoadedMetadata' + | 'onLoadedMetadataCapture' + | 'onLoadStart' + | 'onLoadStartCapture' + | 'onPause' + | 'onPauseCapture' + | 'onPlay' + | 'onPlayCapture' + | 'onPlaying' + | 'onPlayingCapture' + | 'onProgress' + | 'onProgressCapture' + | 'onRateChange' + | 'onRateChangeCapture' + | 'onSeeked' + | 'onSeekedCapture' + | 'onSeeking' + | 'onSeekingCapture' + | 'onStalled' + | 'onStalledCapture' + | 'onSuspend' + | 'onSuspendCapture' + | 'onTimeUpdate' + | 'onTimeUpdateCapture' + | 'onVolumeChange' + | 'onVolumeChangeCapture' + | 'onWaiting' + | 'onWaitingCapture' + | 'onAuxClick' + | 'onAuxClickCapture' + | 'onClick' + | 'onClickCapture' + | 'onContextMenu' + | 'onContextMenuCapture' + | 'onDoubleClick' + | 'onDoubleClickCapture' + | 'onDrag' + | 'onDragCapture' + | 'onDragEnd' + | 'onDragEndCapture' + | 'onDragEnter' + | 'onDragEnterCapture' + | 'onDragExit' + | 'onDragExitCapture' + | 'onDragLeave' + | 'onDragLeaveCapture' + | 'onDragOver' + | 'onDragOverCapture' + | 'onDragStart' + | 'onDragStartCapture' + | 'onDrop' + | 'onDropCapture' + | 'onMouseDown' + | 'onMouseDownCapture' + | 'onMouseEnter' + | 'onMouseLeave' + | 'onMouseMove' + | 'onMouseMoveCapture' + | 'onMouseOut' + | 'onMouseOutCapture' + | 'onMouseOver' + | 'onMouseOverCapture' + | 'onMouseUp' + | 'onMouseUpCapture' + | 'onSelect' + | 'onSelectCapture' + | 'onTouchCancel' + | 'onTouchCancelCapture' + | 'onTouchEnd' + | 'onTouchEndCapture' + | 'onTouchMove' + | 'onTouchMoveCapture' + | 'onTouchStart' + | 'onTouchStartCapture' + | 'onPointerDown' + | 'onPointerDownCapture' + | 'onPointerMove' + | 'onPointerMoveCapture' + | 'onPointerUp' + | 'onPointerUpCapture' + | 'onPointerCancel' + | 'onPointerCancelCapture' + | 'onPointerEnter' + | 'onPointerEnterCapture' + | 'onPointerLeave' + | 'onPointerLeaveCapture' + | 'onPointerOver' + | 'onPointerOverCapture' + | 'onPointerOut' + | 'onPointerOutCapture' + | 'onGotPointerCapture' + | 'onGotPointerCaptureCapture' + | 'onLostPointerCapture' + | 'onLostPointerCaptureCapture' + | 'onScroll' + | 'onScrollCapture' + | 'onWheel' + | 'onWheelCapture' + | 'onAnimationStart' + | 'onAnimationStartCapture' + | 'onAnimationEnd' + | 'onAnimationEndCapture' + | 'onAnimationIteration' + | 'onAnimationIterationCapture' + | 'onTransitionEnd' + | 'onTransitionEndCapture' + | keyof React_2.ClassAttributes + > & + StyledComponentProps<'root'> & { + className?: string | undefined; + } +>; // @public (undocumented) -export const SidebarSearchField: (props: SidebarSearchFieldProps) => JSX.Element; +export const SidebarSearchField: ( + props: SidebarSearchFieldProps, +) => JSX.Element; // @public (undocumented) -export const SidebarSpace: React_2.ComponentType, HTMLDivElement>, "children" | "slot" | "style" | "title" | "id" | keyof React_2.ClassAttributes | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture"> & StyledComponentProps<"root"> & { - className?: string | undefined; -}>; +export const SidebarSpace: React_2.ComponentType< + Pick< + React_2.DetailedHTMLProps< + React_2.HTMLAttributes, + HTMLDivElement + >, + | 'hidden' + | 'dir' + | 'slot' + | 'style' + | 'title' + | 'color' + | 'translate' + | 'prefix' + | 'children' + | 'id' + | 'defaultChecked' + | 'defaultValue' + | 'suppressContentEditableWarning' + | 'suppressHydrationWarning' + | 'accessKey' + | 'contentEditable' + | 'contextMenu' + | 'draggable' + | 'lang' + | 'placeholder' + | 'spellCheck' + | 'tabIndex' + | 'radioGroup' + | 'role' + | 'about' + | 'datatype' + | 'inlist' + | 'property' + | 'resource' + | 'typeof' + | 'vocab' + | 'autoCapitalize' + | 'autoCorrect' + | 'autoSave' + | 'itemProp' + | 'itemScope' + | 'itemType' + | 'itemID' + | 'itemRef' + | 'results' + | 'security' + | 'unselectable' + | 'inputMode' + | 'is' + | 'aria-activedescendant' + | 'aria-atomic' + | 'aria-autocomplete' + | 'aria-busy' + | 'aria-checked' + | 'aria-colcount' + | 'aria-colindex' + | 'aria-colspan' + | 'aria-controls' + | 'aria-current' + | 'aria-describedby' + | 'aria-details' + | 'aria-disabled' + | 'aria-dropeffect' + | 'aria-errormessage' + | 'aria-expanded' + | 'aria-flowto' + | 'aria-grabbed' + | 'aria-haspopup' + | 'aria-hidden' + | 'aria-invalid' + | 'aria-keyshortcuts' + | 'aria-label' + | 'aria-labelledby' + | 'aria-level' + | 'aria-live' + | 'aria-modal' + | 'aria-multiline' + | 'aria-multiselectable' + | 'aria-orientation' + | 'aria-owns' + | 'aria-placeholder' + | 'aria-posinset' + | 'aria-pressed' + | 'aria-readonly' + | 'aria-relevant' + | 'aria-required' + | 'aria-roledescription' + | 'aria-rowcount' + | 'aria-rowindex' + | 'aria-rowspan' + | 'aria-selected' + | 'aria-setsize' + | 'aria-sort' + | 'aria-valuemax' + | 'aria-valuemin' + | 'aria-valuenow' + | 'aria-valuetext' + | 'dangerouslySetInnerHTML' + | 'onCopy' + | 'onCopyCapture' + | 'onCut' + | 'onCutCapture' + | 'onPaste' + | 'onPasteCapture' + | 'onCompositionEnd' + | 'onCompositionEndCapture' + | 'onCompositionStart' + | 'onCompositionStartCapture' + | 'onCompositionUpdate' + | 'onCompositionUpdateCapture' + | 'onFocus' + | 'onFocusCapture' + | 'onBlur' + | 'onBlurCapture' + | 'onChange' + | 'onChangeCapture' + | 'onBeforeInput' + | 'onBeforeInputCapture' + | 'onInput' + | 'onInputCapture' + | 'onReset' + | 'onResetCapture' + | 'onSubmit' + | 'onSubmitCapture' + | 'onInvalid' + | 'onInvalidCapture' + | 'onLoad' + | 'onLoadCapture' + | 'onError' + | 'onErrorCapture' + | 'onKeyDown' + | 'onKeyDownCapture' + | 'onKeyPress' + | 'onKeyPressCapture' + | 'onKeyUp' + | 'onKeyUpCapture' + | 'onAbort' + | 'onAbortCapture' + | 'onCanPlay' + | 'onCanPlayCapture' + | 'onCanPlayThrough' + | 'onCanPlayThroughCapture' + | 'onDurationChange' + | 'onDurationChangeCapture' + | 'onEmptied' + | 'onEmptiedCapture' + | 'onEncrypted' + | 'onEncryptedCapture' + | 'onEnded' + | 'onEndedCapture' + | 'onLoadedData' + | 'onLoadedDataCapture' + | 'onLoadedMetadata' + | 'onLoadedMetadataCapture' + | 'onLoadStart' + | 'onLoadStartCapture' + | 'onPause' + | 'onPauseCapture' + | 'onPlay' + | 'onPlayCapture' + | 'onPlaying' + | 'onPlayingCapture' + | 'onProgress' + | 'onProgressCapture' + | 'onRateChange' + | 'onRateChangeCapture' + | 'onSeeked' + | 'onSeekedCapture' + | 'onSeeking' + | 'onSeekingCapture' + | 'onStalled' + | 'onStalledCapture' + | 'onSuspend' + | 'onSuspendCapture' + | 'onTimeUpdate' + | 'onTimeUpdateCapture' + | 'onVolumeChange' + | 'onVolumeChangeCapture' + | 'onWaiting' + | 'onWaitingCapture' + | 'onAuxClick' + | 'onAuxClickCapture' + | 'onClick' + | 'onClickCapture' + | 'onContextMenu' + | 'onContextMenuCapture' + | 'onDoubleClick' + | 'onDoubleClickCapture' + | 'onDrag' + | 'onDragCapture' + | 'onDragEnd' + | 'onDragEndCapture' + | 'onDragEnter' + | 'onDragEnterCapture' + | 'onDragExit' + | 'onDragExitCapture' + | 'onDragLeave' + | 'onDragLeaveCapture' + | 'onDragOver' + | 'onDragOverCapture' + | 'onDragStart' + | 'onDragStartCapture' + | 'onDrop' + | 'onDropCapture' + | 'onMouseDown' + | 'onMouseDownCapture' + | 'onMouseEnter' + | 'onMouseLeave' + | 'onMouseMove' + | 'onMouseMoveCapture' + | 'onMouseOut' + | 'onMouseOutCapture' + | 'onMouseOver' + | 'onMouseOverCapture' + | 'onMouseUp' + | 'onMouseUpCapture' + | 'onSelect' + | 'onSelectCapture' + | 'onTouchCancel' + | 'onTouchCancelCapture' + | 'onTouchEnd' + | 'onTouchEndCapture' + | 'onTouchMove' + | 'onTouchMoveCapture' + | 'onTouchStart' + | 'onTouchStartCapture' + | 'onPointerDown' + | 'onPointerDownCapture' + | 'onPointerMove' + | 'onPointerMoveCapture' + | 'onPointerUp' + | 'onPointerUpCapture' + | 'onPointerCancel' + | 'onPointerCancelCapture' + | 'onPointerEnter' + | 'onPointerEnterCapture' + | 'onPointerLeave' + | 'onPointerLeaveCapture' + | 'onPointerOver' + | 'onPointerOverCapture' + | 'onPointerOut' + | 'onPointerOutCapture' + | 'onGotPointerCapture' + | 'onGotPointerCaptureCapture' + | 'onLostPointerCapture' + | 'onLostPointerCaptureCapture' + | 'onScroll' + | 'onScrollCapture' + | 'onWheel' + | 'onWheelCapture' + | 'onAnimationStart' + | 'onAnimationStartCapture' + | 'onAnimationEnd' + | 'onAnimationEndCapture' + | 'onAnimationIteration' + | 'onAnimationIterationCapture' + | 'onTransitionEnd' + | 'onTransitionEndCapture' + | keyof React_2.ClassAttributes + > & + StyledComponentProps<'root'> & { + className?: string | undefined; + } +>; // @public (undocumented) -export const SidebarSpacer: React_2.ComponentType, HTMLDivElement>, "children" | "slot" | "style" | "title" | "id" | keyof React_2.ClassAttributes | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture"> & StyledComponentProps<"root"> & { - className?: string | undefined; -}>; +export const SidebarSpacer: React_2.ComponentType< + Pick< + React_2.DetailedHTMLProps< + React_2.HTMLAttributes, + HTMLDivElement + >, + | 'hidden' + | 'dir' + | 'slot' + | 'style' + | 'title' + | 'color' + | 'translate' + | 'prefix' + | 'children' + | 'id' + | 'defaultChecked' + | 'defaultValue' + | 'suppressContentEditableWarning' + | 'suppressHydrationWarning' + | 'accessKey' + | 'contentEditable' + | 'contextMenu' + | 'draggable' + | 'lang' + | 'placeholder' + | 'spellCheck' + | 'tabIndex' + | 'radioGroup' + | 'role' + | 'about' + | 'datatype' + | 'inlist' + | 'property' + | 'resource' + | 'typeof' + | 'vocab' + | 'autoCapitalize' + | 'autoCorrect' + | 'autoSave' + | 'itemProp' + | 'itemScope' + | 'itemType' + | 'itemID' + | 'itemRef' + | 'results' + | 'security' + | 'unselectable' + | 'inputMode' + | 'is' + | 'aria-activedescendant' + | 'aria-atomic' + | 'aria-autocomplete' + | 'aria-busy' + | 'aria-checked' + | 'aria-colcount' + | 'aria-colindex' + | 'aria-colspan' + | 'aria-controls' + | 'aria-current' + | 'aria-describedby' + | 'aria-details' + | 'aria-disabled' + | 'aria-dropeffect' + | 'aria-errormessage' + | 'aria-expanded' + | 'aria-flowto' + | 'aria-grabbed' + | 'aria-haspopup' + | 'aria-hidden' + | 'aria-invalid' + | 'aria-keyshortcuts' + | 'aria-label' + | 'aria-labelledby' + | 'aria-level' + | 'aria-live' + | 'aria-modal' + | 'aria-multiline' + | 'aria-multiselectable' + | 'aria-orientation' + | 'aria-owns' + | 'aria-placeholder' + | 'aria-posinset' + | 'aria-pressed' + | 'aria-readonly' + | 'aria-relevant' + | 'aria-required' + | 'aria-roledescription' + | 'aria-rowcount' + | 'aria-rowindex' + | 'aria-rowspan' + | 'aria-selected' + | 'aria-setsize' + | 'aria-sort' + | 'aria-valuemax' + | 'aria-valuemin' + | 'aria-valuenow' + | 'aria-valuetext' + | 'dangerouslySetInnerHTML' + | 'onCopy' + | 'onCopyCapture' + | 'onCut' + | 'onCutCapture' + | 'onPaste' + | 'onPasteCapture' + | 'onCompositionEnd' + | 'onCompositionEndCapture' + | 'onCompositionStart' + | 'onCompositionStartCapture' + | 'onCompositionUpdate' + | 'onCompositionUpdateCapture' + | 'onFocus' + | 'onFocusCapture' + | 'onBlur' + | 'onBlurCapture' + | 'onChange' + | 'onChangeCapture' + | 'onBeforeInput' + | 'onBeforeInputCapture' + | 'onInput' + | 'onInputCapture' + | 'onReset' + | 'onResetCapture' + | 'onSubmit' + | 'onSubmitCapture' + | 'onInvalid' + | 'onInvalidCapture' + | 'onLoad' + | 'onLoadCapture' + | 'onError' + | 'onErrorCapture' + | 'onKeyDown' + | 'onKeyDownCapture' + | 'onKeyPress' + | 'onKeyPressCapture' + | 'onKeyUp' + | 'onKeyUpCapture' + | 'onAbort' + | 'onAbortCapture' + | 'onCanPlay' + | 'onCanPlayCapture' + | 'onCanPlayThrough' + | 'onCanPlayThroughCapture' + | 'onDurationChange' + | 'onDurationChangeCapture' + | 'onEmptied' + | 'onEmptiedCapture' + | 'onEncrypted' + | 'onEncryptedCapture' + | 'onEnded' + | 'onEndedCapture' + | 'onLoadedData' + | 'onLoadedDataCapture' + | 'onLoadedMetadata' + | 'onLoadedMetadataCapture' + | 'onLoadStart' + | 'onLoadStartCapture' + | 'onPause' + | 'onPauseCapture' + | 'onPlay' + | 'onPlayCapture' + | 'onPlaying' + | 'onPlayingCapture' + | 'onProgress' + | 'onProgressCapture' + | 'onRateChange' + | 'onRateChangeCapture' + | 'onSeeked' + | 'onSeekedCapture' + | 'onSeeking' + | 'onSeekingCapture' + | 'onStalled' + | 'onStalledCapture' + | 'onSuspend' + | 'onSuspendCapture' + | 'onTimeUpdate' + | 'onTimeUpdateCapture' + | 'onVolumeChange' + | 'onVolumeChangeCapture' + | 'onWaiting' + | 'onWaitingCapture' + | 'onAuxClick' + | 'onAuxClickCapture' + | 'onClick' + | 'onClickCapture' + | 'onContextMenu' + | 'onContextMenuCapture' + | 'onDoubleClick' + | 'onDoubleClickCapture' + | 'onDrag' + | 'onDragCapture' + | 'onDragEnd' + | 'onDragEndCapture' + | 'onDragEnter' + | 'onDragEnterCapture' + | 'onDragExit' + | 'onDragExitCapture' + | 'onDragLeave' + | 'onDragLeaveCapture' + | 'onDragOver' + | 'onDragOverCapture' + | 'onDragStart' + | 'onDragStartCapture' + | 'onDrop' + | 'onDropCapture' + | 'onMouseDown' + | 'onMouseDownCapture' + | 'onMouseEnter' + | 'onMouseLeave' + | 'onMouseMove' + | 'onMouseMoveCapture' + | 'onMouseOut' + | 'onMouseOutCapture' + | 'onMouseOver' + | 'onMouseOverCapture' + | 'onMouseUp' + | 'onMouseUpCapture' + | 'onSelect' + | 'onSelectCapture' + | 'onTouchCancel' + | 'onTouchCancelCapture' + | 'onTouchEnd' + | 'onTouchEndCapture' + | 'onTouchMove' + | 'onTouchMoveCapture' + | 'onTouchStart' + | 'onTouchStartCapture' + | 'onPointerDown' + | 'onPointerDownCapture' + | 'onPointerMove' + | 'onPointerMoveCapture' + | 'onPointerUp' + | 'onPointerUpCapture' + | 'onPointerCancel' + | 'onPointerCancelCapture' + | 'onPointerEnter' + | 'onPointerEnterCapture' + | 'onPointerLeave' + | 'onPointerLeaveCapture' + | 'onPointerOver' + | 'onPointerOverCapture' + | 'onPointerOut' + | 'onPointerOutCapture' + | 'onGotPointerCapture' + | 'onGotPointerCaptureCapture' + | 'onLostPointerCapture' + | 'onLostPointerCaptureCapture' + | 'onScroll' + | 'onScrollCapture' + | 'onWheel' + | 'onWheelCapture' + | 'onAnimationStart' + | 'onAnimationStartCapture' + | 'onAnimationEnd' + | 'onAnimationEndCapture' + | 'onAnimationIteration' + | 'onAnimationIterationCapture' + | 'onTransitionEnd' + | 'onTransitionEndCapture' + | keyof React_2.ClassAttributes + > & + StyledComponentProps<'root'> & { + className?: string | undefined; + } +>; // @public (undocumented) export const SignInPage: (props: Props_23) => JSX.Element; // @public (undocumented) export type SignInProviderConfig = { - id: string; - title: string; - message: string; - apiRef: ApiRef; + id: string; + title: string; + message: string; + apiRef: ApiRef; }; // @public (undocumented) -export const SimpleStepper: ({ children, elevated, onStepChange, activeStep, }: PropsWithChildren) => JSX.Element; +export const SimpleStepper: ({ + children, + elevated, + onStepChange, + activeStep, +}: PropsWithChildren) => JSX.Element; // @public (undocumented) -export const SimpleStepperStep: ({ title, children, end, actions, ...muiProps }: PropsWithChildren) => JSX.Element; +export const SimpleStepperStep: ({ + title, + children, + end, + actions, + ...muiProps +}: PropsWithChildren) => JSX.Element; // @public (undocumented) export const StatusAborted: (props: PropsWithChildren<{}>) => JSX.Element; @@ -467,102 +2261,139 @@ export const StatusRunning: (props: PropsWithChildren<{}>) => JSX.Element; export const StatusWarning: (props: PropsWithChildren<{}>) => JSX.Element; // @public (undocumented) -export const StructuredMetadataTable: ({ metadata, dense, options, }: Props_16) => JSX.Element; +export const StructuredMetadataTable: ({ + metadata, + dense, + options, +}: Props_16) => JSX.Element; // @public (undocumented) -export const SubvalueCell: ({ value, subvalue }: SubvalueCellProps) => JSX.Element; +export const SubvalueCell: ({ + value, + subvalue, +}: SubvalueCellProps) => JSX.Element; // @public (undocumented) -export const SupportButton: ({ title, children }: SupportButtonProps) => JSX.Element; +export const SupportButton: ({ + title, + children, +}: SupportButtonProps) => JSX.Element; // @public (undocumented) export type SupportConfig = { - url: string; - items: SupportItem[]; + url: string; + items: SupportItem[]; }; // @public (undocumented) export type SupportItem = { - title: string; - icon?: string; - links: SupportItemLink[]; + title: string; + icon?: string; + links: SupportItemLink[]; }; // @public (undocumented) export type SupportItemLink = { - url: string; - title: string; + url: string; + title: string; }; // @public (undocumented) export type Tab = { - id: string; - label: string; - tabProps?: TabProps; + id: string; + label: string; + tabProps?: TabProps< + React_2.ElementType, + { + component?: React_2.ElementType; + } + >; }; // @public (undocumented) -export const TabbedCard: ({ slackChannel, errorBoundaryProps, children, title, deepLink, value, onChange, }: PropsWithChildren) => JSX.Element; +export const TabbedCard: ({ + slackChannel, + errorBoundaryProps, + children, + title, + deepLink, + value, + onChange, +}: PropsWithChildren) => JSX.Element; // @public export const TabbedLayout: { - ({ children }: PropsWithChildren<{}>): JSX.Element; - Route: (props: SubRoute) => null; + ({ children }: PropsWithChildren<{}>): JSX.Element; + Route: (props: SubRoute) => null; }; // @public (undocumented) -export function Table({ columns, options, title, subtitle, filters, initialState, emptyContent, onStateChange, ...props }: TableProps): JSX.Element; +export function Table({ + columns, + options, + title, + subtitle, + filters, + initialState, + emptyContent, + onStateChange, + ...props +}: TableProps): JSX.Element; // @public (undocumented) export interface TableColumn extends Column { - // (undocumented) - highlight?: boolean; - // (undocumented) - width?: string; + // (undocumented) + highlight?: boolean; + // (undocumented) + width?: string; } // @public (undocumented) export type TableFilter = { - column: string; - type: 'select' | 'multiple-select' | 'checkbox-tree'; + column: string; + type: 'select' | 'multiple-select' | 'checkbox-tree'; }; // @public (undocumented) -export interface TableProps extends MaterialTableProps { - // (undocumented) - columns: TableColumn[]; - // (undocumented) - emptyContent?: ReactNode; - // (undocumented) - filters?: TableFilter[]; - // (undocumented) - initialState?: TableState; - // (undocumented) - onStateChange?: (state: TableState) => any; - // (undocumented) - subtitle?: string; +export interface TableProps + extends MaterialTableProps { + // (undocumented) + columns: TableColumn[]; + // (undocumented) + emptyContent?: ReactNode; + // (undocumented) + filters?: TableFilter[]; + // (undocumented) + initialState?: TableState; + // (undocumented) + onStateChange?: (state: TableState) => any; + // (undocumented) + subtitle?: string; } // @public (undocumented) export type TableState = { - search?: string; - filtersOpen?: boolean; - filters?: SelectedFilters; + search?: string; + filtersOpen?: boolean; + filters?: SelectedFilters; }; // @public (undocumented) export const Tabs: ({ tabs }: TabsProps) => JSX.Element; // @public (undocumented) -export const TrendLine: (props: SparklinesProps & Pick & { - title?: string; -}) => JSX.Element | null; +export const TrendLine: ( + props: SparklinesProps & + Pick & { + title?: string; + }, +) => JSX.Element | null; // @public (undocumented) -export function useQueryParamState(stateName: string, -debounceTime?: number): [T | undefined, SetQueryParams]; +export function useQueryParamState( + stateName: string, + debounceTime?: number, +): [T | undefined, SetQueryParams]; // @public (undocumented) export const UserIcon: IconComponent; @@ -577,5 +2408,4 @@ export const WarningIcon: IconComponent; export const WarningPanel: (props: Props_17) => JSX.Element; // (No @packageDocumentation comment for this package) - ``` diff --git a/packages/core-plugin-api/api-report.md b/packages/core-plugin-api/api-report.md index cb1bfe1280..f3cb134fe1 100644 --- a/packages/core-plugin-api/api-report.md +++ b/packages/core-plugin-api/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { BackstageTheme } from '@backstage/theme'; @@ -16,8 +15,8 @@ import { SvgIconProps } from '@material-ui/core'; // @public export type AlertApi = { - post(alert: AlertMessage): void; - alert$(): Observable; + post(alert: AlertMessage): void; + alert$(): Observable; }; // @public (undocumented) @@ -25,43 +24,53 @@ export const alertApiRef: ApiRef; // @public (undocumented) export type AlertMessage = { - message: string; - severity?: 'success' | 'info' | 'warning' | 'error'; + message: string; + severity?: 'success' | 'info' | 'warning' | 'error'; }; // @public (undocumented) -export type AnyApiFactory = ApiFactory; + } +>; // @public (undocumented) export type AnyApiRef = ApiRef; // @public (undocumented) -export type ApiFactory = { - api: ApiRef; - deps: TypesToApiRefs; - factory(deps: Deps): Impl; + } +> = { + api: ApiRef; + deps: TypesToApiRefs; + factory(deps: Deps): Impl; }; // @public (undocumented) export type ApiHolder = { - get(api: ApiRef): T | undefined; + get(api: ApiRef): T | undefined; }; // @public (undocumented) export type ApiRef = { - id: string; - T: T; + id: string; + T: T; }; // @public (undocumented) -export type ApiRefsToTypes; -}> = { - [key in keyof T]: ApiRefType; + } +> = { + [key in keyof T]: ApiRefType; }; // @public (undocumented) @@ -69,93 +78,106 @@ export type ApiRefType = T extends ApiRef ? U : never; // @public (undocumented) export type AppComponents = { - NotFoundErrorPage: ComponentType<{}>; - BootErrorPage: ComponentType; - Progress: ComponentType<{}>; - Router: ComponentType<{}>; - ErrorBoundaryFallback: ComponentType; - SignInPage?: ComponentType; + NotFoundErrorPage: ComponentType<{}>; + BootErrorPage: ComponentType; + Progress: ComponentType<{}>; + Router: ComponentType<{}>; + ErrorBoundaryFallback: ComponentType; + SignInPage?: ComponentType; }; // @public (undocumented) export type AppContext = { - getPlugins(): BackstagePlugin[]; - getSystemIcon(key: string): IconComponent | undefined; - getComponents(): AppComponents; + getPlugins(): BackstagePlugin[]; + getSystemIcon(key: string): IconComponent | undefined; + getComponents(): AppComponents; }; // @public export type AppTheme = { - id: string; - title: string; - variant: 'light' | 'dark'; - theme: BackstageTheme; - icon?: React.ReactElement; + id: string; + title: string; + variant: 'light' | 'dark'; + theme: BackstageTheme; + icon?: React.ReactElement; }; // @public export type AppThemeApi = { - getInstalledThemes(): AppTheme[]; - activeThemeId$(): Observable; - getActiveThemeId(): string | undefined; - setActiveThemeId(themeId?: string): void; + getInstalledThemes(): AppTheme[]; + activeThemeId$(): Observable; + getActiveThemeId(): string | undefined; + setActiveThemeId(themeId?: string): void; }; // @public (undocumented) export const appThemeApiRef: ApiRef; // @public (undocumented) -export function attachComponentData

(component: ComponentType

, type: string, data: unknown): void; +export function attachComponentData

( + component: ComponentType

, + type: string, + data: unknown, +): void; // @public -export const auth0AuthApiRef: ApiRef; +export const auth0AuthApiRef: ApiRef< + OpenIdConnectApi & ProfileInfoApi & BackstageIdentityApi & SessionApi +>; // @public export type AuthProvider = { - title: string; - icon: IconComponent; + title: string; + icon: IconComponent; }; // @public -export type AuthRequester = (scopes: Set) => Promise; +export type AuthRequester = ( + scopes: Set, +) => Promise; // @public export type AuthRequesterOptions = { - provider: AuthProvider; - onAuthRequest(scopes: Set): Promise; + provider: AuthProvider; + onAuthRequest(scopes: Set): Promise; }; // @public (undocumented) export type AuthRequestOptions = { - optional?: boolean; - instantPopup?: boolean; + optional?: boolean; + instantPopup?: boolean; }; // @public (undocumented) export type BackstageIdentity = { - id: string; - idToken: string; + id: string; + idToken: string; }; // @public export type BackstageIdentityApi = { - getBackstageIdentity(options?: AuthRequestOptions): Promise; + getBackstageIdentity( + options?: AuthRequestOptions, + ): Promise; }; // @public (undocumented) -export type BackstagePlugin = { - getId(): string; - output(): PluginOutput[]; - getApis(): Iterable; - provide(extension: Extension): T; - routes: Routes; - externalRoutes: ExternalRoutes; +export type BackstagePlugin< + Routes extends AnyRoutes = {}, + ExternalRoutes extends AnyExternalRoutes = {} +> = { + getId(): string; + output(): PluginOutput[]; + getApis(): Iterable; + provide(extension: Extension): T; + routes: Routes; + externalRoutes: ExternalRoutes; }; // @public (undocumented) export type BootErrorPageProps = { - step: 'load-config' | 'load-chunk'; - error: Error; + step: 'load-config' | 'load-chunk'; + error: Error; }; // @public @@ -165,66 +187,89 @@ export type ConfigApi = Config; export const configApiRef: ApiRef; // @public -export function createApiFactory(factory: ApiFactory): ApiFactory; + } +>(factory: ApiFactory): ApiFactory; // @public (undocumented) -export function createApiFactory(api: ApiRef, instance: Impl): ApiFactory; +export function createApiFactory( + api: ApiRef, + instance: Impl, +): ApiFactory; // @public (undocumented) export function createApiRef(config: ApiRefConfig): ApiRef; // @public (undocumented) -export function createComponentExtension JSX.Element | null>(options: { - component: ComponentLoader; -}): Extension; +export function createComponentExtension< + T extends (props: any) => JSX.Element | null +>(options: { component: ComponentLoader }): Extension; // @public (undocumented) -export function createExternalRouteRef(options: { - id: string; - params?: ParamKey[]; - optional?: Optional; + }, + Optional extends boolean = false, + ParamKey extends string = never +>(options: { + id: string; + params?: ParamKey[]; + optional?: Optional; }): ExternalRouteRef, Optional>; // @public (undocumented) -export function createPlugin(config: PluginConfig): BackstagePlugin; +export function createPlugin< + Routes extends AnyRoutes = {}, + ExternalRoutes extends AnyExternalRoutes = {} +>( + config: PluginConfig, +): BackstagePlugin; // @public (undocumented) -export function createReactExtension JSX.Element | null>(options: { - component: ComponentLoader; - data?: Record; +export function createReactExtension< + T extends (props: any) => JSX.Element | null +>(options: { + component: ComponentLoader; + data?: Record; }): Extension; // @public (undocumented) -export function createRoutableExtension JSX.Element | null>(options: { - component: () => Promise; - mountPoint: RouteRef; -}): Extension; +export function createRoutableExtension< + T extends (props: any) => JSX.Element | null +>(options: { component: () => Promise; mountPoint: RouteRef }): Extension; // @public (undocumented) -export function createRouteRef(config: { - id?: string; - params?: ParamKey[]; - path?: string; - icon?: OldIconComponent; - title?: string; + }, + ParamKey extends string = never +>(config: { + id?: string; + params?: ParamKey[]; + path?: string; + icon?: OldIconComponent; + title?: string; }): RouteRef>; // @public (undocumented) -export function createSubRouteRef(config: { - id: string; - path: Path; - parent: RouteRef; +export function createSubRouteRef< + Path extends string, + ParentParams extends AnyParams = never +>(config: { + id: string; + path: Path; + parent: RouteRef; }): MakeSubRouteRef, ParentParams>; // @public export type DiscoveryApi = { - getBaseUrl(pluginId: string): Promise; + getBaseUrl(pluginId: string): Promise; }; // @public (undocumented) @@ -232,25 +277,25 @@ export const discoveryApiRef: ApiRef; // @public export interface ElementCollection { - findComponentData(query: { - key: string; - }): T[]; - getElements(): Array>; - selectByComponentData(query: { - key: string; - withStrictError?: string; - }): ElementCollection; + findComponentData(query: { key: string }): T[]; + getElements< + Props extends { + [name: string]: unknown; + } + >(): Array>; + selectByComponentData(query: { + key: string; + withStrictError?: string; + }): ElementCollection; } // @public export type ErrorApi = { - post(error: Error_2, context?: ErrorContext): void; - error$(): Observable<{ - error: Error_2; - context?: ErrorContext; - }>; + post(error: Error_2, context?: ErrorContext): void; + error$(): Observable<{ + error: Error_2; + context?: ErrorContext; + }>; }; // @public (undocumented) @@ -258,46 +303,49 @@ export const errorApiRef: ApiRef; // @public (undocumented) export type ErrorBoundaryFallbackProps = { - plugin?: BackstagePlugin; - error: Error; - resetError: () => void; + plugin?: BackstagePlugin; + error: Error; + resetError: () => void; }; // @public export type ErrorContext = { - hidden?: boolean; + hidden?: boolean; }; // @public (undocumented) export type Extension = { - expose(plugin: BackstagePlugin): T; + expose(plugin: BackstagePlugin): T; }; // @public (undocumented) -export type ExternalRouteRef = { - readonly [routeRefType]: 'external'; - params: ParamKeys; - optional?: Optional; +export type ExternalRouteRef< + Params extends AnyParams = any, + Optional extends boolean = any +> = { + readonly [routeRefType]: 'external'; + params: ParamKeys; + optional?: Optional; }; // @public export type FeatureFlag = { - name: string; - pluginId: string; + name: string; + pluginId: string; }; // @public (undocumented) export type FeatureFlagOutput = { - type: 'feature-flag'; - name: string; + type: 'feature-flag'; + name: string; }; // @public (undocumented) export interface FeatureFlagsApi { - getRegisteredFlags(): FeatureFlag[]; - isActive(name: string): boolean; - registerFlag(flag: FeatureFlag): void; - save(options: FeatureFlagsSaveOptions): void; + getRegisteredFlags(): FeatureFlag[]; + isActive(name: string): boolean; + registerFlag(flag: FeatureFlag): void; + save(options: FeatureFlagsSaveOptions): void; } // @public (undocumented) @@ -305,66 +353,96 @@ export const featureFlagsApiRef: ApiRef; // @public (undocumented) export type FeatureFlagsHooks = { - register(name: string): void; + register(name: string): void; }; // @public export type FeatureFlagsSaveOptions = { - states: Record; - merge?: boolean; + states: Record; + merge?: boolean; }; // @public (undocumented) export enum FeatureFlagState { - // (undocumented) - Active = 1, - // (undocumented) - None = 0 + // (undocumented) + Active = 1, + // (undocumented) + None = 0, } // @public (undocumented) -export function getComponentData(node: ReactNode, type: string): T | undefined; +export function getComponentData( + node: ReactNode, + type: string, +): T | undefined; // @public -export const githubAuthApiRef: ApiRef; +export const githubAuthApiRef: ApiRef< + OAuthApi & ProfileInfoApi & BackstageIdentityApi & SessionApi +>; // @public -export const gitlabAuthApiRef: ApiRef; +export const gitlabAuthApiRef: ApiRef< + OAuthApi & ProfileInfoApi & BackstageIdentityApi & SessionApi +>; // @public -export const googleAuthApiRef: ApiRef; +export const googleAuthApiRef: ApiRef< + OAuthApi & + OpenIdConnectApi & + ProfileInfoApi & + BackstageIdentityApi & + SessionApi +>; // @public export type IconComponent = ComponentType<{ - fontSize?: 'default' | 'small' | 'large'; + fontSize?: 'default' | 'small' | 'large'; }>; // @public export type IdentityApi = { - getUserId(): string; - getProfile(): ProfileInfo; - getIdToken(): Promise; - signOut(): Promise; + getUserId(): string; + getProfile(): ProfileInfo; + getIdToken(): Promise; + signOut(): Promise; }; // @public (undocumented) export const identityApiRef: ApiRef; // @public -export const microsoftAuthApiRef: ApiRef; +export const microsoftAuthApiRef: ApiRef< + OAuthApi & + OpenIdConnectApi & + ProfileInfoApi & + BackstageIdentityApi & + SessionApi +>; // @public -export const oauth2ApiRef: ApiRef; +export const oauth2ApiRef: ApiRef< + OAuthApi & + OpenIdConnectApi & + ProfileInfoApi & + BackstageIdentityApi & + SessionApi +>; // @public export type OAuthApi = { - getAccessToken(scope?: OAuthScope, options?: AuthRequestOptions): Promise; + getAccessToken( + scope?: OAuthScope, + options?: AuthRequestOptions, + ): Promise; }; // @public export type OAuthRequestApi = { - createAuthRequester(options: AuthRequesterOptions): AuthRequester; - authRequest$(): Observable; + createAuthRequester( + options: AuthRequesterOptions, + ): AuthRequester; + authRequest$(): Observable; }; // @public (undocumented) @@ -375,51 +453,76 @@ export type OAuthScope = string | string[]; // @public export type Observable = { - [Symbol.observable](): Observable; - subscribe(observer: Observer): Subscription; - subscribe(onNext?: (value: T) => void, onError?: (error: Error) => void, onComplete?: () => void): Subscription; + [Symbol.observable](): Observable; + subscribe(observer: Observer): Subscription; + subscribe( + onNext?: (value: T) => void, + onError?: (error: Error) => void, + onComplete?: () => void, + ): Subscription; }; // @public export type Observer = { - next?(value: T): void; - error?(error: Error): void; - complete?(): void; + next?(value: T): void; + error?(error: Error): void; + complete?(): void; }; // @public -export const oidcAuthApiRef: ApiRef; +export const oidcAuthApiRef: ApiRef< + OAuthApi & + OpenIdConnectApi & + ProfileInfoApi & + BackstageIdentityApi & + SessionApi +>; // @public -export const oktaAuthApiRef: ApiRef; +export const oktaAuthApiRef: ApiRef< + OAuthApi & + OpenIdConnectApi & + ProfileInfoApi & + BackstageIdentityApi & + SessionApi +>; // @public (undocumented) -export const oneloginAuthApiRef: ApiRef; +export const oneloginAuthApiRef: ApiRef< + OAuthApi & + OpenIdConnectApi & + ProfileInfoApi & + BackstageIdentityApi & + SessionApi +>; // @public export type OpenIdConnectApi = { - getIdToken(options?: AuthRequestOptions): Promise; + getIdToken(options?: AuthRequestOptions): Promise; }; // @public export type PendingAuthRequest = { - provider: AuthProvider; - reject: () => void; - trigger(): Promise; + provider: AuthProvider; + reject: () => void; + trigger(): Promise; }; // @public (undocumented) -export type PluginConfig = { - id: string; - apis?: Iterable; - register?(hooks: PluginHooks): void; - routes?: Routes; - externalRoutes?: ExternalRoutes; +export type PluginConfig< + Routes extends AnyRoutes, + ExternalRoutes extends AnyExternalRoutes +> = { + id: string; + apis?: Iterable; + register?(hooks: PluginHooks): void; + routes?: Routes; + externalRoutes?: ExternalRoutes; }; // @public (undocumented) export type PluginHooks = { - featureFlags: FeatureFlagsHooks; + featureFlags: FeatureFlagsHooks; }; // @public (undocumented) @@ -427,19 +530,19 @@ export type PluginOutput = FeatureFlagOutput; // @public export type ProfileInfo = { - email?: string; - displayName?: string; - picture?: string; + email?: string; + displayName?: string; + picture?: string; }; // @public export type ProfileInfoApi = { - getProfile(options?: AuthRequestOptions): Promise; + getProfile(options?: AuthRequestOptions): Promise; }; // @public (undocumented) export type RouteOptions = { - exact?: boolean; + exact?: boolean; }; // @public (undocumented) @@ -447,51 +550,53 @@ export type RoutePath = string; // @public (undocumented) export type RouteRef = { - readonly [routeRefType]: 'absolute'; - params: ParamKeys; - path: string; - icon?: OldIconComponent; - title?: string; + readonly [routeRefType]: 'absolute'; + params: ParamKeys; + path: string; + icon?: OldIconComponent; + title?: string; }; // @public -export const samlAuthApiRef: ApiRef; +export const samlAuthApiRef: ApiRef< + ProfileInfoApi & BackstageIdentityApi & SessionApi +>; // @public export type SessionApi = { - signIn(): Promise; - signOut(): Promise; - sessionState$(): Observable; + signIn(): Promise; + signOut(): Promise; + sessionState$(): Observable; }; // @public export enum SessionState { - // (undocumented) - SignedIn = "SignedIn", - // (undocumented) - SignedOut = "SignedOut" + // (undocumented) + SignedIn = 'SignedIn', + // (undocumented) + SignedOut = 'SignedOut', } // @public (undocumented) export type SignInPageProps = { - onResult(result: SignInResult): void; + onResult(result: SignInResult): void; }; // @public (undocumented) export type SignInResult = { - userId: string; - profile: ProfileInfo; - getIdToken?: () => Promise; - signOut?: () => Promise; + userId: string; + profile: ProfileInfo; + getIdToken?: () => Promise; + signOut?: () => Promise; }; // @public (undocumented) export interface StorageApi { - forBucket(name: string): StorageApi; - get(key: string): T | undefined; - observe$(key: string): Observable>; - remove(key: string): Promise; - set(key: string, data: any): Promise; + forBucket(name: string): StorageApi; + get(key: string): T | undefined; + observe$(key: string): Observable>; + remove(key: string): Promise; + set(key: string, data: any): Promise; } // @public (undocumented) @@ -499,27 +604,27 @@ export const storageApiRef: ApiRef; // @public (undocumented) export type StorageValueChange = { - key: string; - newValue?: T; + key: string; + newValue?: T; }; // @public (undocumented) export type SubRouteRef = { - readonly [routeRefType]: 'sub'; - parent: RouteRef; - path: string; - params: ParamKeys; + readonly [routeRefType]: 'sub'; + parent: RouteRef; + path: string; + params: ParamKeys; }; // @public export type Subscription = { - unsubscribe(): void; - readonly closed: boolean; + unsubscribe(): void; + readonly closed: boolean; }; // @public (undocumented) export type TypesToApiRefs = { - [key in keyof T]: ApiRef; + [key in keyof T]: ApiRef; }; // @public (undocumented) @@ -532,26 +637,39 @@ export function useApiHolder(): ApiHolder; export const useApp: () => AppContext; // @public -export function useElementFilter(node: ReactNode, filterFn: (arg: ElementCollection) => T, dependencies?: any[]): T; +export function useElementFilter( + node: ReactNode, + filterFn: (arg: ElementCollection) => T, + dependencies?: any[], +): T; // @public (undocumented) export type UserFlags = {}; // @public (undocumented) -export function useRouteRef(routeRef: ExternalRouteRef): Optional extends true ? RouteFunc | undefined : RouteFunc; +export function useRouteRef( + routeRef: ExternalRouteRef, +): Optional extends true ? RouteFunc | undefined : RouteFunc; // @public (undocumented) -export function useRouteRef(routeRef: RouteRef | SubRouteRef): RouteFunc; +export function useRouteRef( + routeRef: RouteRef | SubRouteRef, +): RouteFunc; // @public (undocumented) -export function useRouteRefParams(_routeRef: RouteRef | SubRouteRef): Params; +export function useRouteRefParams( + _routeRef: RouteRef | SubRouteRef, +): Params; // @public (undocumented) -export function withApis(apis: TypesToApiRefs):

(WrappedComponent: React_2.ComponentType

) => { - (props: React_2.PropsWithChildren>): JSX.Element; - displayName: string; +export function withApis( + apis: TypesToApiRefs, +):

( + WrappedComponent: React_2.ComponentType

, +) => { + (props: React_2.PropsWithChildren>): JSX.Element; + displayName: string; }; // (No @packageDocumentation comment for this package) - ``` diff --git a/packages/dev-utils/api-report.md b/packages/dev-utils/api-report.md index 1c44b55dac..18bee415ff 100644 --- a/packages/dev-utils/api-report.md +++ b/packages/dev-utils/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiFactory } from '@backstage/core-plugin-api'; @@ -18,10 +17,13 @@ import { ReactNode } from 'react'; export function createDevApp(): DevAppBuilder; // @public (undocumented) -export const EntityGridItem: ({ entity, classes, ...rest }: Omit, "container" | "item"> & { - entity: Entity; +export const EntityGridItem: ({ + entity, + classes, + ...rest +}: Omit, 'container' | 'item'> & { + entity: Entity; }) => JSX.Element; // (No @packageDocumentation comment for this package) - ``` diff --git a/packages/errors/api-report.md b/packages/errors/api-report.md index cb24cba80f..019b6dd387 100644 --- a/packages/errors/api-report.md +++ b/packages/errors/api-report.md @@ -3,86 +3,82 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { JsonObject } from '@backstage/config'; // @public -export class AuthenticationError extends CustomErrorBase { -} +export class AuthenticationError extends CustomErrorBase {} // @public -export class ConflictError extends CustomErrorBase { -} +export class ConflictError extends CustomErrorBase {} // @public (undocumented) export class CustomErrorBase extends Error { - constructor(message?: string, cause?: Error); - // (undocumented) - readonly cause?: Error; + constructor(message?: string, cause?: Error); + // (undocumented) + readonly cause?: Error; } // @public -export function deserializeError(data: SerializedError): T; +export function deserializeError( + data: SerializedError, +): T; // @public export type ErrorResponse = { - error: SerializedError; - request?: { - method: string; - url: string; - }; - response: { - statusCode: number; - }; + error: SerializedError; + request?: { + method: string; + url: string; + }; + response: { + statusCode: number; + }; }; // @public -export class InputError extends CustomErrorBase { -} +export class InputError extends CustomErrorBase {} // @public -export class NotAllowedError extends CustomErrorBase { -} +export class NotAllowedError extends CustomErrorBase {} // @public -export class NotFoundError extends CustomErrorBase { -} +export class NotFoundError extends CustomErrorBase {} // @public -export class NotModifiedError extends CustomErrorBase { -} +export class NotModifiedError extends CustomErrorBase {} // @public export function parseErrorResponse(response: Response): Promise; // @public export class ResponseError extends Error { - constructor(props: { - message: string; - response: Response; - data: ErrorResponse; - cause: Error; - }); - readonly cause: Error; - readonly data: ErrorResponse; - static fromResponse(response: Response): Promise; - readonly response: Response; + constructor(props: { + message: string; + response: Response; + data: ErrorResponse; + cause: Error; + }); + readonly cause: Error; + readonly data: ErrorResponse; + static fromResponse(response: Response): Promise; + readonly response: Response; } // @public export type SerializedError = JsonObject & { - name: string; - message: string; - stack?: string; - code?: string; + name: string; + message: string; + stack?: string; + code?: string; }; // @public -export function serializeError(error: Error, options?: { +export function serializeError( + error: Error, + options?: { includeStack?: boolean; -}): SerializedError; - + }, +): SerializedError; // (No @packageDocumentation comment for this package) - ``` diff --git a/packages/integration-react/api-report.md b/packages/integration-react/api-report.md index e3866d7932..e2574196e0 100644 --- a/packages/integration-react/api-report.md +++ b/packages/integration-react/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -11,19 +10,20 @@ import { Config } from '@backstage/config'; import { ScmIntegrationRegistry } from '@backstage/integration'; // @public (undocumented) -export const ScmIntegrationIcon: ({ type }: { - type?: string | undefined; +export const ScmIntegrationIcon: ({ + type, +}: { + type?: string | undefined; }) => JSX.Element; // @public (undocumented) export class ScmIntegrationsApi { - // (undocumented) - static fromConfig(config: Config): ScmIntegrationRegistry; + // (undocumented) + static fromConfig(config: Config): ScmIntegrationRegistry; } // @public (undocumented) export const scmIntegrationsApiRef: ApiRef; // (No @packageDocumentation comment for this package) - ``` diff --git a/packages/integration/api-report.md b/packages/integration/api-report.md index afd048cb13..fb06ca0de6 100644 --- a/packages/integration/api-report.md +++ b/packages/integration/api-report.md @@ -3,72 +3,71 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { Config } from '@backstage/config'; import { RestEndpointMethodTypes } from '@octokit/rest'; // @public (undocumented) export class AzureIntegration implements ScmIntegration { - constructor(integrationConfig: AzureIntegrationConfig); - // (undocumented) - get config(): AzureIntegrationConfig; - // (undocumented) - static factory: ScmIntegrationsFactory; - // (undocumented) - resolveEditUrl(url: string): string; - // (undocumented) - resolveUrl(options: { - url: string; - base: string; - lineNumber?: number; - }): string; - // (undocumented) - get title(): string; - // (undocumented) - get type(): string; + constructor(integrationConfig: AzureIntegrationConfig); + // (undocumented) + get config(): AzureIntegrationConfig; + // (undocumented) + static factory: ScmIntegrationsFactory; + // (undocumented) + resolveEditUrl(url: string): string; + // (undocumented) + resolveUrl(options: { + url: string; + base: string; + lineNumber?: number; + }): string; + // (undocumented) + get title(): string; + // (undocumented) + get type(): string; } // @public export type AzureIntegrationConfig = { - host: string; - token?: string; + host: string; + token?: string; }; // @public (undocumented) export class BitbucketIntegration implements ScmIntegration { - constructor(integrationConfig: BitbucketIntegrationConfig); - // (undocumented) - get config(): BitbucketIntegrationConfig; - // (undocumented) - static factory: ScmIntegrationsFactory; - // (undocumented) - resolveEditUrl(url: string): string; - // (undocumented) - resolveUrl(options: { - url: string; - base: string; - lineNumber?: number; - }): string; - // (undocumented) - get title(): string; - // (undocumented) - get type(): string; + constructor(integrationConfig: BitbucketIntegrationConfig); + // (undocumented) + get config(): BitbucketIntegrationConfig; + // (undocumented) + static factory: ScmIntegrationsFactory; + // (undocumented) + resolveEditUrl(url: string): string; + // (undocumented) + resolveUrl(options: { + url: string; + base: string; + lineNumber?: number; + }): string; + // (undocumented) + get title(): string; + // (undocumented) + get type(): string; } // @public export type BitbucketIntegrationConfig = { - host: string; - apiBaseUrl?: string; - token?: string; - username?: string; - appPassword?: string; + host: string; + apiBaseUrl?: string; + token?: string; + username?: string; + appPassword?: string; }; // @public export function defaultScmResolveUrl(options: { - url: string; - base: string; - lineNumber?: number; + url: string; + base: string; + lineNumber?: number; }): string; // @public @@ -81,212 +80,253 @@ export function getAzureDownloadUrl(url: string): string; export function getAzureFileFetchUrl(url: string): string; // @public -export function getAzureRequestOptions(config: AzureIntegrationConfig, additionalHeaders?: Record): RequestInit; +export function getAzureRequestOptions( + config: AzureIntegrationConfig, + additionalHeaders?: Record, +): RequestInit; // @public -export function getBitbucketDefaultBranch(url: string, config: BitbucketIntegrationConfig): Promise; +export function getBitbucketDefaultBranch( + url: string, + config: BitbucketIntegrationConfig, +): Promise; // @public -export function getBitbucketDownloadUrl(url: string, config: BitbucketIntegrationConfig): Promise; +export function getBitbucketDownloadUrl( + url: string, + config: BitbucketIntegrationConfig, +): Promise; // @public -export function getBitbucketFileFetchUrl(url: string, config: BitbucketIntegrationConfig): string; +export function getBitbucketFileFetchUrl( + url: string, + config: BitbucketIntegrationConfig, +): string; // @public -export function getBitbucketRequestOptions(config: BitbucketIntegrationConfig): RequestInit; +export function getBitbucketRequestOptions( + config: BitbucketIntegrationConfig, +): RequestInit; // @public -export function getGitHubFileFetchUrl(url: string, config: GitHubIntegrationConfig): string; +export function getGitHubFileFetchUrl( + url: string, + config: GitHubIntegrationConfig, +): string; // @public -export function getGitHubRequestOptions(config: GitHubIntegrationConfig): RequestInit; +export function getGitHubRequestOptions( + config: GitHubIntegrationConfig, +): RequestInit; // @public -export function getGitLabFileFetchUrl(url: string, config: GitLabIntegrationConfig): Promise; +export function getGitLabFileFetchUrl( + url: string, + config: GitLabIntegrationConfig, +): Promise; // @public -export function getGitLabRequestOptions(config: GitLabIntegrationConfig): RequestInit; +export function getGitLabRequestOptions( + config: GitLabIntegrationConfig, +): RequestInit; // @public (undocumented) export class GithubAppCredentialsMux { - constructor(config: GitHubIntegrationConfig); - // (undocumented) - getAllInstallations(): Promise; - // (undocumented) - getAppToken(owner: string, repo?: string): Promise; + constructor(config: GitHubIntegrationConfig); + // (undocumented) + getAllInstallations(): Promise< + RestEndpointMethodTypes['apps']['listInstallations']['response']['data'] + >; + // (undocumented) + getAppToken(owner: string, repo?: string): Promise; } // @public (undocumented) export class GithubCredentialsProvider { - // (undocumented) - static create(config: GitHubIntegrationConfig): GithubCredentialsProvider; - getCredentials(opts: { - url: string; - }): Promise; - } + // (undocumented) + static create(config: GitHubIntegrationConfig): GithubCredentialsProvider; + getCredentials(opts: { url: string }): Promise; +} // @public (undocumented) export type GithubCredentialType = 'app' | 'token'; // @public (undocumented) export class GitHubIntegration implements ScmIntegration { - constructor(integrationConfig: GitHubIntegrationConfig); - // (undocumented) - get config(): GitHubIntegrationConfig; - // (undocumented) - static factory: ScmIntegrationsFactory; - // (undocumented) - resolveEditUrl(url: string): string; - // (undocumented) - resolveUrl(options: { - url: string; - base: string; - lineNumber?: number; - }): string; - // (undocumented) - get title(): string; - // (undocumented) - get type(): string; + constructor(integrationConfig: GitHubIntegrationConfig); + // (undocumented) + get config(): GitHubIntegrationConfig; + // (undocumented) + static factory: ScmIntegrationsFactory; + // (undocumented) + resolveEditUrl(url: string): string; + // (undocumented) + resolveUrl(options: { + url: string; + base: string; + lineNumber?: number; + }): string; + // (undocumented) + get title(): string; + // (undocumented) + get type(): string; } // @public export type GitHubIntegrationConfig = { - host: string; - apiBaseUrl?: string; - rawBaseUrl?: string; - token?: string; - apps?: GithubAppConfig[]; + host: string; + apiBaseUrl?: string; + rawBaseUrl?: string; + token?: string; + apps?: GithubAppConfig[]; }; // @public (undocumented) export class GitLabIntegration implements ScmIntegration { - constructor(integrationConfig: GitLabIntegrationConfig); - // (undocumented) - get config(): GitLabIntegrationConfig; - // (undocumented) - static factory: ScmIntegrationsFactory; - // (undocumented) - resolveEditUrl(url: string): string; - // (undocumented) - resolveUrl(options: { - url: string; - base: string; - lineNumber?: number; - }): string; - // (undocumented) - get title(): string; - // (undocumented) - get type(): string; + constructor(integrationConfig: GitLabIntegrationConfig); + // (undocumented) + get config(): GitLabIntegrationConfig; + // (undocumented) + static factory: ScmIntegrationsFactory; + // (undocumented) + resolveEditUrl(url: string): string; + // (undocumented) + resolveUrl(options: { + url: string; + base: string; + lineNumber?: number; + }): string; + // (undocumented) + get title(): string; + // (undocumented) + get type(): string; } // @public export type GitLabIntegrationConfig = { - host: string; - apiBaseUrl: string; - token?: string; - baseUrl: string; + host: string; + apiBaseUrl: string; + token?: string; + baseUrl: string; }; // @public export type GoogleGcsIntegrationConfig = { - clientEmail?: string; - privateKey?: string; + clientEmail?: string; + privateKey?: string; }; // @public -export function readAzureIntegrationConfig(config: Config): AzureIntegrationConfig; +export function readAzureIntegrationConfig( + config: Config, +): AzureIntegrationConfig; // @public -export function readAzureIntegrationConfigs(configs: Config[]): AzureIntegrationConfig[]; +export function readAzureIntegrationConfigs( + configs: Config[], +): AzureIntegrationConfig[]; // @public -export function readBitbucketIntegrationConfig(config: Config): BitbucketIntegrationConfig; +export function readBitbucketIntegrationConfig( + config: Config, +): BitbucketIntegrationConfig; // @public -export function readBitbucketIntegrationConfigs(configs: Config[]): BitbucketIntegrationConfig[]; +export function readBitbucketIntegrationConfigs( + configs: Config[], +): BitbucketIntegrationConfig[]; // @public -export function readGitHubIntegrationConfig(config: Config): GitHubIntegrationConfig; +export function readGitHubIntegrationConfig( + config: Config, +): GitHubIntegrationConfig; // @public -export function readGitHubIntegrationConfigs(configs: Config[]): GitHubIntegrationConfig[]; +export function readGitHubIntegrationConfigs( + configs: Config[], +): GitHubIntegrationConfig[]; // @public -export function readGitLabIntegrationConfig(config: Config): GitLabIntegrationConfig; +export function readGitLabIntegrationConfig( + config: Config, +): GitLabIntegrationConfig; // @public -export function readGitLabIntegrationConfigs(configs: Config[]): GitLabIntegrationConfig[]; +export function readGitLabIntegrationConfigs( + configs: Config[], +): GitLabIntegrationConfig[]; // @public -export function readGoogleGcsIntegrationConfig(config: Config): GoogleGcsIntegrationConfig; +export function readGoogleGcsIntegrationConfig( + config: Config, +): GoogleGcsIntegrationConfig; // @public export interface ScmIntegration { - resolveEditUrl(url: string): string; - resolveUrl(options: { - url: string; - base: string; - lineNumber?: number; - }): string; - title: string; - type: string; + resolveEditUrl(url: string): string; + resolveUrl(options: { + url: string; + base: string; + lineNumber?: number; + }): string; + title: string; + type: string; } // @public -export interface ScmIntegrationRegistry extends ScmIntegrationsGroup { - // (undocumented) - azure: ScmIntegrationsGroup; - // (undocumented) - bitbucket: ScmIntegrationsGroup; - // (undocumented) - github: ScmIntegrationsGroup; - // (undocumented) - gitlab: ScmIntegrationsGroup; - resolveEditUrl(url: string): string; - resolveUrl(options: { - url: string; - base: string; - lineNumber?: number; - }): string; +export interface ScmIntegrationRegistry + extends ScmIntegrationsGroup { + // (undocumented) + azure: ScmIntegrationsGroup; + // (undocumented) + bitbucket: ScmIntegrationsGroup; + // (undocumented) + github: ScmIntegrationsGroup; + // (undocumented) + gitlab: ScmIntegrationsGroup; + resolveEditUrl(url: string): string; + resolveUrl(options: { + url: string; + base: string; + lineNumber?: number; + }): string; } // @public (undocumented) export class ScmIntegrations implements ScmIntegrationRegistry { - constructor(integrationsByType: IntegrationsByType); - // (undocumented) - get azure(): ScmIntegrationsGroup; - // (undocumented) - get bitbucket(): ScmIntegrationsGroup; - // (undocumented) - byHost(host: string): ScmIntegration | undefined; - // (undocumented) - byUrl(url: string | URL): ScmIntegration | undefined; - // (undocumented) - static fromConfig(config: Config): ScmIntegrations; - // (undocumented) - get github(): ScmIntegrationsGroup; - // (undocumented) - get gitlab(): ScmIntegrationsGroup; - // (undocumented) - list(): ScmIntegration[]; - // (undocumented) - resolveEditUrl(url: string): string; - // (undocumented) - resolveUrl(options: { - url: string; - base: string; - lineNumber?: number; - }): string; + constructor(integrationsByType: IntegrationsByType); + // (undocumented) + get azure(): ScmIntegrationsGroup; + // (undocumented) + get bitbucket(): ScmIntegrationsGroup; + // (undocumented) + byHost(host: string): ScmIntegration | undefined; + // (undocumented) + byUrl(url: string | URL): ScmIntegration | undefined; + // (undocumented) + static fromConfig(config: Config): ScmIntegrations; + // (undocumented) + get github(): ScmIntegrationsGroup; + // (undocumented) + get gitlab(): ScmIntegrationsGroup; + // (undocumented) + list(): ScmIntegration[]; + // (undocumented) + resolveEditUrl(url: string): string; + // (undocumented) + resolveUrl(options: { + url: string; + base: string; + lineNumber?: number; + }): string; } // @public export interface ScmIntegrationsGroup { - byHost(host: string): T | undefined; - byUrl(url: string | URL): T | undefined; - list(): T[]; + byHost(host: string): T | undefined; + byUrl(url: string | URL): T | undefined; + list(): T[]; } - // (No @packageDocumentation comment for this package) - ``` diff --git a/packages/search-common/api-report.md b/packages/search-common/api-report.md index a3de27b5a9..0ba995f673 100644 --- a/packages/search-common/api-report.md +++ b/packages/search-common/api-report.md @@ -3,57 +3,54 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { JsonObject } from '@backstage/config'; // @public export interface DocumentCollator { - // (undocumented) - execute(): Promise; - readonly type: string; + // (undocumented) + execute(): Promise; + readonly type: string; } // @public export interface DocumentDecorator { - // (undocumented) - execute(documents: IndexableDocument[]): Promise; - readonly types?: string[]; + // (undocumented) + execute(documents: IndexableDocument[]): Promise; + readonly types?: string[]; } // @public export interface IndexableDocument { - location: string; - text: string; - title: string; + location: string; + text: string; + title: string; } // @public (undocumented) export interface SearchQuery { - // (undocumented) - filters?: JsonObject; - // (undocumented) - pageCursor: string; - // (undocumented) - term: string; - // (undocumented) - types?: string[]; + // (undocumented) + filters?: JsonObject; + // (undocumented) + pageCursor: string; + // (undocumented) + term: string; + // (undocumented) + types?: string[]; } // @public (undocumented) export interface SearchResult { - // (undocumented) - document: IndexableDocument; - // (undocumented) - type: string; + // (undocumented) + document: IndexableDocument; + // (undocumented) + type: string; } // @public (undocumented) export interface SearchResultSet { - // (undocumented) - results: SearchResult[]; + // (undocumented) + results: SearchResult[]; } - // (No @packageDocumentation comment for this package) - ``` diff --git a/packages/techdocs-common/api-report.md b/packages/techdocs-common/api-report.md index 07bfcafd00..8cca624e11 100644 --- a/packages/techdocs-common/api-report.md +++ b/packages/techdocs-common/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { AzureIntegrationConfig } from '@backstage/integration'; @@ -20,165 +19,239 @@ import { UrlReader } from '@backstage/backend-common'; import { Writable } from 'stream'; // @public (undocumented) -export const checkoutGitRepository: (repoUrl: string, config: Config, logger: Logger_2) => Promise; +export const checkoutGitRepository: ( + repoUrl: string, + config: Config, + logger: Logger_2, +) => Promise; // @public (undocumented) export class CommonGitPreparer implements PreparerBase { - constructor(config: Config, logger: Logger_2); - // (undocumented) - prepare(entity: Entity, options?: { - etag?: string; - }): Promise; + constructor(config: Config, logger: Logger_2); + // (undocumented) + prepare( + entity: Entity, + options?: { + etag?: string; + }, + ): Promise; } // @public (undocumented) export class DirectoryPreparer implements PreparerBase { - constructor(config: Config, logger: Logger_2, reader: UrlReader); - // (undocumented) - prepare(entity: Entity): Promise; + constructor(config: Config, logger: Logger_2, reader: UrlReader); + // (undocumented) + prepare(entity: Entity): Promise; } // @public (undocumented) export type GeneratorBase = { - run(opts: GeneratorRunOptions): Promise; + run(opts: GeneratorRunOptions): Promise; }; // @public export type GeneratorBuilder = { - register(protocol: SupportedGeneratorKey, generator: GeneratorBase): void; - get(entity: Entity): GeneratorBase; + register(protocol: SupportedGeneratorKey, generator: GeneratorBase): void; + get(entity: Entity): GeneratorBase; }; // @public (undocumented) export class Generators implements GeneratorBuilder { - // (undocumented) - static fromConfig(config: Config, { logger, containerRunner, }: { - logger: Logger_2; - containerRunner: ContainerRunner; - }): Promise; - // (undocumented) - get(entity: Entity): GeneratorBase; - // (undocumented) - register(generatorKey: SupportedGeneratorKey, generator: GeneratorBase): void; + // (undocumented) + static fromConfig( + config: Config, + { + logger, + containerRunner, + }: { + logger: Logger_2; + containerRunner: ContainerRunner; + }, + ): Promise; + // (undocumented) + get(entity: Entity): GeneratorBase; + // (undocumented) + register(generatorKey: SupportedGeneratorKey, generator: GeneratorBase): void; } // @public (undocumented) -export const getAzureIntegrationConfig: (config: Config, host: string) => AzureIntegrationConfig; +export const getAzureIntegrationConfig: ( + config: Config, + host: string, +) => AzureIntegrationConfig; // @public (undocumented) -export const getDefaultBranch: (repositoryUrl: string, config: Config) => Promise; +export const getDefaultBranch: ( + repositoryUrl: string, + config: Config, +) => Promise; // @public (undocumented) -export const getDocFilesFromRepository: (reader: UrlReader, entity: Entity, opts?: { - etag?: string | undefined; - logger?: Logger_2 | undefined; -} | undefined) => Promise; +export const getDocFilesFromRepository: ( + reader: UrlReader, + entity: Entity, + opts?: + | { + etag?: string | undefined; + logger?: Logger_2 | undefined; + } + | undefined, +) => Promise; // @public (undocumented) export function getGitHost(url: string): string; // @public (undocumented) -export const getGitHubIntegrationConfig: (config: Config, host: string) => GitHubIntegrationConfig; +export const getGitHubIntegrationConfig: ( + config: Config, + host: string, +) => GitHubIntegrationConfig; // @public (undocumented) -export const getGitLabIntegrationConfig: (config: Config, host: string) => GitLabIntegrationConfig; +export const getGitLabIntegrationConfig: ( + config: Config, + host: string, +) => GitLabIntegrationConfig; // @public (undocumented) -export const getGitRepositoryTempFolder: (repositoryUrl: string, config: Config) => Promise; +export const getGitRepositoryTempFolder: ( + repositoryUrl: string, + config: Config, +) => Promise; // @public (undocumented) export function getGitRepoType(url: string): string; // @public (undocumented) -export const getLastCommitTimestamp: (repositoryLocation: string, logger: Logger_2) => Promise; +export const getLastCommitTimestamp: ( + repositoryLocation: string, + logger: Logger_2, +) => Promise; // @public (undocumented) export const getLocationForEntity: (entity: Entity) => ParsedLocationAnnotation; // @public (undocumented) -export const getTokenForGitRepo: (repositoryUrl: string, config: Config) => Promise; +export const getTokenForGitRepo: ( + repositoryUrl: string, + config: Config, +) => Promise; // @public (undocumented) export type ParsedLocationAnnotation = { - type: RemoteProtocol; - target: string; + type: RemoteProtocol; + target: string; }; // @public (undocumented) -export const parseReferenceAnnotation: (annotationName: string, entity: Entity) => ParsedLocationAnnotation; +export const parseReferenceAnnotation: ( + annotationName: string, + entity: Entity, +) => ParsedLocationAnnotation; // @public (undocumented) export type PreparerBase = { - prepare(entity: Entity, options?: { - logger?: Logger_2; - etag?: string; - }): Promise; + prepare( + entity: Entity, + options?: { + logger?: Logger_2; + etag?: string; + }, + ): Promise; }; // @public (undocumented) export type PreparerBuilder = { - register(protocol: RemoteProtocol, preparer: PreparerBase): void; - get(entity: Entity): PreparerBase; + register(protocol: RemoteProtocol, preparer: PreparerBase): void; + get(entity: Entity): PreparerBase; }; // @public (undocumented) export class Preparers implements PreparerBuilder { - // (undocumented) - static fromConfig(config: Config, { logger, reader }: factoryOptions): Promise; - // (undocumented) - get(entity: Entity): PreparerBase; - // (undocumented) - register(protocol: RemoteProtocol, preparer: PreparerBase): void; + // (undocumented) + static fromConfig( + config: Config, + { logger, reader }: factoryOptions, + ): Promise; + // (undocumented) + get(entity: Entity): PreparerBase; + // (undocumented) + register(protocol: RemoteProtocol, preparer: PreparerBase): void; } // @public export class Publisher { - // (undocumented) - static fromConfig(config: Config, { logger, discovery }: factoryOptions_2): Promise; + // (undocumented) + static fromConfig( + config: Config, + { logger, discovery }: factoryOptions_2, + ): Promise; } // @public export interface PublisherBase { - docsRouter(): express.Handler; - fetchTechDocsMetadata(entityName: EntityName): Promise; - getReadiness(): Promise; - hasDocsBeenGenerated(entityName: Entity): Promise; - publish(request: PublishRequest): Promise; + docsRouter(): express.Handler; + fetchTechDocsMetadata(entityName: EntityName): Promise; + getReadiness(): Promise; + hasDocsBeenGenerated(entityName: Entity): Promise; + publish(request: PublishRequest): Promise; } // @public -export type PublisherType = 'local' | 'googleGcs' | 'awsS3' | 'azureBlobStorage' | 'openStackSwift'; +export type PublisherType = + | 'local' + | 'googleGcs' + | 'awsS3' + | 'azureBlobStorage' + | 'openStackSwift'; // @public -export type RemoteProtocol = 'url' | 'dir' | 'github' | 'gitlab' | 'file' | 'azure/api'; +export type RemoteProtocol = + | 'url' + | 'dir' + | 'github' + | 'gitlab' + | 'file' + | 'azure/api'; // @public (undocumented) export class TechdocsGenerator implements GeneratorBase { - constructor({ logger, containerRunner, config, }: { - logger: Logger_2; - containerRunner: ContainerRunner; - config: Config; - }); - // (undocumented) - run({ inputDir, outputDir, parsedLocationAnnotation, etag, }: GeneratorRunOptions): Promise; + constructor({ + logger, + containerRunner, + config, + }: { + logger: Logger_2; + containerRunner: ContainerRunner; + config: Config; + }); + // (undocumented) + run({ + inputDir, + outputDir, + parsedLocationAnnotation, + etag, + }: GeneratorRunOptions): Promise; } // @public export type TechDocsMetadata = { - site_name: string; - site_description: string; - etag: string; + site_name: string; + site_description: string; + etag: string; }; // @public (undocumented) export class UrlPreparer implements PreparerBase { - constructor(reader: UrlReader, logger: Logger_2); - // (undocumented) - prepare(entity: Entity, options?: { - etag?: string; - }): Promise; + constructor(reader: UrlReader, logger: Logger_2); + // (undocumented) + prepare( + entity: Entity, + options?: { + etag?: string; + }, + ): Promise; } // (No @packageDocumentation comment for this package) - ``` diff --git a/packages/test-utils-core/api-report.md b/packages/test-utils-core/api-report.md index 4b603b8e7b..8eb7ee458a 100644 --- a/packages/test-utils-core/api-report.md +++ b/packages/test-utils-core/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { ReactElement } from 'react'; import { RenderResult } from '@testing-library/react'; @@ -12,48 +11,53 @@ export type AsyncLogCollector = () => Promise; // @public (undocumented) export type CollectedLogs = { - [key in T]: string[]; + [key in T]: string[]; }; // @public (undocumented) export class Keyboard { - constructor(target: any, { debug }?: { - debug?: boolean | undefined; - }); - // (undocumented) - click(): Promise; - // (undocumented) - debug: boolean; - // (undocumented) - document: any; - // (undocumented) - enter(value: any): Promise; - // (undocumented) - escape(): Promise; - // (undocumented) - get focused(): any; - // (undocumented) - static fromReadableInput(input: any): any; - // (undocumented) - _log(message: any, ...args: any[]): void; - // (undocumented) - _pretty(element: any): string; - // (undocumented) - send(chars: any): Promise; - // (undocumented) - _sendKey(key: any, charCode: any, action: any): Promise; - // (undocumented) - tab(): Promise; - // (undocumented) - static toReadableInput(chars: any): any; - // (undocumented) - toString(): string; - // (undocumented) - static type(target: any, input: any): Promise; - // (undocumented) - type(input: any): Promise; - // (undocumented) - static typeDebug(target: any, input: any): Promise; + constructor( + target: any, + { + debug, + }?: { + debug?: boolean | undefined; + }, + ); + // (undocumented) + click(): Promise; + // (undocumented) + debug: boolean; + // (undocumented) + document: any; + // (undocumented) + enter(value: any): Promise; + // (undocumented) + escape(): Promise; + // (undocumented) + get focused(): any; + // (undocumented) + static fromReadableInput(input: any): any; + // (undocumented) + _log(message: any, ...args: any[]): void; + // (undocumented) + _pretty(element: any): string; + // (undocumented) + send(chars: any): Promise; + // (undocumented) + _sendKey(key: any, charCode: any, action: any): Promise; + // (undocumented) + tab(): Promise; + // (undocumented) + static toReadableInput(chars: any): any; + // (undocumented) + toString(): string; + // (undocumented) + static type(target: any, input: any): Promise; + // (undocumented) + type(input: any): Promise; + // (undocumented) + static typeDebug(target: any, input: any): Promise; } // @public (undocumented) @@ -69,18 +73,26 @@ export function renderWithEffects(nodes: ReactElement): Promise; export type SyncLogCollector = () => void; // @public (undocumented) -export function withLogCollector(callback: AsyncLogCollector): Promise>; +export function withLogCollector( + callback: AsyncLogCollector, +): Promise>; // @public (undocumented) -export function withLogCollector(callback: SyncLogCollector): CollectedLogs; +export function withLogCollector( + callback: SyncLogCollector, +): CollectedLogs; // @public (undocumented) -export function withLogCollector(logsToCollect: T[], callback: AsyncLogCollector): Promise>; +export function withLogCollector( + logsToCollect: T[], + callback: AsyncLogCollector, +): Promise>; // @public (undocumented) -export function withLogCollector(logsToCollect: T[], callback: SyncLogCollector): CollectedLogs; - +export function withLogCollector( + logsToCollect: T[], + callback: SyncLogCollector, +): CollectedLogs; // (No @packageDocumentation comment for this package) - ``` diff --git a/packages/test-utils/api-report.md b/packages/test-utils/api-report.md index 078fa14399..57020e6221 100644 --- a/packages/test-utils/api-report.md +++ b/packages/test-utils/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { ComponentType } from 'react'; import { ErrorApi } from '@backstage/core-plugin-api'; import { ErrorContext } from '@backstage/core-plugin-api'; @@ -17,66 +16,72 @@ import { StorageApi } from '@backstage/core-plugin-api'; import { StorageValueChange } from '@backstage/core-plugin-api'; // @public (undocumented) -export function mockBreakpoint(initialBreakpoint?: Breakpoint): { - set(breakpoint: Breakpoint): void; - remove(): void; +export function mockBreakpoint( + initialBreakpoint?: Breakpoint, +): { + set(breakpoint: Breakpoint): void; + remove(): void; }; // @public (undocumented) export class MockErrorApi implements ErrorApi { - constructor(options?: Options); - // (undocumented) - error$(): Observable<{ - error: Error; - context?: ErrorContext; - }>; - // (undocumented) - getErrors(): ErrorWithContext[]; - // (undocumented) - post(error: Error, context?: ErrorContext): void; - // (undocumented) - waitForError(pattern: RegExp, timeoutMs?: number): Promise; + constructor(options?: Options); + // (undocumented) + error$(): Observable<{ + error: Error; + context?: ErrorContext; + }>; + // (undocumented) + getErrors(): ErrorWithContext[]; + // (undocumented) + post(error: Error, context?: ErrorContext): void; + // (undocumented) + waitForError(pattern: RegExp, timeoutMs?: number): Promise; } // @public (undocumented) export class MockStorageApi implements StorageApi { - // (undocumented) - static create(data?: MockStorageBucket): MockStorageApi; - // (undocumented) - forBucket(name: string): StorageApi; - // (undocumented) - get(key: string): T | undefined; - // (undocumented) - observe$(key: string): Observable>; - // (undocumented) - remove(key: string): Promise; - // (undocumented) - set(key: string, data: T): Promise; - } + // (undocumented) + static create(data?: MockStorageBucket): MockStorageApi; + // (undocumented) + forBucket(name: string): StorageApi; + // (undocumented) + get(key: string): T | undefined; + // (undocumented) + observe$(key: string): Observable>; + // (undocumented) + remove(key: string): Promise; + // (undocumented) + set(key: string, data: T): Promise; +} // @public (undocumented) export type MockStorageBucket = { - [key: string]: any; + [key: string]: any; }; // @public (undocumented) export const msw: { - setupDefaultHandlers: (worker: { - listen: (t: any) => void; - close: () => void; - resetHandlers: () => void; - }) => void; + setupDefaultHandlers: (worker: { + listen: (t: any) => void; + close: () => void; + resetHandlers: () => void; + }) => void; }; // @public -export function renderInTestApp(Component: ComponentType | ReactNode, options?: TestAppOptions): Promise; +export function renderInTestApp( + Component: ComponentType | ReactNode, + options?: TestAppOptions, +): Promise; // @public -export function wrapInTestApp(Component: ComponentType | ReactNode, options?: TestAppOptions): ReactElement; +export function wrapInTestApp( + Component: ComponentType | ReactNode, + options?: TestAppOptions, +): ReactElement; - -export * from "@backstage/test-utils-core"; +export * from '@backstage/test-utils-core'; // (No @packageDocumentation comment for this package) - ``` diff --git a/packages/theme/api-report.md b/packages/theme/api-report.md index 93d0957f5a..e09f5838c7 100644 --- a/packages/theme/api-report.md +++ b/packages/theme/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { Overrides } from '@material-ui/core/styles/overrides'; import { Palette } from '@material-ui/core/styles/createPalette'; import { PaletteOptions } from '@material-ui/core/styles/createPalette'; @@ -18,22 +17,22 @@ export type BackstagePaletteOptions = PaletteOptions & PaletteAdditions; // @public (undocumented) export interface BackstageTheme extends Theme { - // (undocumented) - getPageTheme: ({ themeId }: PageThemeSelector) => PageTheme; - // (undocumented) - page: PageTheme; - // (undocumented) - palette: BackstagePalette; + // (undocumented) + getPageTheme: ({ themeId }: PageThemeSelector) => PageTheme; + // (undocumented) + page: PageTheme; + // (undocumented) + palette: BackstagePalette; } // @public (undocumented) export interface BackstageThemeOptions extends ThemeOptions { - // (undocumented) - getPageTheme: ({ themeId }: PageThemeSelector) => PageTheme; - // (undocumented) - page: PageTheme; - // (undocumented) - palette: BackstagePaletteOptions; + // (undocumented) + getPageTheme: ({ themeId }: PageThemeSelector) => PageTheme; + // (undocumented) + page: PageTheme; + // (undocumented) + palette: BackstagePaletteOptions; } // @public (undocumented) @@ -43,7 +42,9 @@ export const colorVariants: Record; export function createTheme(options: SimpleThemeOptions): BackstageTheme; // @public (undocumented) -export function createThemeOptions(options: SimpleThemeOptions): BackstageThemeOptions; +export function createThemeOptions( + options: SimpleThemeOptions, +): BackstageThemeOptions; // @public (undocumented) export function createThemeOverrides(theme: BackstageTheme): Overrides; @@ -59,9 +60,9 @@ export const lightTheme: BackstageTheme; // @public (undocumented) export type PageTheme = { - colors: string[]; - shape: string; - backgroundImage: string; + colors: string[]; + shape: string; + backgroundImage: string; }; // @public (undocumented) @@ -69,7 +70,7 @@ export const pageTheme: Record; // @public (undocumented) export type PageThemeSelector = { - themeId: string; + themeId: string; }; // @public (undocumented) @@ -77,13 +78,11 @@ export const shapes: Record; // @public export type SimpleThemeOptions = { - palette: BackstagePaletteOptions; - defaultPageTheme: string; - pageTheme?: Record; - fontFamily?: string; + palette: BackstagePaletteOptions; + defaultPageTheme: string; + pageTheme?: Record; + fontFamily?: string; }; - // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/api-docs/api-report.md b/plugins/api-docs/api-report.md index ee19bba69f..bb83d4c539 100644 --- a/plugins/api-docs/api-report.md +++ b/plugins/api-docs/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiEntity } from '@backstage/catalog-model'; @@ -22,30 +21,38 @@ export const ApiDefinitionCard: (_: Props) => JSX.Element; // @public (undocumented) export type ApiDefinitionWidget = { - type: string; - title: string; - component: (definition: string) => React_2.ReactElement; - rawLanguage?: string; + type: string; + title: string; + component: (definition: string) => React_2.ReactElement; + rawLanguage?: string; }; // @public (undocumented) export const apiDocsConfigRef: ApiRef; // @public (undocumented) -const apiDocsPlugin: BackstagePlugin< { -root: RouteRef; -}, { -createComponent: ExternalRouteRef; -}>; -export { apiDocsPlugin } -export { apiDocsPlugin as plugin } +const apiDocsPlugin: BackstagePlugin< + { + root: RouteRef; + }, + { + createComponent: ExternalRouteRef; + } +>; +export { apiDocsPlugin }; +export { apiDocsPlugin as plugin }; // @public (undocumented) -export const ApiExplorerPage: ({ initiallySelectedFilter, columns, }: ApiExplorerPageProps) => JSX.Element; +export const ApiExplorerPage: ({ + initiallySelectedFilter, + columns, +}: ApiExplorerPageProps) => JSX.Element; // @public (undocumented) -export const ApiTypeTitle: ({ apiEntity }: { - apiEntity: ApiEntity; +export const ApiTypeTitle: ({ + apiEntity, +}: { + apiEntity: ApiEntity; }) => JSX.Element; // @public (undocumented) @@ -62,36 +69,46 @@ export function defaultDefinitionWidgets(): ApiDefinitionWidget[]; // @public (undocumented) export const EntityApiDefinitionCard: (_: { - apiEntity?: ApiEntity | undefined; + apiEntity?: ApiEntity | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityConsumedApisCard: ({ variant }: { - entity?: Entity | undefined; - variant?: "gridItem" | undefined; +export const EntityConsumedApisCard: ({ + variant, +}: { + entity?: Entity | undefined; + variant?: 'gridItem' | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityConsumingComponentsCard: ({ variant }: { - entity?: Entity | undefined; - variant?: "gridItem" | undefined; +export const EntityConsumingComponentsCard: ({ + variant, +}: { + entity?: Entity | undefined; + variant?: 'gridItem' | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityHasApisCard: ({ variant }: { - variant?: "gridItem" | undefined; +export const EntityHasApisCard: ({ + variant, +}: { + variant?: 'gridItem' | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityProvidedApisCard: ({ variant }: { - entity?: Entity | undefined; - variant?: "gridItem" | undefined; +export const EntityProvidedApisCard: ({ + variant, +}: { + entity?: Entity | undefined; + variant?: 'gridItem' | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityProvidingComponentsCard: ({ variant }: { - entity?: Entity | undefined; - variant?: "gridItem" | undefined; +export const EntityProvidingComponentsCard: ({ + variant, +}: { + entity?: Entity | undefined; + variant?: 'gridItem' | undefined; }) => JSX.Element; // @public (undocumented) @@ -101,7 +118,10 @@ export const HasApisCard: ({ variant }: Props_3) => JSX.Element; export const OpenApiDefinitionWidget: ({ definition }: Props_8) => JSX.Element; // @public (undocumented) -export const PlainApiDefinitionWidget: ({ definition, language }: Props_9) => JSX.Element; +export const PlainApiDefinitionWidget: ({ + definition, + language, +}: Props_9) => JSX.Element; // @public (undocumented) export const ProvidedApisCard: ({ variant }: Props_4) => JSX.Element; @@ -110,5 +130,4 @@ export const ProvidedApisCard: ({ variant }: Props_4) => JSX.Element; export const ProvidingComponentsCard: ({ variant }: Props_7) => JSX.Element; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/app-backend/api-report.md b/plugins/app-backend/api-report.md index 93aba5596f..7215366ebb 100644 --- a/plugins/app-backend/api-report.md +++ b/plugins/app-backend/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { Config } from '@backstage/config'; import express from 'express'; import { Logger as Logger_2 } from 'winston'; @@ -13,16 +12,14 @@ export function createRouter(options: RouterOptions): Promise; // @public (undocumented) export interface RouterOptions { - appPackageName: string; - // (undocumented) - config: Config; - disableConfigInjection?: boolean; - // (undocumented) - logger: Logger_2; - staticFallbackHandler?: express.Handler; + appPackageName: string; + // (undocumented) + config: Config; + disableConfigInjection?: boolean; + // (undocumented) + logger: Logger_2; + staticFallbackHandler?: express.Handler; } - // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/auth-backend/api-report.md b/plugins/auth-backend/api-report.md index 9f9a8d18ef..3784682efa 100644 --- a/plugins/auth-backend/api-report.md +++ b/plugins/auth-backend/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { CatalogApi } from '@backstage/catalog-client'; import { Config } from '@backstage/config'; import { Entity } from '@backstage/catalog-model'; @@ -16,52 +15,62 @@ import { Profile } from 'passport'; import { UserEntity } from '@backstage/catalog-model'; // @public (undocumented) -export type AuthProviderFactory = (options: AuthProviderFactoryOptions) => AuthProviderRouteHandlers; +export type AuthProviderFactory = ( + options: AuthProviderFactoryOptions, +) => AuthProviderRouteHandlers; // @public (undocumented) export type AuthProviderFactoryOptions = { - providerId: string; - globalConfig: AuthProviderConfig; - config: Config; - logger: Logger_2; - tokenIssuer: TokenIssuer; - discovery: PluginEndpointDiscovery; - catalogApi: CatalogApi; - identityResolver?: ExperimentalIdentityResolver; + providerId: string; + globalConfig: AuthProviderConfig; + config: Config; + logger: Logger_2; + tokenIssuer: TokenIssuer; + discovery: PluginEndpointDiscovery; + catalogApi: CatalogApi; + identityResolver?: ExperimentalIdentityResolver; }; // @public export interface AuthProviderRouteHandlers { - frameHandler(req: express.Request, res: express.Response): Promise; - logout?(req: express.Request, res: express.Response): Promise; - refresh?(req: express.Request, res: express.Response): Promise; - start(req: express.Request, res: express.Response): Promise; + frameHandler(req: express.Request, res: express.Response): Promise; + logout?(req: express.Request, res: express.Response): Promise; + refresh?(req: express.Request, res: express.Response): Promise; + start(req: express.Request, res: express.Response): Promise; } // @public (undocumented) export type AuthResponse = { - providerInfo: ProviderInfo; - profile: ProfileInfo; - backstageIdentity?: BackstageIdentity; + providerInfo: ProviderInfo; + profile: ProfileInfo; + backstageIdentity?: BackstageIdentity; }; // @public (undocumented) export type BackstageIdentity = { - id: string; - idToken?: string; - token?: string; - entity?: Entity; + id: string; + idToken?: string; + token?: string; + entity?: Entity; }; // @public (undocumented) -export const createGoogleProvider: (options?: GoogleProviderOptions | undefined) => AuthProviderFactory; +export const createGoogleProvider: ( + options?: GoogleProviderOptions | undefined, +) => AuthProviderFactory; // @public (undocumented) -export function createRouter({ logger, config, discovery, database, providerFactories, }: RouterOptions): Promise; +export function createRouter({ + logger, + config, + discovery, + database, + providerFactories, +}: RouterOptions): Promise; // @public (undocumented) export const defaultAuthProviderFactories: { - [providerId: string]: AuthProviderFactory; + [providerId: string]: AuthProviderFactory; }; // @public (undocumented) @@ -75,86 +84,97 @@ export const googleEmailSignInResolver: SignInResolver; // @public (undocumented) export type GoogleProviderOptions = { - authHandler?: AuthHandler; - signIn?: { - resolver?: SignInResolver; - }; + authHandler?: AuthHandler; + signIn?: { + resolver?: SignInResolver; + }; }; // @public export class IdentityClient { - constructor(options: { - discovery: PluginEndpointDiscovery; - issuer: string; - }); - authenticate(token: string | undefined): Promise; - static getBearerToken(authorizationHeader: string | undefined): string | undefined; - listPublicKeys(): Promise<{ - keys: JSONWebKey[]; - }>; - } + constructor(options: { discovery: PluginEndpointDiscovery; issuer: string }); + authenticate(token: string | undefined): Promise; + static getBearerToken( + authorizationHeader: string | undefined, + ): string | undefined; + listPublicKeys(): Promise<{ + keys: JSONWebKey[]; + }>; +} // @public (undocumented) export class OAuthAdapter implements AuthProviderRouteHandlers { - constructor(handlers: OAuthHandlers, options: Options); - // (undocumented) - frameHandler(req: express.Request, res: express.Response): Promise; - // (undocumented) - static fromConfig(config: AuthProviderConfig, handlers: OAuthHandlers, options: Pick): OAuthAdapter; - // (undocumented) - logout(req: express.Request, res: express.Response): Promise; - // (undocumented) - refresh(req: express.Request, res: express.Response): Promise; - // (undocumented) - start(req: express.Request, res: express.Response): Promise; + constructor(handlers: OAuthHandlers, options: Options); + // (undocumented) + frameHandler(req: express.Request, res: express.Response): Promise; + // (undocumented) + static fromConfig( + config: AuthProviderConfig, + handlers: OAuthHandlers, + options: Pick< + Options, + 'providerId' | 'persistScopes' | 'disableRefresh' | 'tokenIssuer' + >, + ): OAuthAdapter; + // (undocumented) + logout(req: express.Request, res: express.Response): Promise; + // (undocumented) + refresh(req: express.Request, res: express.Response): Promise; + // (undocumented) + start(req: express.Request, res: express.Response): Promise; } // @public (undocumented) export class OAuthEnvironmentHandler implements AuthProviderRouteHandlers { - constructor(handlers: Map); - // (undocumented) - frameHandler(req: express.Request, res: express.Response): Promise; - // (undocumented) - logout(req: express.Request, res: express.Response): Promise; - // (undocumented) - static mapConfig(config: Config, factoryFunc: (envConfig: Config) => AuthProviderRouteHandlers): OAuthEnvironmentHandler; - // (undocumented) - refresh(req: express.Request, res: express.Response): Promise; - // (undocumented) - start(req: express.Request, res: express.Response): Promise; + constructor(handlers: Map); + // (undocumented) + frameHandler(req: express.Request, res: express.Response): Promise; + // (undocumented) + logout(req: express.Request, res: express.Response): Promise; + // (undocumented) + static mapConfig( + config: Config, + factoryFunc: (envConfig: Config) => AuthProviderRouteHandlers, + ): OAuthEnvironmentHandler; + // (undocumented) + refresh(req: express.Request, res: express.Response): Promise; + // (undocumented) + start(req: express.Request, res: express.Response): Promise; } // @public export interface OAuthHandlers { - handler(req: express.Request): Promise<{ - response: AuthResponse; - refreshToken?: string; - }>; - logout?(): Promise; - refresh?(req: OAuthRefreshRequest): Promise>; - start(req: OAuthStartRequest): Promise; + handler( + req: express.Request, + ): Promise<{ + response: AuthResponse; + refreshToken?: string; + }>; + logout?(): Promise; + refresh?(req: OAuthRefreshRequest): Promise>; + start(req: OAuthStartRequest): Promise; } // @public (undocumented) export type OAuthProviderInfo = { - accessToken: string; - idToken?: string; - expiresInSeconds?: number; - scope: string; - refreshToken?: string; + accessToken: string; + idToken?: string; + expiresInSeconds?: number; + scope: string; + refreshToken?: string; }; // @public export type OAuthProviderOptions = { - clientId: string; - clientSecret: string; - callbackUrl: string; + clientId: string; + clientSecret: string; + callbackUrl: string; }; // @public (undocumented) export type OAuthRefreshRequest = express.Request<{}> & { - scope: string; - refreshToken: string; + scope: string; + refreshToken: string; }; // @public (undocumented) @@ -162,36 +182,40 @@ export type OAuthResponse = AuthResponse; // @public (undocumented) export type OAuthResult = { - fullProfile: Profile; - params: { - id_token?: string; - scope: string; - expires_in: number; - }; - accessToken: string; - refreshToken?: string; + fullProfile: Profile; + params: { + id_token?: string; + scope: string; + expires_in: number; + }; + accessToken: string; + refreshToken?: string; }; // @public (undocumented) export type OAuthStartRequest = express.Request<{}> & { - scope: string; - state: OAuthState; + scope: string; + state: OAuthState; }; // @public (undocumented) export type OAuthState = { - nonce: string; - env: string; + nonce: string; + env: string; }; // @public (undocumented) -export const postMessageResponse: (res: express.Response, appOrigin: string, response: WebMessageResponse) => void; +export const postMessageResponse: ( + res: express.Response, + appOrigin: string, + response: WebMessageResponse, +) => void; // @public export type ProfileInfo = { - email?: string; - displayName?: string; - picture?: string; + email?: string; + displayName?: string; + picture?: string; }; // @public (undocumented) @@ -199,31 +223,31 @@ export const readState: (stateString: string) => OAuthState; // @public (undocumented) export interface RouterOptions { - // (undocumented) - config: Config; - // (undocumented) - database: PluginDatabaseManager; - // (undocumented) - discovery: PluginEndpointDiscovery; - // (undocumented) - logger: Logger_2; - // (undocumented) - providerFactories?: ProviderFactories; + // (undocumented) + config: Config; + // (undocumented) + database: PluginDatabaseManager; + // (undocumented) + discovery: PluginEndpointDiscovery; + // (undocumented) + logger: Logger_2; + // (undocumented) + providerFactories?: ProviderFactories; } // @public (undocumented) export const verifyNonce: (req: express.Request, providerId: string) => void; // @public -export type WebMessageResponse = { - type: 'authorization_response'; - response: AuthResponse; -} | { - type: 'authorization_response'; - error: Error; -}; - +export type WebMessageResponse = + | { + type: 'authorization_response'; + response: AuthResponse; + } + | { + type: 'authorization_response'; + error: Error; + }; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/badges-backend/api-report.md b/plugins/badges-backend/api-report.md index 1523d685b4..19f5a956e4 100644 --- a/plugins/badges-backend/api-report.md +++ b/plugins/badges-backend/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { CatalogApi } from '@backstage/catalog-client'; import { Config } from '@backstage/config'; import { Entity } from '@backstage/catalog-model'; @@ -12,65 +11,71 @@ import { PluginEndpointDiscovery } from '@backstage/backend-common'; // @public (undocumented) export interface Badge { - color?: string; - description?: string; - kind?: 'entity'; - label: string; - labelColor?: string; - link?: string; - message: string; - style?: BadgeStyle; + color?: string; + description?: string; + kind?: 'entity'; + label: string; + labelColor?: string; + link?: string; + message: string; + style?: BadgeStyle; } // @public (undocumented) -export const BADGE_STYLES: readonly ["plastic", "flat", "flat-square", "for-the-badge", "social"]; +export const BADGE_STYLES: readonly [ + 'plastic', + 'flat', + 'flat-square', + 'for-the-badge', + 'social', +]; // @public (undocumented) export type BadgeBuilder = { - getBadges(): Promise; - createBadgeJson(options: BadgeOptions): Promise; - createBadgeSvg(options: BadgeOptions): Promise; + getBadges(): Promise; + createBadgeJson(options: BadgeOptions): Promise; + createBadgeSvg(options: BadgeOptions): Promise; }; // @public (undocumented) export interface BadgeContext { - // (undocumented) - badgeUrl: string; - // (undocumented) - config: Config; - // (undocumented) - entity?: Entity; + // (undocumented) + badgeUrl: string; + // (undocumented) + config: Config; + // (undocumented) + entity?: Entity; } // @public (undocumented) export interface BadgeFactories { - // (undocumented) - [id: string]: BadgeFactory; + // (undocumented) + [id: string]: BadgeFactory; } // @public (undocumented) export interface BadgeFactory { - // (undocumented) - createBadge(context: BadgeContext): Badge; + // (undocumented) + createBadge(context: BadgeContext): Badge; } // @public (undocumented) export type BadgeInfo = { - id: string; + id: string; }; // @public (undocumented) export type BadgeOptions = { - badgeInfo: BadgeInfo; - context: BadgeContext; + badgeInfo: BadgeInfo; + context: BadgeContext; }; // @public (undocumented) export type BadgeSpec = { - id: string; - badge: Badge; - url: string; - markdown: string; + id: string; + badge: Badge; + url: string; + markdown: string; }; // @public (undocumented) @@ -84,30 +89,28 @@ export function createRouter(options: RouterOptions): Promise; // @public (undocumented) export class DefaultBadgeBuilder implements BadgeBuilder { - constructor(factories: BadgeFactories); - // (undocumented) - createBadgeJson(options: BadgeOptions): Promise; - // (undocumented) - createBadgeSvg(options: BadgeOptions): Promise; - // (undocumented) - getBadges(): Promise; - } + constructor(factories: BadgeFactories); + // (undocumented) + createBadgeJson(options: BadgeOptions): Promise; + // (undocumented) + createBadgeSvg(options: BadgeOptions): Promise; + // (undocumented) + getBadges(): Promise; +} // @public (undocumented) export interface RouterOptions { - // (undocumented) - badgeBuilder?: BadgeBuilder; - // (undocumented) - badgeFactories?: BadgeFactories; - // (undocumented) - catalog?: CatalogApi; - // (undocumented) - config: Config; - // (undocumented) - discovery: PluginEndpointDiscovery; + // (undocumented) + badgeBuilder?: BadgeBuilder; + // (undocumented) + badgeFactories?: BadgeFactories; + // (undocumented) + catalog?: CatalogApi; + // (undocumented) + config: Config; + // (undocumented) + discovery: PluginEndpointDiscovery; } - // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/badges/api-report.md b/plugins/badges/api-report.md index df54a19a76..7e70f65b0e 100644 --- a/plugins/badges/api-report.md +++ b/plugins/badges/api-report.md @@ -3,20 +3,21 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { BackstagePlugin } from '@backstage/core-plugin-api'; // @public (undocumented) -export const badgesPlugin: BackstagePlugin< {}, {}>; +export const badgesPlugin: BackstagePlugin<{}, {}>; // @public (undocumented) -export const EntityBadgesDialog: ({ open, onClose }: { - open: boolean; - onClose?: (() => any) | undefined; +export const EntityBadgesDialog: ({ + open, + onClose, +}: { + open: boolean; + onClose?: (() => any) | undefined; }) => JSX.Element; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/bitrise/api-report.md b/plugins/bitrise/api-report.md index e4244aa5d2..66adb0ec68 100644 --- a/plugins/bitrise/api-report.md +++ b/plugins/bitrise/api-report.md @@ -3,14 +3,13 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { BackstagePlugin } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; // @public (undocumented) -export const bitrisePlugin: BackstagePlugin< {}, {}>; +export const bitrisePlugin: BackstagePlugin<{}, {}>; // @public (undocumented) export const EntityBitriseContent: () => JSX.Element; @@ -19,5 +18,4 @@ export const EntityBitriseContent: () => JSX.Element; export const isBitriseAvailable: (entity: Entity) => boolean; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/catalog-backend-module-ldap/api-report.md b/plugins/catalog-backend-module-ldap/api-report.md index 82b07def03..f18ace927c 100644 --- a/plugins/catalog-backend-module-ldap/api-report.md +++ b/plugins/catalog-backend-module-ldap/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { CatalogProcessor } from '@backstage/plugin-catalog-backend'; import { CatalogProcessorEmit } from '@backstage/plugin-catalog-backend'; import { Client } from 'ldapjs'; @@ -17,124 +16,159 @@ import { SearchOptions } from 'ldapjs'; import { UserEntity } from '@backstage/catalog-model'; // @public (undocumented) -export function defaultGroupTransformer(vendor: LdapVendor, config: GroupConfig, entry: SearchEntry): Promise; +export function defaultGroupTransformer( + vendor: LdapVendor, + config: GroupConfig, + entry: SearchEntry, +): Promise; // @public (undocumented) -export function defaultUserTransformer(vendor: LdapVendor, config: UserConfig, entry: SearchEntry): Promise; +export function defaultUserTransformer( + vendor: LdapVendor, + config: UserConfig, + entry: SearchEntry, +): Promise; // @public export type GroupConfig = { - dn: string; - options: SearchOptions; - set?: { - [path: string]: JsonValue; - }; - map: { - rdn: string; - name: string; - description: string; - type: string; - displayName: string; - email?: string; - picture?: string; - memberOf: string; - members: string; - }; + dn: string; + options: SearchOptions; + set?: { + [path: string]: JsonValue; + }; + map: { + rdn: string; + name: string; + description: string; + type: string; + displayName: string; + email?: string; + picture?: string; + memberOf: string; + members: string; + }; }; // @public -export type GroupTransformer = (vendor: LdapVendor, config: GroupConfig, group: SearchEntry) => Promise; +export type GroupTransformer = ( + vendor: LdapVendor, + config: GroupConfig, + group: SearchEntry, +) => Promise; // @public -export const LDAP_DN_ANNOTATION = "backstage.io/ldap-dn"; +export const LDAP_DN_ANNOTATION = 'backstage.io/ldap-dn'; // @public -export const LDAP_RDN_ANNOTATION = "backstage.io/ldap-rdn"; +export const LDAP_RDN_ANNOTATION = 'backstage.io/ldap-rdn'; // @public -export const LDAP_UUID_ANNOTATION = "backstage.io/ldap-uuid"; +export const LDAP_UUID_ANNOTATION = 'backstage.io/ldap-uuid'; // @public export class LdapClient { - constructor(client: Client); - // (undocumented) - static create(logger: Logger_2, target: string, bind?: BindConfig): Promise; - getRootDSE(): Promise; - getVendor(): Promise; - search(dn: string, options: SearchOptions): Promise; - } + constructor(client: Client); + // (undocumented) + static create( + logger: Logger_2, + target: string, + bind?: BindConfig, + ): Promise; + getRootDSE(): Promise; + getVendor(): Promise; + search(dn: string, options: SearchOptions): Promise; +} // @public export class LdapOrgReaderProcessor implements CatalogProcessor { - constructor(options: { - providers: LdapProviderConfig[]; - logger: Logger_2; - groupTransformer?: GroupTransformer; - userTransformer?: UserTransformer; - }); - // (undocumented) - static fromConfig(config: Config, options: { - logger: Logger_2; - groupTransformer?: GroupTransformer; - userTransformer?: UserTransformer; - }): LdapOrgReaderProcessor; - // (undocumented) - readLocation(location: LocationSpec, _optional: boolean, emit: CatalogProcessorEmit): Promise; - } + constructor(options: { + providers: LdapProviderConfig[]; + logger: Logger_2; + groupTransformer?: GroupTransformer; + userTransformer?: UserTransformer; + }); + // (undocumented) + static fromConfig( + config: Config, + options: { + logger: Logger_2; + groupTransformer?: GroupTransformer; + userTransformer?: UserTransformer; + }, + ): LdapOrgReaderProcessor; + // (undocumented) + readLocation( + location: LocationSpec, + _optional: boolean, + emit: CatalogProcessorEmit, + ): Promise; +} // @public export type LdapProviderConfig = { - target: string; - bind?: BindConfig; - users: UserConfig; - groups: GroupConfig; + target: string; + bind?: BindConfig; + users: UserConfig; + groups: GroupConfig; }; // @public export type LdapVendor = { - dnAttributeName: string; - uuidAttributeName: string; - decodeStringAttribute: (entry: SearchEntry, name: string) => string[]; + dnAttributeName: string; + uuidAttributeName: string; + decodeStringAttribute: (entry: SearchEntry, name: string) => string[]; }; // @public -export function mapStringAttr(entry: SearchEntry, vendor: LdapVendor, attributeName: string | undefined, setter: (value: string) => void): void; +export function mapStringAttr( + entry: SearchEntry, + vendor: LdapVendor, + attributeName: string | undefined, + setter: (value: string) => void, +): void; // @public export function readLdapConfig(config: Config): LdapProviderConfig[]; // @public -export function readLdapOrg(client: LdapClient, userConfig: UserConfig, groupConfig: GroupConfig, options: { +export function readLdapOrg( + client: LdapClient, + userConfig: UserConfig, + groupConfig: GroupConfig, + options: { groupTransformer?: GroupTransformer; userTransformer?: UserTransformer; logger: Logger_2; -}): Promise<{ - users: UserEntity[]; - groups: GroupEntity[]; + }, +): Promise<{ + users: UserEntity[]; + groups: GroupEntity[]; }>; // @public export type UserConfig = { - dn: string; - options: SearchOptions; - set?: { - [path: string]: JsonValue; - }; - map: { - rdn: string; - name: string; - description?: string; - displayName: string; - email: string; - picture?: string; - memberOf: string; - }; + dn: string; + options: SearchOptions; + set?: { + [path: string]: JsonValue; + }; + map: { + rdn: string; + name: string; + description?: string; + displayName: string; + email: string; + picture?: string; + memberOf: string; + }; }; // @public -export type UserTransformer = (vendor: LdapVendor, config: UserConfig, user: SearchEntry) => Promise; - +export type UserTransformer = ( + vendor: LdapVendor, + config: UserConfig, + user: SearchEntry, +) => Promise; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/catalog-backend-module-msgraph/api-report.md b/plugins/catalog-backend-module-msgraph/api-report.md index c755514b48..1fae2731ad 100644 --- a/plugins/catalog-backend-module-msgraph/api-report.md +++ b/plugins/catalog-backend-module-msgraph/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { CatalogProcessor } from '@backstage/plugin-catalog-backend'; import { CatalogProcessorEmit } from '@backstage/plugin-catalog-backend'; import { Config } from '@backstage/config'; @@ -15,108 +14,143 @@ import * as msal from '@azure/msal-node'; import { UserEntity } from '@backstage/catalog-model'; // @public (undocumented) -export function defaultGroupTransformer(group: MicrosoftGraph.Group, groupPhoto?: string): Promise; +export function defaultGroupTransformer( + group: MicrosoftGraph.Group, + groupPhoto?: string, +): Promise; // @public (undocumented) -export function defaultOrganizationTransformer(organization: MicrosoftGraph.Organization): Promise; +export function defaultOrganizationTransformer( + organization: MicrosoftGraph.Organization, +): Promise; // @public (undocumented) -export function defaultUserTransformer(user: MicrosoftGraph.User, userPhoto?: string): Promise; +export function defaultUserTransformer( + user: MicrosoftGraph.User, + userPhoto?: string, +): Promise; // @public (undocumented) -export type GroupTransformer = (group: MicrosoftGraph.Group, groupPhoto?: string) => Promise; +export type GroupTransformer = ( + group: MicrosoftGraph.Group, + groupPhoto?: string, +) => Promise; // @public -export const MICROSOFT_GRAPH_GROUP_ID_ANNOTATION = "graph.microsoft.com/group-id"; +export const MICROSOFT_GRAPH_GROUP_ID_ANNOTATION = + 'graph.microsoft.com/group-id'; // @public -export const MICROSOFT_GRAPH_TENANT_ID_ANNOTATION = "graph.microsoft.com/tenant-id"; +export const MICROSOFT_GRAPH_TENANT_ID_ANNOTATION = + 'graph.microsoft.com/tenant-id'; // @public -export const MICROSOFT_GRAPH_USER_ID_ANNOTATION = "graph.microsoft.com/user-id"; +export const MICROSOFT_GRAPH_USER_ID_ANNOTATION = 'graph.microsoft.com/user-id'; // @public (undocumented) export class MicrosoftGraphClient { - constructor(baseUrl: string, pca: msal.ConfidentialClientApplication); - // (undocumented) - static create(config: MicrosoftGraphProviderConfig): MicrosoftGraphClient; - // (undocumented) - getGroupMembers(groupId: string): AsyncIterable; - // (undocumented) - getGroupPhoto(groupId: string, sizeId?: string): Promise; - // (undocumented) - getGroupPhotoWithSizeLimit(groupId: string, maxSize: number): Promise; - // (undocumented) - getGroups(query?: ODataQuery): AsyncIterable; - // (undocumented) - getOrganization(tenantId: string): Promise; - // (undocumented) - getUserPhoto(userId: string, sizeId?: string): Promise; - // (undocumented) - getUserPhotoWithSizeLimit(userId: string, maxSize: number): Promise; - // (undocumented) - getUserProfile(userId: string): Promise; - // (undocumented) - getUsers(query?: ODataQuery): AsyncIterable; - // (undocumented) - requestApi(path: string, query?: ODataQuery): Promise; - // (undocumented) - requestCollection(path: string, query?: ODataQuery): AsyncIterable; - // (undocumented) - requestRaw(url: string): Promise; + constructor(baseUrl: string, pca: msal.ConfidentialClientApplication); + // (undocumented) + static create(config: MicrosoftGraphProviderConfig): MicrosoftGraphClient; + // (undocumented) + getGroupMembers(groupId: string): AsyncIterable; + // (undocumented) + getGroupPhoto(groupId: string, sizeId?: string): Promise; + // (undocumented) + getGroupPhotoWithSizeLimit( + groupId: string, + maxSize: number, + ): Promise; + // (undocumented) + getGroups(query?: ODataQuery): AsyncIterable; + // (undocumented) + getOrganization(tenantId: string): Promise; + // (undocumented) + getUserPhoto(userId: string, sizeId?: string): Promise; + // (undocumented) + getUserPhotoWithSizeLimit( + userId: string, + maxSize: number, + ): Promise; + // (undocumented) + getUserProfile(userId: string): Promise; + // (undocumented) + getUsers(query?: ODataQuery): AsyncIterable; + // (undocumented) + requestApi(path: string, query?: ODataQuery): Promise; + // (undocumented) + requestCollection(path: string, query?: ODataQuery): AsyncIterable; + // (undocumented) + requestRaw(url: string): Promise; } // @public export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor { - constructor(options: { - providers: MicrosoftGraphProviderConfig[]; - logger: Logger_2; - groupTransformer?: GroupTransformer; - }); - // (undocumented) - static fromConfig(config: Config, options: { - logger: Logger_2; - groupTransformer?: GroupTransformer; - }): MicrosoftGraphOrgReaderProcessor; - // (undocumented) - readLocation(location: LocationSpec, _optional: boolean, emit: CatalogProcessorEmit): Promise; + constructor(options: { + providers: MicrosoftGraphProviderConfig[]; + logger: Logger_2; + groupTransformer?: GroupTransformer; + }); + // (undocumented) + static fromConfig( + config: Config, + options: { + logger: Logger_2; + groupTransformer?: GroupTransformer; + }, + ): MicrosoftGraphOrgReaderProcessor; + // (undocumented) + readLocation( + location: LocationSpec, + _optional: boolean, + emit: CatalogProcessorEmit, + ): Promise; } // @public export type MicrosoftGraphProviderConfig = { - target: string; - authority?: string; - tenantId: string; - clientId: string; - clientSecret: string; - userFilter?: string; - groupFilter?: string; + target: string; + authority?: string; + tenantId: string; + clientId: string; + clientSecret: string; + userFilter?: string; + groupFilter?: string; }; // @public (undocumented) export function normalizeEntityName(name: string): string; // @public (undocumented) -export type OrganizationTransformer = (organization: MicrosoftGraph.Organization) => Promise; +export type OrganizationTransformer = ( + organization: MicrosoftGraph.Organization, +) => Promise; // @public (undocumented) -export function readMicrosoftGraphConfig(config: Config): MicrosoftGraphProviderConfig[]; +export function readMicrosoftGraphConfig( + config: Config, +): MicrosoftGraphProviderConfig[]; // @public (undocumented) -export function readMicrosoftGraphOrg(client: MicrosoftGraphClient, tenantId: string, options: { +export function readMicrosoftGraphOrg( + client: MicrosoftGraphClient, + tenantId: string, + options: { userFilter?: string; groupFilter?: string; groupTransformer?: GroupTransformer; logger: Logger_2; -}): Promise<{ - users: UserEntity[]; - groups: GroupEntity[]; + }, +): Promise<{ + users: UserEntity[]; + groups: GroupEntity[]; }>; // @public (undocumented) -export type UserTransformer = (user: MicrosoftGraph.User, userPhoto?: string) => Promise; - +export type UserTransformer = ( + user: MicrosoftGraph.User, + userPhoto?: string, +) => Promise; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index a2c7e0b3a7..ae7559f5d1 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { Account } from 'aws-sdk/clients/organizations'; @@ -33,148 +32,192 @@ import { Validators } from '@backstage/catalog-model'; // @public (undocumented) export type AddLocationResult = { - location: Location_2; - entities: Entity[]; + location: Location_2; + entities: Entity[]; }; // @public (undocumented) export type AnalyzeLocationRequest = { - location: LocationSpec; + location: LocationSpec; }; // @public (undocumented) export type AnalyzeLocationResponse = { - existingEntityFiles: AnalyzeLocationExistingEntity[]; - generateEntities: AnalyzeLocationGenerateEntity[]; + existingEntityFiles: AnalyzeLocationExistingEntity[]; + generateEntities: AnalyzeLocationGenerateEntity[]; }; // @public (undocumented) export class AnnotateLocationEntityProcessor implements CatalogProcessor { - constructor(options: Options_2); - // (undocumented) - preProcessEntity(entity: Entity, location: LocationSpec, _: CatalogProcessorEmit, originLocation: LocationSpec): Promise; + constructor(options: Options_2); + // (undocumented) + preProcessEntity( + entity: Entity, + location: LocationSpec, + _: CatalogProcessorEmit, + originLocation: LocationSpec, + ): Promise; } // @public (undocumented) export class AnnotateScmSlugEntityProcessor implements CatalogProcessor { - constructor(opts: { - scmIntegrationRegistry: ScmIntegrationRegistry; - }); - // (undocumented) - static fromConfig(config: Config): AnnotateScmSlugEntityProcessor; - // (undocumented) - preProcessEntity(entity: Entity, location: LocationSpec): Promise; + constructor(opts: { scmIntegrationRegistry: ScmIntegrationRegistry }); + // (undocumented) + static fromConfig(config: Config): AnnotateScmSlugEntityProcessor; + // (undocumented) + preProcessEntity(entity: Entity, location: LocationSpec): Promise; } // @public export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor { - constructor(options: { - provider: AwsOrganizationProviderConfig; - logger: Logger_2; - }); - // (undocumented) - extractInformationFromArn(arn: string): { - accountId: string; - organizationId: string; - }; - // (undocumented) - static fromConfig(config: Config, options: { - logger: Logger_2; - }): AwsOrganizationCloudAccountProcessor; - // (undocumented) - getAwsAccounts(): Promise; - // (undocumented) - logger: Logger_2; - // (undocumented) - mapAccountToComponent(account: Account): ResourceEntityV1alpha1; - // (undocumented) - normalizeName(name: string): string; - // (undocumented) - organizations: Organizations; - // (undocumented) + constructor(options: { provider: AwsOrganizationProviderConfig; - // (undocumented) - readLocation(location: LocationSpec, _optional: boolean, emit: CatalogProcessorEmit): Promise; + logger: Logger_2; + }); + // (undocumented) + extractInformationFromArn( + arn: string, + ): { + accountId: string; + organizationId: string; + }; + // (undocumented) + static fromConfig( + config: Config, + options: { + logger: Logger_2; + }, + ): AwsOrganizationCloudAccountProcessor; + // (undocumented) + getAwsAccounts(): Promise; + // (undocumented) + logger: Logger_2; + // (undocumented) + mapAccountToComponent(account: Account): ResourceEntityV1alpha1; + // (undocumented) + normalizeName(name: string): string; + // (undocumented) + organizations: Organizations; + // (undocumented) + provider: AwsOrganizationProviderConfig; + // (undocumented) + readLocation( + location: LocationSpec, + _optional: boolean, + emit: CatalogProcessorEmit, + ): Promise; } // @public (undocumented) export class BitbucketDiscoveryProcessor implements CatalogProcessor { - constructor(options: { - integrations: ScmIntegrationRegistry; - parser?: BitbucketRepositoryParser; - logger: Logger_2; - }); - // (undocumented) - static fromConfig(config: Config, options: { - parser?: BitbucketRepositoryParser; - logger: Logger_2; - }): BitbucketDiscoveryProcessor; - // (undocumented) - readLocation(location: LocationSpec, _optional: boolean, emit: CatalogProcessorEmit): Promise; + constructor(options: { + integrations: ScmIntegrationRegistry; + parser?: BitbucketRepositoryParser; + logger: Logger_2; + }); + // (undocumented) + static fromConfig( + config: Config, + options: { + parser?: BitbucketRepositoryParser; + logger: Logger_2; + }, + ): BitbucketDiscoveryProcessor; + // (undocumented) + readLocation( + location: LocationSpec, + _optional: boolean, + emit: CatalogProcessorEmit, + ): Promise; } // @public (undocumented) export type BitbucketRepositoryParser = (options: { - integration: BitbucketIntegration; - target: string; - logger: Logger_2; + integration: BitbucketIntegration; + target: string; + logger: Logger_2; }) => AsyncIterable; // @public (undocumented) export class BuiltinKindsEntityProcessor implements CatalogProcessor { - // (undocumented) - postProcessEntity(entity: Entity, _location: LocationSpec, emit: CatalogProcessorEmit): Promise; - // (undocumented) - validateEntityKind(entity: Entity): Promise; + // (undocumented) + postProcessEntity( + entity: Entity, + _location: LocationSpec, + emit: CatalogProcessorEmit, + ): Promise; + // (undocumented) + validateEntityKind(entity: Entity): Promise; } // @public export class CatalogBuilder { - constructor(env: CatalogEnvironment); - addEntityPolicy(...policies: EntityPolicy[]): CatalogBuilder; - addProcessor(...processors: CatalogProcessor[]): CatalogBuilder; - build(): Promise<{ - entitiesCatalog: EntitiesCatalog; - locationsCatalog: LocationsCatalog; - higherOrderOperation: HigherOrderOperation; - locationAnalyzer: LocationAnalyzer; - }>; - // (undocumented) - static create(env: CatalogEnvironment): Promise; - replaceEntityPolicies(policies: EntityPolicy[]): CatalogBuilder; - replaceProcessors(processors: CatalogProcessor[]): CatalogBuilder; - setEntityDataParser(parser: CatalogProcessorParser): CatalogBuilder; - setFieldFormatValidators(validators: Partial): CatalogBuilder; - setPlaceholderResolver(key: string, resolver: PlaceholderResolver): CatalogBuilder; + constructor(env: CatalogEnvironment); + addEntityPolicy(...policies: EntityPolicy[]): CatalogBuilder; + addProcessor(...processors: CatalogProcessor[]): CatalogBuilder; + build(): Promise<{ + entitiesCatalog: EntitiesCatalog; + locationsCatalog: LocationsCatalog; + higherOrderOperation: HigherOrderOperation; + locationAnalyzer: LocationAnalyzer; + }>; + // (undocumented) + static create(env: CatalogEnvironment): Promise; + replaceEntityPolicies(policies: EntityPolicy[]): CatalogBuilder; + replaceProcessors(processors: CatalogProcessor[]): CatalogBuilder; + setEntityDataParser(parser: CatalogProcessorParser): CatalogBuilder; + setFieldFormatValidators(validators: Partial): CatalogBuilder; + setPlaceholderResolver( + key: string, + resolver: PlaceholderResolver, + ): CatalogBuilder; } // @public (undocumented) export interface CatalogEntityDocument extends IndexableDocument { - // (undocumented) - componentType: string; - // (undocumented) - kind: string; - // (undocumented) - lifecycle: string; - // (undocumented) - namespace: string; - // (undocumented) - owner: string; + // (undocumented) + componentType: string; + // (undocumented) + kind: string; + // (undocumented) + lifecycle: string; + // (undocumented) + namespace: string; + // (undocumented) + owner: string; } // @public (undocumented) export interface CatalogProcessingOrchestrator { - // (undocumented) - process(request: EntityProcessingRequest): Promise; + // (undocumented) + process(request: EntityProcessingRequest): Promise; } // @public (undocumented) export type CatalogProcessor = { - readLocation?(location: LocationSpec, optional: boolean, emit: CatalogProcessorEmit, parser: CatalogProcessorParser): Promise; - preProcessEntity?(entity: Entity, location: LocationSpec, emit: CatalogProcessorEmit, originLocation: LocationSpec): Promise; - validateEntityKind?(entity: Entity): Promise; - postProcessEntity?(entity: Entity, location: LocationSpec, emit: CatalogProcessorEmit): Promise; - handleError?(error: Error, location: LocationSpec, emit: CatalogProcessorEmit): Promise; + readLocation?( + location: LocationSpec, + optional: boolean, + emit: CatalogProcessorEmit, + parser: CatalogProcessorParser, + ): Promise; + preProcessEntity?( + entity: Entity, + location: LocationSpec, + emit: CatalogProcessorEmit, + originLocation: LocationSpec, + ): Promise; + validateEntityKind?(entity: Entity): Promise; + postProcessEntity?( + entity: Entity, + location: LocationSpec, + emit: CatalogProcessorEmit, + ): Promise; + handleError?( + error: Error, + location: LocationSpec, + emit: CatalogProcessorEmit, + ): Promise; }; // @public (undocumented) @@ -182,204 +225,288 @@ export type CatalogProcessorEmit = (generated: CatalogProcessorResult) => void; // @public (undocumented) export type CatalogProcessorEntityResult = { - type: 'entity'; - entity: Entity; - location: LocationSpec; + type: 'entity'; + entity: Entity; + location: LocationSpec; }; // @public (undocumented) export type CatalogProcessorErrorResult = { - type: 'error'; - error: Error; - location: LocationSpec; + type: 'error'; + error: Error; + location: LocationSpec; }; // @public (undocumented) export type CatalogProcessorLocationResult = { - type: 'location'; - location: LocationSpec; - optional: boolean; + type: 'location'; + location: LocationSpec; + optional: boolean; }; // @public export type CatalogProcessorParser = (options: { - data: Buffer; - location: LocationSpec; + data: Buffer; + location: LocationSpec; }) => AsyncIterable; // @public (undocumented) export type CatalogProcessorRelationResult = { - type: 'relation'; - relation: EntityRelationSpec; - entityRef?: string; + type: 'relation'; + relation: EntityRelationSpec; + entityRef?: string; }; // @public (undocumented) -export type CatalogProcessorResult = CatalogProcessorLocationResult | CatalogProcessorEntityResult | CatalogProcessorRelationResult | CatalogProcessorErrorResult; +export type CatalogProcessorResult = + | CatalogProcessorLocationResult + | CatalogProcessorEntityResult + | CatalogProcessorRelationResult + | CatalogProcessorErrorResult; // @public (undocumented) export class CodeOwnersProcessor implements CatalogProcessor { - constructor(options: { - integrations: ScmIntegrations; - logger: Logger_2; - reader: UrlReader; - }); - // (undocumented) - static fromConfig(config: Config, options: { - logger: Logger_2; - reader: UrlReader; - }): CodeOwnersProcessor; - // (undocumented) - preProcessEntity(entity: Entity, location: LocationSpec): Promise; + constructor(options: { + integrations: ScmIntegrations; + logger: Logger_2; + reader: UrlReader; + }); + // (undocumented) + static fromConfig( + config: Config, + options: { + logger: Logger_2; + reader: UrlReader; + }, + ): CodeOwnersProcessor; + // (undocumented) + preProcessEntity(entity: Entity, location: LocationSpec): Promise; } // @public export class CommonDatabase implements Database { - constructor(database: Knex, logger: Logger_2); - // (undocumented) - addEntities(txOpaque: Transaction, request: DbEntityRequest[]): Promise; - // (undocumented) - addLocation(txOpaque: Transaction, location: Location_2): Promise; - // (undocumented) - addLocationUpdateLogEvent(locationId: string, status: DatabaseLocationUpdateLogStatus, entityName?: string | string[], message?: string): Promise; - // (undocumented) - entities(txOpaque: Transaction, request?: DbEntitiesRequest): Promise; - // (undocumented) - entityByName(txOpaque: Transaction, name: EntityName): Promise; - // (undocumented) - entityByUid(txOpaque: Transaction, uid: string): Promise; - // (undocumented) - location(id: string): Promise; - // (undocumented) - locationHistory(id: string): Promise; - // (undocumented) - locations(): Promise; - // (undocumented) - removeEntityByUid(txOpaque: Transaction, uid: string): Promise; - // (undocumented) - removeLocation(txOpaque: Transaction, id: string): Promise; - // (undocumented) - setRelations(txOpaque: Transaction, originatingEntityId: string, relations: EntityRelationSpec[]): Promise; - // (undocumented) - transaction(fn: (tx: Transaction) => Promise): Promise; - // (undocumented) - updateEntity(txOpaque: Transaction, request: DbEntityRequest, matchingEtag?: string, matchingGeneration?: number): Promise; + constructor(database: Knex, logger: Logger_2); + // (undocumented) + addEntities( + txOpaque: Transaction, + request: DbEntityRequest[], + ): Promise; + // (undocumented) + addLocation( + txOpaque: Transaction, + location: Location_2, + ): Promise; + // (undocumented) + addLocationUpdateLogEvent( + locationId: string, + status: DatabaseLocationUpdateLogStatus, + entityName?: string | string[], + message?: string, + ): Promise; + // (undocumented) + entities( + txOpaque: Transaction, + request?: DbEntitiesRequest, + ): Promise; + // (undocumented) + entityByName( + txOpaque: Transaction, + name: EntityName, + ): Promise; + // (undocumented) + entityByUid( + txOpaque: Transaction, + uid: string, + ): Promise; + // (undocumented) + location(id: string): Promise; + // (undocumented) + locationHistory(id: string): Promise; + // (undocumented) + locations(): Promise; + // (undocumented) + removeEntityByUid(txOpaque: Transaction, uid: string): Promise; + // (undocumented) + removeLocation(txOpaque: Transaction, id: string): Promise; + // (undocumented) + setRelations( + txOpaque: Transaction, + originatingEntityId: string, + relations: EntityRelationSpec[], + ): Promise; + // (undocumented) + transaction(fn: (tx: Transaction) => Promise): Promise; + // (undocumented) + updateEntity( + txOpaque: Transaction, + request: DbEntityRequest, + matchingEtag?: string, + matchingGeneration?: number, + ): Promise; } // @public (undocumented) -export function createNextRouter(options: RouterOptions_2): Promise; +export function createNextRouter( + options: RouterOptions_2, +): Promise; // @public (undocumented) export function createRouter(options: RouterOptions): Promise; // @public export type Database = { - transaction(fn: (tx: Transaction) => Promise): Promise; - addEntities(tx: Transaction, request: DbEntityRequest[]): Promise; - updateEntity(tx: Transaction, request: DbEntityRequest, matchingEtag?: string, matchingGeneration?: number): Promise; - entities(tx: Transaction, request?: DbEntitiesRequest): Promise; - entityByName(tx: Transaction, name: EntityName): Promise; - entityByUid(tx: Transaction, uid: string): Promise; - removeEntityByUid(tx: Transaction, uid: string): Promise; - setRelations(tx: Transaction, entityUid: string, relations: EntityRelationSpec[]): Promise; - addLocation(tx: Transaction, location: Location_2): Promise; - removeLocation(tx: Transaction, id: string): Promise; - location(id: string): Promise; - locations(): Promise; - locationHistory(id: string): Promise; - addLocationUpdateLogEvent(locationId: string, status: DatabaseLocationUpdateLogStatus, entityName?: string | string[], message?: string): Promise; + transaction(fn: (tx: Transaction) => Promise): Promise; + addEntities( + tx: Transaction, + request: DbEntityRequest[], + ): Promise; + updateEntity( + tx: Transaction, + request: DbEntityRequest, + matchingEtag?: string, + matchingGeneration?: number, + ): Promise; + entities( + tx: Transaction, + request?: DbEntitiesRequest, + ): Promise; + entityByName( + tx: Transaction, + name: EntityName, + ): Promise; + entityByUid( + tx: Transaction, + uid: string, + ): Promise; + removeEntityByUid(tx: Transaction, uid: string): Promise; + setRelations( + tx: Transaction, + entityUid: string, + relations: EntityRelationSpec[], + ): Promise; + addLocation(tx: Transaction, location: Location_2): Promise; + removeLocation(tx: Transaction, id: string): Promise; + location(id: string): Promise; + locations(): Promise; + locationHistory(id: string): Promise; + addLocationUpdateLogEvent( + locationId: string, + status: DatabaseLocationUpdateLogStatus, + entityName?: string | string[], + message?: string, + ): Promise; }; // @public (undocumented) export class DatabaseEntitiesCatalog implements EntitiesCatalog { - constructor(database: Database, logger: Logger_2); - // (undocumented) - batchAddOrUpdateEntities(requests: EntityUpsertRequest[], options?: { - locationId?: string; - dryRun?: boolean; - outputEntities?: boolean; - }): Promise; - // (undocumented) - entities(request?: EntitiesRequest): Promise; - // (undocumented) - removeEntityByUid(uid: string): Promise; + constructor(database: Database, logger: Logger_2); + // (undocumented) + batchAddOrUpdateEntities( + requests: EntityUpsertRequest[], + options?: { + locationId?: string; + dryRun?: boolean; + outputEntities?: boolean; + }, + ): Promise; + // (undocumented) + entities(request?: EntitiesRequest): Promise; + // (undocumented) + removeEntityByUid(uid: string): Promise; } // @public (undocumented) export class DatabaseLocationsCatalog implements LocationsCatalog { - constructor(database: Database); - // (undocumented) - addLocation(location: Location_2): Promise; - // (undocumented) - location(id: string): Promise; - // (undocumented) - locationHistory(id: string): Promise; - // (undocumented) - locations(): Promise; - // (undocumented) - logUpdateFailure(locationId: string, error?: Error, entityName?: string): Promise; - // (undocumented) - logUpdateSuccess(locationId: string, entityName?: string | string[]): Promise; - // (undocumented) - removeLocation(id: string): Promise; + constructor(database: Database); + // (undocumented) + addLocation(location: Location_2): Promise; + // (undocumented) + location(id: string): Promise; + // (undocumented) + locationHistory(id: string): Promise; + // (undocumented) + locations(): Promise; + // (undocumented) + logUpdateFailure( + locationId: string, + error?: Error, + entityName?: string, + ): Promise; + // (undocumented) + logUpdateSuccess( + locationId: string, + entityName?: string | string[], + ): Promise; + // (undocumented) + removeLocation(id: string): Promise; } // @public (undocumented) export class DatabaseManager { - // (undocumented) - static createDatabase(knex: Knex, options?: Partial): Promise; - // (undocumented) - static createInMemoryDatabase(): Promise; - // (undocumented) - static createInMemoryDatabaseConnection(): Promise; - // (undocumented) - static createTestDatabase(): Promise; - // (undocumented) - static createTestDatabaseConnection(): Promise; + // (undocumented) + static createDatabase( + knex: Knex, + options?: Partial, + ): Promise; + // (undocumented) + static createInMemoryDatabase(): Promise; + // (undocumented) + static createInMemoryDatabaseConnection(): Promise; + // (undocumented) + static createTestDatabase(): Promise; + // (undocumented) + static createTestDatabaseConnection(): Promise; } // @public (undocumented) export type DbEntityRequest = { - locationId?: string; - entity: Entity; - relations: EntityRelationSpec[]; + locationId?: string; + entity: Entity; + relations: EntityRelationSpec[]; }; // @public (undocumented) export type DbEntityResponse = { - locationId?: string; - entity: Entity; + locationId?: string; + entity: Entity; }; // @public (undocumented) export class DefaultCatalogCollator implements DocumentCollator { - constructor({ discovery, locationTemplate, }: { - discovery: PluginEndpointDiscovery; - locationTemplate?: string; - }); - // (undocumented) - protected applyArgsToFormat(format: string, args: Record): string; - // (undocumented) - protected discovery: PluginEndpointDiscovery; - // (undocumented) - execute(): Promise; - // (undocumented) - protected locationTemplate: string; - // (undocumented) - readonly type: string; + constructor({ + discovery, + locationTemplate, + }: { + discovery: PluginEndpointDiscovery; + locationTemplate?: string; + }); + // (undocumented) + protected applyArgsToFormat( + format: string, + args: Record, + ): string; + // (undocumented) + protected discovery: PluginEndpointDiscovery; + // (undocumented) + execute(): Promise; + // (undocumented) + protected locationTemplate: string; + // (undocumented) + readonly type: string; } // @public (undocumented) -export class DefaultCatalogProcessingOrchestrator implements CatalogProcessingOrchestrator { - constructor(options: { - processors: CatalogProcessor[]; - integrations: ScmIntegrationRegistry; - logger: Logger_2; - parser: CatalogProcessorParser; - policy: EntityPolicy; - }); - // (undocumented) - process(request: EntityProcessingRequest): Promise; +export class DefaultCatalogProcessingOrchestrator + implements CatalogProcessingOrchestrator { + constructor(options: { + processors: CatalogProcessor[]; + integrations: ScmIntegrationRegistry; + logger: Logger_2; + parser: CatalogProcessorParser; + policy: EntityPolicy; + }); + // (undocumented) + process(request: EntityProcessingRequest): Promise; } // @public @@ -387,259 +514,334 @@ export function durationText(startTimestamp: [number, number]): string; // @public (undocumented) export type EntitiesCatalog = { - entities(request?: EntitiesRequest): Promise; - removeEntityByUid(uid: string): Promise; - batchAddOrUpdateEntities(requests: EntityUpsertRequest[], options?: { - locationId?: string; - dryRun?: boolean; - outputEntities?: boolean; - }): Promise; + entities(request?: EntitiesRequest): Promise; + removeEntityByUid(uid: string): Promise; + batchAddOrUpdateEntities( + requests: EntityUpsertRequest[], + options?: { + locationId?: string; + dryRun?: boolean; + outputEntities?: boolean; + }, + ): Promise; }; // @public export type EntitiesSearchFilter = { - key: string; - matchValueIn?: string[]; + key: string; + matchValueIn?: string[]; }; // @public (undocumented) -function entity(atLocation: LocationSpec, newEntity: Entity): CatalogProcessorResult; +function entity( + atLocation: LocationSpec, + newEntity: Entity, +): CatalogProcessorResult; // @public export type EntityFilter = { - anyOf: { - allOf: EntitiesSearchFilter[]; - }[]; + anyOf: { + allOf: EntitiesSearchFilter[]; + }[]; }; // @public export type EntityPagination = { - limit?: number; - offset?: number; - after?: string; + limit?: number; + offset?: number; + after?: string; }; // @public (undocumented) export type EntityProcessingRequest = { - entity: Entity; - state: Map; + entity: Entity; + state: Map; }; // @public (undocumented) -export type EntityProcessingResult = { - ok: true; - state: Map; - completedEntity: Entity; - deferredEntities: DeferredEntity[]; - relations: EntityRelationSpec[]; - errors: Error[]; -} | { - ok: false; - errors: Error[]; -}; +export type EntityProcessingResult = + | { + ok: true; + state: Map; + completedEntity: Entity; + deferredEntities: DeferredEntity[]; + relations: EntityRelationSpec[]; + errors: Error[]; + } + | { + ok: false; + errors: Error[]; + }; // @public (undocumented) export class FileReaderProcessor implements CatalogProcessor { - // (undocumented) - readLocation(location: LocationSpec, optional: boolean, emit: CatalogProcessorEmit): Promise; + // (undocumented) + readLocation( + location: LocationSpec, + optional: boolean, + emit: CatalogProcessorEmit, + ): Promise; } // @public (undocumented) -function generalError(atLocation: LocationSpec, message: string): CatalogProcessorResult; +function generalError( + atLocation: LocationSpec, + message: string, +): CatalogProcessorResult; // @public export class GithubDiscoveryProcessor implements CatalogProcessor { - constructor(options: { - integrations: ScmIntegrations; - logger: Logger_2; - }); - // (undocumented) - static fromConfig(config: Config, options: { - logger: Logger_2; - }): GithubDiscoveryProcessor; - // (undocumented) - readLocation(location: LocationSpec, _optional: boolean, emit: CatalogProcessorEmit): Promise; + constructor(options: { integrations: ScmIntegrations; logger: Logger_2 }); + // (undocumented) + static fromConfig( + config: Config, + options: { + logger: Logger_2; + }, + ): GithubDiscoveryProcessor; + // (undocumented) + readLocation( + location: LocationSpec, + _optional: boolean, + emit: CatalogProcessorEmit, + ): Promise; } // @alpha export class GithubMultiOrgReaderProcessor implements CatalogProcessor { - constructor(options: { - integrations: ScmIntegrations; - logger: Logger_2; - orgs: GithubMultiOrgConfig; - }); - // (undocumented) - static fromConfig(config: Config, options: { - logger: Logger_2; - }): GithubMultiOrgReaderProcessor; - // (undocumented) - readLocation(location: LocationSpec, _optional: boolean, emit: CatalogProcessorEmit): Promise; + constructor(options: { + integrations: ScmIntegrations; + logger: Logger_2; + orgs: GithubMultiOrgConfig; + }); + // (undocumented) + static fromConfig( + config: Config, + options: { + logger: Logger_2; + }, + ): GithubMultiOrgReaderProcessor; + // (undocumented) + readLocation( + location: LocationSpec, + _optional: boolean, + emit: CatalogProcessorEmit, + ): Promise; } // @public export class GithubOrgReaderProcessor implements CatalogProcessor { - constructor(options: { - integrations: ScmIntegrations; - logger: Logger_2; - }); - // (undocumented) - static fromConfig(config: Config, options: { - logger: Logger_2; - }): GithubOrgReaderProcessor; - // (undocumented) - readLocation(location: LocationSpec, _optional: boolean, emit: CatalogProcessorEmit): Promise; + constructor(options: { integrations: ScmIntegrations; logger: Logger_2 }); + // (undocumented) + static fromConfig( + config: Config, + options: { + logger: Logger_2; + }, + ): GithubOrgReaderProcessor; + // (undocumented) + readLocation( + location: LocationSpec, + _optional: boolean, + emit: CatalogProcessorEmit, + ): Promise; } // @public (undocumented) export type HigherOrderOperation = { - addLocation(spec: LocationSpec, options?: { - dryRun?: boolean; - }): Promise; - refreshAllLocations(): Promise; + addLocation( + spec: LocationSpec, + options?: { + dryRun?: boolean; + }, + ): Promise; + refreshAllLocations(): Promise; }; // @public export class HigherOrderOperations implements HigherOrderOperation { - constructor(entitiesCatalog: EntitiesCatalog, locationsCatalog: LocationsCatalog, locationReader: LocationReader, logger: Logger_2); - addLocation(spec: LocationSpec, options?: { - dryRun?: boolean; - }): Promise; - refreshAllLocations(): Promise; + constructor( + entitiesCatalog: EntitiesCatalog, + locationsCatalog: LocationsCatalog, + locationReader: LocationReader, + logger: Logger_2, + ); + addLocation( + spec: LocationSpec, + options?: { + dryRun?: boolean; + }, + ): Promise; + refreshAllLocations(): Promise; } // @public (undocumented) -function inputError(atLocation: LocationSpec, message: string): CatalogProcessorResult; +function inputError( + atLocation: LocationSpec, + message: string, +): CatalogProcessorResult; // @public (undocumented) -function location_2(newLocation: LocationSpec, optional: boolean): CatalogProcessorResult; +function location_2( + newLocation: LocationSpec, + optional: boolean, +): CatalogProcessorResult; // @public (undocumented) export type LocationAnalyzer = { - analyzeLocation(location: AnalyzeLocationRequest): Promise; + analyzeLocation( + location: AnalyzeLocationRequest, + ): Promise; }; // @public (undocumented) export class LocationEntityProcessor implements CatalogProcessor { - constructor(options: Options_3); - // (undocumented) - postProcessEntity(entity: Entity, location: LocationSpec, emit: CatalogProcessorEmit): Promise; + constructor(options: Options_3); + // (undocumented) + postProcessEntity( + entity: Entity, + location: LocationSpec, + emit: CatalogProcessorEmit, + ): Promise; } // @public (undocumented) export type LocationReader = { - read(location: LocationSpec): Promise; + read(location: LocationSpec): Promise; }; // @public export class LocationReaders implements LocationReader { - constructor(options: Options); - // (undocumented) - read(location: LocationSpec): Promise; + constructor(options: Options); + // (undocumented) + read(location: LocationSpec): Promise; } // @public (undocumented) export type LocationsCatalog = { - addLocation(location: Location_2): Promise; - removeLocation(id: string): Promise; - locations(): Promise; - location(id: string): Promise; - locationHistory(id: string): Promise; - logUpdateSuccess(locationId: string, entityName?: string | string[]): Promise; - logUpdateFailure(locationId: string, error?: Error, entityName?: string): Promise; + addLocation(location: Location_2): Promise; + removeLocation(id: string): Promise; + locations(): Promise; + location(id: string): Promise; + locationHistory(id: string): Promise; + logUpdateSuccess( + locationId: string, + entityName?: string | string[], + ): Promise; + logUpdateFailure( + locationId: string, + error?: Error, + entityName?: string, + ): Promise; }; // @public export class NextCatalogBuilder { - constructor(env: CatalogEnvironment_2); - addEntityPolicy(...policies: EntityPolicy[]): NextCatalogBuilder; - addEntityProvider(...providers: EntityProvider[]): NextCatalogBuilder; - addProcessor(...processors: CatalogProcessor[]): NextCatalogBuilder; - build(): Promise<{ - entitiesCatalog: EntitiesCatalog; - locationsCatalog: LocationsCatalog; - locationAnalyzer: LocationAnalyzer; - processingEngine: CatalogProcessingEngine; - locationService: LocationService; - }>; - replaceEntityPolicies(policies: EntityPolicy[]): NextCatalogBuilder; - replaceProcessors(processors: CatalogProcessor[]): NextCatalogBuilder; - setEntityDataParser(parser: CatalogProcessorParser): NextCatalogBuilder; - setFieldFormatValidators(validators: Partial): NextCatalogBuilder; - setPlaceholderResolver(key: string, resolver: PlaceholderResolver): NextCatalogBuilder; - setRefreshIntervalSeconds(seconds: number): NextCatalogBuilder; + constructor(env: CatalogEnvironment_2); + addEntityPolicy(...policies: EntityPolicy[]): NextCatalogBuilder; + addEntityProvider(...providers: EntityProvider[]): NextCatalogBuilder; + addProcessor(...processors: CatalogProcessor[]): NextCatalogBuilder; + build(): Promise<{ + entitiesCatalog: EntitiesCatalog; + locationsCatalog: LocationsCatalog; + locationAnalyzer: LocationAnalyzer; + processingEngine: CatalogProcessingEngine; + locationService: LocationService; + }>; + replaceEntityPolicies(policies: EntityPolicy[]): NextCatalogBuilder; + replaceProcessors(processors: CatalogProcessor[]): NextCatalogBuilder; + setEntityDataParser(parser: CatalogProcessorParser): NextCatalogBuilder; + setFieldFormatValidators(validators: Partial): NextCatalogBuilder; + setPlaceholderResolver( + key: string, + resolver: PlaceholderResolver, + ): NextCatalogBuilder; + setRefreshIntervalSeconds(seconds: number): NextCatalogBuilder; } // @public (undocumented) -function notFoundError(atLocation: LocationSpec, message: string): CatalogProcessorResult; +function notFoundError( + atLocation: LocationSpec, + message: string, +): CatalogProcessorResult; // @public (undocumented) -export function parseEntityYaml(data: Buffer, location: LocationSpec): Iterable; +export function parseEntityYaml( + data: Buffer, + location: LocationSpec, +): Iterable; // @public export class PlaceholderProcessor implements CatalogProcessor { - constructor(options: Options_4); - // (undocumented) - preProcessEntity(entity: Entity, location: LocationSpec): Promise; + constructor(options: Options_4); + // (undocumented) + preProcessEntity(entity: Entity, location: LocationSpec): Promise; } // @public (undocumented) -export type PlaceholderResolver = (params: ResolverParams) => Promise; +export type PlaceholderResolver = ( + params: ResolverParams, +) => Promise; // @public (undocumented) export type ReadLocationEntity = { - location: LocationSpec; - entity: Entity; - relations: EntityRelationSpec[]; + location: LocationSpec; + entity: Entity; + relations: EntityRelationSpec[]; }; // @public (undocumented) export type ReadLocationError = { - location: LocationSpec; - error: Error; + location: LocationSpec; + error: Error; }; // @public (undocumented) export type ReadLocationResult = { - entities: ReadLocationEntity[]; - errors: ReadLocationError[]; + entities: ReadLocationEntity[]; + errors: ReadLocationError[]; }; // @public export type RecursivePartial = { - [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial[] : T[P] extends object ? RecursivePartial : T[P]; + [P in keyof T]?: T[P] extends (infer U)[] + ? RecursivePartial[] + : T[P] extends object + ? RecursivePartial + : T[P]; }; // @public (undocumented) function relation(spec: EntityRelationSpec): CatalogProcessorResult; declare namespace results { - export { - notFoundError, - inputError, - generalError, - location_2 as location, - entity, - relation - } + export { + notFoundError, + inputError, + generalError, + location_2 as location, + entity, + relation, + }; } -export { results } +export { results }; // @public (undocumented) export interface RouterOptions { - // (undocumented) - config: Config; - // (undocumented) - entitiesCatalog?: EntitiesCatalog; - // (undocumented) - higherOrderOperation?: HigherOrderOperation; - // (undocumented) - locationAnalyzer?: LocationAnalyzer; - // (undocumented) - locationsCatalog?: LocationsCatalog; - // (undocumented) - locationService?: LocationService; - // (undocumented) - logger: Logger_2; + // (undocumented) + config: Config; + // (undocumented) + entitiesCatalog?: EntitiesCatalog; + // (undocumented) + higherOrderOperation?: HigherOrderOperation; + // (undocumented) + locationAnalyzer?: LocationAnalyzer; + // (undocumented) + locationsCatalog?: LocationsCatalog; + // (undocumented) + locationService?: LocationService; + // (undocumented) + logger: Logger_2; } // @public @@ -647,25 +849,33 @@ export function runPeriodically(fn: () => any, delayMs: number): () => void; // @public (undocumented) export class StaticLocationProcessor implements StaticLocationProcessor { - constructor(staticLocations: LocationSpec[]); - // (undocumented) - static fromConfig(config: Config): StaticLocationProcessor; - // (undocumented) - readLocation(location: LocationSpec, _optional: boolean, emit: CatalogProcessorEmit): Promise; + constructor(staticLocations: LocationSpec[]); + // (undocumented) + static fromConfig(config: Config): StaticLocationProcessor; + // (undocumented) + readLocation( + location: LocationSpec, + _optional: boolean, + emit: CatalogProcessorEmit, + ): Promise; } // @public export type Transaction = { - rollback(): Promise; + rollback(): Promise; }; // @public (undocumented) export class UrlReaderProcessor implements CatalogProcessor { - constructor(options: Options_5); - // (undocumented) - readLocation(location: LocationSpec, optional: boolean, emit: CatalogProcessorEmit, parser: CatalogProcessorParser): Promise; + constructor(options: Options_5); + // (undocumented) + readLocation( + location: LocationSpec, + optional: boolean, + emit: CatalogProcessorEmit, + parser: CatalogProcessorParser, + ): Promise; } // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/catalog-graphql/api-report.md b/plugins/catalog-graphql/api-report.md index 40e8a19b66..67beee09da 100644 --- a/plugins/catalog-graphql/api-report.md +++ b/plugins/catalog-graphql/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { Config } from '@backstage/config'; import { GraphQLModule } from '@graphql-modules/core'; import { Logger as Logger_2 } from 'winston'; @@ -13,13 +12,11 @@ export function createModule(options: ModuleOptions): Promise; // @public (undocumented) export interface ModuleOptions { - // (undocumented) - config: Config; - // (undocumented) - logger: Logger_2; + // (undocumented) + config: Config; + // (undocumented) + logger: Logger_2; } - // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/catalog-import/api-report.md b/plugins/catalog-import/api-report.md index 57f1fba943..808d8f1909 100644 --- a/plugins/catalog-import/api-report.md +++ b/plugins/catalog-import/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -29,36 +28,50 @@ import { UseFormMethods } from 'react-hook-form'; import { UseFormOptions } from 'react-hook-form'; // @public (undocumented) -export type AnalyzeResult = { - type: 'locations'; - locations: Array<{ +export type AnalyzeResult = + | { + type: 'locations'; + locations: Array<{ target: string; entities: EntityName[]; - }>; -} | { - type: 'repository'; - url: string; - integrationType: string; - generatedEntities: PartialEntity[]; -}; + }>; + } + | { + type: 'repository'; + url: string; + integrationType: string; + generatedEntities: PartialEntity[]; + }; // @public (undocumented) -export const AutocompleteTextField: ({ name, options, required, control, errors, rules, loading, loadingText, helperText, errorHelperText, textFieldProps, }: Props_4) => JSX.Element; +export const AutocompleteTextField: ({ + name, + options, + required, + control, + errors, + rules, + loading, + loadingText, + helperText, + errorHelperText, + textFieldProps, +}: Props_4) => JSX.Element; // @public (undocumented) export interface CatalogImportApi { - // (undocumented) - analyzeUrl(url: string): Promise; - // (undocumented) - submitPullRequest(options: { - repositoryUrl: string; - fileContent: string; - title: string; - body: string; - }): Promise<{ - link: string; - location: string; - }>; + // (undocumented) + analyzeUrl(url: string): Promise; + // (undocumented) + submitPullRequest(options: { + repositoryUrl: string; + fileContent: string; + title: string; + body: string; + }): Promise<{ + link: string; + location: string; + }>; } // @public (undocumented) @@ -66,64 +79,111 @@ export const catalogImportApiRef: ApiRef; // @public (undocumented) export class CatalogImportClient implements CatalogImportApi { - constructor(options: { - discoveryApi: DiscoveryApi; - githubAuthApi: OAuthApi; - identityApi: IdentityApi; - scmIntegrationsApi: ScmIntegrationRegistry; - catalogApi: CatalogApi; - }); - // (undocumented) - analyzeUrl(url: string): Promise; - // (undocumented) - submitPullRequest({ repositoryUrl, fileContent, title, body, }: { - repositoryUrl: string; - fileContent: string; - title: string; - body: string; - }): Promise<{ - link: string; - location: string; - }>; + constructor(options: { + discoveryApi: DiscoveryApi; + githubAuthApi: OAuthApi; + identityApi: IdentityApi; + scmIntegrationsApi: ScmIntegrationRegistry; + catalogApi: CatalogApi; + }); + // (undocumented) + analyzeUrl(url: string): Promise; + // (undocumented) + submitPullRequest({ + repositoryUrl, + fileContent, + title, + body, + }: { + repositoryUrl: string; + fileContent: string; + title: string; + body: string; + }): Promise<{ + link: string; + location: string; + }>; } // @public (undocumented) export const CatalogImportPage: (opts: StepperProviderOpts) => JSX.Element; // @public (undocumented) -const catalogImportPlugin: BackstagePlugin< { -importPage: RouteRef; -}, {}>; -export { catalogImportPlugin } -export { catalogImportPlugin as plugin } +const catalogImportPlugin: BackstagePlugin< + { + importPage: RouteRef; + }, + {} +>; +export { catalogImportPlugin }; +export { catalogImportPlugin as plugin }; // @public -export function defaultGenerateStepper(flow: ImportFlows, defaults: StepperProvider): StepperProvider; +export function defaultGenerateStepper( + flow: ImportFlows, + defaults: StepperProvider, +): StepperProvider; // @public (undocumented) -export const EntityListComponent: ({ locations, collapsed, locationListItemIcon, onItemClick, firstListItem, withLinks, }: Props_2) => JSX.Element; +export const EntityListComponent: ({ + locations, + collapsed, + locationListItemIcon, + onItemClick, + firstListItem, + withLinks, +}: Props_2) => JSX.Element; // @public (undocumented) -export const ImportStepper: ({ initialUrl, generateStepper, variant, opts, }: Props) => JSX.Element; +export const ImportStepper: ({ + initialUrl, + generateStepper, + variant, + opts, +}: Props) => JSX.Element; // @public -export const PreparePullRequestForm: >({ defaultValues, onSubmit, render, }: Props_5) => JSX.Element; +export const PreparePullRequestForm: < + TFieldValues extends Record +>({ + defaultValues, + onSubmit, + render, +}: Props_5) => JSX.Element; // @public (undocumented) -export const PreviewCatalogInfoComponent: ({ repositoryUrl, entities, classes, }: Props_6) => JSX.Element; +export const PreviewCatalogInfoComponent: ({ + repositoryUrl, + entities, + classes, +}: Props_6) => JSX.Element; // @public (undocumented) -export const PreviewPullRequestComponent: ({ title, description, classes, }: Props_7) => JSX.Element; +export const PreviewPullRequestComponent: ({ + title, + description, + classes, +}: Props_7) => JSX.Element; // @public (undocumented) export const Router: (opts: StepperProviderOpts) => JSX.Element; // @public -export const StepInitAnalyzeUrl: ({ onAnalysis, analysisUrl, disablePullRequest, }: Props_3) => JSX.Element; +export const StepInitAnalyzeUrl: ({ + onAnalysis, + analysisUrl, + disablePullRequest, +}: Props_3) => JSX.Element; // @public (undocumented) -export const StepPrepareCreatePullRequest: ({ analyzeResult, onPrepare, onGoBack, renderFormFields, defaultTitle, defaultBody, }: Props_8) => JSX.Element; +export const StepPrepareCreatePullRequest: ({ + analyzeResult, + onPrepare, + onGoBack, + renderFormFields, + defaultTitle, + defaultBody, +}: Props_8) => JSX.Element; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 38fe62bc41..4cc6a017aa 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -23,7 +22,7 @@ import { SystemEntity } from '@backstage/catalog-model'; import { TableColumn } from '@backstage/core-components'; import { UserEntity } from '@backstage/catalog-model'; -export { CatalogApi } +export { CatalogApi }; // @public (undocumented) export const catalogApiRef: ApiRef; @@ -35,18 +34,25 @@ export const catalogRouteRef: RouteRef; function createDomainColumn(): TableColumn; // @public (undocumented) -function createEntityRefColumn({ defaultKind, }: { - defaultKind?: string; +function createEntityRefColumn({ + defaultKind, +}: { + defaultKind?: string; }): TableColumn; // @public (undocumented) -function createEntityRelationColumn({ title, relation, defaultKind, filter: entityFilter, }: { - title: string; - relation: string; - defaultKind?: string; - filter?: { - kind: string; - }; +function createEntityRelationColumn({ + title, + relation, + defaultKind, + filter: entityFilter, +}: { + title: string; + relation: string; + defaultKind?: string; + filter?: { + kind: string; + }; }): TableColumn; // @public (undocumented) @@ -66,13 +72,13 @@ function createSystemColumn(): TableColumn; // @public (undocumented) export type DefaultEntityFilters = { - kind?: EntityKindFilter; - type?: EntityTypeFilter; - user?: UserListFilter; - owners?: EntityOwnerFilter; - lifecycles?: EntityLifecycleFilter; - tags?: EntityTagFilter; - text?: EntityTextFilter; + kind?: EntityKindFilter; + type?: EntityTypeFilter; + user?: UserListFilter; + owners?: EntityOwnerFilter; + lifecycles?: EntityLifecycleFilter; + tags?: EntityTagFilter; + text?: EntityTextFilter; }; // @public (undocumented) @@ -80,87 +86,388 @@ export const EntityContext: Context; // @public (undocumented) export type EntityFilter = { - getCatalogFilters?: () => Record; - filterEntity?: (entity: Entity) => boolean; - toQueryValue?: () => string | string[]; + getCatalogFilters?: () => Record; + filterEntity?: (entity: Entity) => boolean; + toQueryValue?: () => string | string[]; }; // @public (undocumented) export class EntityKindFilter implements EntityFilter { - constructor(value: string); - // (undocumented) - getCatalogFilters(): Record; - // (undocumented) - toQueryValue(): string; - // (undocumented) - readonly value: string; + constructor(value: string); + // (undocumented) + getCatalogFilters(): Record; + // (undocumented) + toQueryValue(): string; + // (undocumented) + readonly value: string; } // @public (undocumented) -export const EntityKindPicker: ({ initialFilter, hidden, }: EntityKindFilterProps) => JSX.Element | null; +export const EntityKindPicker: ({ + initialFilter, + hidden, +}: EntityKindFilterProps) => JSX.Element | null; // @public (undocumented) export class EntityLifecycleFilter implements EntityFilter { - constructor(values: string[]); - // (undocumented) - filterEntity(entity: Entity): boolean; - // (undocumented) - toQueryValue(): string[]; - // (undocumented) - readonly values: string[]; + constructor(values: string[]); + // (undocumented) + filterEntity(entity: Entity): boolean; + // (undocumented) + toQueryValue(): string[]; + // (undocumented) + readonly values: string[]; } // @public (undocumented) export const EntityLifecyclePicker: () => JSX.Element | null; // @public (undocumented) -export const EntityListContext: React_2.Context | undefined>; +export const EntityListContext: React_2.Context< + EntityListContextProps | undefined +>; // @public (undocumented) -export const EntityListProvider: ({ children, }: PropsWithChildren<{}>) => JSX.Element; +export const EntityListProvider: ({ + children, +}: PropsWithChildren<{}>) => JSX.Element; // @public (undocumented) export class EntityOwnerFilter implements EntityFilter { - constructor(values: string[]); - // (undocumented) - filterEntity(entity: Entity): boolean; - // (undocumented) - toQueryValue(): string[]; - // (undocumented) - readonly values: string[]; + constructor(values: string[]); + // (undocumented) + filterEntity(entity: Entity): boolean; + // (undocumented) + toQueryValue(): string[]; + // (undocumented) + readonly values: string[]; } // @public (undocumented) export const EntityOwnerPicker: () => JSX.Element | null; // @public (undocumented) -export const EntityProvider: ({ entity, children }: EntityProviderProps) => JSX.Element; +export const EntityProvider: ({ + entity, + children, +}: EntityProviderProps) => JSX.Element; // @public (undocumented) -export const EntityRefLink: React_2.ForwardRefExoticComponent & React_2.RefAttributes>; +export const EntityRefLink: React_2.ForwardRefExoticComponent< + Pick< + EntityRefLinkProps, + | 'replace' + | 'media' + | 'hidden' + | 'dir' + | 'slot' + | 'style' + | 'title' + | 'color' + | 'underline' + | 'display' + | 'translate' + | 'prefix' + | 'children' + | 'key' + | 'id' + | 'classes' + | 'defaultChecked' + | 'defaultValue' + | 'suppressContentEditableWarning' + | 'suppressHydrationWarning' + | 'accessKey' + | 'className' + | 'contentEditable' + | 'contextMenu' + | 'draggable' + | 'lang' + | 'placeholder' + | 'spellCheck' + | 'tabIndex' + | 'radioGroup' + | 'role' + | 'about' + | 'datatype' + | 'inlist' + | 'property' + | 'resource' + | 'typeof' + | 'vocab' + | 'autoCapitalize' + | 'autoCorrect' + | 'autoSave' + | 'itemProp' + | 'itemScope' + | 'itemType' + | 'itemID' + | 'itemRef' + | 'results' + | 'security' + | 'unselectable' + | 'inputMode' + | 'is' + | 'aria-activedescendant' + | 'aria-atomic' + | 'aria-autocomplete' + | 'aria-busy' + | 'aria-checked' + | 'aria-colcount' + | 'aria-colindex' + | 'aria-colspan' + | 'aria-controls' + | 'aria-current' + | 'aria-describedby' + | 'aria-details' + | 'aria-disabled' + | 'aria-dropeffect' + | 'aria-errormessage' + | 'aria-expanded' + | 'aria-flowto' + | 'aria-grabbed' + | 'aria-haspopup' + | 'aria-hidden' + | 'aria-invalid' + | 'aria-keyshortcuts' + | 'aria-label' + | 'aria-labelledby' + | 'aria-level' + | 'aria-live' + | 'aria-modal' + | 'aria-multiline' + | 'aria-multiselectable' + | 'aria-orientation' + | 'aria-owns' + | 'aria-placeholder' + | 'aria-posinset' + | 'aria-pressed' + | 'aria-readonly' + | 'aria-relevant' + | 'aria-required' + | 'aria-roledescription' + | 'aria-rowcount' + | 'aria-rowindex' + | 'aria-rowspan' + | 'aria-selected' + | 'aria-setsize' + | 'aria-sort' + | 'aria-valuemax' + | 'aria-valuemin' + | 'aria-valuenow' + | 'aria-valuetext' + | 'dangerouslySetInnerHTML' + | 'onCopy' + | 'onCopyCapture' + | 'onCut' + | 'onCutCapture' + | 'onPaste' + | 'onPasteCapture' + | 'onCompositionEnd' + | 'onCompositionEndCapture' + | 'onCompositionStart' + | 'onCompositionStartCapture' + | 'onCompositionUpdate' + | 'onCompositionUpdateCapture' + | 'onFocus' + | 'onFocusCapture' + | 'onBlur' + | 'onBlurCapture' + | 'onChange' + | 'onChangeCapture' + | 'onBeforeInput' + | 'onBeforeInputCapture' + | 'onInput' + | 'onInputCapture' + | 'onReset' + | 'onResetCapture' + | 'onSubmit' + | 'onSubmitCapture' + | 'onInvalid' + | 'onInvalidCapture' + | 'onLoad' + | 'onLoadCapture' + | 'onError' + | 'onErrorCapture' + | 'onKeyDown' + | 'onKeyDownCapture' + | 'onKeyPress' + | 'onKeyPressCapture' + | 'onKeyUp' + | 'onKeyUpCapture' + | 'onAbort' + | 'onAbortCapture' + | 'onCanPlay' + | 'onCanPlayCapture' + | 'onCanPlayThrough' + | 'onCanPlayThroughCapture' + | 'onDurationChange' + | 'onDurationChangeCapture' + | 'onEmptied' + | 'onEmptiedCapture' + | 'onEncrypted' + | 'onEncryptedCapture' + | 'onEnded' + | 'onEndedCapture' + | 'onLoadedData' + | 'onLoadedDataCapture' + | 'onLoadedMetadata' + | 'onLoadedMetadataCapture' + | 'onLoadStart' + | 'onLoadStartCapture' + | 'onPause' + | 'onPauseCapture' + | 'onPlay' + | 'onPlayCapture' + | 'onPlaying' + | 'onPlayingCapture' + | 'onProgress' + | 'onProgressCapture' + | 'onRateChange' + | 'onRateChangeCapture' + | 'onSeeked' + | 'onSeekedCapture' + | 'onSeeking' + | 'onSeekingCapture' + | 'onStalled' + | 'onStalledCapture' + | 'onSuspend' + | 'onSuspendCapture' + | 'onTimeUpdate' + | 'onTimeUpdateCapture' + | 'onVolumeChange' + | 'onVolumeChangeCapture' + | 'onWaiting' + | 'onWaitingCapture' + | 'onAuxClick' + | 'onAuxClickCapture' + | 'onClick' + | 'onClickCapture' + | 'onContextMenu' + | 'onContextMenuCapture' + | 'onDoubleClick' + | 'onDoubleClickCapture' + | 'onDrag' + | 'onDragCapture' + | 'onDragEnd' + | 'onDragEndCapture' + | 'onDragEnter' + | 'onDragEnterCapture' + | 'onDragExit' + | 'onDragExitCapture' + | 'onDragLeave' + | 'onDragLeaveCapture' + | 'onDragOver' + | 'onDragOverCapture' + | 'onDragStart' + | 'onDragStartCapture' + | 'onDrop' + | 'onDropCapture' + | 'onMouseDown' + | 'onMouseDownCapture' + | 'onMouseEnter' + | 'onMouseLeave' + | 'onMouseMove' + | 'onMouseMoveCapture' + | 'onMouseOut' + | 'onMouseOutCapture' + | 'onMouseOver' + | 'onMouseOverCapture' + | 'onMouseUp' + | 'onMouseUpCapture' + | 'onSelect' + | 'onSelectCapture' + | 'onTouchCancel' + | 'onTouchCancelCapture' + | 'onTouchEnd' + | 'onTouchEndCapture' + | 'onTouchMove' + | 'onTouchMoveCapture' + | 'onTouchStart' + | 'onTouchStartCapture' + | 'onPointerDown' + | 'onPointerDownCapture' + | 'onPointerMove' + | 'onPointerMoveCapture' + | 'onPointerUp' + | 'onPointerUpCapture' + | 'onPointerCancel' + | 'onPointerCancelCapture' + | 'onPointerEnter' + | 'onPointerEnterCapture' + | 'onPointerLeave' + | 'onPointerLeaveCapture' + | 'onPointerOver' + | 'onPointerOverCapture' + | 'onPointerOut' + | 'onPointerOutCapture' + | 'onGotPointerCapture' + | 'onGotPointerCaptureCapture' + | 'onLostPointerCapture' + | 'onLostPointerCaptureCapture' + | 'onScroll' + | 'onScrollCapture' + | 'onWheel' + | 'onWheelCapture' + | 'onAnimationStart' + | 'onAnimationStartCapture' + | 'onAnimationEnd' + | 'onAnimationEndCapture' + | 'onAnimationIteration' + | 'onAnimationIterationCapture' + | 'onTransitionEnd' + | 'onTransitionEndCapture' + | 'component' + | 'variant' + | 'innerRef' + | 'download' + | 'href' + | 'hrefLang' + | 'ping' + | 'rel' + | 'target' + | 'type' + | 'referrerPolicy' + | 'noWrap' + | 'gutterBottom' + | 'paragraph' + | 'align' + | 'variantMapping' + | 'state' + | 'TypographyClasses' + | 'entityRef' + | 'defaultKind' + > & + React_2.RefAttributes +>; // @public (undocumented) -export const EntityRefLinks: ({ entityRefs, defaultKind, ...linkProps }: EntityRefLinksProps) => JSX.Element; +export const EntityRefLinks: ({ + entityRefs, + defaultKind, + ...linkProps +}: EntityRefLinksProps) => JSX.Element; // @public (undocumented) -export const entityRoute: RouteRef< { -name: string; -kind: string; -namespace: string; +export const entityRoute: RouteRef<{ + name: string; + kind: string; + namespace: string; }>; // @public (undocumented) -export function entityRouteParams(entity: Entity): { - readonly kind: string; - readonly namespace: string; - readonly name: string; +export function entityRouteParams( + entity: Entity, +): { + readonly kind: string; + readonly namespace: string; + readonly name: string; }; // @public (undocumented) -export const entityRouteRef: RouteRef< { -name: string; -kind: string; -namespace: string; +export const entityRouteRef: RouteRef<{ + name: string; + kind: string; + namespace: string; }>; // @public (undocumented) @@ -168,32 +475,38 @@ export const EntitySearchBar: () => JSX.Element; // @public (undocumented) export type EntitySourceLocation = { - locationTargetUrl: string; - integrationType?: string; + locationTargetUrl: string; + integrationType?: string; }; // @public (undocumented) -export function EntityTable({ entities, title, emptyContent, variant, columns, }: Props): JSX.Element; +export function EntityTable({ + entities, + title, + emptyContent, + variant, + columns, +}: Props): JSX.Element; // @public (undocumented) export namespace EntityTable { - var // (undocumented) + var // (undocumented) columns: typeof columnFactories; - var // (undocumented) + var // (undocumented) systemEntityColumns: TableColumn[]; - var // (undocumented) + var // (undocumented) componentEntityColumns: TableColumn[]; } // @public (undocumented) export class EntityTagFilter implements EntityFilter { - constructor(values: string[]); - // (undocumented) - filterEntity(entity: Entity): boolean; - // (undocumented) - toQueryValue(): string[]; - // (undocumented) - readonly values: string[]; + constructor(values: string[]); + // (undocumented) + filterEntity(entity: Entity): boolean; + // (undocumented) + toQueryValue(): string[]; + // (undocumented) + readonly values: string[]; } // @public (undocumented) @@ -201,33 +514,36 @@ export const EntityTagPicker: () => JSX.Element | null; // @public (undocumented) export class EntityTextFilter implements EntityFilter { - constructor(value: string); - // (undocumented) - filterEntity(entity: Entity): boolean; - // (undocumented) - readonly value: string; + constructor(value: string); + // (undocumented) + filterEntity(entity: Entity): boolean; + // (undocumented) + readonly value: string; } // @public (undocumented) export class EntityTypeFilter implements EntityFilter { - constructor(value: string | string[]); - // (undocumented) - getCatalogFilters(): Record; - // (undocumented) - getTypes(): string[]; - // (undocumented) - toQueryValue(): string[]; - // (undocumented) - readonly value: string | string[]; + constructor(value: string | string[]); + // (undocumented) + getCatalogFilters(): Record; + // (undocumented) + getTypes(): string[]; + // (undocumented) + toQueryValue(): string[]; + // (undocumented) + readonly value: string | string[]; } // @public (undocumented) export const EntityTypePicker: () => JSX.Element | null; // @public (undocumented) -export function formatEntityRefTitle(entityRef: Entity | EntityName, opts?: { +export function formatEntityRefTitle( + entityRef: Entity | EntityName, + opts?: { defaultKind?: string; -}): string; + }, +): string; // @public (undocumented) export function getEntityMetadataEditUrl(entity: Entity): string | undefined; @@ -236,49 +552,65 @@ export function getEntityMetadataEditUrl(entity: Entity): string | undefined; export function getEntityMetadataViewUrl(entity: Entity): string | undefined; // @public -export function getEntityRelations(entity: Entity | undefined, relationType: string, filter?: { +export function getEntityRelations( + entity: Entity | undefined, + relationType: string, + filter?: { kind: string; -}): EntityName[]; + }, +): EntityName[]; // @public (undocumented) -export function getEntitySourceLocation(entity: Entity, scmIntegrationsApi: ScmIntegrationRegistry): EntitySourceLocation | undefined; +export function getEntitySourceLocation( + entity: Entity, + scmIntegrationsApi: ScmIntegrationRegistry, +): EntitySourceLocation | undefined; // @public export function isOwnerOf(owner: Entity, owned: Entity): boolean; // @public (undocumented) -export const MockEntityListContextProvider: ({ children, value, }: React_2.PropsWithChildren<{ - value: Partial; +export const MockEntityListContextProvider: ({ + children, + value, +}: React_2.PropsWithChildren<{ + value: Partial; }>) => JSX.Element; // @public (undocumented) -export function reduceCatalogFilters(filters: EntityFilter[]): Record; +export function reduceCatalogFilters( + filters: EntityFilter[], +): Record; // @public (undocumented) -export function reduceEntityFilters(filters: EntityFilter[]): (entity: Entity) => boolean; +export function reduceEntityFilters( + filters: EntityFilter[], +): (entity: Entity) => boolean; // @public (undocumented) export const rootRoute: RouteRef; // @public export function useEntity(): { - entity: T; - loading: boolean; - error: Error | undefined; + entity: T; + loading: boolean; + error: Error | undefined; }; // @public export const useEntityCompoundName: () => { - kind: string; - namespace: string; - name: string; + kind: string; + namespace: string; + name: string; }; // @public (undocumented) export const useEntityFromUrl: () => EntityLoadingStatus; // @public (undocumented) -export function useEntityListProvider(): EntityListContextProps; +export function useEntityListProvider< + EntityFilters extends DefaultEntityFilters = DefaultEntityFilters +>(): EntityListContextProps; // @public export function useEntityTypeFilter(): EntityTypeReturn; @@ -287,43 +619,55 @@ export function useEntityTypeFilter(): EntityTypeReturn; export function useOwnUser(): AsyncState; // @public (undocumented) -export function useRelatedEntities(entity: Entity, { type, kind }: { +export function useRelatedEntities( + entity: Entity, + { + type, + kind, + }: { type?: string; kind?: string; -}): { - entities: Entity[] | undefined; - loading: boolean; - error: Error | undefined; + }, +): { + entities: Entity[] | undefined; + loading: boolean; + error: Error | undefined; }; // @public (undocumented) export class UserListFilter implements EntityFilter { - constructor(value: UserListFilterKind, user: UserEntity | undefined, isStarredEntity: (entity: Entity) => boolean); - // (undocumented) - filterEntity(entity: Entity): boolean; - // (undocumented) - readonly isStarredEntity: (entity: Entity) => boolean; - // (undocumented) - toQueryValue(): string; - // (undocumented) - readonly user: UserEntity | undefined; - // (undocumented) - readonly value: UserListFilterKind; + constructor( + value: UserListFilterKind, + user: UserEntity | undefined, + isStarredEntity: (entity: Entity) => boolean, + ); + // (undocumented) + filterEntity(entity: Entity): boolean; + // (undocumented) + readonly isStarredEntity: (entity: Entity) => boolean; + // (undocumented) + toQueryValue(): string; + // (undocumented) + readonly user: UserEntity | undefined; + // (undocumented) + readonly value: UserListFilterKind; } // @public (undocumented) export type UserListFilterKind = 'owned' | 'starred' | 'all'; // @public (undocumented) -export const UserListPicker: ({ initialFilter, availableFilters, }: UserListPickerProps) => JSX.Element; +export const UserListPicker: ({ + initialFilter, + availableFilters, +}: UserListPickerProps) => JSX.Element; // @public (undocumented) export const useStarredEntities: () => { - starredEntities: Set; - toggleStarredEntity: (entity: Entity) => void; - isStarredEntity: (entity: Entity) => boolean; + starredEntities: Set; + toggleStarredEntity: (entity: Entity) => void; + isStarredEntity: (entity: Entity) => boolean; }; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index 7bfd286440..86b2322246 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { BackstagePlugin } from '@backstage/core-plugin-api'; @@ -28,50 +27,62 @@ export function AboutCard({ variant }: AboutCardProps): JSX.Element; export const AboutContent: ({ entity }: Props_2) => JSX.Element; // @public (undocumented) -export const AboutField: ({ label, value, gridSizes, children }: Props_3) => JSX.Element; +export const AboutField: ({ + label, + value, + gridSizes, + children, +}: Props_3) => JSX.Element; // @public (undocumented) export const CatalogEntityPage: () => JSX.Element; // @public (undocumented) -export const CatalogIndexPage: ({ initiallySelectedFilter, columns, actions, }: CatalogPageProps) => JSX.Element; +export const CatalogIndexPage: ({ + initiallySelectedFilter, + columns, + actions, +}: CatalogPageProps) => JSX.Element; // @public (undocumented) export const CatalogLayout: ({ children }: Props) => JSX.Element; // @public (undocumented) -const catalogPlugin: BackstagePlugin< { -catalogIndex: RouteRef; -catalogEntity: RouteRef< { -name: string; -kind: string; -namespace: string; -}>; -}, { -createComponent: ExternalRouteRef; -}>; -export { catalogPlugin } -export { catalogPlugin as plugin } +const catalogPlugin: BackstagePlugin< + { + catalogIndex: RouteRef; + catalogEntity: RouteRef<{ + name: string; + kind: string; + namespace: string; + }>; + }, + { + createComponent: ExternalRouteRef; + } +>; +export { catalogPlugin }; +export { catalogPlugin as plugin }; // @public (undocumented) export const CatalogResultListItem: ({ result }: any) => JSX.Element; // @public (undocumented) export const CatalogTable: { - ({ columns, actions }: CatalogTableProps): JSX.Element; - columns: typeof columnFactories; + ({ columns, actions }: CatalogTableProps): JSX.Element; + columns: typeof columnFactories; }; // @public (undocumented) export type CatalogTableRow = { - entity: Entity; - resolved: { - name: string; - partOfSystemRelationTitle?: string; - partOfSystemRelations: EntityName[]; - ownedByRelationsTitle?: string; - ownedByRelations: EntityName[]; - }; + entity: Entity; + resolved: { + name: string; + partOfSystemRelationTitle?: string; + partOfSystemRelations: EntityName[]; + ownedByRelationsTitle?: string; + ownedByRelations: EntityName[]; + }; }; // @public (undocumented) @@ -81,7 +92,9 @@ export const CreateComponentButton: () => JSX.Element | null; export function createMetadataDescriptionColumn(): TableColumn; // @public (undocumented) -export function createNameColumn(props?: NameColumnProps): TableColumn; +export function createNameColumn( + props?: NameColumnProps, +): TableColumn; // @public (undocumented) export function createOwnerColumn(): TableColumn; @@ -102,53 +115,76 @@ export function createTagsColumn(): TableColumn; export const EntityAboutCard: AboutCard; // @public (undocumented) -export const EntityDependencyOfComponentsCard: ({ variant, title, }: { - variant?: "gridItem" | undefined; - title?: string | undefined; +export const EntityDependencyOfComponentsCard: ({ + variant, + title, +}: { + variant?: 'gridItem' | undefined; + title?: string | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityDependsOnComponentsCard: ({ variant, title, }: { - variant?: "gridItem" | undefined; - title?: string | undefined; +export const EntityDependsOnComponentsCard: ({ + variant, + title, +}: { + variant?: 'gridItem' | undefined; + title?: string | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityDependsOnResourcesCard: ({ variant }: { - variant?: "gridItem" | undefined; +export const EntityDependsOnResourcesCard: ({ + variant, +}: { + variant?: 'gridItem' | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityHasComponentsCard: ({ variant }: { - variant?: "gridItem" | undefined; +export const EntityHasComponentsCard: ({ + variant, +}: { + variant?: 'gridItem' | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityHasResourcesCard: ({ variant }: { - variant?: "gridItem" | undefined; +export const EntityHasResourcesCard: ({ + variant, +}: { + variant?: 'gridItem' | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityHasSubcomponentsCard: ({ variant }: { - variant?: "gridItem" | undefined; +export const EntityHasSubcomponentsCard: ({ + variant, +}: { + variant?: 'gridItem' | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityHasSystemsCard: ({ variant }: { - variant?: "gridItem" | undefined; +export const EntityHasSystemsCard: ({ + variant, +}: { + variant?: 'gridItem' | undefined; }) => JSX.Element; // @public export const EntityLayout: { - ({ UNSTABLE_extraContextMenuItems, children, }: EntityLayoutProps): JSX.Element; - Route: (props: SubRoute) => null; + ({ + UNSTABLE_extraContextMenuItems, + UNSTABLE_contextMenuOptions, + children, + }: EntityLayoutProps): JSX.Element; + Route: (props: SubRoute) => null; }; // @public (undocumented) -export const EntityLinksCard: ({ cols, variant }: { - entity?: Entity | undefined; - cols?: number | ColumnBreakpoints | undefined; - variant?: "gridItem" | undefined; +export const EntityLinksCard: ({ + cols, + variant, +}: { + entity?: Entity | undefined; + cols?: number | ColumnBreakpoints | undefined; + variant?: 'gridItem' | undefined; }) => JSX.Element; // @public @@ -156,21 +192,25 @@ export const EntityOrphanWarning: () => JSX.Element; // @public (undocumented) export const EntityPageLayout: { - ({ children, UNSTABLE_extraContextMenuItems, }: EntityPageLayoutProps): JSX.Element; - Content: (_props: { - path: string; - title: string; - element: JSX.Element; - }) => null; + ({ + children, + UNSTABLE_extraContextMenuItems, + UNSTABLE_contextMenuOptions, + }: EntityPageLayoutProps): JSX.Element; + Content: (_props: { + path: string; + title: string; + element: JSX.Element; + }) => null; }; // @public (undocumented) export const EntitySwitch: { - ({ children }: PropsWithChildren<{}>): JSX.Element | null; - Case: (_: { - if?: ((entity: Entity) => boolean) | undefined; - children: ReactNode; - }) => null; + ({ children }: PropsWithChildren<{}>): JSX.Element | null; + Case: (_: { + if?: ((entity: Entity) => boolean) | undefined; + children: ReactNode; + }) => null; }; // @public (undocumented) @@ -189,10 +229,11 @@ export function isNamespace(namespace: string): (entity: Entity) => boolean; export const isOrphan: (entity: Entity) => boolean; // @public (undocumented) -export const Router: ({ EntityPage, }: { - EntityPage?: React_2.ComponentType<{}> | undefined; +export const Router: ({ + EntityPage, +}: { + EntityPage?: React_2.ComponentType<{}> | undefined; }) => JSX.Element; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/circleci/api-report.md b/plugins/circleci/api-report.md index 3bb2c79140..7bb1b7766a 100644 --- a/plugins/circleci/api-report.md +++ b/plugins/circleci/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -19,29 +18,41 @@ import { GitType } from 'circleci-api'; import { Me } from 'circleci-api'; import { RouteRef } from '@backstage/core-plugin-api'; -export { BuildStepAction } +export { BuildStepAction }; -export { BuildSummary } +export { BuildSummary }; -export { BuildWithSteps } +export { BuildWithSteps }; // @public (undocumented) -export const CIRCLECI_ANNOTATION = "circleci.com/project-slug"; +export const CIRCLECI_ANNOTATION = 'circleci.com/project-slug'; // @public (undocumented) export class CircleCIApi { - constructor(options: Options); - // (undocumented) - getBuild(buildNumber: number, options: Partial): Promise; - // (undocumented) - getBuilds({ limit, offset }: { - limit: number; - offset: number; - }, options: Partial): Promise; - // (undocumented) - getUser(options: Partial): Promise; - // (undocumented) - retry(buildNumber: number, options: Partial): Promise; + constructor(options: Options); + // (undocumented) + getBuild( + buildNumber: number, + options: Partial, + ): Promise; + // (undocumented) + getBuilds( + { + limit, + offset, + }: { + limit: number; + offset: number; + }, + options: Partial, + ): Promise; + // (undocumented) + getUser(options: Partial): Promise; + // (undocumented) + retry( + buildNumber: number, + options: Partial, + ): Promise; } // @public (undocumented) @@ -51,28 +62,27 @@ export const circleCIApiRef: ApiRef; export const circleCIBuildRouteRef: RouteRef; // @public (undocumented) -const circleCIPlugin: BackstagePlugin< {}, {}>; -export { circleCIPlugin } -export { circleCIPlugin as plugin } +const circleCIPlugin: BackstagePlugin<{}, {}>; +export { circleCIPlugin }; +export { circleCIPlugin as plugin }; // @public (undocumented) export const circleCIRouteRef: RouteRef; // @public (undocumented) export const EntityCircleCIContent: (_props: { - entity?: Entity | undefined; + entity?: Entity | undefined; }) => JSX.Element; -export { GitType } +export { GitType }; // @public (undocumented) const isCircleCIAvailable: (entity: Entity) => boolean; -export { isCircleCIAvailable } -export { isCircleCIAvailable as isPluginApplicableToEntity } +export { isCircleCIAvailable }; +export { isCircleCIAvailable as isPluginApplicableToEntity }; // @public (undocumented) export const Router: (_props: Props) => JSX.Element; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/cloudbuild/api-report.md b/plugins/cloudbuild/api-report.md index 441cc4f3f5..8c2d7876b2 100644 --- a/plugins/cloudbuild/api-report.md +++ b/plugins/cloudbuild/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -14,62 +13,71 @@ import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) export type ActionsGetWorkflowResponseData = { - id: string; - status: string; - source: Source; - createTime: string; - startTime: string; - steps: Step[]; - timeout: string; - projectId: string; - logsBucket: string; - sourceProvenance: SourceProvenance; - buildTriggerId: string; - options: Options; - logUrl: string; - substitutions: Substitutions; - tags: string[]; - queueTtl: string; - name: string; - finishTime: any; - results: Results; - timing: Timing2; + id: string; + status: string; + source: Source; + createTime: string; + startTime: string; + steps: Step[]; + timeout: string; + projectId: string; + logsBucket: string; + sourceProvenance: SourceProvenance; + buildTriggerId: string; + options: Options; + logUrl: string; + substitutions: Substitutions; + tags: string[]; + queueTtl: string; + name: string; + finishTime: any; + results: Results; + timing: Timing2; }; // @public (undocumented) export interface ActionsListWorkflowRunsForRepoResponseData { - // (undocumented) - builds: ActionsGetWorkflowResponseData[]; + // (undocumented) + builds: ActionsGetWorkflowResponseData[]; } // @public (undocumented) export interface BUILD { - // (undocumented) - endTime: string; - // (undocumented) - startTime: string; + // (undocumented) + endTime: string; + // (undocumented) + startTime: string; } // @public (undocumented) -export const CLOUDBUILD_ANNOTATION = "google.com/cloudbuild-project-slug"; +export const CLOUDBUILD_ANNOTATION = 'google.com/cloudbuild-project-slug'; // @public (undocumented) export type CloudbuildApi = { - listWorkflowRuns: (request: { - projectId: string; - }) => Promise; - getWorkflow: ({ projectId, id, }: { - projectId: string; - id: string; - }) => Promise; - getWorkflowRun: ({ projectId, id, }: { - projectId: string; - id: string; - }) => Promise; - reRunWorkflow: ({ projectId, runId, }: { - projectId: string; - runId: string; - }) => Promise; + listWorkflowRuns: (request: { + projectId: string; + }) => Promise; + getWorkflow: ({ + projectId, + id, + }: { + projectId: string; + id: string; + }) => Promise; + getWorkflowRun: ({ + projectId, + id, + }: { + projectId: string; + id: string; + }) => Promise; + reRunWorkflow: ({ + projectId, + runId, + }: { + projectId: string; + runId: string; + }) => Promise; }; // @public (undocumented) @@ -77,115 +85,137 @@ export const cloudbuildApiRef: ApiRef; // @public (undocumented) export class CloudbuildClient implements CloudbuildApi { - constructor(googleAuthApi: OAuthApi); - // (undocumented) - getToken(): Promise; - // (undocumented) - getWorkflow({ projectId, id, }: { - projectId: string; - id: string; - }): Promise; - // (undocumented) - getWorkflowRun({ projectId, id, }: { - projectId: string; - id: string; - }): Promise; - // (undocumented) - listWorkflowRuns({ projectId, }: { - projectId: string; - }): Promise; - // (undocumented) - reRunWorkflow({ projectId, runId, }: { - projectId: string; - runId: string; - }): Promise; + constructor(googleAuthApi: OAuthApi); + // (undocumented) + getToken(): Promise; + // (undocumented) + getWorkflow({ + projectId, + id, + }: { + projectId: string; + id: string; + }): Promise; + // (undocumented) + getWorkflowRun({ + projectId, + id, + }: { + projectId: string; + id: string; + }): Promise; + // (undocumented) + listWorkflowRuns({ + projectId, + }: { + projectId: string; + }): Promise; + // (undocumented) + reRunWorkflow({ + projectId, + runId, + }: { + projectId: string; + runId: string; + }): Promise; } // @public (undocumented) -const cloudbuildPlugin: BackstagePlugin< { -entityContent: RouteRef; -}, {}>; -export { cloudbuildPlugin } -export { cloudbuildPlugin as plugin } +const cloudbuildPlugin: BackstagePlugin< + { + entityContent: RouteRef; + }, + {} +>; +export { cloudbuildPlugin }; +export { cloudbuildPlugin as plugin }; // @public (undocumented) export const EntityCloudbuildContent: (_props: { - entity?: Entity | undefined; + entity?: Entity | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityLatestCloudbuildRunCard: ({ branch, }: { - entity?: Entity | undefined; - branch: string; +export const EntityLatestCloudbuildRunCard: ({ + branch, +}: { + entity?: Entity | undefined; + branch: string; }) => JSX.Element; // @public (undocumented) -export const EntityLatestCloudbuildsForBranchCard: ({ branch, }: { - entity?: Entity | undefined; - branch: string; +export const EntityLatestCloudbuildsForBranchCard: ({ + branch, +}: { + entity?: Entity | undefined; + branch: string; }) => JSX.Element; // @public (undocumented) export interface FETCHSOURCE { - // (undocumented) - endTime: string; - // (undocumented) - startTime: string; + // (undocumented) + endTime: string; + // (undocumented) + startTime: string; } // @public (undocumented) const isCloudbuildAvailable: (entity: Entity) => boolean; -export { isCloudbuildAvailable } -export { isCloudbuildAvailable as isPluginApplicableToEntity } +export { isCloudbuildAvailable }; +export { isCloudbuildAvailable as isPluginApplicableToEntity }; // @public (undocumented) -export const LatestWorkflowRunCard: ({ branch, }: { - entity?: Entity | undefined; - branch: string; +export const LatestWorkflowRunCard: ({ + branch, +}: { + entity?: Entity | undefined; + branch: string; }) => JSX.Element; // @public (undocumented) -export const LatestWorkflowsForBranchCard: ({ branch, }: { - entity?: Entity | undefined; - branch: string; +export const LatestWorkflowsForBranchCard: ({ + branch, +}: { + entity?: Entity | undefined; + branch: string; }) => JSX.Element; // @public (undocumented) export interface Options { - // (undocumented) - dynamicSubstitutions: boolean; - // (undocumented) - logging: string; - // (undocumented) - machineType: string; - // (undocumented) - substitutionOption: string; + // (undocumented) + dynamicSubstitutions: boolean; + // (undocumented) + logging: string; + // (undocumented) + machineType: string; + // (undocumented) + substitutionOption: string; } // @public (undocumented) export interface PullTiming { - // (undocumented) - endTime: string; - // (undocumented) - startTime: string; + // (undocumented) + endTime: string; + // (undocumented) + startTime: string; } // @public (undocumented) export interface ResolvedStorageSource { - // (undocumented) - bucket: string; - // (undocumented) - generation: string; - // (undocumented) - object: string; + // (undocumented) + bucket: string; + // (undocumented) + generation: string; + // (undocumented) + object: string; } // @public (undocumented) export interface Results { - // (undocumented) - buildStepImages: string[]; - // (undocumented) - buildStepOutputs: string[]; + // (undocumented) + buildStepImages: string[]; + // (undocumented) + buildStepOutputs: string[]; } // @public (undocumented) @@ -193,88 +223,87 @@ export const Router: (_props: Props) => JSX.Element; // @public (undocumented) export interface Source { - // (undocumented) - storageSource: StorageSource; + // (undocumented) + storageSource: StorageSource; } // @public (undocumented) export interface SourceProvenance { - // (undocumented) - fileHashes: {}; - // (undocumented) - resolvedStorageSource: {}; + // (undocumented) + fileHashes: {}; + // (undocumented) + resolvedStorageSource: {}; } // @public (undocumented) export interface Step { - // (undocumented) - args: string[]; - // (undocumented) - dir: string; - // (undocumented) - entrypoint: string; - // (undocumented) - id: string; - // (undocumented) - name: string; - // (undocumented) - pullTiming: PullTiming; - // (undocumented) - status: string; - // (undocumented) - timing: Timing; - // (undocumented) - volumes: Volume[]; - // (undocumented) - waitFor: string[]; + // (undocumented) + args: string[]; + // (undocumented) + dir: string; + // (undocumented) + entrypoint: string; + // (undocumented) + id: string; + // (undocumented) + name: string; + // (undocumented) + pullTiming: PullTiming; + // (undocumented) + status: string; + // (undocumented) + timing: Timing; + // (undocumented) + volumes: Volume[]; + // (undocumented) + waitFor: string[]; } // @public (undocumented) export interface StorageSource { - // (undocumented) - bucket: string; - // (undocumented) - object: string; + // (undocumented) + bucket: string; + // (undocumented) + object: string; } // @public (undocumented) export interface Substitutions { - // (undocumented) - BRANCH_NAME: string; - // (undocumented) - COMMIT_SHA: string; - // (undocumented) - REPO_NAME: string; - // (undocumented) - REVISION_ID: string; - // (undocumented) - SHORT_SHA: string; + // (undocumented) + BRANCH_NAME: string; + // (undocumented) + COMMIT_SHA: string; + // (undocumented) + REPO_NAME: string; + // (undocumented) + REVISION_ID: string; + // (undocumented) + SHORT_SHA: string; } // @public (undocumented) export interface Timing { - // (undocumented) - endTime: string; - // (undocumented) - startTime: string; + // (undocumented) + endTime: string; + // (undocumented) + startTime: string; } // @public (undocumented) export interface Timing2 { - // (undocumented) - BUILD: BUILD; - // (undocumented) - FETCHSOURCE: FETCHSOURCE; + // (undocumented) + BUILD: BUILD; + // (undocumented) + FETCHSOURCE: FETCHSOURCE; } // @public (undocumented) export interface Volume { - // (undocumented) - name: string; - // (undocumented) - path: string; + // (undocumented) + name: string; + // (undocumented) + path: string; } // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/code-coverage-backend/api-report.md b/plugins/code-coverage-backend/api-report.md index 186b76fb39..fb7e844f13 100644 --- a/plugins/code-coverage-backend/api-report.md +++ b/plugins/code-coverage-backend/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { Config } from '@backstage/config'; import express from 'express'; import { Logger as Logger_2 } from 'winston'; @@ -13,8 +12,8 @@ import { UrlReader } from '@backstage/backend-common'; // @public (undocumented) export interface CodeCoverageApi { - // (undocumented) - name: string; + // (undocumented) + name: string; } // @public (undocumented) @@ -25,19 +24,17 @@ export const makeRouter: (options: RouterOptions) => Promise; // @public (undocumented) export interface RouterOptions { - // (undocumented) - config: Config; - // (undocumented) - database: PluginDatabaseManager; - // (undocumented) - discovery: PluginEndpointDiscovery; - // (undocumented) - logger: Logger_2; - // (undocumented) - urlReader: UrlReader; + // (undocumented) + config: Config; + // (undocumented) + database: PluginDatabaseManager; + // (undocumented) + discovery: PluginEndpointDiscovery; + // (undocumented) + logger: Logger_2; + // (undocumented) + urlReader: UrlReader; } - // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/code-coverage/api-report.md b/plugins/code-coverage/api-report.md index c850f0cb48..cd69066d4f 100644 --- a/plugins/code-coverage/api-report.md +++ b/plugins/code-coverage/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { BackstagePlugin } from '@backstage/core-plugin-api'; @@ -11,21 +10,23 @@ import { Entity } from '@backstage/catalog-model'; import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) -export const codeCoveragePlugin: BackstagePlugin< { -root: RouteRef; -}, {}>; +export const codeCoveragePlugin: BackstagePlugin< + { + root: RouteRef; + }, + {} +>; // @public (undocumented) export const EntityCodeCoverageContent: () => JSX.Element; // @public (undocumented) const isCodeCoverageAvailable: (entity: Entity) => boolean; -export { isCodeCoverageAvailable } -export { isCodeCoverageAvailable as isPluginApplicableToEntity } +export { isCodeCoverageAvailable }; +export { isCodeCoverageAvailable as isPluginApplicableToEntity }; // @public (undocumented) export const Router: () => JSX.Element; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/config-schema/api-report.md b/plugins/config-schema/api-report.md index fee63e9f23..e01cc67888 100644 --- a/plugins/config-schema/api-report.md +++ b/plugins/config-schema/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -14,8 +13,8 @@ import { Schema } from 'jsonschema'; // @public (undocumented) export interface ConfigSchemaApi { - // (undocumented) - schema$(): Observable; + // (undocumented) + schema$(): Observable; } // @public (undocumented) @@ -25,19 +24,19 @@ export const configSchemaApiRef: ApiRef; export const ConfigSchemaPage: () => JSX.Element; // @public (undocumented) -export const configSchemaPlugin: BackstagePlugin< { -root: RouteRef; -}, {}>; +export const configSchemaPlugin: BackstagePlugin< + { + root: RouteRef; + }, + {} +>; // @public export class StaticSchemaLoader implements ConfigSchemaApi { - constructor({ url }?: { - url?: string; - }); - // (undocumented) - schema$(): Observable; + constructor({ url }?: { url?: string }); + // (undocumented) + schema$(): Observable; } // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/cost-insights/api-report.md b/plugins/cost-insights/api-report.md index a679715671..2c32f09c53 100644 --- a/plugins/cost-insights/api-report.md +++ b/plugins/cost-insights/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -25,44 +24,44 @@ import { TypographyProps } from '@material-ui/core'; // @public export type Alert = { - title: string | JSX.Element; - subtitle: string | JSX.Element; - element?: JSX.Element; - status?: AlertStatus; - url?: string; - buttonText?: string; - SnoozeForm?: Maybe; - AcceptForm?: Maybe; - DismissForm?: Maybe; - onSnoozed?(options: AlertOptions): Promise; - onAccepted?(options: AlertOptions): Promise; - onDismissed?(options: AlertOptions): Promise; + title: string | JSX.Element; + subtitle: string | JSX.Element; + element?: JSX.Element; + status?: AlertStatus; + url?: string; + buttonText?: string; + SnoozeForm?: Maybe; + AcceptForm?: Maybe; + DismissForm?: Maybe; + onSnoozed?(options: AlertOptions): Promise; + onAccepted?(options: AlertOptions): Promise; + onDismissed?(options: AlertOptions): Promise; }; // @public (undocumented) export interface AlertCost { - // (undocumented) - aggregation: [number, number]; - // (undocumented) - id: string; + // (undocumented) + aggregation: [number, number]; + // (undocumented) + id: string; } // @public (undocumented) export interface AlertDismissFormData { - // (undocumented) - feedback: Maybe; - // (undocumented) - other: Maybe; - // (undocumented) - reason: AlertDismissReason; + // (undocumented) + feedback: Maybe; + // (undocumented) + other: Maybe; + // (undocumented) + reason: AlertDismissReason; } // @public (undocumented) export interface AlertDismissOption { - // (undocumented) - label: string; - // (undocumented) - reason: string; + // (undocumented) + label: string; + // (undocumented) + reason: string; } // @public (undocumented) @@ -70,48 +69,53 @@ export const AlertDismissOptions: AlertDismissOption[]; // @public (undocumented) export enum AlertDismissReason { - // (undocumented) - Expected = "expected", - // (undocumented) - Migration = "migration", - // (undocumented) - NotApplicable = "not-applicable", - // (undocumented) - Other = "other", - // (undocumented) - Resolved = "resolved", - // (undocumented) - Seasonal = "seasonal" + // (undocumented) + Expected = 'expected', + // (undocumented) + Migration = 'migration', + // (undocumented) + NotApplicable = 'not-applicable', + // (undocumented) + Other = 'other', + // (undocumented) + Resolved = 'resolved', + // (undocumented) + Seasonal = 'seasonal', } // @public (undocumented) -export type AlertForm = ForwardRefExoticComponent & RefAttributes>; +export type AlertForm< + A extends Alert = any, + Data = any +> = ForwardRefExoticComponent< + AlertFormProps & RefAttributes +>; // @public (undocumented) export type AlertFormProps = { - alert: A; - onSubmit: (data: FormData) => void; - disableSubmit: (isDisabled: boolean) => void; + alert: A; + onSubmit: (data: FormData) => void; + disableSubmit: (isDisabled: boolean) => void; }; // @public (undocumented) export interface AlertOptions { - // (undocumented) - data: T; - // (undocumented) - group: string; + // (undocumented) + data: T; + // (undocumented) + group: string; } // @public export interface AlertSnoozeFormData { - // (undocumented) - intervals: string; + // (undocumented) + intervals: string; } // @public (undocumented) export type AlertSnoozeOption = { - label: string; - duration: Duration; + label: string; + duration: Duration; }; // @public (undocumented) @@ -119,149 +123,175 @@ export const AlertSnoozeOptions: AlertSnoozeOption[]; // @public (undocumented) export enum AlertStatus { - // (undocumented) - Accepted = "accepted", - // (undocumented) - Dismissed = "dismissed", - // (undocumented) - Snoozed = "snoozed" + // (undocumented) + Accepted = 'accepted', + // (undocumented) + Dismissed = 'dismissed', + // (undocumented) + Snoozed = 'snoozed', } // @public (undocumented) -export const BarChart: ({ resources, responsive, displayAmount, options, tooltip, onClick, onMouseMove, }: BarChartProps) => JSX.Element; +export const BarChart: ({ + resources, + responsive, + displayAmount, + options, + tooltip, + onClick, + onMouseMove, +}: BarChartProps) => JSX.Element; // @public -export interface BarChartData extends BarChartOptions { -} +export interface BarChartData extends BarChartOptions {} // @public (undocumented) -export const BarChartLegend: ({ costStart, costEnd, options, children, }: PropsWithChildren) => JSX.Element; +export const BarChartLegend: ({ + costStart, + costEnd, + options, + children, +}: PropsWithChildren) => JSX.Element; // @public (undocumented) export type BarChartLegendOptions = { - previousName: string; - previousFill: string; - currentName: string; - currentFill: string; - hideMarker?: boolean; + previousName: string; + previousFill: string; + currentName: string; + currentFill: string; + hideMarker?: boolean; }; // @public (undocumented) export type BarChartLegendProps = { - costStart: number; - costEnd: number; - options?: Partial; + costStart: number; + costEnd: number; + options?: Partial; }; // @public (undocumented) export interface BarChartOptions { - // (undocumented) - currentFill: string; - // (undocumented) - currentName: string; - // (undocumented) - previousFill: string; - // (undocumented) - previousName: string; + // (undocumented) + currentFill: string; + // (undocumented) + currentName: string; + // (undocumented) + previousFill: string; + // (undocumented) + previousName: string; } // @public (undocumented) export type BarChartProps = { - resources: ResourceData[]; - responsive?: boolean; - displayAmount?: number; - options?: Partial; - tooltip?: ContentRenderer; - onClick?: RechartsFunction; - onMouseMove?: RechartsFunction; + resources: ResourceData[]; + responsive?: boolean; + displayAmount?: number; + options?: Partial; + tooltip?: ContentRenderer; + onClick?: RechartsFunction; + onMouseMove?: RechartsFunction; }; // @public (undocumented) -export const BarChartTooltip: ({ title, content, subtitle, topRight, actions, children, }: PropsWithChildren) => JSX.Element; +export const BarChartTooltip: ({ + title, + content, + subtitle, + topRight, + actions, + children, +}: PropsWithChildren) => JSX.Element; // @public (undocumented) -export const BarChartTooltipItem: ({ item }: BarChartTooltipItemProps) => JSX.Element; +export const BarChartTooltipItem: ({ + item, +}: BarChartTooltipItemProps) => JSX.Element; // @public (undocumented) export type BarChartTooltipItemProps = { - item: TooltipItem; + item: TooltipItem; }; // @public (undocumented) export type BarChartTooltipProps = { - title: string; - content?: ReactNode | string; - subtitle?: ReactNode; - topRight?: ReactNode; - actions?: ReactNode; + title: string; + content?: ReactNode | string; + subtitle?: ReactNode; + topRight?: ReactNode; + actions?: ReactNode; }; // @public (undocumented) export interface ChangeStatistic { - // (undocumented) - amount: number; - // (undocumented) - ratio?: number; + // (undocumented) + amount: number; + // (undocumented) + ratio?: number; } // @public (undocumented) export enum ChangeThreshold { - // (undocumented) - lower = -0.05, - // (undocumented) - upper = 0.05 + // (undocumented) + lower = -0.05, + // (undocumented) + upper = 0.05, } // @public (undocumented) export type ChartData = { - date: number; - trend: number; - dailyCost: number; - [key: string]: number; + date: number; + trend: number; + dailyCost: number; + [key: string]: number; }; // @public (undocumented) export interface Cost { - // (undocumented) - aggregation: DateAggregation[]; - // (undocumented) - change?: ChangeStatistic; - // (undocumented) - groupedCosts?: Record; - // (undocumented) - id: string; - // (undocumented) - trendline?: Trendline; + // (undocumented) + aggregation: DateAggregation[]; + // (undocumented) + change?: ChangeStatistic; + // (undocumented) + groupedCosts?: Record; + // (undocumented) + id: string; + // (undocumented) + trendline?: Trendline; } // @public (undocumented) export const CostGrowth: ({ change, duration }: CostGrowthProps) => JSX.Element; // @public (undocumented) -export const CostGrowthIndicator: ({ change, formatter, className, ...props }: CostGrowthIndicatorProps) => JSX.Element; +export const CostGrowthIndicator: ({ + change, + formatter, + className, + ...props +}: CostGrowthIndicatorProps) => JSX.Element; // @public (undocumented) export type CostGrowthIndicatorProps = TypographyProps & { - change: ChangeStatistic; - formatter?: (change: ChangeStatistic) => Maybe; + change: ChangeStatistic; + formatter?: (change: ChangeStatistic) => Maybe; }; // @public (undocumented) export type CostGrowthProps = { - change: ChangeStatistic; - duration: Duration; + change: ChangeStatistic; + duration: Duration; }; // @public (undocumented) export type CostInsightsApi = { - getLastCompleteBillingDate(): Promise; - getUserGroups(userId: string): Promise; - getGroupProjects(group: string): Promise; - getGroupDailyCost(group: string, intervals: string): Promise; - getProjectDailyCost(project: string, intervals: string): Promise; - getDailyMetricData(metric: string, intervals: string): Promise; - getProductInsights(options: ProductInsightsOptions): Promise; - getAlerts(group: string): Promise; + getLastCompleteBillingDate(): Promise; + getUserGroups(userId: string): Promise; + getGroupProjects(group: string): Promise; + getGroupDailyCost(group: string, intervals: string): Promise; + getProjectDailyCost(project: string, intervals: string): Promise; + getDailyMetricData(metric: string, intervals: string): Promise; + getProductInsights(options: ProductInsightsOptions): Promise; + getAlerts(group: string): Promise; }; // @public (undocumented) @@ -274,90 +304,95 @@ export const CostInsightsLabelDataflowInstructionsPage: () => JSX.Element; export const CostInsightsPage: () => JSX.Element; // @public (undocumented) -export type CostInsightsPalette = BackstagePalette & CostInsightsPaletteAdditions; +export type CostInsightsPalette = BackstagePalette & + CostInsightsPaletteAdditions; // @public (undocumented) -export type CostInsightsPaletteOptions = PaletteOptions & CostInsightsPaletteAdditions; +export type CostInsightsPaletteOptions = PaletteOptions & + CostInsightsPaletteAdditions; // @public (undocumented) -const costInsightsPlugin: BackstagePlugin< { -root: RouteRef; -growthAlerts: RouteRef; -unlabeledDataflowAlerts: RouteRef; -}, {}>; -export { costInsightsPlugin } -export { costInsightsPlugin as plugin } +const costInsightsPlugin: BackstagePlugin< + { + root: RouteRef; + growthAlerts: RouteRef; + unlabeledDataflowAlerts: RouteRef; + }, + {} +>; +export { costInsightsPlugin }; +export { costInsightsPlugin as plugin }; // @public (undocumented) export const CostInsightsProjectGrowthInstructionsPage: () => JSX.Element; // @public (undocumented) export interface CostInsightsTheme extends BackstageTheme { - // (undocumented) - palette: CostInsightsPalette; + // (undocumented) + palette: CostInsightsPalette; } // @public (undocumented) export interface CostInsightsThemeOptions extends PaletteOptions { - // (undocumented) - palette: CostInsightsPaletteOptions; + // (undocumented) + palette: CostInsightsPaletteOptions; } // @public (undocumented) export interface Currency { - // (undocumented) - kind: string | null; - // (undocumented) - label: string; - // (undocumented) - prefix?: string; - // (undocumented) - rate?: number; - // (undocumented) - unit: string; + // (undocumented) + kind: string | null; + // (undocumented) + label: string; + // (undocumented) + prefix?: string; + // (undocumented) + rate?: number; + // (undocumented) + unit: string; } // @public (undocumented) export enum CurrencyType { - // (undocumented) - Beers = "BEERS", - // (undocumented) - CarbonOffsetTons = "CARBON_OFFSET_TONS", - // (undocumented) - IceCream = "PINTS_OF_ICE_CREAM", - // (undocumented) - USD = "USD" + // (undocumented) + Beers = 'BEERS', + // (undocumented) + CarbonOffsetTons = 'CARBON_OFFSET_TONS', + // (undocumented) + IceCream = 'PINTS_OF_ICE_CREAM', + // (undocumented) + USD = 'USD', } // @public (undocumented) export enum DataKey { - // (undocumented) - Current = "current", - // (undocumented) - Name = "name", - // (undocumented) - Previous = "previous" + // (undocumented) + Current = 'current', + // (undocumented) + Name = 'name', + // (undocumented) + Previous = 'previous', } // @public (undocumented) export type DateAggregation = { - date: string; - amount: number; + date: string; + amount: number; }; // @public (undocumented) -export const DEFAULT_DATE_FORMAT = "yyyy-LL-dd"; +export const DEFAULT_DATE_FORMAT = 'yyyy-LL-dd'; // @public export enum Duration { - // (undocumented) - P30D = "P30D", - // (undocumented) - P3M = "P3M", - // (undocumented) - P7D = "P7D", - // (undocumented) - P90D = "P90D" + // (undocumented) + P30D = 'P30D', + // (undocumented) + P3M = 'P3M', + // (undocumented) + P7D = 'P7D', + // (undocumented) + P90D = 'P90D', } // @public (undocumented) @@ -365,81 +400,86 @@ export const EngineerThreshold = 0.5; // @public (undocumented) export interface Entity { - // (undocumented) - aggregation: [number, number]; - // (undocumented) - change: ChangeStatistic; - // (undocumented) - entities: Record; - // (undocumented) - id: Maybe; + // (undocumented) + aggregation: [number, number]; + // (undocumented) + change: ChangeStatistic; + // (undocumented) + entities: Record; + // (undocumented) + id: Maybe; } // @public (undocumented) export class ExampleCostInsightsClient implements CostInsightsApi { - // (undocumented) - getAlerts(group: string): Promise; - // (undocumented) - getDailyMetricData(metric: string, intervals: string): Promise; - // (undocumented) - getGroupDailyCost(group: string, intervals: string): Promise; - // (undocumented) - getGroupProjects(group: string): Promise; - // (undocumented) - getLastCompleteBillingDate(): Promise; - // (undocumented) - getProductInsights(options: ProductInsightsOptions): Promise; - // (undocumented) - getProjectDailyCost(project: string, intervals: string): Promise; - // (undocumented) - getUserGroups(userId: string): Promise; + // (undocumented) + getAlerts(group: string): Promise; + // (undocumented) + getDailyMetricData(metric: string, intervals: string): Promise; + // (undocumented) + getGroupDailyCost(group: string, intervals: string): Promise; + // (undocumented) + getGroupProjects(group: string): Promise; + // (undocumented) + getLastCompleteBillingDate(): Promise; + // (undocumented) + getProductInsights(options: ProductInsightsOptions): Promise; + // (undocumented) + getProjectDailyCost(project: string, intervals: string): Promise; + // (undocumented) + getUserGroups(userId: string): Promise; } // @public (undocumented) export type Group = { - id: string; + id: string; }; // @public (undocumented) export enum GrowthType { - // (undocumented) - Excess = 2, - // (undocumented) - Negligible = 0, - // (undocumented) - Savings = 1 + // (undocumented) + Excess = 2, + // (undocumented) + Negligible = 0, + // (undocumented) + Savings = 1, } // @public (undocumented) export type Icon = { - kind: string; - component: JSX.Element; + kind: string; + component: JSX.Element; }; // @public (undocumented) export enum IconType { - // (undocumented) - Compute = "compute", - // (undocumented) - Data = "data", - // (undocumented) - Database = "database", - // (undocumented) - ML = "ml", - // (undocumented) - Search = "search", - // (undocumented) - Storage = "storage" + // (undocumented) + Compute = 'compute', + // (undocumented) + Data = 'data', + // (undocumented) + Database = 'database', + // (undocumented) + ML = 'ml', + // (undocumented) + Search = 'search', + // (undocumented) + Storage = 'storage', } // @public (undocumented) -export const LegendItem: ({ title, tooltipText, markerColor, children, }: PropsWithChildren) => JSX.Element; +export const LegendItem: ({ + title, + tooltipText, + markerColor, + children, +}: PropsWithChildren) => JSX.Element; // @public (undocumented) export type LegendItemProps = { - title: string; - tooltipText?: string; - markerColor?: string; + title: string; + tooltipText?: string; + markerColor?: string; }; // @public (undocumented) @@ -450,47 +490,53 @@ export type Maybe = T | null; // @public (undocumented) export type Metric = { - kind: string; - name: string; - default: boolean; + kind: string; + name: string; + default: boolean; }; // @public (undocumented) export interface MetricData { - // (undocumented) - aggregation: DateAggregation[]; - // (undocumented) - change: ChangeStatistic; - // (undocumented) - format: 'number' | 'currency'; - // (undocumented) - id: string; + // (undocumented) + aggregation: DateAggregation[]; + // (undocumented) + change: ChangeStatistic; + // (undocumented) + format: 'number' | 'currency'; + // (undocumented) + id: string; } // @public (undocumented) -export const MockConfigProvider: ({ children, ...context }: MockConfigProviderProps) => JSX.Element; +export const MockConfigProvider: ({ + children, + ...context +}: MockConfigProviderProps) => JSX.Element; // @public (undocumented) -export const MockCurrencyProvider: ({ children, ...context }: MockCurrencyProviderProps) => JSX.Element; +export const MockCurrencyProvider: ({ + children, + ...context +}: MockCurrencyProviderProps) => JSX.Element; // @public (undocumented) export interface PageFilters { - // (undocumented) - duration: Duration; - // (undocumented) - group: Maybe; - // (undocumented) - metric: string | null; - // (undocumented) - project: Maybe; + // (undocumented) + duration: Duration; + // (undocumented) + group: Maybe; + // (undocumented) + metric: string | null; + // (undocumented) + project: Maybe; } // @public (undocumented) export interface Product { - // (undocumented) - kind: string; - // (undocumented) - name: string; + // (undocumented) + kind: string; + // (undocumented) + name: string; } // @public (undocumented) @@ -498,123 +544,122 @@ export type ProductFilters = Array; // @public (undocumented) export type ProductInsightsOptions = { - product: string; - group: string; - intervals: string; - project: Maybe; + product: string; + group: string; + intervals: string; + project: Maybe; }; // @public (undocumented) export interface ProductPeriod { - // (undocumented) - duration: Duration; - // (undocumented) - productType: string; + // (undocumented) + duration: Duration; + // (undocumented) + productType: string; } // @public (undocumented) export interface Project { - // (undocumented) - id: string; - // (undocumented) - name?: string; + // (undocumented) + id: string; + // (undocumented) + name?: string; } // @public export class ProjectGrowthAlert implements Alert { - constructor(data: ProjectGrowthData); - // (undocumented) - data: ProjectGrowthData; - // (undocumented) - get element(): JSX.Element; - // (undocumented) - get subtitle(): string; - // (undocumented) - get title(): string; - // (undocumented) - get url(): string; + constructor(data: ProjectGrowthData); + // (undocumented) + data: ProjectGrowthData; + // (undocumented) + get element(): JSX.Element; + // (undocumented) + get subtitle(): string; + // (undocumented) + get title(): string; + // (undocumented) + get url(): string; } // @public (undocumented) export interface ProjectGrowthData { - // (undocumented) - aggregation: [number, number]; - // (undocumented) - change: ChangeStatistic; - // (undocumented) - periodEnd: string; - // (undocumented) - periodStart: string; - // (undocumented) - products: Array; - // (undocumented) - project: string; + // (undocumented) + aggregation: [number, number]; + // (undocumented) + change: ChangeStatistic; + // (undocumented) + periodEnd: string; + // (undocumented) + periodStart: string; + // (undocumented) + products: Array; + // (undocumented) + project: string; } // @public (undocumented) export interface ResourceData { - // (undocumented) - current: number; - // (undocumented) - name: Maybe; - // (undocumented) - previous: number; + // (undocumented) + current: number; + // (undocumented) + name: Maybe; + // (undocumented) + previous: number; } // @public (undocumented) export type TooltipItem = { - fill: string; - label: string; - value: string; + fill: string; + label: string; + value: string; }; // @public (undocumented) export type Trendline = { - slope: number; - intercept: number; + slope: number; + intercept: number; }; // @public export class UnlabeledDataflowAlert implements Alert { - constructor(data: UnlabeledDataflowData); - // (undocumented) - data: UnlabeledDataflowData; - // (undocumented) - get element(): JSX.Element; - // (undocumented) - status?: AlertStatus; - // (undocumented) - get subtitle(): string; - // (undocumented) - get title(): string; - // (undocumented) - get url(): string; + constructor(data: UnlabeledDataflowData); + // (undocumented) + data: UnlabeledDataflowData; + // (undocumented) + get element(): JSX.Element; + // (undocumented) + status?: AlertStatus; + // (undocumented) + get subtitle(): string; + // (undocumented) + get title(): string; + // (undocumented) + get url(): string; } // @public (undocumented) export interface UnlabeledDataflowAlertProject { - // (undocumented) - id: string; - // (undocumented) - labeledCost: number; - // (undocumented) - unlabeledCost: number; + // (undocumented) + id: string; + // (undocumented) + labeledCost: number; + // (undocumented) + unlabeledCost: number; } // @public (undocumented) export interface UnlabeledDataflowData { - // (undocumented) - labeledCost: number; - // (undocumented) - periodEnd: string; - // (undocumented) - periodStart: string; - // (undocumented) - projects: Array; - // (undocumented) - unlabeledCost: number; + // (undocumented) + labeledCost: number; + // (undocumented) + periodEnd: string; + // (undocumented) + periodStart: string; + // (undocumented) + projects: Array; + // (undocumented) + unlabeledCost: number; } // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/explore-react/api-report.md b/plugins/explore-react/api-report.md index cb09408f4b..530c6eedaf 100644 --- a/plugins/explore-react/api-report.md +++ b/plugins/explore-react/api-report.md @@ -3,29 +3,26 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { ApiRef } from '@backstage/core-plugin-api'; // @public (undocumented) export type ExploreTool = { - title: string; - description?: string; - url: string; - image: string; - tags?: string[]; - lifecycle?: string; + title: string; + description?: string; + url: string; + image: string; + tags?: string[]; + lifecycle?: string; }; // @public (undocumented) export interface ExploreToolsConfig { - // (undocumented) - getTools: () => Promise; + // (undocumented) + getTools: () => Promise; } // @public (undocumented) export const exploreToolsConfigRef: ApiRef; - // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/fossa/api-report.md b/plugins/fossa/api-report.md index 2ecb1bc161..2a18f74f1b 100644 --- a/plugins/fossa/api-report.md +++ b/plugins/fossa/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { BackstagePlugin } from '@backstage/core-plugin-api'; @@ -11,18 +10,22 @@ import { InfoCardVariants } from '@backstage/core-components'; import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) -export const EntityFossaCard: ({ variant }: { - variant?: InfoCardVariants | undefined; +export const EntityFossaCard: ({ + variant, +}: { + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) export const FossaPage: () => JSX.Element; // @public (undocumented) -export const fossaPlugin: BackstagePlugin< { -fossaOverview: RouteRef; -}, {}>; +export const fossaPlugin: BackstagePlugin< + { + fossaOverview: RouteRef; + }, + {} +>; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/gcp-projects/api-report.md b/plugins/gcp-projects/api-report.md index dde26fd0bc..b2347b42ad 100644 --- a/plugins/gcp-projects/api-report.md +++ b/plugins/gcp-projects/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -13,12 +12,12 @@ import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) export type GcpApi = { - listProjects(): Promise; - getProject(projectId: string): Promise; - createProject(options: { - projectId: string; - projectName: string; - }): Promise; + listProjects(): Promise; + getProject(projectId: string): Promise; + createProject(options: { + projectId: string; + projectName: string; + }): Promise; }; // @public (undocumented) @@ -26,60 +25,62 @@ export const gcpApiRef: ApiRef; // @public (undocumented) export class GcpClient implements GcpApi { - constructor(googleAuthApi: OAuthApi); - // (undocumented) - createProject(options: { - projectId: string; - projectName: string; - }): Promise; - // (undocumented) - getProject(projectId: string): Promise; - // (undocumented) - getToken(): Promise; - // (undocumented) - listProjects(): Promise; + constructor(googleAuthApi: OAuthApi); + // (undocumented) + createProject(options: { + projectId: string; + projectName: string; + }): Promise; + // (undocumented) + getProject(projectId: string): Promise; + // (undocumented) + getToken(): Promise; + // (undocumented) + listProjects(): Promise; } // @public (undocumented) export const GcpProjectsPage: () => JSX.Element; // @public (undocumented) -const gcpProjectsPlugin: BackstagePlugin< { -root: RouteRef; -}, {}>; -export { gcpProjectsPlugin } -export { gcpProjectsPlugin as plugin } +const gcpProjectsPlugin: BackstagePlugin< + { + root: RouteRef; + }, + {} +>; +export { gcpProjectsPlugin }; +export { gcpProjectsPlugin as plugin }; // @public (undocumented) export type Operation = { - name: string; - metadata: string; - done: boolean; - error: Status; - response: string; + name: string; + metadata: string; + done: boolean; + error: Status; + response: string; }; // @public (undocumented) export type Project = { - name: string; - projectNumber?: string; - projectId: string; - lifecycleState?: string; - createTime?: string; + name: string; + projectNumber?: string; + projectId: string; + lifecycleState?: string; + createTime?: string; }; // @public (undocumented) export type ProjectDetails = { - details: string; + details: string; }; // @public (undocumented) export type Status = { - code: number; - message: string; - details: string[]; + code: number; + message: string; + details: string[]; }; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/git-release-manager/api-report.md b/plugins/git-release-manager/api-report.md index d3e2daa349..3039bb033f 100644 --- a/plugins/git-release-manager/api-report.md +++ b/plugins/git-release-manager/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -17,10 +16,12 @@ export const gitReleaseManagerApiRef: ApiRef; export const GitReleaseManagerPage: GitReleaseManager; // @public (undocumented) -export const gitReleaseManagerPlugin: BackstagePlugin< { -root: RouteRef; -}, {}>; +export const gitReleaseManagerPlugin: BackstagePlugin< + { + root: RouteRef; + }, + {} +>; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/github-actions/api-report.md b/plugins/github-actions/api-report.md index e4e984d03b..e9fb9e09dc 100644 --- a/plugins/github-actions/api-report.md +++ b/plugins/github-actions/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -17,83 +16,138 @@ import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) export enum BuildStatus { - // (undocumented) - 'failure' = 1, - // (undocumented) - 'pending' = 2, - // (undocumented) - 'running' = 3, - // (undocumented) - 'success' = 0 + // (undocumented) + 'failure' = 1, + // (undocumented) + 'pending' = 2, + // (undocumented) + 'running' = 3, + // (undocumented) + 'success' = 0, } // @public (undocumented) export const EntityGithubActionsContent: (_props: { - entity?: Entity | undefined; + entity?: Entity | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityLatestGithubActionRunCard: ({ branch, variant, }: { - entity?: Entity | undefined; - branch: string; - variant?: InfoCardVariants | undefined; +export const EntityLatestGithubActionRunCard: ({ + branch, + variant, +}: { + entity?: Entity | undefined; + branch: string; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityLatestGithubActionsForBranchCard: ({ branch, variant, }: { - entity?: Entity | undefined; - branch: string; - variant?: InfoCardVariants | undefined; +export const EntityLatestGithubActionsForBranchCard: ({ + branch, + variant, +}: { + entity?: Entity | undefined; + branch: string; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityRecentGithubActionsRunsCard: ({ branch, dense, limit, variant, }: Props) => JSX.Element; +export const EntityRecentGithubActionsRunsCard: ({ + branch, + dense, + limit, + variant, +}: Props) => JSX.Element; // @public (undocumented) -export const GITHUB_ACTIONS_ANNOTATION = "github.com/project-slug"; +export const GITHUB_ACTIONS_ANNOTATION = 'github.com/project-slug'; // @public (undocumented) export type GithubActionsApi = { - listWorkflowRuns: ({ hostname, owner, repo, pageSize, page, branch, }: { - hostname?: string; - owner: string; - repo: string; - pageSize?: number; - page?: number; - branch?: string; - }) => Promise; - getWorkflow: ({ hostname, owner, repo, id, }: { - hostname?: string; - owner: string; - repo: string; - id: number; - }) => Promise; - getWorkflowRun: ({ hostname, owner, repo, id, }: { - hostname?: string; - owner: string; - repo: string; - id: number; - }) => Promise; - reRunWorkflow: ({ hostname, owner, repo, runId, }: { - hostname?: string; - owner: string; - repo: string; - runId: number; - }) => Promise; - listJobsForWorkflowRun: ({ hostname, owner, repo, id, pageSize, page, }: { - hostname?: string; - owner: string; - repo: string; - id: number; - pageSize?: number; - page?: number; - }) => Promise; - downloadJobLogsForWorkflowRun: ({ hostname, owner, repo, runId, }: { - hostname?: string; - owner: string; - repo: string; - runId: number; - }) => Promise; + listWorkflowRuns: ({ + hostname, + owner, + repo, + pageSize, + page, + branch, + }: { + hostname?: string; + owner: string; + repo: string; + pageSize?: number; + page?: number; + branch?: string; + }) => Promise< + RestEndpointMethodTypes['actions']['listWorkflowRuns']['response']['data'] + >; + getWorkflow: ({ + hostname, + owner, + repo, + id, + }: { + hostname?: string; + owner: string; + repo: string; + id: number; + }) => Promise< + RestEndpointMethodTypes['actions']['getWorkflow']['response']['data'] + >; + getWorkflowRun: ({ + hostname, + owner, + repo, + id, + }: { + hostname?: string; + owner: string; + repo: string; + id: number; + }) => Promise< + RestEndpointMethodTypes['actions']['getWorkflowRun']['response']['data'] + >; + reRunWorkflow: ({ + hostname, + owner, + repo, + runId, + }: { + hostname?: string; + owner: string; + repo: string; + runId: number; + }) => Promise; + listJobsForWorkflowRun: ({ + hostname, + owner, + repo, + id, + pageSize, + page, + }: { + hostname?: string; + owner: string; + repo: string; + id: number; + pageSize?: number; + page?: number; + }) => Promise< + RestEndpointMethodTypes['actions']['listJobsForWorkflowRun']['response']['data'] + >; + downloadJobLogsForWorkflowRun: ({ + hostname, + owner, + repo, + runId, + }: { + hostname?: string; + owner: string; + repo: string; + runId: number; + }) => Promise< + RestEndpointMethodTypes['actions']['downloadJobLogsForWorkflowRun']['response']['data'] + >; }; // @public (undocumented) @@ -101,110 +155,164 @@ export const githubActionsApiRef: ApiRef; // @public (undocumented) export class GithubActionsClient implements GithubActionsApi { - constructor(options: { - configApi: ConfigApi; - githubAuthApi: OAuthApi; - }); - // (undocumented) - downloadJobLogsForWorkflowRun({ hostname, owner, repo, runId, }: { - hostname?: string; - owner: string; - repo: string; - runId: number; - }): Promise; - // (undocumented) - getWorkflow({ hostname, owner, repo, id, }: { - hostname?: string; - owner: string; - repo: string; - id: number; - }): Promise; - // (undocumented) - getWorkflowRun({ hostname, owner, repo, id, }: { - hostname?: string; - owner: string; - repo: string; - id: number; - }): Promise; - // (undocumented) - listJobsForWorkflowRun({ hostname, owner, repo, id, pageSize, page, }: { - hostname?: string; - owner: string; - repo: string; - id: number; - pageSize?: number; - page?: number; - }): Promise; - // (undocumented) - listWorkflowRuns({ hostname, owner, repo, pageSize, page, branch, }: { - hostname?: string; - owner: string; - repo: string; - pageSize?: number; - page?: number; - branch?: string; - }): Promise; - // (undocumented) - reRunWorkflow({ hostname, owner, repo, runId, }: { - hostname?: string; - owner: string; - repo: string; - runId: number; - }): Promise; + constructor(options: { configApi: ConfigApi; githubAuthApi: OAuthApi }); + // (undocumented) + downloadJobLogsForWorkflowRun({ + hostname, + owner, + repo, + runId, + }: { + hostname?: string; + owner: string; + repo: string; + runId: number; + }): Promise< + RestEndpointMethodTypes['actions']['downloadJobLogsForWorkflowRun']['response']['data'] + >; + // (undocumented) + getWorkflow({ + hostname, + owner, + repo, + id, + }: { + hostname?: string; + owner: string; + repo: string; + id: number; + }): Promise< + RestEndpointMethodTypes['actions']['getWorkflow']['response']['data'] + >; + // (undocumented) + getWorkflowRun({ + hostname, + owner, + repo, + id, + }: { + hostname?: string; + owner: string; + repo: string; + id: number; + }): Promise< + RestEndpointMethodTypes['actions']['getWorkflowRun']['response']['data'] + >; + // (undocumented) + listJobsForWorkflowRun({ + hostname, + owner, + repo, + id, + pageSize, + page, + }: { + hostname?: string; + owner: string; + repo: string; + id: number; + pageSize?: number; + page?: number; + }): Promise< + RestEndpointMethodTypes['actions']['listJobsForWorkflowRun']['response']['data'] + >; + // (undocumented) + listWorkflowRuns({ + hostname, + owner, + repo, + pageSize, + page, + branch, + }: { + hostname?: string; + owner: string; + repo: string; + pageSize?: number; + page?: number; + branch?: string; + }): Promise< + RestEndpointMethodTypes['actions']['listWorkflowRuns']['response']['data'] + >; + // (undocumented) + reRunWorkflow({ + hostname, + owner, + repo, + runId, + }: { + hostname?: string; + owner: string; + repo: string; + runId: number; + }): Promise; } // @public (undocumented) -const githubActionsPlugin: BackstagePlugin< { -entityContent: RouteRef; -}, {}>; -export { githubActionsPlugin } -export { githubActionsPlugin as plugin } +const githubActionsPlugin: BackstagePlugin< + { + entityContent: RouteRef; + }, + {} +>; +export { githubActionsPlugin }; +export { githubActionsPlugin as plugin }; // @public (undocumented) const isGithubActionsAvailable: (entity: Entity) => boolean; -export { isGithubActionsAvailable } -export { isGithubActionsAvailable as isPluginApplicableToEntity } +export { isGithubActionsAvailable }; +export { isGithubActionsAvailable as isPluginApplicableToEntity }; // @public (undocumented) export type Job = { - html_url: string; - status: string; - conclusion: string; - started_at: string; - completed_at: string; - id: number; - name: string; - steps: Step[]; + html_url: string; + status: string; + conclusion: string; + started_at: string; + completed_at: string; + id: number; + name: string; + steps: Step[]; }; // @public (undocumented) export type Jobs = { - total_count: number; - jobs: Job[]; + total_count: number; + jobs: Job[]; }; // @public (undocumented) -export const LatestWorkflowRunCard: ({ branch, variant, }: Props_3) => JSX.Element; +export const LatestWorkflowRunCard: ({ + branch, + variant, +}: Props_3) => JSX.Element; // @public (undocumented) -export const LatestWorkflowsForBranchCard: ({ branch, variant, }: Props_3) => JSX.Element; +export const LatestWorkflowsForBranchCard: ({ + branch, + variant, +}: Props_3) => JSX.Element; // @public (undocumented) -export const RecentWorkflowRunsCard: ({ branch, dense, limit, variant, }: Props) => JSX.Element; +export const RecentWorkflowRunsCard: ({ + branch, + dense, + limit, + variant, +}: Props) => JSX.Element; // @public (undocumented) export const Router: (_props: Props_2) => JSX.Element; // @public (undocumented) export type Step = { - name: string; - status: string; - conclusion?: string; - number: number; - started_at: string; - completed_at: string; + name: string; + status: string; + conclusion?: string; + number: number; + started_at: string; + completed_at: string; }; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/github-deployments/api-report.md b/plugins/github-deployments/api-report.md index 09007e5dde..3cdf9f0316 100644 --- a/plugins/github-deployments/api-report.md +++ b/plugins/github-deployments/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { BackstagePlugin } from '@backstage/core-plugin-api'; @@ -26,34 +25,40 @@ function createLastUpdatedColumn(): TableColumn; function createStatusColumn(): TableColumn; // @public (undocumented) -export const EntityGithubDeploymentsCard: ({ last, lastStatuses, columns, }: { - last?: number | undefined; - lastStatuses?: number | undefined; - columns?: TableColumn[] | undefined; +export const EntityGithubDeploymentsCard: ({ + last, + lastStatuses, + columns, +}: { + last?: number | undefined; + lastStatuses?: number | undefined; + columns?: TableColumn[] | undefined; }) => JSX.Element; // @public (undocumented) -export const githubDeploymentsPlugin: BackstagePlugin< {}, {}>; +export const githubDeploymentsPlugin: BackstagePlugin<{}, {}>; // @public (undocumented) -export function GithubDeploymentsTable({ deployments, isLoading, reload, columns, }: GithubDeploymentsTableProps): JSX.Element; +export function GithubDeploymentsTable({ + deployments, + isLoading, + reload, + columns, +}: GithubDeploymentsTableProps): JSX.Element; // @public (undocumented) export namespace GithubDeploymentsTable { - var // (undocumented) + var // (undocumented) columns: typeof columnFactories; - var // (undocumented) + var // (undocumented) defaultDeploymentColumns: TableColumn[]; } // @public (undocumented) -const GithubStateIndicator: ({ state }: { - state: string; -}) => JSX.Element; +const GithubStateIndicator: ({ state }: { state: string }) => JSX.Element; // @public (undocumented) export const isGithubDeploymentsAvailable: (entity: Entity) => boolean; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/gitops-profiles/api-report.md b/plugins/gitops-profiles/api-report.md index 42534fbb7c..f38f660c77 100644 --- a/plugins/gitops-profiles/api-report.md +++ b/plugins/gitops-profiles/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -12,94 +11,94 @@ import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) export interface ApplyProfileRequest { - // (undocumented) - gitHubToken: string; - // (undocumented) - gitHubUser: string; - // (undocumented) - profiles: string[]; - // (undocumented) - targetOrg: string; - // (undocumented) - targetRepo: string; + // (undocumented) + gitHubToken: string; + // (undocumented) + gitHubUser: string; + // (undocumented) + profiles: string[]; + // (undocumented) + targetOrg: string; + // (undocumented) + targetRepo: string; } // @public (undocumented) export interface ChangeClusterStateRequest { - // (undocumented) - clusterState: 'present' | 'absent'; - // (undocumented) - gitHubToken: string; - // (undocumented) - gitHubUser: string; - // (undocumented) - targetOrg: string; - // (undocumented) - targetRepo: string; + // (undocumented) + clusterState: 'present' | 'absent'; + // (undocumented) + gitHubToken: string; + // (undocumented) + gitHubUser: string; + // (undocumented) + targetOrg: string; + // (undocumented) + targetRepo: string; } // @public (undocumented) export interface CloneFromTemplateRequest { - // (undocumented) - gitHubToken: string; - // (undocumented) - gitHubUser: string; - // (undocumented) - secrets: { - awsAccessKeyId: string; - awsSecretAccessKey: string; - }; - // (undocumented) - targetOrg: string; - // (undocumented) - targetRepo: string; - // (undocumented) - templateRepository: string; + // (undocumented) + gitHubToken: string; + // (undocumented) + gitHubUser: string; + // (undocumented) + secrets: { + awsAccessKeyId: string; + awsSecretAccessKey: string; + }; + // (undocumented) + targetOrg: string; + // (undocumented) + targetRepo: string; + // (undocumented) + templateRepository: string; } // @public (undocumented) export interface ClusterStatus { - // (undocumented) - conclusion: string; - // (undocumented) - link: string; - // (undocumented) - name: string; - // (undocumented) - runStatus: Status[]; - // (undocumented) - status: string; + // (undocumented) + conclusion: string; + // (undocumented) + link: string; + // (undocumented) + name: string; + // (undocumented) + runStatus: Status[]; + // (undocumented) + status: string; } // @public (undocumented) export class FetchError extends Error { - // (undocumented) - static forResponse(resp: Response): Promise; - // (undocumented) - get name(): string; + // (undocumented) + static forResponse(resp: Response): Promise; + // (undocumented) + get name(): string; } // @public (undocumented) export interface GithubUserInfoRequest { - // (undocumented) - accessToken: string; + // (undocumented) + accessToken: string; } // @public (undocumented) export interface GithubUserInfoResponse { - // (undocumented) - login: string; + // (undocumented) + login: string; } // @public (undocumented) export type GitOpsApi = { - url: string; - fetchLog(req: PollLogRequest): Promise; - changeClusterState(req: ChangeClusterStateRequest): Promise; - cloneClusterFromTemplate(req: CloneFromTemplateRequest): Promise; - applyProfiles(req: ApplyProfileRequest): Promise; - listClusters(req: ListClusterRequest): Promise; - fetchUserInfo(req: GithubUserInfoRequest): Promise; + url: string; + fetchLog(req: PollLogRequest): Promise; + changeClusterState(req: ChangeClusterStateRequest): Promise; + cloneClusterFromTemplate(req: CloneFromTemplateRequest): Promise; + applyProfiles(req: ApplyProfileRequest): Promise; + listClusters(req: ListClusterRequest): Promise; + fetchUserInfo(req: GithubUserInfoRequest): Promise; }; // @public (undocumented) @@ -115,82 +114,84 @@ export const GitopsProfilesClusterPage: () => JSX.Element; export const GitopsProfilesCreatePage: () => JSX.Element; // @public (undocumented) -const gitopsProfilesPlugin: BackstagePlugin< { -listPage: RouteRef; -detailsPage: RouteRef< { -owner: string; -repo: string; -}>; -createPage: RouteRef; -}, {}>; -export { gitopsProfilesPlugin } -export { gitopsProfilesPlugin as plugin } +const gitopsProfilesPlugin: BackstagePlugin< + { + listPage: RouteRef; + detailsPage: RouteRef<{ + owner: string; + repo: string; + }>; + createPage: RouteRef; + }, + {} +>; +export { gitopsProfilesPlugin }; +export { gitopsProfilesPlugin as plugin }; // @public (undocumented) export class GitOpsRestApi implements GitOpsApi { - constructor(url?: string); - // (undocumented) - applyProfiles(req: ApplyProfileRequest): Promise; - // (undocumented) - changeClusterState(req: ChangeClusterStateRequest): Promise; - // (undocumented) - cloneClusterFromTemplate(req: CloneFromTemplateRequest): Promise; - // (undocumented) - fetchLog(req: PollLogRequest): Promise; - // (undocumented) - fetchUserInfo(req: GithubUserInfoRequest): Promise; - // (undocumented) - listClusters(req: ListClusterRequest): Promise; - // (undocumented) - url: string; + constructor(url?: string); + // (undocumented) + applyProfiles(req: ApplyProfileRequest): Promise; + // (undocumented) + changeClusterState(req: ChangeClusterStateRequest): Promise; + // (undocumented) + cloneClusterFromTemplate(req: CloneFromTemplateRequest): Promise; + // (undocumented) + fetchLog(req: PollLogRequest): Promise; + // (undocumented) + fetchUserInfo(req: GithubUserInfoRequest): Promise; + // (undocumented) + listClusters(req: ListClusterRequest): Promise; + // (undocumented) + url: string; } // @public (undocumented) export interface ListClusterRequest { - // (undocumented) - gitHubToken: string; - // (undocumented) - gitHubUser: string; + // (undocumented) + gitHubToken: string; + // (undocumented) + gitHubUser: string; } // @public (undocumented) export interface ListClusterStatusesResponse { - // (undocumented) - result: ClusterStatus[]; + // (undocumented) + result: ClusterStatus[]; } // @public (undocumented) export interface PollLogRequest { - // (undocumented) - gitHubToken: string; - // (undocumented) - gitHubUser: string; - // (undocumented) - targetOrg: string; - // (undocumented) - targetRepo: string; + // (undocumented) + gitHubToken: string; + // (undocumented) + gitHubUser: string; + // (undocumented) + targetOrg: string; + // (undocumented) + targetRepo: string; } // @public (undocumented) export interface Status { - // (undocumented) - conclusion: string; - // (undocumented) - message: string; - // (undocumented) - status: string; + // (undocumented) + conclusion: string; + // (undocumented) + message: string; + // (undocumented) + status: string; } // @public (undocumented) export interface StatusResponse { - // (undocumented) - link: string; - // (undocumented) - result: Status[]; - // (undocumented) - status: string; + // (undocumented) + link: string; + // (undocumented) + result: Status[]; + // (undocumented) + status: string; } // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/graphiql/api-report.md b/plugins/graphiql/api-report.md index 50c86eeeca..673f508e03 100644 --- a/plugins/graphiql/api-report.md +++ b/plugins/graphiql/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -15,22 +14,22 @@ import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) export type EndpointConfig = { - id: string; - title: string; - url: string; - method?: 'POST'; - headers?: { - [name in string]: string; - }; + id: string; + title: string; + url: string; + method?: 'POST'; + headers?: { + [name in string]: string; + }; }; // @public (undocumented) export type GithubEndpointConfig = { - id: string; - title: string; - url?: string; - errorApi?: ErrorApi; - githubAuthApi: OAuthApi; + id: string; + title: string; + url?: string; + errorApi?: ErrorApi; + githubAuthApi: OAuthApi; }; // @public (undocumented) @@ -40,16 +39,16 @@ export const GraphiQLIcon: IconComponent; export const GraphiQLPage: () => JSX.Element; // @public (undocumented) -const graphiqlPlugin: BackstagePlugin< {}, {}>; -export { graphiqlPlugin } -export { graphiqlPlugin as plugin } +const graphiqlPlugin: BackstagePlugin<{}, {}>; +export { graphiqlPlugin }; +export { graphiqlPlugin as plugin }; // @public (undocumented) export const graphiQLRouteRef: RouteRef; // @public (undocumented) export type GraphQLBrowseApi = { - getEndpoints(): Promise; + getEndpoints(): Promise; }; // @public (undocumented) @@ -57,25 +56,24 @@ export const graphQlBrowseApiRef: ApiRef; // @public (undocumented) export type GraphQLEndpoint = { - id: string; - title: string; - fetcher: (body: any) => Promise; + id: string; + title: string; + fetcher: (body: any) => Promise; }; // @public (undocumented) export class GraphQLEndpoints implements GraphQLBrowseApi { - // (undocumented) - static create(config: EndpointConfig): GraphQLEndpoint; - // (undocumented) - static from(endpoints: GraphQLEndpoint[]): GraphQLEndpoints; - // (undocumented) - getEndpoints(): Promise; - static github(config: GithubEndpointConfig): GraphQLEndpoint; + // (undocumented) + static create(config: EndpointConfig): GraphQLEndpoint; + // (undocumented) + static from(endpoints: GraphQLEndpoint[]): GraphQLEndpoints; + // (undocumented) + getEndpoints(): Promise; + static github(config: GithubEndpointConfig): GraphQLEndpoint; } // @public (undocumented) export const Router: () => JSX.Element; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/graphql/api-report.md b/plugins/graphql/api-report.md index ef172afbd7..c50312ddf6 100644 --- a/plugins/graphql/api-report.md +++ b/plugins/graphql/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { Config } from '@backstage/config'; import express from 'express'; import { Logger as Logger_2 } from 'winston'; @@ -13,13 +12,11 @@ export function createRouter(options: RouterOptions): Promise; // @public (undocumented) export interface RouterOptions { - // (undocumented) - config: Config; - // (undocumented) - logger: Logger_2; + // (undocumented) + config: Config; + // (undocumented) + logger: Logger_2; } - // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/ilert/api-report.md b/plugins/ilert/api-report.md index 3b5d6a8e9d..94a3657e04 100644 --- a/plugins/ilert/api-report.md +++ b/plugins/ilert/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -19,79 +18,93 @@ export const EntityILertCard: () => JSX.Element; // @public (undocumented) export type GetIncidentsCountOpts = { - states?: IncidentStatus[]; + states?: IncidentStatus[]; }; // @public (undocumented) export type GetIncidentsOpts = { - maxResults?: number; - startIndex?: number; - states?: IncidentStatus[]; - alertSources?: number[]; + maxResults?: number; + startIndex?: number; + states?: IncidentStatus[]; + alertSources?: number[]; }; // @public (undocumented) export interface ILertApi { - // (undocumented) - acceptIncident(incident: Incident, userName: string): Promise; - // (undocumented) - addImmediateMaintenance(alertSourceId: number, minutes: number): Promise; - // (undocumented) - assignIncident(incident: Incident, responder: IncidentResponder): Promise; - // (undocumented) - createIncident(eventRequest: EventRequest): Promise; - // (undocumented) - disableAlertSource(alertSource: AlertSource): Promise; - // (undocumented) - enableAlertSource(alertSource: AlertSource): Promise; - // (undocumented) - fetchAlertSource(idOrIntegrationKey: number | string): Promise; - // (undocumented) - fetchAlertSourceOnCalls(alertSource: AlertSource): Promise; - // (undocumented) - fetchAlertSources(): Promise; - // (undocumented) - fetchIncident(id: number): Promise; - // (undocumented) - fetchIncidentActions(incident: Incident): Promise; - // (undocumented) - fetchIncidentResponders(incident: Incident): Promise; - // (undocumented) - fetchIncidents(opts?: GetIncidentsOpts): Promise; - // (undocumented) - fetchIncidentsCount(opts?: GetIncidentsCountOpts): Promise; - // (undocumented) - fetchOnCallSchedules(): Promise; - // (undocumented) - fetchUptimeMonitor(id: number): Promise; - // (undocumented) - fetchUptimeMonitors(): Promise; - // (undocumented) - fetchUsers(): Promise; - // (undocumented) - getAlertSourceDetailsURL(alertSource: AlertSource | null): string; - // (undocumented) - getEscalationPolicyDetailsURL(escalationPolicy: EscalationPolicy): string; - // (undocumented) - getIncidentDetailsURL(incident: Incident): string; - // (undocumented) - getScheduleDetailsURL(schedule: Schedule): string; - // (undocumented) - getUptimeMonitorDetailsURL(uptimeMonitor: UptimeMonitor): string; - // (undocumented) - getUserInitials(user: User | null): string; - // (undocumented) - getUserPhoneNumber(user: User | null): string; - // (undocumented) - overrideShift(scheduleId: number, userId: number, start: string, end: string): Promise; - // (undocumented) - pauseUptimeMonitor(uptimeMonitor: UptimeMonitor): Promise; - // (undocumented) - resolveIncident(incident: Incident, userName: string): Promise; - // (undocumented) - resumeUptimeMonitor(uptimeMonitor: UptimeMonitor): Promise; - // (undocumented) - triggerIncidentAction(incident: Incident, action: IncidentAction): Promise; + // (undocumented) + acceptIncident(incident: Incident, userName: string): Promise; + // (undocumented) + addImmediateMaintenance( + alertSourceId: number, + minutes: number, + ): Promise; + // (undocumented) + assignIncident( + incident: Incident, + responder: IncidentResponder, + ): Promise; + // (undocumented) + createIncident(eventRequest: EventRequest): Promise; + // (undocumented) + disableAlertSource(alertSource: AlertSource): Promise; + // (undocumented) + enableAlertSource(alertSource: AlertSource): Promise; + // (undocumented) + fetchAlertSource(idOrIntegrationKey: number | string): Promise; + // (undocumented) + fetchAlertSourceOnCalls(alertSource: AlertSource): Promise; + // (undocumented) + fetchAlertSources(): Promise; + // (undocumented) + fetchIncident(id: number): Promise; + // (undocumented) + fetchIncidentActions(incident: Incident): Promise; + // (undocumented) + fetchIncidentResponders(incident: Incident): Promise; + // (undocumented) + fetchIncidents(opts?: GetIncidentsOpts): Promise; + // (undocumented) + fetchIncidentsCount(opts?: GetIncidentsCountOpts): Promise; + // (undocumented) + fetchOnCallSchedules(): Promise; + // (undocumented) + fetchUptimeMonitor(id: number): Promise; + // (undocumented) + fetchUptimeMonitors(): Promise; + // (undocumented) + fetchUsers(): Promise; + // (undocumented) + getAlertSourceDetailsURL(alertSource: AlertSource | null): string; + // (undocumented) + getEscalationPolicyDetailsURL(escalationPolicy: EscalationPolicy): string; + // (undocumented) + getIncidentDetailsURL(incident: Incident): string; + // (undocumented) + getScheduleDetailsURL(schedule: Schedule): string; + // (undocumented) + getUptimeMonitorDetailsURL(uptimeMonitor: UptimeMonitor): string; + // (undocumented) + getUserInitials(user: User | null): string; + // (undocumented) + getUserPhoneNumber(user: User | null): string; + // (undocumented) + overrideShift( + scheduleId: number, + userId: number, + start: string, + end: string, + ): Promise; + // (undocumented) + pauseUptimeMonitor(uptimeMonitor: UptimeMonitor): Promise; + // (undocumented) + resolveIncident(incident: Incident, userName: string): Promise; + // (undocumented) + resumeUptimeMonitor(uptimeMonitor: UptimeMonitor): Promise; + // (undocumented) + triggerIncidentAction( + incident: Incident, + action: IncidentAction, + ): Promise; } // @public (undocumented) @@ -102,69 +115,86 @@ export const ILertCard: () => JSX.Element; // @public (undocumented) export class ILertClient implements ILertApi { - constructor(opts: Options); - // (undocumented) - acceptIncident(incident: Incident, userName: string): Promise; - // (undocumented) - addImmediateMaintenance(alertSourceId: number, minutes: number): Promise; - // (undocumented) - assignIncident(incident: Incident, responder: IncidentResponder): Promise; - // (undocumented) - createIncident(eventRequest: EventRequest): Promise; - // (undocumented) - disableAlertSource(alertSource: AlertSource): Promise; - // (undocumented) - enableAlertSource(alertSource: AlertSource): Promise; - // (undocumented) - fetchAlertSource(idOrIntegrationKey: number | string): Promise; - // (undocumented) - fetchAlertSourceOnCalls(alertSource: AlertSource): Promise; - // (undocumented) - fetchAlertSources(): Promise; - // (undocumented) - fetchIncident(id: number): Promise; - // (undocumented) - fetchIncidentActions(incident: Incident): Promise; - // (undocumented) - fetchIncidentResponders(incident: Incident): Promise; - // (undocumented) - fetchIncidents(opts?: GetIncidentsOpts): Promise; - // (undocumented) - fetchIncidentsCount(opts?: GetIncidentsCountOpts): Promise; - // (undocumented) - fetchOnCallSchedules(): Promise; - // (undocumented) - fetchUptimeMonitor(id: number): Promise; - // (undocumented) - fetchUptimeMonitors(): Promise; - // (undocumented) - fetchUsers(): Promise; - // (undocumented) - static fromConfig(configApi: ConfigApi, discoveryApi: DiscoveryApi): ILertClient; - // (undocumented) - getAlertSourceDetailsURL(alertSource: AlertSource | null): string; - // (undocumented) - getEscalationPolicyDetailsURL(escalationPolicy: EscalationPolicy): string; - // (undocumented) - getIncidentDetailsURL(incident: Incident): string; - // (undocumented) - getScheduleDetailsURL(schedule: Schedule): string; - // (undocumented) - getUptimeMonitorDetailsURL(uptimeMonitor: UptimeMonitor): string; - // (undocumented) - getUserInitials(user: User | null): string; - // (undocumented) - getUserPhoneNumber(user: User | null): string; - // (undocumented) - overrideShift(scheduleId: number, userId: number, start: string, end: string): Promise; - // (undocumented) - pauseUptimeMonitor(uptimeMonitor: UptimeMonitor): Promise; - // (undocumented) - resolveIncident(incident: Incident, userName: string): Promise; - // (undocumented) - resumeUptimeMonitor(uptimeMonitor: UptimeMonitor): Promise; - // (undocumented) - triggerIncidentAction(incident: Incident, action: IncidentAction): Promise; + constructor(opts: Options); + // (undocumented) + acceptIncident(incident: Incident, userName: string): Promise; + // (undocumented) + addImmediateMaintenance( + alertSourceId: number, + minutes: number, + ): Promise; + // (undocumented) + assignIncident( + incident: Incident, + responder: IncidentResponder, + ): Promise; + // (undocumented) + createIncident(eventRequest: EventRequest): Promise; + // (undocumented) + disableAlertSource(alertSource: AlertSource): Promise; + // (undocumented) + enableAlertSource(alertSource: AlertSource): Promise; + // (undocumented) + fetchAlertSource(idOrIntegrationKey: number | string): Promise; + // (undocumented) + fetchAlertSourceOnCalls(alertSource: AlertSource): Promise; + // (undocumented) + fetchAlertSources(): Promise; + // (undocumented) + fetchIncident(id: number): Promise; + // (undocumented) + fetchIncidentActions(incident: Incident): Promise; + // (undocumented) + fetchIncidentResponders(incident: Incident): Promise; + // (undocumented) + fetchIncidents(opts?: GetIncidentsOpts): Promise; + // (undocumented) + fetchIncidentsCount(opts?: GetIncidentsCountOpts): Promise; + // (undocumented) + fetchOnCallSchedules(): Promise; + // (undocumented) + fetchUptimeMonitor(id: number): Promise; + // (undocumented) + fetchUptimeMonitors(): Promise; + // (undocumented) + fetchUsers(): Promise; + // (undocumented) + static fromConfig( + configApi: ConfigApi, + discoveryApi: DiscoveryApi, + ): ILertClient; + // (undocumented) + getAlertSourceDetailsURL(alertSource: AlertSource | null): string; + // (undocumented) + getEscalationPolicyDetailsURL(escalationPolicy: EscalationPolicy): string; + // (undocumented) + getIncidentDetailsURL(incident: Incident): string; + // (undocumented) + getScheduleDetailsURL(schedule: Schedule): string; + // (undocumented) + getUptimeMonitorDetailsURL(uptimeMonitor: UptimeMonitor): string; + // (undocumented) + getUserInitials(user: User | null): string; + // (undocumented) + getUserPhoneNumber(user: User | null): string; + // (undocumented) + overrideShift( + scheduleId: number, + userId: number, + start: string, + end: string, + ): Promise; + // (undocumented) + pauseUptimeMonitor(uptimeMonitor: UptimeMonitor): Promise; + // (undocumented) + resolveIncident(incident: Incident, userName: string): Promise; + // (undocumented) + resumeUptimeMonitor(uptimeMonitor: UptimeMonitor): Promise; + // (undocumented) + triggerIncidentAction( + incident: Incident, + action: IncidentAction, + ): Promise; } // @public (undocumented) @@ -174,29 +204,31 @@ export const ILertIcon: IconComponent; export const ILertPage: () => JSX.Element; // @public (undocumented) -const ilertPlugin: BackstagePlugin< { -root: RouteRef; -}, {}>; -export { ilertPlugin } -export { ilertPlugin as plugin } +const ilertPlugin: BackstagePlugin< + { + root: RouteRef; + }, + {} +>; +export { ilertPlugin }; +export { ilertPlugin as plugin }; // @public (undocumented) export const iLertRouteRef: RouteRef; // @public (undocumented) const isPluginApplicableToEntity: (entity: Entity) => boolean; -export { isPluginApplicableToEntity as isILertAvailable } -export { isPluginApplicableToEntity } +export { isPluginApplicableToEntity as isILertAvailable }; +export { isPluginApplicableToEntity }; // @public (undocumented) export const Router: () => JSX.Element; // @public (undocumented) export type TableState = { - page: number; - pageSize: number; + page: number; + pageSize: number; }; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/jenkins/api-report.md b/plugins/jenkins/api-report.md index 2071ecf49f..47ec8d655f 100644 --- a/plugins/jenkins/api-report.md +++ b/plugins/jenkins/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -15,66 +14,79 @@ import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) export const EntityJenkinsContent: (_props: { - entity?: Entity | undefined; + entity?: Entity | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityLatestJenkinsRunCard: ({ branch, variant, }: { - branch: string; - variant?: InfoCardVariants | undefined; +export const EntityLatestJenkinsRunCard: ({ + branch, + variant, +}: { + branch: string; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) const isJenkinsAvailable: (entity: Entity) => boolean; -export { isJenkinsAvailable } -export { isJenkinsAvailable as isPluginApplicableToEntity } +export { isJenkinsAvailable }; +export { isJenkinsAvailable as isPluginApplicableToEntity }; // @public (undocumented) -export const JENKINS_ANNOTATION = "jenkins.io/github-folder"; +export const JENKINS_ANNOTATION = 'jenkins.io/github-folder'; // @public (undocumented) export class JenkinsApi { - constructor(options: Options); - // (undocumented) - extractJobDetailsFromBuildName(buildName: string): { - jobName: string; - buildNumber: number; - }; - // (undocumented) - extractScmDetailsFromJob(jobDetails: any): any | undefined; - // (undocumented) - getBuild(buildName: string): Promise; - // (undocumented) - getFolder(folderName: string): Promise; - // (undocumented) - getJob(jobName: string): Promise; - // (undocumented) - getLastBuild(jobName: string): Promise; - // (undocumented) - mapJenkinsBuildToCITable(jenkinsResult: any, jobScmInfo?: any): CITableBuildInfo; - // (undocumented) - retry(buildName: string): Promise; + constructor(options: Options); + // (undocumented) + extractJobDetailsFromBuildName( + buildName: string, + ): { + jobName: string; + buildNumber: number; + }; + // (undocumented) + extractScmDetailsFromJob(jobDetails: any): any | undefined; + // (undocumented) + getBuild(buildName: string): Promise; + // (undocumented) + getFolder(folderName: string): Promise; + // (undocumented) + getJob(jobName: string): Promise; + // (undocumented) + getLastBuild(jobName: string): Promise; + // (undocumented) + mapJenkinsBuildToCITable( + jenkinsResult: any, + jobScmInfo?: any, + ): CITableBuildInfo; + // (undocumented) + retry(buildName: string): Promise; } // @public (undocumented) export const jenkinsApiRef: ApiRef; // @public (undocumented) -const jenkinsPlugin: BackstagePlugin< { -entityContent: RouteRef; -}, {}>; -export { jenkinsPlugin } -export { jenkinsPlugin as plugin } +const jenkinsPlugin: BackstagePlugin< + { + entityContent: RouteRef; + }, + {} +>; +export { jenkinsPlugin }; +export { jenkinsPlugin as plugin }; // @public (undocumented) -export const LatestRunCard: ({ branch, variant, }: { - branch: string; - variant?: InfoCardVariants | undefined; +export const LatestRunCard: ({ + branch, + variant, +}: { + branch: string; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) export const Router: (_props: Props) => JSX.Element; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/kafka-backend/api-report.md b/plugins/kafka-backend/api-report.md index 6840bd7527..f817da4a3b 100644 --- a/plugins/kafka-backend/api-report.md +++ b/plugins/kafka-backend/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { Config } from '@backstage/config'; import express from 'express'; import { Logger as Logger_2 } from 'winston'; @@ -11,7 +10,5 @@ import { Logger as Logger_2 } from 'winston'; // @public (undocumented) export function createRouter(options: RouterOptions): Promise; - // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/kafka/api-report.md b/plugins/kafka/api-report.md index ba26dbecb0..2a1001773e 100644 --- a/plugins/kafka/api-report.md +++ b/plugins/kafka/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { BackstagePlugin } from '@backstage/core-plugin-api'; @@ -12,27 +11,30 @@ import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) export const EntityKafkaContent: (_props: { - entity?: Entity | undefined; + entity?: Entity | undefined; }) => JSX.Element; // @public (undocumented) const isPluginApplicableToEntity: (entity: Entity) => boolean; -export { isPluginApplicableToEntity as isKafkaAvailable } -export { isPluginApplicableToEntity } +export { isPluginApplicableToEntity as isKafkaAvailable }; +export { isPluginApplicableToEntity }; // @public (undocumented) -export const KAFKA_CONSUMER_GROUP_ANNOTATION = "kafka.apache.org/consumer-groups"; +export const KAFKA_CONSUMER_GROUP_ANNOTATION = + 'kafka.apache.org/consumer-groups'; // @public (undocumented) -const kafkaPlugin: BackstagePlugin< { -entityContent: RouteRef; -}, {}>; -export { kafkaPlugin } -export { kafkaPlugin as plugin } +const kafkaPlugin: BackstagePlugin< + { + entityContent: RouteRef; + }, + {} +>; +export { kafkaPlugin }; +export { kafkaPlugin as plugin }; // @public (undocumented) export const Router: (_props: Props) => JSX.Element; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/kubernetes-backend/api-report.md b/plugins/kubernetes-backend/api-report.md index a9389b7e62..bd8a7038c5 100644 --- a/plugins/kubernetes-backend/api-report.md +++ b/plugins/kubernetes-backend/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { Config } from '@backstage/config'; import express from 'express'; import { FetchResponse } from '@backstage/plugin-kubernetes-common'; @@ -13,16 +12,16 @@ import { Logger as Logger_2 } from 'winston'; // @public (undocumented) export interface ClusterDetails { - // (undocumented) - authProvider: string; - // (undocumented) - name: string; - // (undocumented) - serviceAccountToken?: string | undefined; - // (undocumented) - skipTLSVerify?: boolean; - // (undocumented) - url: string; + // (undocumented) + authProvider: string; + // (undocumented) + name: string; + // (undocumented) + serviceAccountToken?: string | undefined; + // (undocumented) + skipTLSVerify?: boolean; + // (undocumented) + url: string; } // @public (undocumented) @@ -30,74 +29,86 @@ export function createRouter(options: RouterOptions): Promise; // @public (undocumented) export interface CustomResource { - // (undocumented) - apiVersion: string; - // (undocumented) - group: string; - // (undocumented) - plural: string; + // (undocumented) + apiVersion: string; + // (undocumented) + group: string; + // (undocumented) + plural: string; } // @public (undocumented) export interface FetchResponseWrapper { - // (undocumented) - errors: KubernetesFetchError[]; - // (undocumented) - responses: FetchResponse[]; + // (undocumented) + errors: KubernetesFetchError[]; + // (undocumented) + responses: FetchResponse[]; } // @public (undocumented) export interface KubernetesClustersSupplier { - // (undocumented) - getClusters(): Promise; + // (undocumented) + getClusters(): Promise; } // @public (undocumented) export interface KubernetesFetcher { - // (undocumented) - fetchObjectsForService(params: ObjectFetchParams): Promise; + // (undocumented) + fetchObjectsForService( + params: ObjectFetchParams, + ): Promise; } // @public (undocumented) -export type KubernetesObjectTypes = 'pods' | 'services' | 'configmaps' | 'deployments' | 'replicasets' | 'horizontalpodautoscalers' | 'ingresses' | 'customresources'; +export type KubernetesObjectTypes = + | 'pods' + | 'services' + | 'configmaps' + | 'deployments' + | 'replicasets' + | 'horizontalpodautoscalers' + | 'ingresses' + | 'customresources'; // @public (undocumented) export interface KubernetesServiceLocator { - // (undocumented) - getClustersByServiceId(serviceId: string): Promise; + // (undocumented) + getClustersByServiceId(serviceId: string): Promise; } // @public (undocumented) -export const makeRouter: (logger: Logger_2, kubernetesFanOutHandler: KubernetesFanOutHandler, clusterDetails: ClusterDetails[]) => express.Router; +export const makeRouter: ( + logger: Logger_2, + kubernetesFanOutHandler: KubernetesFanOutHandler, + clusterDetails: ClusterDetails[], +) => express.Router; // @public (undocumented) export interface ObjectFetchParams { - // (undocumented) - clusterDetails: ClusterDetails; - // (undocumented) - customResources: CustomResource[]; - // (undocumented) - labelSelector: string; - // (undocumented) - objectTypesToFetch: Set; - // (undocumented) - serviceId: string; + // (undocumented) + clusterDetails: ClusterDetails; + // (undocumented) + customResources: CustomResource[]; + // (undocumented) + labelSelector: string; + // (undocumented) + objectTypesToFetch: Set; + // (undocumented) + serviceId: string; } // @public (undocumented) export interface RouterOptions { - // (undocumented) - clusterSupplier?: KubernetesClustersSupplier; - // (undocumented) - config: Config; - // (undocumented) - logger: Logger_2; + // (undocumented) + clusterSupplier?: KubernetesClustersSupplier; + // (undocumented) + config: Config; + // (undocumented) + logger: Logger_2; } // @public (undocumented) export type ServiceLocatorMethod = 'multiTenant' | 'http'; - // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/kubernetes-common/api-report.md b/plugins/kubernetes-common/api-report.md index a8abec517e..34d6bd8414 100644 --- a/plugins/kubernetes-common/api-report.md +++ b/plugins/kubernetes-common/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { Entity } from '@backstage/catalog-model'; import { ExtensionsV1beta1Ingress } from '@kubernetes/client-node'; import { V1ConfigMap } from '@kubernetes/client-node'; @@ -18,113 +17,123 @@ export type AuthProviderType = 'google' | 'serviceAccount' | 'aws'; // @public (undocumented) export interface ClusterObjects { - // (undocumented) - cluster: { - name: string; - }; - // (undocumented) - errors: KubernetesFetchError[]; - // (undocumented) - resources: FetchResponse[]; + // (undocumented) + cluster: { + name: string; + }; + // (undocumented) + errors: KubernetesFetchError[]; + // (undocumented) + resources: FetchResponse[]; } // @public (undocumented) export interface ConfigMapFetchResponse { - // (undocumented) - resources: Array; - // (undocumented) - type: 'configmaps'; + // (undocumented) + resources: Array; + // (undocumented) + type: 'configmaps'; } // @public (undocumented) export interface CustomResourceFetchResponse { - // (undocumented) - resources: Array; - // (undocumented) - type: 'customresources'; + // (undocumented) + resources: Array; + // (undocumented) + type: 'customresources'; } // @public (undocumented) export interface DeploymentFetchResponse { - // (undocumented) - resources: Array; - // (undocumented) - type: 'deployments'; + // (undocumented) + resources: Array; + // (undocumented) + type: 'deployments'; } // @public (undocumented) -export type FetchResponse = PodFetchResponse | ServiceFetchResponse | ConfigMapFetchResponse | DeploymentFetchResponse | ReplicaSetsFetchResponse | HorizontalPodAutoscalersFetchResponse | IngressesFetchResponse | CustomResourceFetchResponse; +export type FetchResponse = + | PodFetchResponse + | ServiceFetchResponse + | ConfigMapFetchResponse + | DeploymentFetchResponse + | ReplicaSetsFetchResponse + | HorizontalPodAutoscalersFetchResponse + | IngressesFetchResponse + | CustomResourceFetchResponse; // @public (undocumented) export interface HorizontalPodAutoscalersFetchResponse { - // (undocumented) - resources: Array; - // (undocumented) - type: 'horizontalpodautoscalers'; + // (undocumented) + resources: Array; + // (undocumented) + type: 'horizontalpodautoscalers'; } // @public (undocumented) export interface IngressesFetchResponse { - // (undocumented) - resources: Array; - // (undocumented) - type: 'ingresses'; + // (undocumented) + resources: Array; + // (undocumented) + type: 'ingresses'; } // @public (undocumented) -export type KubernetesErrorTypes = 'BAD_REQUEST' | 'UNAUTHORIZED_ERROR' | 'SYSTEM_ERROR' | 'UNKNOWN_ERROR'; +export type KubernetesErrorTypes = + | 'BAD_REQUEST' + | 'UNAUTHORIZED_ERROR' + | 'SYSTEM_ERROR' + | 'UNKNOWN_ERROR'; // @public (undocumented) export interface KubernetesFetchError { - // (undocumented) - errorType: KubernetesErrorTypes; - // (undocumented) - resourcePath?: string; - // (undocumented) - statusCode?: number; + // (undocumented) + errorType: KubernetesErrorTypes; + // (undocumented) + resourcePath?: string; + // (undocumented) + statusCode?: number; } // @public (undocumented) export interface KubernetesRequestBody { - // (undocumented) - auth?: { - google?: string; - }; - // (undocumented) - entity: Entity; + // (undocumented) + auth?: { + google?: string; + }; + // (undocumented) + entity: Entity; } // @public (undocumented) export interface ObjectsByEntityResponse { - // (undocumented) - items: ClusterObjects[]; + // (undocumented) + items: ClusterObjects[]; } // @public (undocumented) export interface PodFetchResponse { - // (undocumented) - resources: Array; - // (undocumented) - type: 'pods'; + // (undocumented) + resources: Array; + // (undocumented) + type: 'pods'; } // @public (undocumented) export interface ReplicaSetsFetchResponse { - // (undocumented) - resources: Array; - // (undocumented) - type: 'replicasets'; + // (undocumented) + resources: Array; + // (undocumented) + type: 'replicasets'; } // @public (undocumented) export interface ServiceFetchResponse { - // (undocumented) - resources: Array; - // (undocumented) - type: 'services'; + // (undocumented) + resources: Array; + // (undocumented) + type: 'services'; } - // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/kubernetes/api-report.md b/plugins/kubernetes/api-report.md index 561e5ea56c..9fe56bc5ca 100644 --- a/plugins/kubernetes/api-report.md +++ b/plugins/kubernetes/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -15,31 +14,34 @@ import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) export const EntityKubernetesContent: (_props: { - entity?: Entity | undefined; + entity?: Entity | undefined; }) => JSX.Element; // @public (undocumented) export class KubernetesAuthProviders implements KubernetesAuthProvidersApi { - constructor(options: { - googleAuthApi: OAuthApi; - }); - // (undocumented) - decorateRequestBodyForAuth(authProvider: string, requestBody: KubernetesRequestBody): Promise; + constructor(options: { googleAuthApi: OAuthApi }); + // (undocumented) + decorateRequestBodyForAuth( + authProvider: string, + requestBody: KubernetesRequestBody, + ): Promise; } // @public (undocumented) export const kubernetesAuthProvidersApiRef: ApiRef; // @public (undocumented) -const kubernetesPlugin: BackstagePlugin< { -entityContent: RouteRef; -}, {}>; -export { kubernetesPlugin } -export { kubernetesPlugin as plugin } +const kubernetesPlugin: BackstagePlugin< + { + entityContent: RouteRef; + }, + {} +>; +export { kubernetesPlugin }; +export { kubernetesPlugin as plugin }; // @public (undocumented) export const Router: (_props: Props) => JSX.Element; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/lighthouse/api-report.md b/plugins/lighthouse/api-report.md index 2d437a3c94..840daa3987 100644 --- a/plugins/lighthouse/api-report.md +++ b/plugins/lighthouse/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -18,90 +17,96 @@ export type Audit = AuditRunning | AuditFailed | AuditCompleted; // @public (undocumented) export interface AuditCompleted extends AuditBase { - // (undocumented) - categories: Record; - // (undocumented) - report: Object; - // (undocumented) - status: 'COMPLETED'; - // (undocumented) - timeCompleted: string; + // (undocumented) + categories: Record; + // (undocumented) + report: Object; + // (undocumented) + status: 'COMPLETED'; + // (undocumented) + timeCompleted: string; } // @public (undocumented) export interface AuditFailed extends AuditBase { - // (undocumented) - status: 'FAILED'; - // (undocumented) - timeCompleted: string; + // (undocumented) + status: 'FAILED'; + // (undocumented) + timeCompleted: string; } // @public (undocumented) export interface AuditRunning extends AuditBase { - // (undocumented) - status: 'RUNNING'; + // (undocumented) + status: 'RUNNING'; } // @public (undocumented) export const EmbeddedRouter: (_props: Props) => JSX.Element; // @public (undocumented) -export const EntityLastLighthouseAuditCard: ({ dense, variant, }: { - dense?: boolean | undefined; - variant?: InfoCardVariants | undefined; +export const EntityLastLighthouseAuditCard: ({ + dense, + variant, +}: { + dense?: boolean | undefined; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) export const EntityLighthouseContent: (_props: { - entity?: Entity | undefined; + entity?: Entity | undefined; }) => JSX.Element; // @public (undocumented) export class FetchError extends Error { - // (undocumented) - static forResponse(resp: Response): Promise; - // (undocumented) - get name(): string; + // (undocumented) + static forResponse(resp: Response): Promise; + // (undocumented) + get name(): string; } // @public (undocumented) const isLighthouseAvailable: (entity: Entity) => boolean; -export { isLighthouseAvailable } -export { isLighthouseAvailable as isPluginApplicableToEntity } +export { isLighthouseAvailable }; +export { isLighthouseAvailable as isPluginApplicableToEntity }; // @public (undocumented) export interface LASListRequest { - // (undocumented) - limit?: number; - // (undocumented) - offset?: number; + // (undocumented) + limit?: number; + // (undocumented) + offset?: number; } // @public (undocumented) export interface LASListResponse { - // (undocumented) - items: Item[]; - // (undocumented) - limit: number; - // (undocumented) - offset: number; - // (undocumented) - total: number; + // (undocumented) + items: Item[]; + // (undocumented) + limit: number; + // (undocumented) + offset: number; + // (undocumented) + total: number; } // @public (undocumented) -export const LastLighthouseAuditCard: ({ dense, variant, }: { - dense?: boolean | undefined; - variant?: InfoCardVariants | undefined; +export const LastLighthouseAuditCard: ({ + dense, + variant, +}: { + dense?: boolean | undefined; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) export type LighthouseApi = { - url: string; - getWebsiteList: (listOptions: LASListRequest) => Promise; - getWebsiteForAuditId: (auditId: string) => Promise; - triggerAudit: (payload: TriggerAuditPayload) => Promise; - getWebsiteByUrl: (websiteUrl: string) => Promise; + url: string; + getWebsiteList: (listOptions: LASListRequest) => Promise; + getWebsiteForAuditId: (auditId: string) => Promise; + triggerAudit: (payload: TriggerAuditPayload) => Promise; + getWebsiteByUrl: (websiteUrl: string) => Promise; }; // @public (undocumented) @@ -109,43 +114,54 @@ export const lighthouseApiRef: ApiRef; // @public (undocumented) export interface LighthouseCategoryAbbr { - // (undocumented) - id: LighthouseCategoryId; - // (undocumented) - score: number; - // (undocumented) - title: string; + // (undocumented) + id: LighthouseCategoryId; + // (undocumented) + score: number; + // (undocumented) + title: string; } // @public (undocumented) -export type LighthouseCategoryId = 'pwa' | 'seo' | 'performance' | 'accessibility' | 'best-practices'; +export type LighthouseCategoryId = + | 'pwa' + | 'seo' + | 'performance' + | 'accessibility' + | 'best-practices'; // @public (undocumented) export const LighthousePage: () => JSX.Element; // @public (undocumented) -const lighthousePlugin: BackstagePlugin< { -root: RouteRef; -entityContent: RouteRef; -}, {}>; -export { lighthousePlugin } -export { lighthousePlugin as plugin } +const lighthousePlugin: BackstagePlugin< + { + root: RouteRef; + entityContent: RouteRef; + }, + {} +>; +export { lighthousePlugin }; +export { lighthousePlugin as plugin }; // @public (undocumented) export class LighthouseRestApi implements LighthouseApi { - constructor(url: string); - // (undocumented) - static fromConfig(config: Config): LighthouseRestApi; - // (undocumented) - getWebsiteByUrl(websiteUrl: string): Promise; - // (undocumented) - getWebsiteForAuditId(auditId: string): Promise; - // (undocumented) - getWebsiteList({ limit, offset, }?: LASListRequest): Promise; - // (undocumented) - triggerAudit(payload: TriggerAuditPayload): Promise; - // (undocumented) - url: string; + constructor(url: string); + // (undocumented) + static fromConfig(config: Config): LighthouseRestApi; + // (undocumented) + getWebsiteByUrl(websiteUrl: string): Promise; + // (undocumented) + getWebsiteForAuditId(auditId: string): Promise; + // (undocumented) + getWebsiteList({ + limit, + offset, + }?: LASListRequest): Promise; + // (undocumented) + triggerAudit(payload: TriggerAuditPayload): Promise; + // (undocumented) + url: string; } // @public (undocumented) @@ -153,31 +169,30 @@ export const Router: () => JSX.Element; // @public (undocumented) export interface TriggerAuditPayload { - // (undocumented) - options: { - lighthouseConfig: { - settings: { - emulatedFormFactor: string; - }; - }; + // (undocumented) + options: { + lighthouseConfig: { + settings: { + emulatedFormFactor: string; + }; }; - // (undocumented) - url: string; + }; + // (undocumented) + url: string; } // @public (undocumented) export interface Website { - // (undocumented) - audits: Audit[]; - // (undocumented) - lastAudit: Audit; - // (undocumented) - url: string; + // (undocumented) + audits: Audit[]; + // (undocumented) + lastAudit: Audit; + // (undocumented) + url: string; } // @public (undocumented) export type WebsiteListResponse = LASListResponse; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/newrelic/api-report.md b/plugins/newrelic/api-report.md index ad61c72d61..005097c442 100644 --- a/plugins/newrelic/api-report.md +++ b/plugins/newrelic/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { BackstagePlugin } from '@backstage/core-plugin-api'; @@ -13,12 +12,14 @@ import { RouteRef } from '@backstage/core-plugin-api'; export const NewRelicPage: () => JSX.Element; // @public (undocumented) -const newRelicPlugin: BackstagePlugin< { -root: RouteRef; -}, {}>; -export { newRelicPlugin } -export { newRelicPlugin as plugin } +const newRelicPlugin: BackstagePlugin< + { + root: RouteRef; + }, + {} +>; +export { newRelicPlugin }; +export { newRelicPlugin as plugin }; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/org/api-report.md b/plugins/org/api-report.md index bf714dc81e..d541505265 100644 --- a/plugins/org/api-report.md +++ b/plugins/org/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { BackstagePlugin } from '@backstage/core-plugin-api'; @@ -13,56 +12,65 @@ import { InfoCardVariants } from '@backstage/core-components'; import { UserEntity } from '@backstage/catalog-model'; // @public (undocumented) -export const EntityGroupProfileCard: ({ variant, }: { - entity?: GroupEntity | undefined; - variant?: InfoCardVariants | undefined; +export const EntityGroupProfileCard: ({ + variant, +}: { + entity?: GroupEntity | undefined; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) export const EntityMembersListCard: (_props: { - entity?: GroupEntity | undefined; + entity?: GroupEntity | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityOwnershipCard: ({ variant, }: { - entity?: Entity | undefined; - variant?: InfoCardVariants | undefined; +export const EntityOwnershipCard: ({ + variant, +}: { + entity?: Entity | undefined; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityUserProfileCard: ({ variant, }: { - entity?: UserEntity | undefined; - variant?: InfoCardVariants | undefined; +export const EntityUserProfileCard: ({ + variant, +}: { + entity?: UserEntity | undefined; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) -export const GroupProfileCard: ({ variant, }: { - entity?: GroupEntity | undefined; - variant?: InfoCardVariants | undefined; +export const GroupProfileCard: ({ + variant, +}: { + entity?: GroupEntity | undefined; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) -export const MembersListCard: (_props: { - entity?: GroupEntity; +export const MembersListCard: (_props: { entity?: GroupEntity }) => JSX.Element; + +// @public (undocumented) +const orgPlugin: BackstagePlugin<{}, {}>; +export { orgPlugin }; +export { orgPlugin as plugin }; + +// @public (undocumented) +export const OwnershipCard: ({ + variant, +}: { + entity?: Entity | undefined; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) -const orgPlugin: BackstagePlugin< {}, {}>; -export { orgPlugin } -export { orgPlugin as plugin } - -// @public (undocumented) -export const OwnershipCard: ({ variant, }: { - entity?: Entity | undefined; - variant?: InfoCardVariants | undefined; -}) => JSX.Element; - -// @public (undocumented) -export const UserProfileCard: ({ variant, }: { - entity?: UserEntity | undefined; - variant?: InfoCardVariants | undefined; +export const UserProfileCard: ({ + variant, +}: { + entity?: UserEntity | undefined; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/pagerduty/api-report.md b/plugins/pagerduty/api-report.md index e5d7cc212c..e0278c5d27 100644 --- a/plugins/pagerduty/api-report.md +++ b/plugins/pagerduty/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -18,8 +17,8 @@ export const EntityPagerDutyCard: () => JSX.Element; // @public (undocumented) const isPluginApplicableToEntity: (entity: Entity) => boolean; -export { isPluginApplicableToEntity as isPagerDutyAvailable } -export { isPluginApplicableToEntity } +export { isPluginApplicableToEntity as isPagerDutyAvailable }; +export { isPluginApplicableToEntity }; // @public (undocumented) export const pagerDutyApiRef: ApiRef; @@ -29,31 +28,39 @@ export const PagerDutyCard: () => JSX.Element; // @public (undocumented) export class PagerDutyClient implements PagerDutyApi { - constructor(config: ClientApiConfig); - // (undocumented) - static fromConfig(configApi: ConfigApi, discoveryApi: DiscoveryApi): PagerDutyClient; - // (undocumented) - getIncidentsByServiceId(serviceId: string): Promise; - // (undocumented) - getOnCallByPolicyId(policyId: string): Promise; - // (undocumented) - getServiceByIntegrationKey(integrationKey: string): Promise; - // (undocumented) - triggerAlarm({ integrationKey, source, description, userName, }: TriggerAlarmRequest): Promise; + constructor(config: ClientApiConfig); + // (undocumented) + static fromConfig( + configApi: ConfigApi, + discoveryApi: DiscoveryApi, + ): PagerDutyClient; + // (undocumented) + getIncidentsByServiceId(serviceId: string): Promise; + // (undocumented) + getOnCallByPolicyId(policyId: string): Promise; + // (undocumented) + getServiceByIntegrationKey(integrationKey: string): Promise; + // (undocumented) + triggerAlarm({ + integrationKey, + source, + description, + userName, + }: TriggerAlarmRequest): Promise; } // @public (undocumented) -const pagerDutyPlugin: BackstagePlugin< {}, {}>; -export { pagerDutyPlugin } -export { pagerDutyPlugin as plugin } +const pagerDutyPlugin: BackstagePlugin<{}, {}>; +export { pagerDutyPlugin }; +export { pagerDutyPlugin as plugin }; // @public (undocumented) -export function TriggerButton({ children, }: PropsWithChildren): JSX.Element; +export function TriggerButton({ + children, +}: PropsWithChildren): JSX.Element; // @public (undocumented) -export class UnauthorizedError extends Error { -} +export class UnauthorizedError extends Error {} // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/proxy-backend/api-report.md b/plugins/proxy-backend/api-report.md index 63469a2017..812c3f7221 100644 --- a/plugins/proxy-backend/api-report.md +++ b/plugins/proxy-backend/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { Config } from '@backstage/config'; import express from 'express'; import { Logger as Logger_2 } from 'winston'; @@ -12,7 +11,5 @@ import { PluginEndpointDiscovery } from '@backstage/backend-common'; // @public (undocumented) export function createRouter(options: RouterOptions): Promise; - // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/register-component/api-report.md b/plugins/register-component/api-report.md index f87724a11f..a150f4be2c 100644 --- a/plugins/register-component/api-report.md +++ b/plugins/register-component/api-report.md @@ -3,29 +3,34 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { BackstagePlugin } from '@backstage/core-plugin-api'; import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) -export const RegisterComponentPage: ({ catalogRouteRef, }: { - catalogRouteRef: RouteRef; +export const RegisterComponentPage: ({ + catalogRouteRef, +}: { + catalogRouteRef: RouteRef; }) => JSX.Element; // @public (undocumented) -const registerComponentPlugin: BackstagePlugin< { -root: RouteRef; -}, {}>; -export { registerComponentPlugin as plugin } -export { registerComponentPlugin } +const registerComponentPlugin: BackstagePlugin< + { + root: RouteRef; + }, + {} +>; +export { registerComponentPlugin as plugin }; +export { registerComponentPlugin }; // @public @deprecated -export const Router: ({ catalogRouteRef }: { - catalogRouteRef: RouteRef; +export const Router: ({ + catalogRouteRef, +}: { + catalogRouteRef: RouteRef; }) => JSX.Element; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/rollbar-backend/api-report.md b/plugins/rollbar-backend/api-report.md index 9fa525cfc3..02a79fa267 100644 --- a/plugins/rollbar-backend/api-report.md +++ b/plugins/rollbar-backend/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { Config } from '@backstage/config'; import express from 'express'; import { Logger as Logger_2 } from 'winston'; @@ -12,49 +11,58 @@ import { Logger as Logger_2 } from 'winston'; export function createRouter(options: RouterOptions): Promise; // @public (undocumented) -export function getRequestHeaders(token: string): { - headers: { - 'X-Rollbar-Access-Token': string; - }; +export function getRequestHeaders( + token: string, +): { + headers: { + 'X-Rollbar-Access-Token': string; + }; }; // @public (undocumented) export class RollbarApi { - constructor(accessToken: string, logger: Logger_2); - // (undocumented) - getActivatedCounts(projectName: string, options?: { - environment: string; - item_id?: number; - }): Promise; - // (undocumented) - getAllProjects(): Promise; - // (undocumented) - getOccuranceCounts(projectName: string, options?: { - environment: string; - item_id?: number; - }): Promise; - // (undocumented) - getProject(projectName: string): Promise; - // (undocumented) - getProjectItems(projectName: string): Promise; - // (undocumented) - getTopActiveItems(projectName: string, options?: { - hours: number; - environment: string; - }): Promise; - } + constructor(accessToken: string, logger: Logger_2); + // (undocumented) + getActivatedCounts( + projectName: string, + options?: { + environment: string; + item_id?: number; + }, + ): Promise; + // (undocumented) + getAllProjects(): Promise; + // (undocumented) + getOccuranceCounts( + projectName: string, + options?: { + environment: string; + item_id?: number; + }, + ): Promise; + // (undocumented) + getProject(projectName: string): Promise; + // (undocumented) + getProjectItems(projectName: string): Promise; + // (undocumented) + getTopActiveItems( + projectName: string, + options?: { + hours: number; + environment: string; + }, + ): Promise; +} // @public (undocumented) export interface RouterOptions { - // (undocumented) - config: Config; - // (undocumented) - logger: Logger_2; - // (undocumented) - rollbarApi?: RollbarApi; + // (undocumented) + config: Config; + // (undocumented) + logger: Logger_2; + // (undocumented) + rollbarApi?: RollbarApi; } - // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/rollbar/api-report.md b/plugins/rollbar/api-report.md index c112b430f8..c2ea5bb364 100644 --- a/plugins/rollbar/api-report.md +++ b/plugins/rollbar/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -18,27 +17,30 @@ export const EntityPageRollbar: (_props: Props) => JSX.Element; // @public (undocumented) export const EntityRollbarContent: (_props: { - entity?: Entity | undefined; + entity?: Entity | undefined; }) => JSX.Element; // @public (undocumented) const isPluginApplicableToEntity: (entity: Entity) => boolean; -export { isPluginApplicableToEntity } -export { isPluginApplicableToEntity as isRollbarAvailable } +export { isPluginApplicableToEntity }; +export { isPluginApplicableToEntity as isRollbarAvailable }; // @public (undocumented) -export const ROLLBAR_ANNOTATION = "rollbar.com/project-slug"; +export const ROLLBAR_ANNOTATION = 'rollbar.com/project-slug'; // @public (undocumented) export interface RollbarApi { - // (undocumented) - getAllProjects(): Promise; - // (undocumented) - getProject(projectName: string): Promise; - // (undocumented) - getProjectItems(project: string): Promise; - // (undocumented) - getTopActiveItems(project: string, hours?: number): Promise; + // (undocumented) + getAllProjects(): Promise; + // (undocumented) + getProject(projectName: string): Promise; + // (undocumented) + getProjectItems(project: string): Promise; + // (undocumented) + getTopActiveItems( + project: string, + hours?: number, + ): Promise; } // @public (undocumented) @@ -46,30 +48,36 @@ export const rollbarApiRef: ApiRef; // @public (undocumented) export class RollbarClient implements RollbarApi { - constructor(options: { - discoveryApi: DiscoveryApi; - identityApi: IdentityApi; - }); - // (undocumented) - getAllProjects(): Promise; - // (undocumented) - getProject(projectName: string): Promise; - // (undocumented) - getProjectItems(project: string): Promise; - // (undocumented) - getTopActiveItems(project: string, hours?: number, environment?: string): Promise; + constructor(options: { + discoveryApi: DiscoveryApi; + identityApi: IdentityApi; + }); + // (undocumented) + getAllProjects(): Promise; + // (undocumented) + getProject(projectName: string): Promise; + // (undocumented) + getProjectItems(project: string): Promise; + // (undocumented) + getTopActiveItems( + project: string, + hours?: number, + environment?: string, + ): Promise; } // @public (undocumented) -const rollbarPlugin: BackstagePlugin< { -entityContent: RouteRef; -}, {}>; -export { rollbarPlugin as plugin } -export { rollbarPlugin } +const rollbarPlugin: BackstagePlugin< + { + entityContent: RouteRef; + }, + {} +>; +export { rollbarPlugin as plugin }; +export { rollbarPlugin }; // @public (undocumented) export const Router: (_props: Props_2) => JSX.Element; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/scaffolder-backend-module-rails/api-report.md b/plugins/scaffolder-backend-module-rails/api-report.md index 95d9c1bd9f..dc26d22fe4 100644 --- a/plugins/scaffolder-backend-module-rails/api-report.md +++ b/plugins/scaffolder-backend-module-rails/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { ContainerRunner } from '@backstage/backend-common'; import { ScmIntegrations } from '@backstage/integration'; import { TemplateAction } from '@backstage/plugin-scaffolder-backend'; @@ -11,12 +10,10 @@ import { UrlReader } from '@backstage/backend-common'; // @public (undocumented) export function createFetchRailsAction(options: { - reader: UrlReader; - integrations: ScmIntegrations; - containerRunner: ContainerRunner; + reader: UrlReader; + integrations: ScmIntegrations; + containerRunner: ContainerRunner; }): TemplateAction; - // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index b0e3795d19..d6aa1e4e75 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { CatalogApi } from '@backstage/catalog-client'; @@ -24,37 +23,40 @@ import { Writable } from 'stream'; // @public (undocumented) export type ActionContext = { - baseUrl?: string; - logger: Logger_2; - logStream: Writable; - token?: string | undefined; - workspacePath: string; - input: Input; - output(name: string, value: JsonValue): void; - createTemporaryDirectory(): Promise; + baseUrl?: string; + logger: Logger_2; + logStream: Writable; + token?: string | undefined; + workspacePath: string; + input: Input; + output(name: string, value: JsonValue): void; + createTemporaryDirectory(): Promise; }; // @public export class CatalogEntityClient { - constructor(catalogClient: CatalogApi); - findTemplate(templateName: string, options?: { - token?: string; - }): Promise; + constructor(catalogClient: CatalogApi); + findTemplate( + templateName: string, + options?: { + token?: string; + }, + ): Promise; } // @public (undocumented) export const createBuiltinActions: (options: { - reader: UrlReader; - integrations: ScmIntegrations; - catalogClient: CatalogApi; - containerRunner: ContainerRunner; - config: Config; + reader: UrlReader; + integrations: ScmIntegrations; + catalogClient: CatalogApi; + containerRunner: ContainerRunner; + config: Config; }) => TemplateAction[]; // @public (undocumented) export function createCatalogRegisterAction(options: { - catalogClient: CatalogApi; - integrations: ScmIntegrations; + catalogClient: CatalogApi; + integrations: ScmIntegrations; }): TemplateAction; // @public (undocumented) @@ -65,21 +67,21 @@ export function createDebugLogAction(): TemplateAction; // @public (undocumented) export function createFetchCookiecutterAction(options: { - reader: UrlReader; - integrations: ScmIntegrations; - containerRunner: ContainerRunner; + reader: UrlReader; + integrations: ScmIntegrations; + containerRunner: ContainerRunner; }): TemplateAction; // @public (undocumented) export function createFetchPlainAction(options: { - reader: UrlReader; - integrations: ScmIntegrations; + reader: UrlReader; + integrations: ScmIntegrations; }): TemplateAction; // @public (undocumented) export function createFetchTemplateAction(options: { - reader: UrlReader; - integrations: ScmIntegrations; + reader: UrlReader; + integrations: ScmIntegrations; }): TemplateAction; // @public (undocumented) @@ -90,14 +92,14 @@ export const createFilesystemRenameAction: () => TemplateAction; // @public (undocumented) export function createPublishAzureAction(options: { - integrations: ScmIntegrationRegistry; - config: Config; + integrations: ScmIntegrationRegistry; + config: Config; }): TemplateAction; // @public (undocumented) export function createPublishBitbucketAction(options: { - integrations: ScmIntegrationRegistry; - config: Config; + integrations: ScmIntegrationRegistry; + config: Config; }): TemplateAction; // @public @@ -105,80 +107,98 @@ export function createPublishFileAction(): TemplateAction; // @public (undocumented) export function createPublishGithubAction(options: { - integrations: ScmIntegrationRegistry; - config: Config; + integrations: ScmIntegrationRegistry; + config: Config; }): TemplateAction; // @public (undocumented) -export const createPublishGithubPullRequestAction: ({ integrations, clientFactory, }: CreateGithubPullRequestActionOptions) => TemplateAction; +export const createPublishGithubPullRequestAction: ({ + integrations, + clientFactory, +}: CreateGithubPullRequestActionOptions) => TemplateAction; // @public (undocumented) export function createPublishGitlabAction(options: { - integrations: ScmIntegrationRegistry; - config: Config; + integrations: ScmIntegrationRegistry; + config: Config; }): TemplateAction; // @public (undocumented) export function createRouter(options: RouterOptions): Promise; // @public (undocumented) -export const createTemplateAction: | undefined; -}>>(templateAction: TemplateAction) => TemplateAction; + }> +>( + templateAction: TemplateAction, +) => TemplateAction; // @public (undocumented) -export function fetchContents({ reader, integrations, baseUrl, fetchUrl, outputPath, }: { - reader: UrlReader; - integrations: ScmIntegrations; - baseUrl?: string; - fetchUrl?: JsonValue; - outputPath: string; +export function fetchContents({ + reader, + integrations, + baseUrl, + fetchUrl, + outputPath, +}: { + reader: UrlReader; + integrations: ScmIntegrations; + baseUrl?: string; + fetchUrl?: JsonValue; + outputPath: string; }): Promise; // @public (undocumented) export interface RouterOptions { - // (undocumented) - actions?: TemplateAction[]; - // (undocumented) - catalogClient: CatalogApi; - // (undocumented) - config: Config; - // (undocumented) - containerRunner: ContainerRunner; - // (undocumented) - database: PluginDatabaseManager; - // (undocumented) - logger: Logger_2; - // (undocumented) - reader: UrlReader; - // (undocumented) - taskWorkers?: number; + // (undocumented) + actions?: TemplateAction[]; + // (undocumented) + catalogClient: CatalogApi; + // (undocumented) + config: Config; + // (undocumented) + containerRunner: ContainerRunner; + // (undocumented) + database: PluginDatabaseManager; + // (undocumented) + logger: Logger_2; + // (undocumented) + reader: UrlReader; + // (undocumented) + taskWorkers?: number; } // @public (undocumented) -export const runCommand: ({ command, args, logStream, }: RunCommandOptions) => Promise; +export const runCommand: ({ + command, + args, + logStream, +}: RunCommandOptions) => Promise; // @public (undocumented) export type TemplateAction = { - id: string; - description?: string; - schema?: { - input?: Schema; - output?: Schema; - }; - handler: (ctx: ActionContext) => Promise; + id: string; + description?: string; + schema?: { + input?: Schema; + output?: Schema; + }; + handler: (ctx: ActionContext) => Promise; }; // @public (undocumented) export class TemplateActionRegistry { - // (undocumented) - get(actionId: string): TemplateAction; - // (undocumented) - list(): TemplateAction[]; - // (undocumented) - register(action: TemplateAction): void; + // (undocumented) + get(actionId: string): TemplateAction; + // (undocumented) + list(): TemplateAction[]; + // (undocumented) + register( + action: TemplateAction, + ): void; } // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/scaffolder/api-report.md b/plugins/scaffolder/api-report.md index 1df280404e..2f9d10b7ac 100644 --- a/plugins/scaffolder/api-report.md +++ b/plugins/scaffolder/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiHolder } from '@backstage/core-plugin-api'; @@ -25,21 +24,29 @@ import { RouteRef } from '@backstage/core-plugin-api'; import { ScmIntegrationRegistry } from '@backstage/integration'; // @public (undocumented) -export function createScaffolderFieldExtension(options: FieldExtensionOptions): Extension<() => null>; +export function createScaffolderFieldExtension( + options: FieldExtensionOptions, +): Extension<() => null>; // @public (undocumented) -export type CustomFieldValidator = ((data: T, field: FieldValidation) => void) | ((data: T, field: FieldValidation, context: { - apiHolder: ApiHolder; -}) => void); +export type CustomFieldValidator = + | ((data: T, field: FieldValidation) => void) + | (( + data: T, + field: FieldValidation, + context: { + apiHolder: ApiHolder; + }, + ) => void); // @public (undocumented) export const EntityPickerFieldExtension: () => null; // @public (undocumented) export type FieldExtensionOptions = { - name: string; - component: (props: FieldProps) => JSX.Element | null; - validation?: CustomFieldValidator; + name: string; + component: (props: FieldProps) => JSX.Element | null; + validation?: CustomFieldValidator; }; // @public (undocumented) @@ -50,26 +57,33 @@ export const RepoUrlPickerFieldExtension: () => null; // @public (undocumented) export interface ScaffolderApi { - // (undocumented) - getIntegrationsList(options: { - allowedHosts: string[]; - }): Promise<{ - type: string; - title: string; - host: string; - }[]>; - // (undocumented) - getTask(taskId: string): Promise; - // (undocumented) - getTemplateParameterSchema(templateName: EntityName): Promise; - // (undocumented) - listActions(): Promise; - scaffold(templateName: string, values: Record): Promise; - // (undocumented) - streamLogs({ taskId, after, }: { - taskId: string; - after?: number; - }): Observable; + // (undocumented) + getIntegrationsList(options: { + allowedHosts: string[]; + }): Promise< + { + type: string; + title: string; + host: string; + }[] + >; + // (undocumented) + getTask(taskId: string): Promise; + // (undocumented) + getTemplateParameterSchema( + templateName: EntityName, + ): Promise; + // (undocumented) + listActions(): Promise; + scaffold(templateName: string, values: Record): Promise; + // (undocumented) + streamLogs({ + taskId, + after, + }: { + taskId: string; + after?: number; + }): Observable; } // @public (undocumented) @@ -77,31 +91,38 @@ export const scaffolderApiRef: ApiRef; // @public (undocumented) export class ScaffolderClient implements ScaffolderApi { - constructor(options: { - discoveryApi: DiscoveryApi; - identityApi: IdentityApi; - scmIntegrationsApi: ScmIntegrationRegistry; - }); - // (undocumented) - getIntegrationsList(options: { - allowedHosts: string[]; - }): Promise<{ - type: string; - title: string; - host: string; - }[]>; - // (undocumented) - getTask(taskId: string): Promise; - // (undocumented) - getTemplateParameterSchema(templateName: EntityName): Promise; - // (undocumented) - listActions(): Promise; - scaffold(templateName: string, values: Record): Promise; - // (undocumented) - streamLogs({ taskId, after, }: { - taskId: string; - after?: number; - }): Observable; + constructor(options: { + discoveryApi: DiscoveryApi; + identityApi: IdentityApi; + scmIntegrationsApi: ScmIntegrationRegistry; + }); + // (undocumented) + getIntegrationsList(options: { + allowedHosts: string[]; + }): Promise< + { + type: string; + title: string; + host: string; + }[] + >; + // (undocumented) + getTask(taskId: string): Promise; + // (undocumented) + getTemplateParameterSchema( + templateName: EntityName, + ): Promise; + // (undocumented) + listActions(): Promise; + scaffold(templateName: string, values: Record): Promise; + // (undocumented) + streamLogs({ + taskId, + after, + }: { + taskId: string; + after?: number; + }): Observable; } // @public (undocumented) @@ -111,14 +132,16 @@ export const ScaffolderFieldExtensions: React_2.ComponentType; export const ScaffolderPage: () => JSX.Element; // @public (undocumented) -const scaffolderPlugin: BackstagePlugin< { -root: RouteRef; -}, { -registerComponent: ExternalRouteRef; -}>; -export { scaffolderPlugin as plugin } -export { scaffolderPlugin } +const scaffolderPlugin: BackstagePlugin< + { + root: RouteRef; + }, + { + registerComponent: ExternalRouteRef; + } +>; +export { scaffolderPlugin as plugin }; +export { scaffolderPlugin }; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/search-backend-node/api-report.md b/plugins/search-backend-node/api-report.md index ff35515389..d327dee01b 100644 --- a/plugins/search-backend-node/api-report.md +++ b/plugins/search-backend-node/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { DocumentCollator } from '@backstage/search-common'; import { DocumentDecorator } from '@backstage/search-common'; import { IndexableDocument } from '@backstage/search-common'; @@ -14,55 +13,52 @@ import { SearchResultSet } from '@backstage/search-common'; // @public (undocumented) export class IndexBuilder { - constructor({ logger, searchEngine }: IndexBuilderOptions); - addCollator({ collator, defaultRefreshIntervalSeconds, }: RegisterCollatorParameters): void; - addDecorator({ decorator }: RegisterDecoratorParameters): void; - build(): Promise<{ - scheduler: Scheduler; - }>; - // (undocumented) - getSearchEngine(): SearchEngine; - } + constructor({ logger, searchEngine }: IndexBuilderOptions); + addCollator({ + collator, + defaultRefreshIntervalSeconds, + }: RegisterCollatorParameters): void; + addDecorator({ decorator }: RegisterDecoratorParameters): void; + build(): Promise<{ + scheduler: Scheduler; + }>; + // (undocumented) + getSearchEngine(): SearchEngine; +} // @public (undocumented) export class LunrSearchEngine implements SearchEngine { - constructor({ logger }: { - logger: Logger_2; - }); - // (undocumented) - protected docStore: Record; - // (undocumented) - index(type: string, documents: IndexableDocument[]): Promise; - // (undocumented) - protected logger: Logger_2; - // (undocumented) - protected lunrIndices: Record; - // (undocumented) - query(query: SearchQuery): Promise; - // (undocumented) - setTranslator(translator: LunrQueryTranslator): void; - // (undocumented) - protected translator: QueryTranslator; + constructor({ logger }: { logger: Logger_2 }); + // (undocumented) + protected docStore: Record; + // (undocumented) + index(type: string, documents: IndexableDocument[]): Promise; + // (undocumented) + protected logger: Logger_2; + // (undocumented) + protected lunrIndices: Record; + // (undocumented) + query(query: SearchQuery): Promise; + // (undocumented) + setTranslator(translator: LunrQueryTranslator): void; + // (undocumented) + protected translator: QueryTranslator; } // @public export class Scheduler { - constructor({ logger }: { - logger: Logger_2; - }); - addToSchedule(task: Function, interval: number): void; - start(): void; - stop(): void; + constructor({ logger }: { logger: Logger_2 }); + addToSchedule(task: Function, interval: number): void; + start(): void; + stop(): void; } // @public export interface SearchEngine { - index(type: string, documents: IndexableDocument[]): Promise; - query(query: SearchQuery): Promise; - setTranslator(translator: QueryTranslator): void; + index(type: string, documents: IndexableDocument[]): Promise; + query(query: SearchQuery): Promise; + setTranslator(translator: QueryTranslator): void; } - // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/search-backend/api-report.md b/plugins/search-backend/api-report.md index 7eba677439..b4202a1916 100644 --- a/plugins/search-backend/api-report.md +++ b/plugins/search-backend/api-report.md @@ -3,15 +3,15 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import express from 'express'; import { Logger as Logger_2 } from 'winston'; import { SearchEngine } from '@backstage/plugin-search-backend-node'; // @public (undocumented) -export function createRouter({ engine, logger, }: RouterOptions): Promise; - +export function createRouter({ + engine, + logger, +}: RouterOptions): Promise; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/search/api-report.md b/plugins/search/api-report.md index 02391f4d42..27ecf213bb 100644 --- a/plugins/search/api-report.md +++ b/plugins/search/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -19,20 +18,31 @@ import { SearchResult as SearchResult_2 } from '@backstage/search-common'; import { SearchResultSet } from '@backstage/search-common'; // @public (undocumented) -export const DefaultResultListItem: ({ result }: { - result: IndexableDocument; +export const DefaultResultListItem: ({ + result, +}: { + result: IndexableDocument; }) => JSX.Element; // @public (undocumented) -export const Filters: ({ filters, filterOptions, resetFilters, updateSelected, updateChecked, }: FiltersProps) => JSX.Element; +export const Filters: ({ + filters, + filterOptions, + resetFilters, + updateSelected, + updateChecked, +}: FiltersProps) => JSX.Element; // @public (undocumented) -export const FiltersButton: ({ numberOfSelectedFilters, handleToggleFilters, }: FiltersButtonProps) => JSX.Element; +export const FiltersButton: ({ + numberOfSelectedFilters, + handleToggleFilters, +}: FiltersButtonProps) => JSX.Element; // @public (undocumented) export type FiltersState = { - selected: string; - checked: Array; + selected: string; + checked: Array; }; // @public (undocumented) @@ -45,28 +55,34 @@ export const searchApiRef: ApiRef; export const SearchBar: ({ className, debounceTime }: Props) => JSX.Element; // @public @deprecated (undocumented) -export const SearchBarNext: ({ className, debounceTime }: { - className?: string | undefined; - debounceTime?: number | undefined; +export const SearchBarNext: ({ + className, + debounceTime, +}: { + className?: string | undefined; + debounceTime?: number | undefined; }) => JSX.Element; // @public (undocumented) -export const SearchContextProvider: ({ initialState, children, }: React_2.PropsWithChildren<{ - initialState?: SettableSearchContext | undefined; +export const SearchContextProvider: ({ + initialState, + children, +}: React_2.PropsWithChildren<{ + initialState?: SettableSearchContext | undefined; }>) => JSX.Element; // @public (undocumented) export const SearchFilter: { - ({ component: Element, ...props }: Props_2): JSX.Element; - Checkbox(props: Omit & Component): JSX.Element; - Select(props: Omit & Component): JSX.Element; + ({ component: Element, ...props }: Props_2): JSX.Element; + Checkbox(props: Omit & Component): JSX.Element; + Select(props: Omit & Component): JSX.Element; }; // @public @deprecated (undocumented) export const SearchFilterNext: { - ({ component: Element, ...props }: Props_2): JSX.Element; - Checkbox(props: Omit & Component): JSX.Element; - Select(props: Omit & Component): JSX.Element; + ({ component: Element, ...props }: Props_2): JSX.Element; + Checkbox(props: Omit & Component): JSX.Element; + Select(props: Omit & Component): JSX.Element; }; // @public (undocumented) @@ -76,18 +92,21 @@ export const SearchPage: () => JSX.Element; export const SearchPageNext: () => JSX.Element; // @public (undocumented) -const searchPlugin: BackstagePlugin< { -root: RouteRef; -nextRoot: RouteRef; -}, {}>; -export { searchPlugin as plugin } -export { searchPlugin } +const searchPlugin: BackstagePlugin< + { + root: RouteRef; + nextRoot: RouteRef; + }, + {} +>; +export { searchPlugin as plugin }; +export { searchPlugin }; // @public (undocumented) -export const SearchResult: ({ children }: { - children: (results: { - results: SearchResult_2[]; - }) => JSX.Element; +export const SearchResult: ({ + children, +}: { + children: (results: { results: SearchResult_2[] }) => JSX.Element; }) => JSX.Element; // @public (undocumented) @@ -97,5 +116,4 @@ export const SidebarSearch: () => JSX.Element; export const useSearch: () => SearchContextValue; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/sentry/api-report.md b/plugins/sentry/api-report.md index 69e1f0238b..ebb4cfa357 100644 --- a/plugins/sentry/api-report.md +++ b/plugins/sentry/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -21,26 +20,24 @@ export const EntitySentryContent: () => JSX.Element; // @public (undocumented) export class MockSentryApi implements SentryApi { - // (undocumented) - fetchIssues(): Promise; + // (undocumented) + fetchIssues(): Promise; } // @public (undocumented) export class ProductionSentryApi implements SentryApi { - constructor(discoveryApi: DiscoveryApi, organization: string); - // (undocumented) - fetchIssues(project: string, statsFor: string): Promise; + constructor(discoveryApi: DiscoveryApi, organization: string); + // (undocumented) + fetchIssues(project: string, statsFor: string): Promise; } // @public (undocumented) -export const Router: ({ entity }: { - entity: Entity; -}) => JSX.Element; +export const Router: ({ entity }: { entity: Entity }) => JSX.Element; // @public (undocumented) export interface SentryApi { - // (undocumented) - fetchIssues(project: string, statsFor: string): Promise; + // (undocumented) + fetchIssues(project: string, statsFor: string): Promise; } // @public (undocumented) @@ -48,52 +45,58 @@ export const sentryApiRef: ApiRef; // @public (undocumented) export type SentryIssue = { - platform: SentryPlatform; - lastSeen: string; - numComments: number; - userCount: number; - stats: { - '24h'?: EventPoint[]; - '12h'?: EventPoint[]; - }; - culprit: string; - title: string; - id: string; - assignedTo: any; - logger: any; - type: string; - annotations: any[]; - metadata: SentryIssueMetadata; - status: string; - subscriptionDetails: any; - isPublic: boolean; - hasSeen: boolean; - shortId: string; - shareId: string | null; - firstSeen: string; - count: string; - permalink: string; - level: string; - isSubscribed: boolean; - isBookmarked: boolean; - project: SentryProject; - statusDetails: any; + platform: SentryPlatform; + lastSeen: string; + numComments: number; + userCount: number; + stats: { + '24h'?: EventPoint[]; + '12h'?: EventPoint[]; + }; + culprit: string; + title: string; + id: string; + assignedTo: any; + logger: any; + type: string; + annotations: any[]; + metadata: SentryIssueMetadata; + status: string; + subscriptionDetails: any; + isPublic: boolean; + hasSeen: boolean; + shortId: string; + shareId: string | null; + firstSeen: string; + count: string; + permalink: string; + level: string; + isSubscribed: boolean; + isBookmarked: boolean; + project: SentryProject; + statusDetails: any; }; // @public (undocumented) -export const SentryIssuesWidget: ({ entity, statsFor, variant, }: { - entity: Entity; - statsFor?: "12h" | "24h" | undefined; - variant?: InfoCardVariants | undefined; +export const SentryIssuesWidget: ({ + entity, + statsFor, + variant, +}: { + entity: Entity; + statsFor?: '12h' | '24h' | undefined; + variant?: InfoCardVariants | undefined; }) => JSX.Element; // @public (undocumented) -const sentryPlugin: BackstagePlugin< { -root: RouteRef; -}, {}>; -export { sentryPlugin as plugin } -export { sentryPlugin } +const sentryPlugin: BackstagePlugin< + { + root: RouteRef; + }, + {} +>; +export { sentryPlugin as plugin }; +export { sentryPlugin }; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/shortcuts/api-report.md b/plugins/shortcuts/api-report.md index 862af42e5e..7aa54b8c3b 100644 --- a/plugins/shortcuts/api-report.md +++ b/plugins/shortcuts/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -14,33 +13,33 @@ import { StorageApi } from '@backstage/core-plugin-api'; // @public export class LocalStoredShortcuts implements ShortcutApi { - constructor(storageApi: StorageApi); - // (undocumented) - add(shortcut: Omit): Promise; - // (undocumented) - getColor(url: string): string; - // (undocumented) - remove(id: string): Promise; - // (undocumented) - shortcut$(): ObservableImpl; - // (undocumented) - update(shortcut: Shortcut): Promise; + constructor(storageApi: StorageApi); + // (undocumented) + add(shortcut: Omit): Promise; + // (undocumented) + getColor(url: string): string; + // (undocumented) + remove(id: string): Promise; + // (undocumented) + shortcut$(): ObservableImpl; + // (undocumented) + update(shortcut: Shortcut): Promise; } // @public (undocumented) export type Shortcut = { - id: string; - url: string; - title: string; + id: string; + url: string; + title: string; }; // @public (undocumented) export interface ShortcutApi { - add(shortcut: Omit): Promise; - getColor(url: string): string; - remove(id: string): Promise; - shortcut$(): Observable; - update(shortcut: Shortcut): Promise; + add(shortcut: Omit): Promise; + getColor(url: string): string; + remove(id: string): Promise; + shortcut$(): Observable; + update(shortcut: Shortcut): Promise; } // @public (undocumented) @@ -50,8 +49,7 @@ export const Shortcuts: () => JSX.Element; export const shortcutsApiRef: ApiRef; // @public (undocumented) -export const shortcutsPlugin: BackstagePlugin< {}, {}>; +export const shortcutsPlugin: BackstagePlugin<{}, {}>; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/sonarqube/api-report.md b/plugins/sonarqube/api-report.md index 657eea0c66..92d0cfa476 100644 --- a/plugins/sonarqube/api-report.md +++ b/plugins/sonarqube/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { BackstagePlugin } from '@backstage/core-plugin-api'; @@ -11,30 +10,37 @@ import { Entity } from '@backstage/catalog-model'; import { InfoCardVariants } from '@backstage/core-components'; // @public (undocumented) -export const EntitySonarQubeCard: ({ variant, duplicationRatings, }: { - entity?: Entity | undefined; - variant?: InfoCardVariants | undefined; - duplicationRatings?: { +export const EntitySonarQubeCard: ({ + variant, + duplicationRatings, +}: { + entity?: Entity | undefined; + variant?: InfoCardVariants | undefined; + duplicationRatings?: + | { greaterThan: number; - rating: "1.0" | "2.0" | "3.0" | "4.0" | "5.0"; - }[] | undefined; + rating: '1.0' | '2.0' | '3.0' | '4.0' | '5.0'; + }[] + | undefined; }) => JSX.Element; // @public (undocumented) export const isSonarQubeAvailable: (entity: Entity) => boolean; // @public (undocumented) -export const SonarQubeCard: ({ variant, duplicationRatings, }: { - entity?: Entity | undefined; - variant?: InfoCardVariants | undefined; - duplicationRatings?: DuplicationRating[] | undefined; +export const SonarQubeCard: ({ + variant, + duplicationRatings, +}: { + entity?: Entity | undefined; + variant?: InfoCardVariants | undefined; + duplicationRatings?: DuplicationRating[] | undefined; }) => JSX.Element; // @public (undocumented) -const sonarQubePlugin: BackstagePlugin< {}, {}>; -export { sonarQubePlugin as plugin } -export { sonarQubePlugin } +const sonarQubePlugin: BackstagePlugin<{}, {}>; +export { sonarQubePlugin as plugin }; +export { sonarQubePlugin }; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/splunk-on-call/api-report.md b/plugins/splunk-on-call/api-report.md index f8940e6f52..d17eb01564 100644 --- a/plugins/splunk-on-call/api-report.md +++ b/plugins/splunk-on-call/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -24,44 +23,55 @@ export const splunkOnCallApiRef: ApiRef; // @public (undocumented) export class SplunkOnCallClient implements SplunkOnCallApi { - constructor(config: ClientApiConfig); - // (undocumented) - static fromConfig(configApi: ConfigApi, discoveryApi: DiscoveryApi): SplunkOnCallClient; - // (undocumented) - getEscalationPolicies(): Promise; - // (undocumented) - getIncidents(): Promise; - // (undocumented) - getOnCallUsers(): Promise; - // (undocumented) - getTeams(): Promise; - // (undocumented) - getUsers(): Promise; - // (undocumented) - incidentAction({ routingKey, incidentType, incidentId, incidentDisplayName, incidentMessage, incidentStartTime, }: TriggerAlarmRequest): Promise; + constructor(config: ClientApiConfig); + // (undocumented) + static fromConfig( + configApi: ConfigApi, + discoveryApi: DiscoveryApi, + ): SplunkOnCallClient; + // (undocumented) + getEscalationPolicies(): Promise; + // (undocumented) + getIncidents(): Promise; + // (undocumented) + getOnCallUsers(): Promise; + // (undocumented) + getTeams(): Promise; + // (undocumented) + getUsers(): Promise; + // (undocumented) + incidentAction({ + routingKey, + incidentType, + incidentId, + incidentDisplayName, + incidentMessage, + incidentStartTime, + }: TriggerAlarmRequest): Promise; } // @public (undocumented) export const SplunkOnCallPage: { - ({ title, subtitle, pageTitle, }: SplunkOnCallPageProps): JSX.Element; - defaultProps: { - title: string; - subtitle: string; - pageTitle: string; - }; + ({ title, subtitle, pageTitle }: SplunkOnCallPageProps): JSX.Element; + defaultProps: { + title: string; + subtitle: string; + pageTitle: string; + }; }; // @public (undocumented) -const splunkOnCallPlugin: BackstagePlugin< { -root: RouteRef; -}, {}>; -export { splunkOnCallPlugin as plugin } -export { splunkOnCallPlugin } +const splunkOnCallPlugin: BackstagePlugin< + { + root: RouteRef; + }, + {} +>; +export { splunkOnCallPlugin as plugin }; +export { splunkOnCallPlugin }; // @public (undocumented) -export class UnauthorizedError extends Error { -} +export class UnauthorizedError extends Error {} // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/tech-radar/api-report.md b/plugins/tech-radar/api-report.md index 985084c913..4087e0d196 100644 --- a/plugins/tech-radar/api-report.md +++ b/plugins/tech-radar/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -12,112 +11,116 @@ import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) export interface RadarEntry { - // (undocumented) - description?: string; - // (undocumented) - id: string; - // (undocumented) - key: string; - // (undocumented) - quadrant: string; - // (undocumented) - timeline: Array; - // (undocumented) - title: string; - // (undocumented) - url: string; + // (undocumented) + description?: string; + // (undocumented) + id: string; + // (undocumented) + key: string; + // (undocumented) + quadrant: string; + // (undocumented) + timeline: Array; + // (undocumented) + title: string; + // (undocumented) + url: string; } // @public (undocumented) export interface RadarEntrySnapshot { - // (undocumented) - date: Date; - // (undocumented) - description?: string; - // (undocumented) - moved?: MovedState; - // (undocumented) - ringId: string; + // (undocumented) + date: Date; + // (undocumented) + description?: string; + // (undocumented) + moved?: MovedState; + // (undocumented) + ringId: string; } // @public (undocumented) export interface RadarQuadrant { - // (undocumented) - id: string; - // (undocumented) - name: string; + // (undocumented) + id: string; + // (undocumented) + name: string; } // @public (undocumented) export interface RadarRing { - // (undocumented) - color: string; - // (undocumented) - id: string; - // (undocumented) - name: string; + // (undocumented) + color: string; + // (undocumented) + id: string; + // (undocumented) + name: string; } // @public (undocumented) export const Router: { - ({ title, subtitle, pageTitle, ...props }: TechRadarPageProps): JSX.Element; - defaultProps: { - title: string; - subtitle: string; - pageTitle: string; - }; + ({ title, subtitle, pageTitle, ...props }: TechRadarPageProps): JSX.Element; + defaultProps: { + title: string; + subtitle: string; + pageTitle: string; + }; }; // @public (undocumented) export interface TechRadarApi { - load: (id: string | undefined) => Promise; + load: (id: string | undefined) => Promise; } // @public (undocumented) export const techRadarApiRef: ApiRef; // @public (undocumented) -export const TechRadarComponent: (props: TechRadarComponentProps) => JSX.Element; +export const TechRadarComponent: ( + props: TechRadarComponentProps, +) => JSX.Element; // @public (undocumented) export interface TechRadarComponentProps { - // (undocumented) - height: number; - // (undocumented) - id?: string; - // (undocumented) - svgProps?: object; - // (undocumented) - width: number; + // (undocumented) + height: number; + // (undocumented) + id?: string; + // (undocumented) + svgProps?: object; + // (undocumented) + width: number; } // @public (undocumented) export interface TechRadarLoaderResponse { - // (undocumented) - entries: RadarEntry[]; - // (undocumented) - quadrants: RadarQuadrant[]; - // (undocumented) - rings: RadarRing[]; + // (undocumented) + entries: RadarEntry[]; + // (undocumented) + quadrants: RadarQuadrant[]; + // (undocumented) + rings: RadarRing[]; } // @public (undocumented) export const TechRadarPage: { - ({ title, subtitle, pageTitle, ...props }: TechRadarPageProps): JSX.Element; - defaultProps: { - title: string; - subtitle: string; - pageTitle: string; - }; + ({ title, subtitle, pageTitle, ...props }: TechRadarPageProps): JSX.Element; + defaultProps: { + title: string; + subtitle: string; + pageTitle: string; + }; }; // @public (undocumented) -const techRadarPlugin: BackstagePlugin< { -root: RouteRef; -}, {}>; -export { techRadarPlugin as plugin } -export { techRadarPlugin } +const techRadarPlugin: BackstagePlugin< + { + root: RouteRef; + }, + {} +>; +export { techRadarPlugin as plugin }; +export { techRadarPlugin }; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/techdocs-backend/api-report.md b/plugins/techdocs-backend/api-report.md index 3458a14307..5777a3fd56 100644 --- a/plugins/techdocs-backend/api-report.md +++ b/plugins/techdocs-backend/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { Config } from '@backstage/config'; import express from 'express'; import { GeneratorBuilder } from '@backstage/techdocs-common'; @@ -16,9 +15,7 @@ import { PublisherBase } from '@backstage/techdocs-common'; // @public (undocumented) export function createRouter(options: RouterOptions): Promise; - -export * from "@backstage/techdocs-common"; +export * from '@backstage/techdocs-common'; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/techdocs/api-report.md b/plugins/techdocs/api-report.md index d6bb4b80ea..943831d91c 100644 --- a/plugins/techdocs/api-report.md +++ b/plugins/techdocs/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -18,14 +17,19 @@ import { Location as Location_2 } from '@backstage/catalog-model'; import { RouteRef } from '@backstage/core-plugin-api'; // @public (undocumented) -export const DocsCardGrid: ({ entities, }: { - entities: Entity[] | undefined; +export const DocsCardGrid: ({ + entities, +}: { + entities: Entity[] | undefined; }) => JSX.Element | null; // @public (undocumented) -export const DocsTable: ({ entities, title, }: { - entities: Entity[] | undefined; - title?: string | undefined; +export const DocsTable: ({ + entities, + title, +}: { + entities: Entity[] | undefined; + title?: string | undefined; }) => JSX.Element | null; // @public (undocumented) @@ -33,7 +37,7 @@ export const EmbeddedDocsRouter: (_props: Props) => JSX.Element; // @public (undocumented) export const EntityTechdocsContent: (_props: { - entity?: Entity | undefined; + entity?: Entity | undefined; }) => JSX.Element; // @public (undocumented) @@ -50,12 +54,12 @@ export type SyncResult = 'cached' | 'updated' | 'timeout'; // @public (undocumented) export interface TechDocsApi { - // (undocumented) - getApiOrigin(): Promise; - // (undocumented) - getEntityMetadata(entityId: EntityName): Promise; - // (undocumented) - getTechDocsMetadata(entityId: EntityName): Promise; + // (undocumented) + getApiOrigin(): Promise; + // (undocumented) + getEntityMetadata(entityId: EntityName): Promise; + // (undocumented) + getTechDocsMetadata(entityId: EntityName): Promise; } // @public (undocumented) @@ -63,56 +67,69 @@ export const techdocsApiRef: ApiRef; // @public export class TechDocsClient implements TechDocsApi { - constructor({ configApi, discoveryApi, identityApi, }: { - configApi: Config; - discoveryApi: DiscoveryApi; - identityApi: IdentityApi; - }); - // (undocumented) + constructor({ + configApi, + discoveryApi, + identityApi, + }: { configApi: Config; - // (undocumented) discoveryApi: DiscoveryApi; - // (undocumented) - getApiOrigin(): Promise; - getEntityMetadata(entityId: EntityName): Promise; - getTechDocsMetadata(entityId: EntityName): Promise; - // (undocumented) identityApi: IdentityApi; + }); + // (undocumented) + configApi: Config; + // (undocumented) + discoveryApi: DiscoveryApi; + // (undocumented) + getApiOrigin(): Promise; + getEntityMetadata(entityId: EntityName): Promise; + getTechDocsMetadata(entityId: EntityName): Promise; + // (undocumented) + identityApi: IdentityApi; } // @public (undocumented) -export const TechDocsCustomHome: ({ tabsConfig, }: { - tabsConfig: TabsConfig; +export const TechDocsCustomHome: ({ + tabsConfig, +}: { + tabsConfig: TabsConfig; }) => JSX.Element; // @public (undocumented) export const TechdocsPage: () => JSX.Element; // @public (undocumented) -const techdocsPlugin: BackstagePlugin< { -root: RouteRef; -entityContent: RouteRef; -}, {}>; -export { techdocsPlugin as plugin } -export { techdocsPlugin } +const techdocsPlugin: BackstagePlugin< + { + root: RouteRef; + entityContent: RouteRef; + }, + {} +>; +export { techdocsPlugin as plugin }; +export { techdocsPlugin }; // @public (undocumented) export const TechDocsReaderPage: () => JSX.Element; // @public (undocumented) export interface TechDocsStorageApi { - // (undocumented) - getApiOrigin(): Promise; - // (undocumented) - getBaseUrl(oldBaseUrl: string, entityId: EntityName, path: string): Promise; - // (undocumented) - getBuilder(): Promise; - // (undocumented) - getEntityDocs(entityId: EntityName, path: string): Promise; - // (undocumented) - getStorageUrl(): Promise; - // (undocumented) - syncEntityDocs(entityId: EntityName): Promise; + // (undocumented) + getApiOrigin(): Promise; + // (undocumented) + getBaseUrl( + oldBaseUrl: string, + entityId: EntityName, + path: string, + ): Promise; + // (undocumented) + getBuilder(): Promise; + // (undocumented) + getEntityDocs(entityId: EntityName, path: string): Promise; + // (undocumented) + getStorageUrl(): Promise; + // (undocumented) + syncEntityDocs(entityId: EntityName): Promise; } // @public (undocumented) @@ -120,29 +137,36 @@ export const techdocsStorageApiRef: ApiRef; // @public export class TechDocsStorageClient implements TechDocsStorageApi { - constructor({ configApi, discoveryApi, identityApi, }: { - configApi: Config; - discoveryApi: DiscoveryApi; - identityApi: IdentityApi; - }); - // (undocumented) + constructor({ + configApi, + discoveryApi, + identityApi, + }: { configApi: Config; - // (undocumented) discoveryApi: DiscoveryApi; - // (undocumented) - getApiOrigin(): Promise; - // (undocumented) - getBaseUrl(oldBaseUrl: string, entityId: EntityName, path: string): Promise; - // (undocumented) - getBuilder(): Promise; - getEntityDocs(entityId: EntityName, path: string): Promise; - // (undocumented) - getStorageUrl(): Promise; - // (undocumented) identityApi: IdentityApi; - syncEntityDocs(entityId: EntityName): Promise; + }); + // (undocumented) + configApi: Config; + // (undocumented) + discoveryApi: DiscoveryApi; + // (undocumented) + getApiOrigin(): Promise; + // (undocumented) + getBaseUrl( + oldBaseUrl: string, + entityId: EntityName, + path: string, + ): Promise; + // (undocumented) + getBuilder(): Promise; + getEntityDocs(entityId: EntityName, path: string): Promise; + // (undocumented) + getStorageUrl(): Promise; + // (undocumented) + identityApi: IdentityApi; + syncEntityDocs(entityId: EntityName): Promise; } // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/todo-backend/api-report.md b/plugins/todo-backend/api-report.md index d203a52b36..92e133a481 100644 --- a/plugins/todo-backend/api-report.md +++ b/plugins/todo-backend/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - import { CatalogApi } from '@backstage/catalog-client'; import { Config } from '@backstage/config'; import { EntityName } from '@backstage/catalog-model'; @@ -20,79 +19,86 @@ export function createTodoParser(options?: TodoParserOptions): TodoParser; // @public (undocumented) export type ListTodosRequest = { - entity?: EntityName; - offset?: number; - limit?: number; - orderBy?: { - field: Fields; - direction: 'asc' | 'desc'; - }; - filters?: { - field: Fields; - value: string; - }[]; + entity?: EntityName; + offset?: number; + limit?: number; + orderBy?: { + field: Fields; + direction: 'asc' | 'desc'; + }; + filters?: { + field: Fields; + value: string; + }[]; }; // @public (undocumented) export type ListTodosResponse = { - items: TodoItem[]; - totalCount: number; - offset: number; - limit: number; + items: TodoItem[]; + totalCount: number; + offset: number; + limit: number; }; // @public (undocumented) export type ReadTodosOptions = { - url: string; + url: string; }; // @public (undocumented) export type ReadTodosResult = { - items: TodoItem[]; + items: TodoItem[]; }; // @public (undocumented) export type TodoItem = { - text: string; - tag: string; - author?: string; - viewUrl?: string; - lineNumber?: number; - repoFilePath?: string; + text: string; + tag: string; + author?: string; + viewUrl?: string; + lineNumber?: number; + repoFilePath?: string; }; // @public (undocumented) export interface TodoReader { - readTodos(options: ReadTodosOptions): Promise; + readTodos(options: ReadTodosOptions): Promise; } // @public (undocumented) export class TodoReaderService implements TodoService { - constructor(options: Options_2); - // (undocumented) - listTodos(req: ListTodosRequest, options?: { - token?: string; - }): Promise; - } + constructor(options: Options_2); + // (undocumented) + listTodos( + req: ListTodosRequest, + options?: { + token?: string; + }, + ): Promise; +} // @public (undocumented) export class TodoScmReader implements TodoReader { - constructor(options: Options); - // (undocumented) - static fromConfig(config: Config, options: Omit): TodoScmReader; - // (undocumented) - readTodos({ url }: ReadTodosOptions): Promise; + constructor(options: Options); + // (undocumented) + static fromConfig( + config: Config, + options: Omit, + ): TodoScmReader; + // (undocumented) + readTodos({ url }: ReadTodosOptions): Promise; } // @public (undocumented) export interface TodoService { - // (undocumented) - listTodos(req: ListTodosRequest, options?: { - token?: string; - }): Promise; + // (undocumented) + listTodos( + req: ListTodosRequest, + options?: { + token?: string; + }, + ): Promise; } - // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/todo/api-report.md b/plugins/todo/api-report.md index 7763642c65..1fc8e8f99f 100644 --- a/plugins/todo/api-report.md +++ b/plugins/todo/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -17,8 +16,7 @@ export const EntityTodoContent: () => JSX.Element; export const todoApiRef: ApiRef; // @public (undocumented) -export const todoPlugin: BackstagePlugin< {}, {}>; +export const todoPlugin: BackstagePlugin<{}, {}>; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/user-settings/api-report.md b/plugins/user-settings/api-report.md index 47ecf012d5..2f3b9b2fed 100644 --- a/plugins/user-settings/api-report.md +++ b/plugins/user-settings/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { ApiRef } from '@backstage/core-plugin-api'; @@ -14,10 +13,17 @@ import { RouteRef } from '@backstage/core-plugin-api'; import { SessionApi } from '@backstage/core-plugin-api'; // @public (undocumented) -export const DefaultProviderSettings: ({ configuredProviders }: Props_3) => JSX.Element; +export const DefaultProviderSettings: ({ + configuredProviders, +}: Props_3) => JSX.Element; // @public (undocumented) -export const ProviderSettingsItem: ({ title, description, icon: Icon, apiRef, }: Props_4) => JSX.Element; +export const ProviderSettingsItem: ({ + title, + description, + icon: Icon, + apiRef, +}: Props_4) => JSX.Element; // @public (undocumented) export const Router: ({ providerSettings }: Props) => JSX.Element; @@ -29,7 +35,9 @@ export const Settings: () => JSX.Element; export const UserSettingsAppearanceCard: () => JSX.Element; // @public (undocumented) -export const UserSettingsAuthProviders: ({ providerSettings }: Props_2) => JSX.Element; +export const UserSettingsAuthProviders: ({ + providerSettings, +}: Props_2) => JSX.Element; // @public (undocumented) export const UserSettingsFeatureFlags: () => JSX.Element; @@ -41,19 +49,24 @@ export const UserSettingsGeneral: () => JSX.Element; export const UserSettingsMenu: () => JSX.Element; // @public (undocumented) -export const UserSettingsPage: ({ providerSettings }: { - providerSettings?: JSX.Element | undefined; +export const UserSettingsPage: ({ + providerSettings, +}: { + providerSettings?: JSX.Element | undefined; }) => JSX.Element; // @public (undocumented) export const UserSettingsPinToggle: () => JSX.Element; // @public (undocumented) -const userSettingsPlugin: BackstagePlugin< { -settingsPage: RouteRef; -}, {}>; -export { userSettingsPlugin as plugin } -export { userSettingsPlugin } +const userSettingsPlugin: BackstagePlugin< + { + settingsPage: RouteRef; + }, + {} +>; +export { userSettingsPlugin as plugin }; +export { userSettingsPlugin }; // @public (undocumented) export const UserSettingsProfileCard: () => JSX.Element; @@ -66,10 +79,9 @@ export const UserSettingsThemeToggle: () => JSX.Element; // @public (undocumented) export const useUserProfile: () => { - profile: ProfileInfo; - displayName: string; + profile: ProfileInfo; + displayName: string; }; // (No @packageDocumentation comment for this package) - ``` diff --git a/plugins/welcome/api-report.md b/plugins/welcome/api-report.md index 8ad4a57c6d..49ccd46994 100644 --- a/plugins/welcome/api-report.md +++ b/plugins/welcome/api-report.md @@ -3,7 +3,6 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts - /// import { BackstagePlugin } from '@backstage/core-plugin-api'; @@ -12,10 +11,9 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; export const WelcomePage: () => JSX.Element; // @public (undocumented) -const welcomePlugin: BackstagePlugin< {}, {}>; -export { welcomePlugin as plugin } -export { welcomePlugin } +const welcomePlugin: BackstagePlugin<{}, {}>; +export { welcomePlugin as plugin }; +export { welcomePlugin }; // (No @packageDocumentation comment for this package) - ``` From a07354e1099937d18e0879b98b071af076608a7a Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 12 Jul 2021 12:16:52 +0200 Subject: [PATCH 100/117] root: use tsc:full for building API reports to avoid interference from local state Signed-off-by: Patrik Oldsberg --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b027d6da47..a394003f9e 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "start": "yarn workspace example-app start", "start-backend": "yarn workspace example-backend start", "build": "lerna run build", - "build:api-reports": "tsc && yarn build:api-reports:only", + "build:api-reports": "yarn tsc:full && yarn build:api-reports:only", "build:api-reports:only": "ts-node -T -P scripts/tsconfig.json scripts/api-extractor.ts", "build:api-docs": "yarn build:api-reports --docs", "tsc": "tsc", From 91aa414b4e2865d88b7d272a298d772df3d70092 Mon Sep 17 00:00:00 2001 From: Rogerio Angeliski Date: Mon, 12 Jul 2021 18:12:56 -0300 Subject: [PATCH 101/117] fix windows paths fix #6427 Signed-off-by: Rogerio Angeliski --- .../src/actions/fetch/rails/railsArgumentResolver.ts | 3 ++- .../src/actions/fetch/rails/railsNewRunner.test.ts | 4 ++-- .../src/actions/fetch/rails/railsNewRunner.ts | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsArgumentResolver.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsArgumentResolver.ts index b1ddadc6d9..60251a702d 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsArgumentResolver.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsArgumentResolver.ts @@ -56,6 +56,7 @@ export type RailsRunOptions = { export const railsArgumentResolver = ( projectRoot: string, options: RailsRunOptions, + executionOnContainer = false, ): string[] => { const argumentsToRun: string[] = []; @@ -103,7 +104,7 @@ export const railsArgumentResolver = ( argumentsToRun.push( options.template.replace( `.${separatorPath}`, - `${projectRoot}${separatorPath}`, + `${projectRoot}${executionOnContainer ? '/' : separatorPath}`, ), ); } diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts index dc3f824236..abf89f6a0d 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts @@ -137,7 +137,7 @@ describe('Rails Templater', () => { owner: 'angeliski', storePath: 'https://github.com/angeliski/rails-project', name: 'rails-project', - railsArguments: { template: './something.rb' }, + railsArguments: { template: `.${path.sep}something.rb` }, imageName: 'foo/rails-custom-image', }; @@ -210,7 +210,7 @@ describe('Rails Templater', () => { owner: 'angeliski', storePath: 'https://github.com/angeliski/rails-project', name: 'rails-project', - railsArguments: { template: './something.rb' }, + railsArguments: { template: `.${path.sep}something.rb` }, imageName: 'foo/rails-custom-image', }; diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts index 3e18490587..a828800e84 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts @@ -68,7 +68,7 @@ export class RailsNewRunner { command: baseCommand, args: [ ...baseArguments, - `${intermediateDir}/${name}`, + `${intermediateDir}${path.sep}${name}`, ...arrayExtraArguments, ], logStream, @@ -77,6 +77,7 @@ export class RailsNewRunner { const arrayExtraArguments = railsArgumentResolver( '/input', railsArguments as RailsRunOptions, + true, ); await this.containerRunner.runContainer({ imageName: imageName as string, From e114cc7e024094dc891c77637c4c8b308d6f6797 Mon Sep 17 00:00:00 2001 From: Rogerio Angeliski Date: Mon, 12 Jul 2021 20:45:36 -0300 Subject: [PATCH 102/117] add changeset Signed-off-by: Rogerio Angeliski --- .changeset/polite-spies-judge.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/polite-spies-judge.md diff --git a/.changeset/polite-spies-judge.md b/.changeset/polite-spies-judge.md new file mode 100644 index 0000000000..075bcf1598 --- /dev/null +++ b/.changeset/polite-spies-judge.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-rails': patch +--- + +updated paths to consider differences between platform (windows corrected) From 23453d2d40ab68b205a0c16d2f33c249c14179c4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Jul 2021 04:45:53 +0000 Subject: [PATCH 103/117] chore(deps-dev): bump concurrently from 6.0.0 to 6.2.0 Bumps [concurrently](https://github.com/kimmobrunfeldt/concurrently) from 6.0.0 to 6.2.0. - [Release notes](https://github.com/kimmobrunfeldt/concurrently/releases) - [Commits](https://github.com/kimmobrunfeldt/concurrently/compare/v6.0.0...v6.2.0) --- updated-dependencies: - dependency-name: concurrently dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0132497371..15091d99fe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9770,13 +9770,13 @@ concat-with-sourcemaps@^1.1.0: source-map "^0.6.1" concurrently@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/concurrently/-/concurrently-6.0.0.tgz#c1a876dd99390979c71f8c6fe6796882f3a13199" - integrity sha512-Ik9Igqnef2ONLjN2o/OVx1Ow5tymVvvEwQeYCQdD/oV+CN9oWhxLk7ibcBdOtv0UzBqHCEKRwbKceYoTK8t3fQ== + version "6.2.0" + resolved "https://registry.npmjs.org/concurrently/-/concurrently-6.2.0.tgz#587e2cb8afca7234172d8ea55176088632c4c56d" + integrity sha512-v9I4Y3wFoXCSY2L73yYgwA9ESrQMpRn80jMcqMgHx720Hecz2GZAvTI6bREVST6lkddNypDKRN22qhK0X8Y00g== dependencies: chalk "^4.1.0" date-fns "^2.16.1" - lodash "^4.17.20" + lodash "^4.17.21" read-pkg "^5.2.0" rxjs "^6.6.3" spawn-command "^0.0.2-1" From 30a8a345e980d2254524d2ebf702a5a2886bda1e Mon Sep 17 00:00:00 2001 From: chicoribas Date: Sat, 10 Jul 2021 01:48:26 -0300 Subject: [PATCH 104/117] SignIn and Auth handlers for MS provider Signed-off-by: chicoribas --- plugins/auth-backend/src/providers/index.ts | 1 + .../src/providers/microsoft/index.ts | 6 +- .../src/providers/microsoft/provider.test.ts | 105 +++++++ .../src/providers/microsoft/provider.ts | 266 +++++++++++++----- 4 files changed, 303 insertions(+), 75 deletions(-) create mode 100644 plugins/auth-backend/src/providers/microsoft/provider.test.ts diff --git a/plugins/auth-backend/src/providers/index.ts b/plugins/auth-backend/src/providers/index.ts index 940ceadffe..6b262dcf68 100644 --- a/plugins/auth-backend/src/providers/index.ts +++ b/plugins/auth-backend/src/providers/index.ts @@ -15,6 +15,7 @@ */ export * from './google'; +export * from './microsoft'; export { factories as defaultAuthProviderFactories } from './factories'; // Export the minimal interface required for implementing a diff --git a/plugins/auth-backend/src/providers/microsoft/index.ts b/plugins/auth-backend/src/providers/microsoft/index.ts index 374e451ae9..5b6637bef2 100644 --- a/plugins/auth-backend/src/providers/microsoft/index.ts +++ b/plugins/auth-backend/src/providers/microsoft/index.ts @@ -14,5 +14,9 @@ * limitations under the License. */ -export { createMicrosoftProvider } from './provider'; +export { + createMicrosoftProvider, + microsoftEmailSignInResolver, + microsoftDefaultSignInResolver, +} from './provider'; export type { MicrosoftProviderOptions } from './provider'; diff --git a/plugins/auth-backend/src/providers/microsoft/provider.test.ts b/plugins/auth-backend/src/providers/microsoft/provider.test.ts new file mode 100644 index 0000000000..c979bed582 --- /dev/null +++ b/plugins/auth-backend/src/providers/microsoft/provider.test.ts @@ -0,0 +1,105 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { MicrosoftAuthProvider } from './provider'; +import * as helpers from '../../lib/passport/PassportStrategyHelper'; +import { OAuthResult } from '../../lib/oauth'; +import { getVoidLogger } from '@backstage/backend-common'; +import { TokenIssuer } from '../../identity/types'; +import { CatalogIdentityClient } from '../../lib/catalog'; + +const mockFrameHandler = (jest.spyOn( + helpers, + 'executeFrameHandlerStrategy', +) as unknown) as jest.MockedFunction< + () => Promise<{ result: OAuthResult; privateInfo: any }> +>; + +describe('createMicrosoftProvider', () => { + it('should auth', async () => { + const tokenIssuer = { + issueToken: jest.fn(), + listPublicKeys: jest.fn(), + }; + const catalogIdentityClient = { + findUser: jest.fn(), + }; + + const provider = new MicrosoftAuthProvider({ + logger: getVoidLogger(), + catalogIdentityClient: (catalogIdentityClient as unknown) as CatalogIdentityClient, + tokenIssuer: (tokenIssuer as unknown) as TokenIssuer, + authHandler: async ({ fullProfile }) => ({ + profile: { + email: fullProfile.emails![0]!.value, + displayName: fullProfile.displayName, + picture: 'http://microsoft.com/lols', + }, + }), + clientId: 'mock', + clientSecret: 'mock', + callbackUrl: 'mock', + }); + + mockFrameHandler.mockResolvedValueOnce({ + result: { + fullProfile: { + emails: [ + { + type: 'work', + value: 'conrad@example.com', + }, + ], + displayName: 'Conrad', + name: { + familyName: 'Ribas', + givenName: 'Francisco', + }, + id: 'conrad', + provider: 'microsoft', + photos: [ + { + value: 'some-data', + }, + ], + }, + params: { + id_token: 'idToken', + scope: 'scope', + expires_in: 123, + }, + accessToken: 'accessToken', + }, + privateInfo: { + refreshToken: 'wacka', + }, + }); + const { response } = await provider.handler({} as any); + expect(response).toEqual({ + providerInfo: { + accessToken: 'accessToken', + expiresInSeconds: 123, + idToken: 'idToken', + scope: 'scope', + }, + profile: { + email: 'conrad@example.com', + displayName: 'Conrad', + picture: 'http://microsoft.com/lols', + }, + }); + }); +}); diff --git a/plugins/auth-backend/src/providers/microsoft/provider.ts b/plugins/auth-backend/src/providers/microsoft/provider.ts index 86c7d3a3a4..f97512cda5 100644 --- a/plugins/auth-backend/src/providers/microsoft/provider.ts +++ b/plugins/auth-backend/src/providers/microsoft/provider.ts @@ -17,45 +17,65 @@ import express from 'express'; import passport from 'passport'; import { Strategy as MicrosoftStrategy } from 'passport-microsoft'; - +import { TokenIssuer } from '../../identity/types'; +import { CatalogIdentityClient, getEntityClaims } from '../../lib/catalog'; import { + encodeState, + OAuthAdapter, + OAuthEnvironmentHandler, + OAuthHandlers, + OAuthProviderOptions, + OAuthRefreshRequest, + OAuthResponse, + OAuthResult, + OAuthStartRequest, +} from '../../lib/oauth'; +import { + executeFetchUserProfileStrategy, executeFrameHandlerStrategy, executeRedirectStrategy, executeRefreshTokenStrategy, makeProfileInfo, - executeFetchUserProfileStrategy, PassportDoneCallback, } from '../../lib/passport'; - -import { RedirectInfo, AuthProviderFactory } from '../types'; - import { - OAuthAdapter, - OAuthProviderOptions, - OAuthHandlers, - OAuthResponse, - OAuthEnvironmentHandler, - OAuthStartRequest, - encodeState, - OAuthRefreshRequest, - OAuthResult, -} from '../../lib/oauth'; - + AuthProviderFactory, + AuthHandler, + RedirectInfo, + SignInResolver, +} from '../types'; +import { Logger } from 'winston'; import got from 'got'; type PrivateInfo = { refreshToken: string; }; -export type MicrosoftAuthProviderOptions = OAuthProviderOptions & { +type Options = OAuthProviderOptions & { + signInResolver?: SignInResolver; + authHandler: AuthHandler; + tokenIssuer: TokenIssuer; + catalogIdentityClient: CatalogIdentityClient; + logger: Logger; authorizationUrl?: string; tokenUrl?: string; }; export class MicrosoftAuthProvider implements OAuthHandlers { private readonly _strategy: MicrosoftStrategy; + private readonly signInResolver?: SignInResolver; + private readonly authHandler: AuthHandler; + private readonly tokenIssuer: TokenIssuer; + private readonly catalogIdentityClient: CatalogIdentityClient; + private readonly logger: Logger; + + constructor(options: Options) { + this.signInResolver = options.signInResolver; + this.authHandler = options.authHandler; + this.tokenIssuer = options.tokenIssuer; + this.logger = options.logger; + this.catalogIdentityClient = options.catalogIdentityClient; - constructor(options: MicrosoftAuthProviderOptions) { this._strategy = new MicrosoftStrategy( { clientID: options.clientId, @@ -92,32 +112,10 @@ export class MicrosoftAuthProvider implements OAuthHandlers { PrivateInfo >(req, this._strategy); - try { - const photoUrl = await this.getUserPhoto(result.accessToken); - - const profile = makeProfileInfo( - { - ...result.fullProfile, - photos: photoUrl ? [{ value: photoUrl }] : undefined, - }, - result.params.id_token, - ); - - return { - response: await this.populateIdentity({ - profile, - providerInfo: { - idToken: result.params.id_token, - accessToken: result.accessToken, - scope: result.params.scope, - expiresInSeconds: result.params.expires_in, - }, - }), - refreshToken: privateInfo.refreshToken, - }; - } catch (error) { - throw new Error(`Error processing auth response: ${error}`); - } + return { + response: await this.handleResult(result), + refreshToken: privateInfo.refreshToken, + }; } async refresh(req: OAuthRefreshRequest): Promise { @@ -131,21 +129,50 @@ export class MicrosoftAuthProvider implements OAuthHandlers { this._strategy, accessToken, ); - const profile = makeProfileInfo(fullProfile, params.id_token); - const photo = await this.getUserPhoto(accessToken); - if (photo) { - profile.picture = photo; - } - return this.populateIdentity({ + return this.handleResult({ + fullProfile, + params, + accessToken, + refreshToken: req.refreshToken, + }); + } + + private async handleResult(result: OAuthResult) { + const photo = await this.getUserPhoto(result.accessToken); + result.fullProfile.photos = photo ? [{ value: photo }] : undefined; + + const { profile } = await this.authHandler(result); + + const response: OAuthResponse = { providerInfo: { - accessToken, - idToken: params.id_token, - expiresInSeconds: params.expires_in, - scope: params.scope, + idToken: result.params.id_token, + accessToken: result.accessToken, + scope: result.params.scope, + expiresInSeconds: result.params.expires_in, }, profile, - }); + }; + + if (!profile.email) { + throw new Error('Microsoft profile contained no email'); + } + + if (this.signInResolver) { + response.backstageIdentity = await this.signInResolver( + { + result, + profile, + }, + { + tokenIssuer: this.tokenIssuer, + catalogIdentityClient: this.catalogIdentityClient, + logger: this.logger, + }, + ); + } + + return response; } private getUserPhoto(accessToken: string): Promise { @@ -165,7 +192,7 @@ export class MicrosoftAuthProvider implements OAuthHandlers { resolve(photoURL); }) .catch(error => { - console.log( + this.logger.warn( `Could not retrieve user profile photo from Microsoft Graph API: ${error}`, ); // User profile photo is optional, ignore errors and resolve undefined @@ -173,29 +200,94 @@ export class MicrosoftAuthProvider implements OAuthHandlers { }); }); } - - private async populateIdentity( - response: OAuthResponse, - ): Promise { - const { profile } = response; - - if (!profile.email) { - throw new Error('Microsoft profile contained no email'); - } - - // Like Google implementation, setting this to local part of email for now - const id = profile.email.split('@')[0]; - - return { ...response, backstageIdentity: { id } }; - } } -export type MicrosoftProviderOptions = {}; +export const microsoftEmailSignInResolver: SignInResolver = async ( + info, + ctx, +) => { + const { profile } = info; + + if (!profile.email) { + throw new Error('Microsoft profile contained no email'); + } + + const entity = await ctx.catalogIdentityClient.findUser({ + annotations: { + 'microsoft.com/email': profile.email, + }, + }); + + const claims = getEntityClaims(entity); + const token = await ctx.tokenIssuer.issueToken({ claims }); + + return { id: entity.metadata.name, entity, token }; +}; + +export const microsoftDefaultSignInResolver: SignInResolver = async ( + info, + ctx, +) => { + const { profile } = info; + + if (!profile.email) { + throw new Error('Profile contained no email'); + } + + let userId: string; + try { + const entity = await ctx.catalogIdentityClient.findUser({ + annotations: { + 'microsoft.com/email': profile.email, + }, + }); + userId = entity.metadata.name; + } catch (error) { + ctx.logger.warn( + `Failed to look up user, ${error}, falling back to allowing login based on email pattern, this will probably break in the future`, + ); + userId = profile.email.split('@')[0]; + } + + const token = await ctx.tokenIssuer.issueToken({ + claims: { sub: userId, ent: [`user:default/${userId}`] }, + }); + + return { id: userId, token }; +}; + +export type MicrosoftProviderOptions = { + /** + * The profile transformation function used to verify and convert the auth response + * into the profile that will be presented to the user. + */ + authHandler?: AuthHandler; + + /** + * Configure sign-in for this provider, without it the provider can not be used to sign users in. + */ + /** + * Maps an auth result to a Backstage identity for the user. + * + * Set to `'email'` to use the default email-based sign in resolver, which will search + * the catalog for a single user entity that has a matching `microsoft.com/email` annotation. + */ + signIn?: { + resolver?: SignInResolver; + }; +}; export const createMicrosoftProvider = ( - _options?: MicrosoftProviderOptions, + options?: MicrosoftProviderOptions, ): AuthProviderFactory => { - return ({ providerId, globalConfig, config, tokenIssuer }) => + return ({ + providerId, + globalConfig, + config, + tokenIssuer, + catalogApi, + logger, + }) => OAuthEnvironmentHandler.mapConfig(config, envConfig => { const clientId = envConfig.getString('clientId'); const clientSecret = envConfig.getString('clientSecret'); @@ -205,12 +297,38 @@ export const createMicrosoftProvider = ( const authorizationUrl = `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/authorize`; const tokenUrl = `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/token`; + const catalogIdentityClient = new CatalogIdentityClient({ + catalogApi, + tokenIssuer, + }); + + const authHandler: AuthHandler = options?.authHandler + ? options.authHandler + : async ({ fullProfile, params }) => ({ + profile: makeProfileInfo(fullProfile, params.id_token), + }); + + const signInResolverFn = + options?.signIn?.resolver ?? microsoftDefaultSignInResolver; + + const signInResolver: SignInResolver = info => + signInResolverFn(info, { + catalogIdentityClient, + tokenIssuer, + logger, + }); + const provider = new MicrosoftAuthProvider({ clientId, clientSecret, callbackUrl, authorizationUrl, tokenUrl, + authHandler, + signInResolver, + catalogIdentityClient, + logger, + tokenIssuer, }); return OAuthAdapter.fromConfig(globalConfig, provider, { From f55f9df1025b4fa018275833a73e39f6a3cd05c7 Mon Sep 17 00:00:00 2001 From: chicoribas Date: Sat, 10 Jul 2021 01:49:37 -0300 Subject: [PATCH 105/117] Changeset Signed-off-by: chicoribas --- .changeset/real-plums-vanish.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/real-plums-vanish.md diff --git a/.changeset/real-plums-vanish.md b/.changeset/real-plums-vanish.md new file mode 100644 index 0000000000..bc8f74445a --- /dev/null +++ b/.changeset/real-plums-vanish.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': minor +--- + +Add Sign In and Hanlder resolver for Microsoft provider From 5a77b4a9ebf9eadbcac1e3ba2e724ccaf29f9953 Mon Sep 17 00:00:00 2001 From: chicoribas Date: Sat, 10 Jul 2021 03:37:56 -0300 Subject: [PATCH 106/117] Fix spelling Signed-off-by: chicoribas --- .changeset/real-plums-vanish.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/real-plums-vanish.md b/.changeset/real-plums-vanish.md index bc8f74445a..94e9cf4a46 100644 --- a/.changeset/real-plums-vanish.md +++ b/.changeset/real-plums-vanish.md @@ -2,4 +2,4 @@ '@backstage/plugin-auth-backend': minor --- -Add Sign In and Hanlder resolver for Microsoft provider +Add Sign In and Handler resolver for Microsoft provider From 8bb82e0094d822f5b1d9649e7e31a98320ebcaba Mon Sep 17 00:00:00 2001 From: chicoribas Date: Sat, 10 Jul 2021 03:44:00 -0300 Subject: [PATCH 107/117] Api Report Signed-off-by: chicoribas --- plugins/auth-backend/api-report.md | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/plugins/auth-backend/api-report.md b/plugins/auth-backend/api-report.md index 3784682efa..e7ec0f3221 100644 --- a/plugins/auth-backend/api-report.md +++ b/plugins/auth-backend/api-report.md @@ -60,13 +60,10 @@ export const createGoogleProvider: ( ) => AuthProviderFactory; // @public (undocumented) -export function createRouter({ - logger, - config, - discovery, - database, - providerFactories, -}: RouterOptions): Promise; +export const createMicrosoftProvider: (options?: MicrosoftProviderOptions | undefined) => AuthProviderFactory; + +// @public (undocumented) +export function createRouter({ logger, config, discovery, database, providerFactories, }: RouterOptions): Promise; // @public (undocumented) export const defaultAuthProviderFactories: { @@ -102,6 +99,20 @@ export class IdentityClient { }>; } +// @public (undocumented) +export const microsoftDefaultSignInResolver: SignInResolver; + +// @public (undocumented) +export const microsoftEmailSignInResolver: SignInResolver; + +// @public (undocumented) +export type MicrosoftProviderOptions = { + authHandler?: AuthHandler; + signIn?: { + resolver?: SignInResolver; + }; +}; + // @public (undocumented) export class OAuthAdapter implements AuthProviderRouteHandlers { constructor(handlers: OAuthHandlers, options: Options); From a388d556983db13037d554c0546f06951f9d3d58 Mon Sep 17 00:00:00 2001 From: chicoribas Date: Mon, 12 Jul 2021 11:44:57 -0300 Subject: [PATCH 108/117] Change to patch changeset Signed-off-by: chicoribas --- .changeset/real-plums-vanish.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/real-plums-vanish.md b/.changeset/real-plums-vanish.md index 94e9cf4a46..a653a6bdf2 100644 --- a/.changeset/real-plums-vanish.md +++ b/.changeset/real-plums-vanish.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-auth-backend': minor +'@backstage/plugin-auth-backend': patch --- Add Sign In and Handler resolver for Microsoft provider From 8fc702c9c0a2bed2ad9afa002007e9761216ee75 Mon Sep 17 00:00:00 2001 From: chicoribas Date: Mon, 12 Jul 2021 11:45:19 -0300 Subject: [PATCH 109/117] Removing microsoftDefaultSignInResolver export Signed-off-by: chicoribas --- plugins/auth-backend/src/providers/microsoft/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/auth-backend/src/providers/microsoft/index.ts b/plugins/auth-backend/src/providers/microsoft/index.ts index 5b6637bef2..3167de5d0d 100644 --- a/plugins/auth-backend/src/providers/microsoft/index.ts +++ b/plugins/auth-backend/src/providers/microsoft/index.ts @@ -17,6 +17,5 @@ export { createMicrosoftProvider, microsoftEmailSignInResolver, - microsoftDefaultSignInResolver, } from './provider'; export type { MicrosoftProviderOptions } from './provider'; From 2aed3df2c9f2623f07654bf02ed9ba0cde52f5e5 Mon Sep 17 00:00:00 2001 From: chicoribas Date: Mon, 12 Jul 2021 11:46:01 -0300 Subject: [PATCH 110/117] Simpler microsoftDefaultSignInResolver Signed-off-by: chicoribas --- .../src/providers/microsoft/provider.ts | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/plugins/auth-backend/src/providers/microsoft/provider.ts b/plugins/auth-backend/src/providers/microsoft/provider.ts index f97512cda5..633844a351 100644 --- a/plugins/auth-backend/src/providers/microsoft/provider.ts +++ b/plugins/auth-backend/src/providers/microsoft/provider.ts @@ -154,10 +154,6 @@ export class MicrosoftAuthProvider implements OAuthHandlers { profile, }; - if (!profile.email) { - throw new Error('Microsoft profile contained no email'); - } - if (this.signInResolver) { response.backstageIdentity = await this.signInResolver( { @@ -234,20 +230,7 @@ export const microsoftDefaultSignInResolver: SignInResolver = async throw new Error('Profile contained no email'); } - let userId: string; - try { - const entity = await ctx.catalogIdentityClient.findUser({ - annotations: { - 'microsoft.com/email': profile.email, - }, - }); - userId = entity.metadata.name; - } catch (error) { - ctx.logger.warn( - `Failed to look up user, ${error}, falling back to allowing login based on email pattern, this will probably break in the future`, - ); - userId = profile.email.split('@')[0]; - } + const userId = profile.email.split('@')[0]; const token = await ctx.tokenIssuer.issueToken({ claims: { sub: userId, ent: [`user:default/${userId}`] }, From ad69eb72d5d663d9e02326627c04ded802635d40 Mon Sep 17 00:00:00 2001 From: chicoribas Date: Mon, 12 Jul 2021 14:43:04 -0300 Subject: [PATCH 111/117] Updating Api Report Signed-off-by: chicoribas --- plugins/auth-backend/api-report.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/plugins/auth-backend/api-report.md b/plugins/auth-backend/api-report.md index e7ec0f3221..e2ee1a6352 100644 --- a/plugins/auth-backend/api-report.md +++ b/plugins/auth-backend/api-report.md @@ -99,9 +99,6 @@ export class IdentityClient { }>; } -// @public (undocumented) -export const microsoftDefaultSignInResolver: SignInResolver; - // @public (undocumented) export const microsoftEmailSignInResolver: SignInResolver; From 8079f1f2d17c14a19b4c206dc2a9a4f61f53ace0 Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Tue, 13 Jul 2021 16:13:50 +0200 Subject: [PATCH 112/117] docs: add a docstring about the default healthcheck behavior Signed-off-by: Himanshu Mishra --- .../backend-common/src/service/createStatusCheckRouter.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/backend-common/src/service/createStatusCheckRouter.ts b/packages/backend-common/src/service/createStatusCheckRouter.ts index ab24a6953b..fd794cc9c4 100644 --- a/packages/backend-common/src/service/createStatusCheckRouter.ts +++ b/packages/backend-common/src/service/createStatusCheckRouter.ts @@ -22,6 +22,10 @@ import { errorHandler, statusCheckHandler, StatusCheck } from '../middleware'; export interface StatusCheckRouterOptions { logger: Logger; path?: string; + /** + * If not implemented, the default express middleware always returns 200. + * Override this to implement your own logic for a health check. + */ statusCheck?: StatusCheck; } From ad93bb0353ed7b1748874150338542bdd942162c Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Tue, 13 Jul 2021 16:26:13 +0200 Subject: [PATCH 113/117] backend-common: add a changeset for docstring update Signed-off-by: Himanshu Mishra --- .changeset/wise-rockets-smoke.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/wise-rockets-smoke.md diff --git a/.changeset/wise-rockets-smoke.md b/.changeset/wise-rockets-smoke.md new file mode 100644 index 0000000000..c81d20519d --- /dev/null +++ b/.changeset/wise-rockets-smoke.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Document the default behavior of `statusCheck` option in `createStatusCheckRouter`. From 91a0095f1020db60477fc0495baa98acf10cc74c Mon Sep 17 00:00:00 2001 From: chicoribas Date: Tue, 13 Jul 2021 11:34:45 -0300 Subject: [PATCH 114/117] Api Reporty Signed-off-by: chicoribas --- plugins/auth-backend/api-report.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/plugins/auth-backend/api-report.md b/plugins/auth-backend/api-report.md index e2ee1a6352..50341c0392 100644 --- a/plugins/auth-backend/api-report.md +++ b/plugins/auth-backend/api-report.md @@ -60,10 +60,18 @@ export const createGoogleProvider: ( ) => AuthProviderFactory; // @public (undocumented) -export const createMicrosoftProvider: (options?: MicrosoftProviderOptions | undefined) => AuthProviderFactory; +export const createMicrosoftProvider: ( + options?: MicrosoftProviderOptions | undefined, +) => AuthProviderFactory; // @public (undocumented) -export function createRouter({ logger, config, discovery, database, providerFactories, }: RouterOptions): Promise; +export function createRouter({ + logger, + config, + discovery, + database, + providerFactories, +}: RouterOptions): Promise; // @public (undocumented) export const defaultAuthProviderFactories: { @@ -104,10 +112,10 @@ export const microsoftEmailSignInResolver: SignInResolver; // @public (undocumented) export type MicrosoftProviderOptions = { - authHandler?: AuthHandler; - signIn?: { - resolver?: SignInResolver; - }; + authHandler?: AuthHandler; + signIn?: { + resolver?: SignInResolver; + }; }; // @public (undocumented) From ea1d956ef44db30321302f0e42204f548684ec64 Mon Sep 17 00:00:00 2001 From: jrusso1020 Date: Tue, 13 Jul 2021 12:39:08 -0400 Subject: [PATCH 115/117] Update fs-extra in scaffolder-backend Update fs-extra to 10.0.0 to better handle broken symbolic links. The only breaking changes in the major version upgrade should be this and the requirement of node v12 or higher which backstage also requires. fixes #6456 Signed-off-by: jrusso1020 --- .changeset/lemon-crabs-confess.md | 5 +++++ plugins/scaffolder-backend/package.json | 2 +- yarn.lock | 9 +++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .changeset/lemon-crabs-confess.md diff --git a/.changeset/lemon-crabs-confess.md b/.changeset/lemon-crabs-confess.md new file mode 100644 index 0000000000..11d269e389 --- /dev/null +++ b/.changeset/lemon-crabs-confess.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +Updating fs-extra to 10.0.0 to handle broken symbolic links correctly diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index de97a942c1..d31e6c0d5f 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -46,7 +46,7 @@ "cross-fetch": "^3.0.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", - "fs-extra": "9.1.0", + "fs-extra": "10.0.0", "git-url-parse": "~11.4.4", "globby": "^11.0.0", "handlebars": "^4.7.6", diff --git a/yarn.lock b/yarn.lock index 15091d99fe..0400d0bc59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13142,6 +13142,15 @@ fs-constants@^1.0.0: resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== +fs-extra@10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@9.1.0, fs-extra@^9.0.0, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" From afd9c6ed4148a795d747eed1bf68e76ab7d7bad9 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 13 Jul 2021 19:23:49 +0200 Subject: [PATCH 116/117] chore: fix changeset Signed-off-by: blam --- .changeset/lemon-crabs-confess.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/lemon-crabs-confess.md b/.changeset/lemon-crabs-confess.md index 11d269e389..0d87843df5 100644 --- a/.changeset/lemon-crabs-confess.md +++ b/.changeset/lemon-crabs-confess.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-scaffolder-backend': minor +'@backstage/plugin-scaffolder-backend': patch --- Updating fs-extra to 10.0.0 to handle broken symbolic links correctly From 842b62d2c69040f1269a7c9a0396a9ace4ba896f Mon Sep 17 00:00:00 2001 From: Chase Rutherford-Jenkins Date: Tue, 13 Jul 2021 16:03:57 -0700 Subject: [PATCH 117/117] update plugin docs to match PagerDuty guide Signed-off-by: Chase Rutherford-Jenkins --- plugins/pagerduty/README.md | 105 +++++++++++++++++++++++------------- 1 file changed, 68 insertions(+), 37 deletions(-) diff --git a/plugins/pagerduty/README.md b/plugins/pagerduty/README.md index bdafeb984a..2a898fc740 100644 --- a/plugins/pagerduty/README.md +++ b/plugins/pagerduty/README.md @@ -1,32 +1,41 @@ -# PagerDuty +# PagerDuty + Backstage Integration Benefits -## Overview +- Display relevant PagerDuty information about an entity within Backstage, such as the escalation policy or if there are any active incidents +- Trigger an incident to the currently on-call responder(s) for a service -This plugin displays PagerDuty information about an entity such as if there are any active incidents and what the escalation policy is. +# How it Works -There is also an easy way to trigger an alarm directly to the person who is currently on-call. +- The Backstage PagerDuty plugin allows PagerDuty information about a Backstage entity to be displayed within Backstage. This includes active incidents as well as the current on-call responders' names, email addresses, and links to their profiles in PagerDuty. +- Incidents can be manually triggered via the plugin with a user-provided description, which will in turn notify the current on-call responders. -This plugin requires that entities are annotated with an [integration key](https://support.pagerduty.com/docs/services-and-integrations#add-integrations-to-an-existing-service). See more further down in this document. +# Requirements -## Features +- Setup of the PagerDuty plugin for Backstage requires a PagerDuty Admin role in order to generate the necessary authorizations, such as the API token. If you do not have this role, please reach out to an Admin or Account Owner within your organization to request configuration of this plugin. -### View any open incidents +# Support -![PagerDuty plugin showing no incidents and the on-call rotation](doc/pd1.png) +If you need help with this plugin, please reach out on the [Backstage Discord server](https://discord.gg/MUpMjP2). -### Email link, and view contact information for staff on call +# Integration Walk-through -![PagerDuty plugin showing on-call rotation contact information](doc/pd2.png) +## In PagerDuty -### Trigger an incident for a service +### Integrating With a PagerDuty Service -![PagerDuty plugin popup modal for creating an incident](doc/pd3.png) +1. From the **Configuration** menu, select **Services**. +2. There are two ways to add an integration to a service: + - **If you are adding your integration to an existing service**: Click the **name** of the service you want to add the integration to. Then, select the **Integrations** tab and click the **New Integration** button. + - **If you are creating a new service for your integration**: Please read the documentation in section [Configuring Services and Integrations](https://support.pagerduty.com/docs/services-and-integrations#section-configuring-services-and-integrations) and follow the steps outlined in the [Create a New Service](https://support.pagerduty.com/docs/services-and-integrations#section-create-a-new-service) section, selecting **Backstage** as the **Integration Type** in step 4. Continue with the **In Backstage** section (below) once you have finished these steps. +3. Enter an **Integration Name** in the format `monitoring-tool-service-name` (e.g. `Backstage-Shopping-Cart`) and select **Backstage** from the Integration Type menu. +4. Click the **Add Integration** button to save your new integration. You will be redirected to the Integrations tab for your service. +5. An **Integration Key** will be generated on this screen. Keep this key saved in a safe place, as it will be used when you configure the integration with **Backstage** in the next section. + ![](https://pdpartner.s3.amazonaws.com/ig-template-copy-integration-key.png) -![PagerDuty plugin showing an active incident](doc/pd4.png) +## In Backstage -## Setup instructions +### Install the plugin -Install the plugin: +Install the plugin via a CLI: ```bash # From your Backstage root directory @@ -34,7 +43,7 @@ cd packages/app yarn add @backstage/plugin-pagerduty ``` -Add it to the `EntityPage.tsx`: +Next, add the plugin to `EntityPage.tsx` by adding the following code snippet where appropriate: ```ts import { @@ -51,22 +60,18 @@ import { } ``` -## Client configuration +### Configure the plugin -If you want to override the default URL for events, you can add it to `app-config.yaml`. - -In `app-config.yaml`: +First, annotate the appropriate entity with the PagerDuty integration key: ```yaml -pagerduty: - eventsBaseUrl: 'https://events.pagerduty.com/v2' +annotations: + pagerduty.com/integration-key: [INTEGRATION_KEY] ``` -## Providing the API Token +Next, provide the [API token](https://support.pagerduty.com/docs/generating-api-keys#generating-a-general-access-rest-api-key) that the client will use to make requests to the [PagerDuty API](https://developer.pagerduty.com/docs/rest-api-v2/rest-api/). -In order for the client to make requests to the [PagerDuty API](https://developer.pagerduty.com/docs/rest-api-v2/rest-api/) it needs an [API Token](https://support.pagerduty.com/docs/generating-api-keys#generating-a-general-access-rest-api-key). - -Add the proxy configuration in `app-config.yaml` +Add the proxy configuration in `app-config.yaml`: ```yaml proxy: @@ -77,23 +82,49 @@ proxy: Authorization: Token token=${PAGERDUTY_TOKEN} ``` -Then start the backend passing the token as an environment variable: +Then, start the backend, passing the PagerDuty API token as an environment variable: ```bash $ PAGERDUTY_TOKEN='' yarn start ``` -This will proxy the request by adding `Authorization` header with the provided token. +This will proxy the request by adding an `Authorization` header with the provided token. -## Integration Key +### Optional configuration -The information displayed for each entity is based on the [integration key](https://support.pagerduty.com/docs/services-and-integrations#add-integrations-to-an-existing-service). +If you want to override the default URL used for events, you can add it to `app-config.yaml`: -### Adding the integration key to the entity annotation - -If you want to use this plugin for an entity, you need to label it with the below annotation: - -```yml -annotations: - pagerduty.com/integration-key: [INTEGRATION_KEY] +```yaml +pagerduty: + eventsBaseUrl: 'https://events.pagerduty.com/v2' ``` + +# How to Uninstall + +1. Remove any configuration added in Backstage yaml files, such as the proxy configuration in `app-config.yaml` and the integration key in an entity's annotations. +2. Remove the added code snippets from `EntityPage.tsx` +3. Remove the plugin package: + +```bash +# From your Backstage root directory +cd packages/app +yarn remove @backstage/plugin-pagerduty +``` + +4. [Delete the integration](https://support.pagerduty.com/docs/services-and-integrations#delete-an-integration-from-a-service) from the service in PagerDuty + +# Feature Overview + +## View any open incidents + +![PagerDuty plugin showing no incidents and the on-call rotation](doc/pd1.png) + +## Email link, and view contact information for staff on call + +![PagerDuty plugin showing on-call rotation contact information](doc/pd2.png) + +## Trigger an incident for a service + +![PagerDuty plugin popup modal for creating an incident](doc/pd3.png) + +![PagerDuty plugin showing an active incident](doc/pd4.png)