From 2890f47517645ebbb465f117127bf25ffd002e2e Mon Sep 17 00:00:00 2001 From: Marc Bruins Date: Wed, 23 Nov 2022 16:32:42 +0100 Subject: [PATCH 001/156] add changes to make it multiproject Signed-off-by: Marc Bruins --- .changeset/ninety-hats-serve.md | 5 +++++ docs/integrations/azure/discovery.md | 7 ++++++- plugins/catalog-backend-module-azure/src/lib/azure.ts | 7 +++++-- .../src/providers/AzureDevOpsEntityProvider.ts | 11 ++++++----- 4 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 .changeset/ninety-hats-serve.md diff --git a/.changeset/ninety-hats-serve.md b/.changeset/ninety-hats-serve.md new file mode 100644 index 0000000000..637d56d47e --- /dev/null +++ b/.changeset/ninety-hats-serve.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-azure': minor +--- + +This will add the ability to use Azure DevOps with multi project with a single value which is a new feature as previously this had to be done manually for each project that you wanted to add diff --git a/docs/integrations/azure/discovery.md b/docs/integrations/azure/discovery.md index 2156f60814..18686ebdc3 100644 --- a/docs/integrations/azure/discovery.md +++ b/docs/integrations/azure/discovery.md @@ -47,6 +47,11 @@ catalog: frequency: { minutes: 30 } # supports ISO duration, "human duration" as used in code timeout: { minutes: 3 } + yourSecondProviderId: # identifies your dataset / provider independent of config changes + organization: myorg + project: '*' # this will match all projects + repository: '*' # this will match all repos + path: /catalog-info.yaml anotherProviderId: # another identifier organization: myorg project: myproject @@ -62,7 +67,7 @@ The parameters available are: - **`host:`** _(optional)_ Leave empty for Cloud hosted, otherwise set to your self-hosted instance host. - **`organization:`** Your Organization slug (or Collection for on-premise users). Required. -- **`project:`** Your project slug. Required. +- **`project:`** Your project slug. Required. Wildcards are supported as show on the examples above. If not set, all projects will be searched. - **`repository:`** _(optional)_ The repository name. Wildcards are supported as show on the examples above. If not set, all repositories will be searched. - **`path:`** _(optional)_ Where to find catalog-info.yaml files. Defaults to /catalog-info.yaml. - **`schedule`** _(optional)_: diff --git a/plugins/catalog-backend-module-azure/src/lib/azure.ts b/plugins/catalog-backend-module-azure/src/lib/azure.ts index 316c9b0b8c..0c96d133d3 100644 --- a/plugins/catalog-backend-module-azure/src/lib/azure.ts +++ b/plugins/catalog-backend-module-azure/src/lib/azure.ts @@ -31,6 +31,9 @@ export interface CodeSearchResultItem { repository: { name: string; }; + project: { + name: string; + }; } const isCloud = (host: string) => host === 'dev.azure.com'; @@ -47,7 +50,7 @@ export async function codeSearch( const searchBaseUrl = isCloud(azureConfig.host) ? 'https://almsearch.dev.azure.com' : `https://${azureConfig.host}`; - const searchUrl = `${searchBaseUrl}/${org}/${project}/_apis/search/codesearchresults?api-version=6.0-preview.1`; + const searchUrl = `${searchBaseUrl}/${org}/_apis/search/codesearchresults?api-version=6.0-preview.1`; let items: CodeSearchResultItem[] = []; let hasMorePages = true; @@ -59,7 +62,7 @@ export async function codeSearch( }), method: 'POST', body: JSON.stringify({ - searchText: `path:${path} repo:${repo || '*'}`, + searchText: `path:${path} repo:${repo || '*'} proj:${project || '*'}`, $skip: items.length, $top: PAGE_SIZE, }), diff --git a/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.ts b/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.ts index b824d176ee..87ddde78d3 100644 --- a/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.ts +++ b/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.ts @@ -166,17 +166,18 @@ export class AzureDevOpsEntityProvider implements EntityProvider { } private createLocationSpec(file: CodeSearchResultItem): LocationSpec { + const target = this.createObjectUrl(file); + return { type: 'url', - target: this.createObjectUrl(file), + target: target, presence: 'required', }; } private createObjectUrl(file: CodeSearchResultItem): string { - const baseUrl = `https://${this.config.host}/${this.config.organization}/${this.config.project}`; - return encodeURI( - `${baseUrl}/_git/${file.repository.name}?path=${file.path}`, - ); + const baseUrl = `https://${this.config.host}/${this.config.organization}`; + const encodedUri = `${baseUrl}/${file.project.name}/_git/${file.repository.name}?path=${file.path}`; + return encodedUri; } } From 68787714bf8a23e43f59a5b32ef66910995b8fa6 Mon Sep 17 00:00:00 2001 From: Marc Bruins Date: Fri, 25 Nov 2022 06:38:20 +0100 Subject: [PATCH 002/156] add project to tests Signed-off-by: Marc Bruins --- .../src/lib/azure.test.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/plugins/catalog-backend-module-azure/src/lib/azure.test.ts b/plugins/catalog-backend-module-azure/src/lib/azure.test.ts index 16f5067197..7c3fc0f9e3 100644 --- a/plugins/catalog-backend-module-azure/src/lib/azure.test.ts +++ b/plugins/catalog-backend-module-azure/src/lib/azure.test.ts @@ -64,6 +64,9 @@ describe('azure', () => { repository: { name: 'backstage', }, + project: { + name: '*', + }, }, { fileName: 'catalog-info.yaml', @@ -71,6 +74,9 @@ describe('azure', () => { repository: { name: 'ios-app', }, + project: { + name: '*', + }, }, ], }; @@ -151,6 +157,9 @@ describe('azure', () => { repository: { name: 'backstage', }, + project: { + name: '*', + }, }, ], }; @@ -190,6 +199,9 @@ describe('azure', () => { repository: { name: 'backstage', }, + project: { + name: '*', + }, })); }; From 73beead7480466607d9abe83c97aa204722f07d2 Mon Sep 17 00:00:00 2001 From: Marc Bruins Date: Fri, 25 Nov 2022 06:44:47 +0100 Subject: [PATCH 003/156] add project to tests expects Signed-off-by: Marc Bruins --- .../catalog-backend-module-azure/src/lib/azure.test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/catalog-backend-module-azure/src/lib/azure.test.ts b/plugins/catalog-backend-module-azure/src/lib/azure.test.ts index 7c3fc0f9e3..14cd1d082f 100644 --- a/plugins/catalog-backend-module-azure/src/lib/azure.test.ts +++ b/plugins/catalog-backend-module-azure/src/lib/azure.test.ts @@ -33,7 +33,7 @@ describe('azure', () => { (req, res, ctx) => { expect(req.headers.get('Authorization')).toBe('Basic OkFCQw=='); expect(req.body).toEqual({ - searchText: 'path:/catalog-info.yaml repo:*', + searchText: 'path:/catalog-info.yaml repo:* proj:*', $skip: 0, $top: 1000, }); @@ -87,7 +87,7 @@ describe('azure', () => { (req, res, ctx) => { expect(req.headers.get('Authorization')).toBe('Basic OkFCQw=='); expect(req.body).toEqual({ - searchText: 'path:/catalog-info.yaml repo:*', + searchText: 'path:/catalog-info.yaml repo:* proj:*', $skip: 0, $top: 1000, }); @@ -127,7 +127,7 @@ describe('azure', () => { (req, res, ctx) => { expect(req.headers.get('Authorization')).toBe('Basic OkFCQw=='); expect(req.body).toEqual({ - searchText: 'path:/catalog-info.yaml repo:backstage', + searchText: 'path:/catalog-info.yaml repo:backstage: proj:*', $skip: 0, $top: 1000, }); @@ -170,7 +170,7 @@ describe('azure', () => { (req, res, ctx) => { expect(req.headers.get('Authorization')).toBe('Basic OkFCQw=='); expect(req.body).toEqual({ - searchText: 'path:/catalog-info.yaml repo:*', + searchText: 'path:/catalog-info.yaml repo:* proj:*', $skip: 0, $top: 1000, }); From 206b9062a0d155f8cf833abe6d9496f89b5c2196 Mon Sep 17 00:00:00 2001 From: Marc Bruins Date: Fri, 25 Nov 2022 07:29:48 +0100 Subject: [PATCH 004/156] remove unnecessary , Signed-off-by: Marc Bruins --- plugins/catalog-backend-module-azure/src/lib/azure.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/catalog-backend-module-azure/src/lib/azure.test.ts b/plugins/catalog-backend-module-azure/src/lib/azure.test.ts index 14cd1d082f..ec6ef654b6 100644 --- a/plugins/catalog-backend-module-azure/src/lib/azure.test.ts +++ b/plugins/catalog-backend-module-azure/src/lib/azure.test.ts @@ -65,7 +65,7 @@ describe('azure', () => { name: 'backstage', }, project: { - name: '*', + name: 'backstage', }, }, { @@ -75,7 +75,7 @@ describe('azure', () => { name: 'ios-app', }, project: { - name: '*', + name: 'backstage', }, }, ], @@ -87,7 +87,7 @@ describe('azure', () => { (req, res, ctx) => { expect(req.headers.get('Authorization')).toBe('Basic OkFCQw=='); expect(req.body).toEqual({ - searchText: 'path:/catalog-info.yaml repo:* proj:*', + searchText: 'path:/catalog-info.yaml repo:* proj:backstage', $skip: 0, $top: 1000, }); From bf91c9f896dd8de3eae3e23a6326a32d48be4560 Mon Sep 17 00:00:00 2001 From: Kurt King Date: Tue, 20 Dec 2022 20:06:35 -0600 Subject: [PATCH 005/156] refactor: add LinkButton in favor of Button Signed-off-by: Kurt King --- .../src/components/Button/Button.tsx | 4 +- .../LinkButton/LinkButton.stories.tsx | 170 ++++++++++++++++++ .../components/LinkButton/LinkButton.test.tsx | 44 +++++ .../src/components/LinkButton/LinkButton.tsx | 53 ++++++ .../src/components/LinkButton/index.ts | 17 ++ .../core-components/src/components/index.ts | 1 + 6 files changed, 287 insertions(+), 2 deletions(-) create mode 100644 packages/core-components/src/components/LinkButton/LinkButton.stories.tsx create mode 100644 packages/core-components/src/components/LinkButton/LinkButton.test.tsx create mode 100644 packages/core-components/src/components/LinkButton/LinkButton.tsx create mode 100644 packages/core-components/src/components/LinkButton/index.ts diff --git a/packages/core-components/src/components/Button/Button.tsx b/packages/core-components/src/components/Button/Button.tsx index 575f42b03c..771d94adb5 100644 --- a/packages/core-components/src/components/Button/Button.tsx +++ b/packages/core-components/src/components/Button/Button.tsx @@ -25,6 +25,7 @@ import { Link, LinkProps } from '../Link'; * * @public * @remarks + * @deprecated use `LinkButtonProps` instead * * See {@link https://v4.mui.com/api/button/#props | Material-UI Button Props} for all properties */ @@ -43,8 +44,7 @@ const LinkWrapper = React.forwardRef((props, ref) => ( * * @public * @remarks - * - * Makes the Button to utilize react-router + * @deprecated use `LinkButton` instead */ export const Button = React.forwardRef((props, ref) => ( diff --git a/packages/core-components/src/components/LinkButton/LinkButton.stories.tsx b/packages/core-components/src/components/LinkButton/LinkButton.stories.tsx new file mode 100644 index 0000000000..3dc49abb7f --- /dev/null +++ b/packages/core-components/src/components/LinkButton/LinkButton.stories.tsx @@ -0,0 +1,170 @@ +/* + * 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 React, { ComponentType } from 'react'; +import { LinkButton } from './LinkButton'; +import { useLocation } from 'react-router-dom'; +import { createRouteRef, useRouteRef } from '@backstage/core-plugin-api'; +import Divider from '@material-ui/core/Divider'; +import List from '@material-ui/core/List'; +import ListItem from '@material-ui/core/ListItem'; +import ListItemText from '@material-ui/core/ListItemText'; +import Typography from '@material-ui/core/Typography'; +import MaterialButton from '@material-ui/core/Button'; +import { wrapInTestApp } from '@backstage/test-utils'; +import { Link } from '../Link'; + +const routeRef = createRouteRef({ + id: 'storybook.test-route', +}); + +const Location = () => { + const location = useLocation(); + return
Current location: {location.pathname}
; +}; + +export default { + title: 'Inputs/Button', + component: LinkButton, + decorators: [ + (Story: ComponentType<{}>) => + wrapInTestApp( + <> + + A collection of buttons that should be used in the Backstage + interface. These leverage the properties inherited from{' '} + + Material-UI Button + + , but include an opinionated set that align to the Backstage design. + + + + +
+
+ +
+ +
+ , + { mountedRoutes: { '/hello': routeRef } }, + ), + ], +}; + +export const Default = () => { + const link = useRouteRef(routeRef); + // Design Permutations: + // color = default | primary | secondary + // variant = contained | outlined | text + return ( + + + + Default Button: + This is the default button design which should be used in most cases. +
+
color="primary" variant="contained"
+
+ + + Register Component + +
+ + + Secondary Button: + Used for actions that cancel, skip, and in general perform negative + functions, etc. +
+
color="secondary" variant="contained"
+
+ + + Cancel + +
+ + + Tertiary Button: + Used commonly in a ButtonGroup and when the button function itself is + not a primary function on a page. +
+
color="default" variant="outlined"
+
+ + + View Details + +
+
+ ); +}; + +export const ButtonLinks = () => { + const link = useRouteRef(routeRef); + + const handleClick = () => { + return 'Your click worked!'; + }; + + return ( + <> + + { + // TODO: Refactor to use new routing mechanisms + } + + + Route Ref + +   has props for both Material-UI's component as well as for + react-router-dom's Route object. + + + + + Static Path + +   links to a statically defined route. In general, this should be + avoided. + + + + + View URL + +   links to a defined URL using Material-UI's Button. + + + + + Trigger Event + +   triggers an onClick event using Material-UI's Button. + + + + ); +}; diff --git a/packages/core-components/src/components/LinkButton/LinkButton.test.tsx b/packages/core-components/src/components/LinkButton/LinkButton.test.tsx new file mode 100644 index 0000000000..7dbc42f9cb --- /dev/null +++ b/packages/core-components/src/components/LinkButton/LinkButton.test.tsx @@ -0,0 +1,44 @@ +/* + * 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 React from 'react'; +import { render, fireEvent, act } from '@testing-library/react'; +import { wrapInTestApp } from '@backstage/test-utils'; +import { LinkButton } from './LinkButton'; +import { Route, Routes } from 'react-router-dom'; + +describe('', () => { + it('navigates using react-router', async () => { + const testString = 'This is test string'; + const linkButtonLabel = 'Navigate!'; + const { getByText } = render( + wrapInTestApp( + <> + {linkButtonLabel} + + {testString}

} /> +
+ , + ), + ); + + expect(() => getByText(testString)).toThrow(); + await act(async () => { + fireEvent.click(getByText(linkButtonLabel)); + }); + expect(getByText(testString)).toBeInTheDocument(); + }); +}); diff --git a/packages/core-components/src/components/LinkButton/LinkButton.tsx b/packages/core-components/src/components/LinkButton/LinkButton.tsx new file mode 100644 index 0000000000..60c218ba5f --- /dev/null +++ b/packages/core-components/src/components/LinkButton/LinkButton.tsx @@ -0,0 +1,53 @@ +/* + * 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 MaterialButton, { + ButtonProps as MaterialButtonProps, +} from '@material-ui/core/Button'; +import React from 'react'; +import { Link, LinkProps } from '../Link'; + +/** + * Properties for {@link LinkButton} + * + * @public + * @remarks + * + * See {@link https://v4.mui.com/api/button/#props | Material-UI Button Props} for all properties + */ +export type LinkButtonProps = MaterialButtonProps & + Omit; + +/** + * This wrapper is here to reset the color of the Link and make typescript happy. + */ +const LinkWrapper = React.forwardRef((props, ref) => ( + +)); + +/** + * Thin wrapper on top of material-ui's {@link https://v4.mui.com/components/buttons/ | Button} component + * + * @public + * @remarks + * + * Makes the Button to utilize react-router + */ +export const LinkButton = React.forwardRef( + (props, ref) => ( + + ), +) as (props: LinkButtonProps) => JSX.Element; diff --git a/packages/core-components/src/components/LinkButton/index.ts b/packages/core-components/src/components/LinkButton/index.ts new file mode 100644 index 0000000000..8ca699ecdd --- /dev/null +++ b/packages/core-components/src/components/LinkButton/index.ts @@ -0,0 +1,17 @@ +/* + * 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 { LinkButton } from './LinkButton'; +export type { LinkButtonProps } from './LinkButton'; diff --git a/packages/core-components/src/components/index.ts b/packages/core-components/src/components/index.ts index 473fab8444..218df9043d 100644 --- a/packages/core-components/src/components/index.ts +++ b/packages/core-components/src/components/index.ts @@ -30,6 +30,7 @@ export * from './HeaderIconLinkRow'; export * from './HorizontalScrollGrid'; export * from './Lifecycle'; export * from './Link'; +export * from './LinkButton'; export * from './LogViewer'; export * from './MarkdownContent'; export * from './OAuthRequestDialog'; From 910015f5b75e8aced02452e694032dce7bb7b13c Mon Sep 17 00:00:00 2001 From: Kurt King Date: Tue, 20 Dec 2022 20:23:23 -0600 Subject: [PATCH 006/156] docs: add changeset Signed-off-by: Kurt King --- .changeset/popular-dancers-join.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/popular-dancers-join.md diff --git a/.changeset/popular-dancers-join.md b/.changeset/popular-dancers-join.md new file mode 100644 index 0000000000..e7f6ab524f --- /dev/null +++ b/.changeset/popular-dancers-join.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +The Button component has been deprecated in favor of the LinkButton component From 247bb8af2ab77bc990a53dfe80c0a8d546cad17d Mon Sep 17 00:00:00 2001 From: Kurt King Date: Tue, 20 Dec 2022 20:36:06 -0600 Subject: [PATCH 007/156] update api-report Signed-off-by: Kurt King --- packages/core-components/api-report.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/core-components/api-report.md b/packages/core-components/api-report.md index c46b3637cb..6dff7e35e0 100644 --- a/packages/core-components/api-report.md +++ b/packages/core-components/api-report.md @@ -129,10 +129,10 @@ export type BreadcrumbsStyledBoxClassKey = 'root'; // @public export function BrokenImageIcon(props: IconComponentProps): JSX.Element; -// @public +// @public @deprecated export const Button: (props: ButtonProps) => JSX.Element; -// @public +// @public @deprecated export type ButtonProps = ButtonProps_2 & Omit; // @public (undocumented) @@ -629,6 +629,13 @@ export function LinearGauge(props: Props_11): JSX.Element | null; // @public export const Link: (props: LinkProps) => JSX.Element; +// @public +export const LinkButton: (props: LinkButtonProps) => JSX.Element; + +// @public +export type LinkButtonProps = ButtonProps_2 & + Omit; + // Warning: (ae-missing-release-tag) "LinkProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) From cc0333d73cba7e3c2b97eed9d78fc23722ac7fb9 Mon Sep 17 00:00:00 2001 From: Kurt King Date: Tue, 20 Dec 2022 20:52:03 -0600 Subject: [PATCH 008/156] chore: update to 2022 Signed-off-by: Kurt King --- packages/core-components/src/components/Link/Link.stories.tsx | 2 +- packages/core-components/src/components/Link/Link.test.tsx | 2 +- packages/core-components/src/components/Link/Link.tsx | 2 +- packages/core-components/src/components/Link/index.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/core-components/src/components/Link/Link.stories.tsx b/packages/core-components/src/components/Link/Link.stories.tsx index 6049ec68b1..17e331b0b5 100644 --- a/packages/core-components/src/components/Link/Link.stories.tsx +++ b/packages/core-components/src/components/Link/Link.stories.tsx @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Backstage Authors + * Copyright 2022 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. diff --git a/packages/core-components/src/components/Link/Link.test.tsx b/packages/core-components/src/components/Link/Link.test.tsx index 3538b79052..6365c00faf 100644 --- a/packages/core-components/src/components/Link/Link.test.tsx +++ b/packages/core-components/src/components/Link/Link.test.tsx @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Backstage Authors + * Copyright 2022 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. diff --git a/packages/core-components/src/components/Link/Link.tsx b/packages/core-components/src/components/Link/Link.tsx index 440fcb811f..29214fb69b 100644 --- a/packages/core-components/src/components/Link/Link.tsx +++ b/packages/core-components/src/components/Link/Link.tsx @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Backstage Authors + * Copyright 2022 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. diff --git a/packages/core-components/src/components/Link/index.ts b/packages/core-components/src/components/Link/index.ts index 2160508451..d5bca4728f 100644 --- a/packages/core-components/src/components/Link/index.ts +++ b/packages/core-components/src/components/Link/index.ts @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Backstage Authors + * Copyright 2022 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. From 3825687f5aed23c17e434315f77cc068ef71d58e Mon Sep 17 00:00:00 2001 From: Marc Bruins Date: Sat, 24 Dec 2022 18:43:24 +0100 Subject: [PATCH 009/156] Update docs and fix tests Signed-off-by: Marc Bruins --- docs/integrations/azure/discovery.md | 2 +- .../providers/AzureDevOpsEntityProvider.test.ts | 15 +++++++++++++++ .../src/providers/AzureDevOpsEntityProvider.ts | 7 ++++--- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/docs/integrations/azure/discovery.md b/docs/integrations/azure/discovery.md index 18686ebdc3..a7ddd9c4a9 100644 --- a/docs/integrations/azure/discovery.md +++ b/docs/integrations/azure/discovery.md @@ -149,7 +149,7 @@ When using a custom pattern, the target is composed of five parts: - The base instance URL, `https://dev.azure.com` in this case - The organization name which is required, `myorg` in this case -- The project name which is required, `myproject` in this case +- The project name which is optional, `myproject` in this case. This defaults to \*, which scans all the projects where the token has access to. - The repository blob to scan, which accepts \* wildcard tokens and must be added after `_git/`. This can simply be `*` to scan all repositories in the project. diff --git a/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.test.ts b/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.test.ts index f7a63f259e..dff1164899 100644 --- a/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.test.ts +++ b/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.test.ts @@ -164,6 +164,9 @@ describe('AzureDevOpsEntityProvider', () => { repository: { name: 'myrepo', }, + project: { + name: 'myproject', + }, }, ], 'https://dev.azure.com/myorganization/myproject', @@ -189,6 +192,9 @@ describe('AzureDevOpsEntityProvider', () => { repository: { name: 'myrepo', }, + project: { + name: 'myproject', + }, }, { fileName: 'catalog-info.yaml', @@ -196,6 +202,9 @@ describe('AzureDevOpsEntityProvider', () => { repository: { name: 'myotherrepo', }, + project: { + name: 'myproject', + }, }, ], 'https://dev.azure.com/myorganization/myproject', @@ -277,6 +286,9 @@ describe('AzureDevOpsEntityProvider', () => { repository: { name: 'myrepo', }, + project: { + name: 'myproject', + }, }, { fileName: 'catalog-info.yaml', @@ -284,6 +296,9 @@ describe('AzureDevOpsEntityProvider', () => { repository: { name: 'myotherrepo', }, + project: { + name: 'myproject', + }, }, ], 'https://dev.azure.com/myorganization/myproject', diff --git a/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.ts b/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.ts index 87ddde78d3..c9ad3fb05b 100644 --- a/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.ts +++ b/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.ts @@ -176,8 +176,9 @@ export class AzureDevOpsEntityProvider implements EntityProvider { } private createObjectUrl(file: CodeSearchResultItem): string { - const baseUrl = `https://${this.config.host}/${this.config.organization}`; - const encodedUri = `${baseUrl}/${file.project.name}/_git/${file.repository.name}?path=${file.path}`; - return encodedUri; + const baseUrl = `https://${this.config.host}/${this.config.organization}/${file.project.name}`; + return encodeURI( + `${baseUrl}/_git/${file.repository.name}?path=${file.path}`, + ); } } From 21c64d53bb11791bc3b06cb7221c17fa741d0df7 Mon Sep 17 00:00:00 2001 From: Ryan Hanchett Date: Tue, 17 Jan 2023 14:30:28 -0800 Subject: [PATCH 010/156] feat: enable passing material table options to docs table via entity list docs table Signed-off-by: Ryan Hanchett --- packages/core-components/src/components/Table/Table.tsx | 2 ++ plugins/techdocs/src/home/components/Tables/DocsTable.tsx | 5 ++++- .../src/home/components/Tables/EntityListDocsTable.tsx | 5 ++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/core-components/src/components/Table/Table.tsx b/packages/core-components/src/components/Table/Table.tsx index c799402cbc..89a1d69b96 100644 --- a/packages/core-components/src/components/Table/Table.tsx +++ b/packages/core-components/src/components/Table/Table.tsx @@ -240,6 +240,8 @@ export interface TableProps onStateChange?: (state: TableState) => any; } +export interface TableOptions extends Options {} + export function TableToolbar(toolbarProps: { toolbarRef: MutableRefObject; setSearch: (value: string) => void; diff --git a/plugins/techdocs/src/home/components/Tables/DocsTable.tsx b/plugins/techdocs/src/home/components/Tables/DocsTable.tsx index 883c496191..842c80018f 100644 --- a/plugins/techdocs/src/home/components/Tables/DocsTable.tsx +++ b/plugins/techdocs/src/home/components/Tables/DocsTable.tsx @@ -29,6 +29,7 @@ import { EmptyState, Table, TableColumn, + TableOptions, TableProps, } from '@backstage/core-components'; import { actionFactories } from './actions'; @@ -47,6 +48,7 @@ export type DocsTableProps = { loading?: boolean | undefined; columns?: TableColumn[]; actions?: TableProps['actions']; + options?: TableOptions; }; /** @@ -55,7 +57,7 @@ export type DocsTableProps = { * @public */ export const DocsTable = (props: DocsTableProps) => { - const { entities, title, loading, columns, actions } = props; + const { entities, title, loading, columns, actions, options } = props; const [, copyToClipboard] = useCopyToClipboard(); const getRouteToReaderPageFor = useRouteRef(rootDocsRouteRef); const config = useApi(configApiRef); @@ -102,6 +104,7 @@ export const DocsTable = (props: DocsTableProps) => { pageSize: 20, search: true, actionsColumnIndex: -1, + ...options, }} data={documents} columns={columns || defaultColumns} diff --git a/plugins/techdocs/src/home/components/Tables/EntityListDocsTable.tsx b/plugins/techdocs/src/home/components/Tables/EntityListDocsTable.tsx index d47ddb13c4..0042cc9418 100644 --- a/plugins/techdocs/src/home/components/Tables/EntityListDocsTable.tsx +++ b/plugins/techdocs/src/home/components/Tables/EntityListDocsTable.tsx @@ -20,6 +20,7 @@ import { capitalize } from 'lodash'; import { CodeSnippet, TableColumn, + TableOptions, TableProps, WarningPanel, } from '@backstage/core-components'; @@ -40,6 +41,7 @@ import { DocsTableRow } from './types'; export type EntityListDocsTableProps = { columns?: TableColumn[]; actions?: TableProps['actions']; + options?: TableOptions; }; /** @@ -48,7 +50,7 @@ export type EntityListDocsTableProps = { * @public */ export const EntityListDocsTable = (props: EntityListDocsTableProps) => { - const { columns, actions } = props; + const { columns, actions, options } = props; const { loading, error, entities, filters } = useEntityList(); const { isStarredEntity, toggleStarredEntity } = useStarredEntities(); const [, copyToClipboard] = useCopyToClipboard(); @@ -81,6 +83,7 @@ export const EntityListDocsTable = (props: EntityListDocsTableProps) => { loading={loading} actions={actions || defaultActions} columns={columns} + options={options} /> ); }; From fd93c6b859add484a7855a6b3d3a26524df6a2c7 Mon Sep 17 00:00:00 2001 From: Ryan Hanchett Date: Tue, 17 Jan 2023 14:36:08 -0800 Subject: [PATCH 011/156] fix: add missing export of table options to table component index Signed-off-by: Ryan Hanchett --- packages/core-components/src/components/Table/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/core-components/src/components/Table/index.ts b/packages/core-components/src/components/Table/index.ts index 7fc245d6d0..00e1ae9de5 100644 --- a/packages/core-components/src/components/Table/index.ts +++ b/packages/core-components/src/components/Table/index.ts @@ -22,6 +22,7 @@ export type { TableColumn, TableFilter, TableProps, + TableOptions, TableState, TableClassKey, FiltersContainerClassKey, From 20840b36b4d503f588a22e9e6b3b54c9db3052ce Mon Sep 17 00:00:00 2001 From: Ryan Hanchett Date: Tue, 17 Jan 2023 14:40:16 -0800 Subject: [PATCH 012/156] chore: add changesets Signed-off-by: Ryan Hanchett --- .changeset/cuddly-boxes-agree.md | 5 +++++ .changeset/pretty-ladybugs-taste.md | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 .changeset/cuddly-boxes-agree.md create mode 100644 .changeset/pretty-ladybugs-taste.md diff --git a/.changeset/cuddly-boxes-agree.md b/.changeset/cuddly-boxes-agree.md new file mode 100644 index 0000000000..681881c007 --- /dev/null +++ b/.changeset/cuddly-boxes-agree.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': patch +--- + +Update DocsTable and EntityListDocsTable to accept overrides for Material Table options. diff --git a/.changeset/pretty-ladybugs-taste.md b/.changeset/pretty-ladybugs-taste.md new file mode 100644 index 0000000000..5c87cde123 --- /dev/null +++ b/.changeset/pretty-ladybugs-taste.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Adds new type, TableOptions, extending Material Table Options. From 597eccb922735a624cb6d3b22a858c59e723098e Mon Sep 17 00:00:00 2001 From: ivgo Date: Wed, 18 Jan 2023 14:20:31 +0100 Subject: [PATCH 013/156] Add s3-viewer plugin Signed-off-by: ivgo --- microsite/data/plugins/s3-viewer.yaml | 12 ++++++++++++ microsite/static/img/s3-bucket.svg | 1 + 2 files changed, 13 insertions(+) create mode 100644 microsite/data/plugins/s3-viewer.yaml create mode 100644 microsite/static/img/s3-bucket.svg diff --git a/microsite/data/plugins/s3-viewer.yaml b/microsite/data/plugins/s3-viewer.yaml new file mode 100644 index 0000000000..23637133c8 --- /dev/null +++ b/microsite/data/plugins/s3-viewer.yaml @@ -0,0 +1,12 @@ +--- +title: S3 Viewer +author: Spreadgroup +authorUrl: https://github.com/spreadshirt +category: AWS +description: Visualization of S3 buckets and their contents in file explorer style. +documentation: https://github.com/spreadshirt/backstage-plugin-s3/ +iconUrl: img/s3-bucket.svg +npmPackageName: '@spreadshirt/backstage-plugin-s3-viewer' +tags: + - s3 +addedDate: '2023-01-18' diff --git a/microsite/static/img/s3-bucket.svg b/microsite/static/img/s3-bucket.svg new file mode 100644 index 0000000000..a92ac68982 --- /dev/null +++ b/microsite/static/img/s3-bucket.svg @@ -0,0 +1 @@ + \ No newline at end of file From 7323f98403a941849ce0b4fc65077a6586a6e50f Mon Sep 17 00:00:00 2001 From: Kurt King Date: Wed, 18 Jan 2023 09:25:37 -0700 Subject: [PATCH 014/156] change 2022 to 2020 Signed-off-by: Kurt King --- packages/core-components/src/components/Link/Link.stories.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core-components/src/components/Link/Link.stories.tsx b/packages/core-components/src/components/Link/Link.stories.tsx index 17e331b0b5..6049ec68b1 100644 --- a/packages/core-components/src/components/Link/Link.stories.tsx +++ b/packages/core-components/src/components/Link/Link.stories.tsx @@ -1,5 +1,5 @@ /* - * Copyright 2022 The Backstage Authors + * 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. From 0b908d35fd958242e02cbfb21cecb24d56aec23e Mon Sep 17 00:00:00 2001 From: Kurt King Date: Wed, 18 Jan 2023 09:45:40 -0700 Subject: [PATCH 015/156] rename Button to LinkButton Signed-off-by: Kurt King --- .../src/components/Button/Button.stories.tsx | 170 ------------------ .../src/components/Button/Button.test.tsx | 44 ----- .../src/components/Button/Button.tsx | 51 ------ .../src/components/Button/index.ts | 17 -- .../src/components/LinkButton/LinkButton.tsx | 20 ++- .../src/components/LinkButton/index.ts | 3 + .../core-components/src/components/index.ts | 2 +- .../layout/ErrorBoundary/ErrorBoundary.tsx | 2 +- 8 files changed, 18 insertions(+), 291 deletions(-) delete mode 100644 packages/core-components/src/components/Button/Button.stories.tsx delete mode 100644 packages/core-components/src/components/Button/Button.test.tsx delete mode 100644 packages/core-components/src/components/Button/Button.tsx delete mode 100644 packages/core-components/src/components/Button/index.ts diff --git a/packages/core-components/src/components/Button/Button.stories.tsx b/packages/core-components/src/components/Button/Button.stories.tsx deleted file mode 100644 index ca95316ee8..0000000000 --- a/packages/core-components/src/components/Button/Button.stories.tsx +++ /dev/null @@ -1,170 +0,0 @@ -/* - * 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 React, { ComponentType } from 'react'; -import { Button } from './Button'; -import { useLocation } from 'react-router-dom'; -import { createRouteRef, useRouteRef } from '@backstage/core-plugin-api'; -import Divider from '@material-ui/core/Divider'; -import List from '@material-ui/core/List'; -import ListItem from '@material-ui/core/ListItem'; -import ListItemText from '@material-ui/core/ListItemText'; -import Typography from '@material-ui/core/Typography'; -import MaterialButton from '@material-ui/core/Button'; -import { wrapInTestApp } from '@backstage/test-utils'; -import { Link } from '../Link'; - -const routeRef = createRouteRef({ - id: 'storybook.test-route', -}); - -const Location = () => { - const location = useLocation(); - return
Current location: {location.pathname}
; -}; - -export default { - title: 'Inputs/Button', - component: Button, - decorators: [ - (Story: ComponentType<{}>) => - wrapInTestApp( - <> - - A collection of buttons that should be used in the Backstage - interface. These leverage the properties inherited from{' '} - - Material-UI Button - - , but include an opinionated set that align to the Backstage design. - - - - -
-
- -
- -
- , - { mountedRoutes: { '/hello': routeRef } }, - ), - ], -}; - -export const Default = () => { - const link = useRouteRef(routeRef); - // Design Permutations: - // color = default | primary | secondary - // variant = contained | outlined | text - return ( - - - - Default Button: - This is the default button design which should be used in most cases. -
-
color="primary" variant="contained"
-
- - -
- - - Secondary Button: - Used for actions that cancel, skip, and in general perform negative - functions, etc. -
-
color="secondary" variant="contained"
-
- - -
- - - Tertiary Button: - Used commonly in a ButtonGroup and when the button function itself is - not a primary function on a page. -
-
color="default" variant="outlined"
-
- - -
-
- ); -}; - -export const ButtonLinks = () => { - const link = useRouteRef(routeRef); - - const handleClick = () => { - return 'Your click worked!'; - }; - - return ( - <> - - { - // TODO: Refactor to use new routing mechanisms - } - - -   has props for both Material-UI's component as well as for - react-router-dom's Route object. - - - - -   links to a statically defined route. In general, this should be - avoided. - - - - - View URL - -   links to a defined URL using Material-UI's Button. - - - - - Trigger Event - -   triggers an onClick event using Material-UI's Button. - - - - ); -}; diff --git a/packages/core-components/src/components/Button/Button.test.tsx b/packages/core-components/src/components/Button/Button.test.tsx deleted file mode 100644 index c5942e3d78..0000000000 --- a/packages/core-components/src/components/Button/Button.test.tsx +++ /dev/null @@ -1,44 +0,0 @@ -/* - * 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 React from 'react'; -import { render, fireEvent, act } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; -import { Button } from './Button'; -import { Route, Routes } from 'react-router-dom'; - -describe(' - - {testString}

} /> -
- , - ), - ); - - expect(() => getByText(testString)).toThrow(); - await act(async () => { - fireEvent.click(getByText(buttonLabel)); - }); - expect(getByText(testString)).toBeInTheDocument(); - }); -}); diff --git a/packages/core-components/src/components/Button/Button.tsx b/packages/core-components/src/components/Button/Button.tsx deleted file mode 100644 index 771d94adb5..0000000000 --- a/packages/core-components/src/components/Button/Button.tsx +++ /dev/null @@ -1,51 +0,0 @@ -/* - * 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 MaterialButton, { - ButtonProps as MaterialButtonProps, -} from '@material-ui/core/Button'; -import React from 'react'; -import { Link, LinkProps } from '../Link'; - -/** - * Properties for {@link Button} - * - * @public - * @remarks - * @deprecated use `LinkButtonProps` instead - * - * See {@link https://v4.mui.com/api/button/#props | Material-UI Button Props} for all properties - */ -export type ButtonProps = MaterialButtonProps & - Omit; - -/** - * This wrapper is here to reset the color of the Link and make typescript happy. - */ -const LinkWrapper = React.forwardRef((props, ref) => ( - -)); - -/** - * Thin wrapper on top of material-ui's {@link https://v4.mui.com/components/buttons/ | Button} component - * - * @public - * @remarks - * @deprecated use `LinkButton` instead - */ -export const Button = React.forwardRef((props, ref) => ( - -)) as (props: ButtonProps) => JSX.Element; diff --git a/packages/core-components/src/components/Button/index.ts b/packages/core-components/src/components/Button/index.ts deleted file mode 100644 index b3dc40e6e7..0000000000 --- a/packages/core-components/src/components/Button/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * 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 { Button } from './Button'; -export type { ButtonProps } from './Button'; diff --git a/packages/core-components/src/components/LinkButton/LinkButton.tsx b/packages/core-components/src/components/LinkButton/LinkButton.tsx index 60c218ba5f..bef4c96497 100644 --- a/packages/core-components/src/components/LinkButton/LinkButton.tsx +++ b/packages/core-components/src/components/LinkButton/LinkButton.tsx @@ -43,11 +43,17 @@ const LinkWrapper = React.forwardRef((props, ref) => ( * * @public * @remarks - * - * Makes the Button to utilize react-router */ -export const LinkButton = React.forwardRef( - (props, ref) => ( - - ), -) as (props: LinkButtonProps) => JSX.Element; +export const LinkButton = React.forwardRef((props, ref) => ( + +)) as (props: ButtonProps) => JSX.Element; + +/** + * @deprecated use LinkButton instead + */ +export const Button = LinkButton; + +/** + * @deprecated use LinkButtonProps instead + */ +export type ButtonProps = LinkButtonProps; diff --git a/packages/core-components/src/components/LinkButton/index.ts b/packages/core-components/src/components/LinkButton/index.ts index 8ca699ecdd..848203c2dc 100644 --- a/packages/core-components/src/components/LinkButton/index.ts +++ b/packages/core-components/src/components/LinkButton/index.ts @@ -15,3 +15,6 @@ */ export { LinkButton } from './LinkButton'; export type { LinkButtonProps } from './LinkButton'; + +export { Button } from './LinkButton'; +export type { ButtonProps } from './LinkButton'; diff --git a/packages/core-components/src/components/index.ts b/packages/core-components/src/components/index.ts index 218df9043d..0057847754 100644 --- a/packages/core-components/src/components/index.ts +++ b/packages/core-components/src/components/index.ts @@ -16,7 +16,7 @@ export * from './AlertDisplay'; export * from './Avatar'; -export * from './Button'; +export * from './LinkButton'; export * from './CodeSnippet'; export * from './CopyTextButton'; export * from './CreateButton'; diff --git a/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.tsx b/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.tsx index da430d2f88..9157b57fe2 100644 --- a/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.tsx +++ b/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.tsx @@ -16,7 +16,7 @@ import Typography from '@material-ui/core/Typography'; import React, { ComponentClass, Component, ErrorInfo } from 'react'; -import { Button } from '../../components/Button'; +import { Button } from '../../components/LinkButton'; import { ErrorPanel } from '../../components/ErrorPanel'; type SlackChannel = { From 7e0f40a60ddaa1cc483586df4fdbe6089c48537c Mon Sep 17 00:00:00 2001 From: Kurt King Date: Wed, 18 Jan 2023 09:48:02 -0700 Subject: [PATCH 016/156] change 2022 to 2020 Signed-off-by: Kurt King --- packages/core-components/src/components/Link/Link.test.tsx | 2 +- packages/core-components/src/components/Link/Link.tsx | 2 +- packages/core-components/src/components/Link/index.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/core-components/src/components/Link/Link.test.tsx b/packages/core-components/src/components/Link/Link.test.tsx index 6365c00faf..3538b79052 100644 --- a/packages/core-components/src/components/Link/Link.test.tsx +++ b/packages/core-components/src/components/Link/Link.test.tsx @@ -1,5 +1,5 @@ /* - * Copyright 2022 The Backstage Authors + * 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. diff --git a/packages/core-components/src/components/Link/Link.tsx b/packages/core-components/src/components/Link/Link.tsx index 29214fb69b..440fcb811f 100644 --- a/packages/core-components/src/components/Link/Link.tsx +++ b/packages/core-components/src/components/Link/Link.tsx @@ -1,5 +1,5 @@ /* - * Copyright 2022 The Backstage Authors + * 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. diff --git a/packages/core-components/src/components/Link/index.ts b/packages/core-components/src/components/Link/index.ts index d5bca4728f..2160508451 100644 --- a/packages/core-components/src/components/Link/index.ts +++ b/packages/core-components/src/components/Link/index.ts @@ -1,5 +1,5 @@ /* - * Copyright 2022 The Backstage Authors + * 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. From cd5a2ad7c765a1d8a12c6f5680d794974c9696db Mon Sep 17 00:00:00 2001 From: Kurt King Date: Wed, 18 Jan 2023 10:35:24 -0700 Subject: [PATCH 017/156] create new api-report Signed-off-by: Kurt King --- packages/core-components/api-report.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/core-components/api-report.md b/packages/core-components/api-report.md index b92b3145b5..fb5442216d 100644 --- a/packages/core-components/api-report.md +++ b/packages/core-components/api-report.md @@ -129,11 +129,15 @@ export type BreadcrumbsStyledBoxClassKey = 'root'; // @public export function BrokenImageIcon(props: IconComponentProps): JSX.Element; -// @public @deprecated +// Warning: (ae-missing-release-tag) "Button" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public @deprecated (undocumented) export const Button: (props: ButtonProps) => JSX.Element; -// @public @deprecated -export type ButtonProps = ButtonProps_2 & Omit; +// Warning: (ae-missing-release-tag) "ButtonProps" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public @deprecated (undocumented) +export type ButtonProps = LinkButtonProps; // @public (undocumented) export type CardActionsTopRightClassKey = 'root'; @@ -630,7 +634,7 @@ export function LinearGauge(props: Props_11): JSX.Element | null; export const Link: (props: LinkProps) => JSX.Element; // @public -export const LinkButton: (props: LinkButtonProps) => JSX.Element; +export const LinkButton: (props: ButtonProps) => JSX.Element; // @public export type LinkButtonProps = ButtonProps_2 & From bd939999a9ce7e6881ad9b7ba968aabb04358e22 Mon Sep 17 00:00:00 2001 From: Ryan Hanchett Date: Wed, 18 Jan 2023 10:11:53 -0800 Subject: [PATCH 018/156] fix: generate new api reports Signed-off-by: Ryan Hanchett --- packages/core-components/api-report.md | 6 ++++++ plugins/techdocs/api-report.md | 3 +++ 2 files changed, 9 insertions(+) diff --git a/packages/core-components/api-report.md b/packages/core-components/api-report.md index 4cdc42ee79..19bdfced27 100644 --- a/packages/core-components/api-report.md +++ b/packages/core-components/api-report.md @@ -31,6 +31,7 @@ import MaterialBreadcrumbs from '@material-ui/core/Breadcrumbs'; import { MaterialTableProps } from '@material-table/core'; import { NavLinkProps } from 'react-router-dom'; import { Options } from 'react-markdown'; +import { Options as Options_2 } from '@material-table/core'; import { Overrides } from '@material-ui/core/styles/overrides'; import { ProfileInfo } from '@backstage/core-plugin-api'; import { ProfileInfoApi } from '@backstage/core-plugin-api'; @@ -1392,6 +1393,11 @@ export type TableFiltersClassKey = 'root' | 'value' | 'heder' | 'filters'; // @public (undocumented) export type TableHeaderClassKey = 'header'; +// Warning: (ae-missing-release-tag) "TableOptions" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface TableOptions extends Options_2 {} + // Warning: (ae-missing-release-tag) "TableProps" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) diff --git a/plugins/techdocs/api-report.md b/plugins/techdocs/api-report.md index d1c05f5b8e..d403f4582e 100644 --- a/plugins/techdocs/api-report.md +++ b/plugins/techdocs/api-report.md @@ -20,6 +20,7 @@ import { ReactNode } from 'react'; import { ResultHighlight } from '@backstage/plugin-search-common'; import { RouteRef } from '@backstage/core-plugin-api'; import { TableColumn } from '@backstage/core-components'; +import { TableOptions } from '@backstage/core-components'; import { TableProps } from '@backstage/core-components'; import { TechDocsEntityMetadata as TechDocsEntityMetadata_2 } from '@backstage/plugin-techdocs-react'; import { TechDocsMetadata as TechDocsMetadata_2 } from '@backstage/plugin-techdocs-react'; @@ -100,6 +101,7 @@ export type DocsTableProps = { loading?: boolean | undefined; columns?: TableColumn[]; actions?: TableProps['actions']; + options?: TableOptions; }; // @public @@ -159,6 +161,7 @@ export const EntityListDocsTable: { export type EntityListDocsTableProps = { columns?: TableColumn[]; actions?: TableProps['actions']; + options?: TableOptions; }; // @public From 51bc158294b057147b950c64c076b36ae93aa67b Mon Sep 17 00:00:00 2001 From: Marc Bruins Date: Thu, 19 Jan 2023 14:12:42 +0100 Subject: [PATCH 019/156] add project schema to tests Signed-off-by: Marc Bruins --- .../src/lib/azure.test.ts | 3 +++ .../processors/AzureDevOpsDiscoveryProcessor.test.ts | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/plugins/catalog-backend-module-azure/src/lib/azure.test.ts b/plugins/catalog-backend-module-azure/src/lib/azure.test.ts index ec6ef654b6..4a68603246 100644 --- a/plugins/catalog-backend-module-azure/src/lib/azure.test.ts +++ b/plugins/catalog-backend-module-azure/src/lib/azure.test.ts @@ -114,6 +114,9 @@ describe('azure', () => { { fileName: 'catalog-info.yaml', path: '/catalog-info.yaml', + project: { + name: '*', + }, repository: { name: 'backstage', }, diff --git a/plugins/catalog-backend-module-azure/src/processors/AzureDevOpsDiscoveryProcessor.test.ts b/plugins/catalog-backend-module-azure/src/processors/AzureDevOpsDiscoveryProcessor.test.ts index 9000b177fa..38df737179 100644 --- a/plugins/catalog-backend-module-azure/src/processors/AzureDevOpsDiscoveryProcessor.test.ts +++ b/plugins/catalog-backend-module-azure/src/processors/AzureDevOpsDiscoveryProcessor.test.ts @@ -135,6 +135,9 @@ describe('AzureDevOpsDiscoveryProcessor', () => { { fileName: 'catalog-info.yaml', path: '/catalog-info.yaml', + project: { + name: '*', + }, repository: { name: 'backstage', }, @@ -142,6 +145,9 @@ describe('AzureDevOpsDiscoveryProcessor', () => { { fileName: 'catalog-info.yaml', path: '/src/catalog-info.yaml', + project: { + name: '*', + }, repository: { name: 'ios-app', }, @@ -191,6 +197,9 @@ describe('AzureDevOpsDiscoveryProcessor', () => { repository: { name: 'backstage', }, + project: { + name: '*', + }, }, ]); const emitter = jest.fn(); @@ -229,6 +238,9 @@ describe('AzureDevOpsDiscoveryProcessor', () => { repository: { name: 'backstage', }, + project: { + name: '*', + }, }, ]); const emitter = jest.fn(); From 0c0cdef24fa8de8bb80adcbd18c4b182b1d6fe43 Mon Sep 17 00:00:00 2001 From: Marc Bruins Date: Thu, 19 Jan 2023 14:13:36 +0100 Subject: [PATCH 020/156] change to patch upgrade Signed-off-by: Marc Bruins --- .changeset/ninety-hats-serve.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/ninety-hats-serve.md b/.changeset/ninety-hats-serve.md index 637d56d47e..9d9828f54c 100644 --- a/.changeset/ninety-hats-serve.md +++ b/.changeset/ninety-hats-serve.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-catalog-backend-module-azure': minor +'@backstage/plugin-catalog-backend-module-azure': patch --- This will add the ability to use Azure DevOps with multi project with a single value which is a new feature as previously this had to be done manually for each project that you wanted to add From 40bceabf36399b0d8fe4507f0a33c22044767f70 Mon Sep 17 00:00:00 2001 From: Ryan Hanchett Date: Thu, 19 Jan 2023 11:41:48 -0800 Subject: [PATCH 021/156] chore: convert changesets from patch to minor Signed-off-by: Ryan Hanchett --- .changeset/cuddly-boxes-agree.md | 2 +- .changeset/pretty-ladybugs-taste.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/cuddly-boxes-agree.md b/.changeset/cuddly-boxes-agree.md index 681881c007..83f027ecb5 100644 --- a/.changeset/cuddly-boxes-agree.md +++ b/.changeset/cuddly-boxes-agree.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-techdocs': patch +'@backstage/plugin-techdocs': minor --- Update DocsTable and EntityListDocsTable to accept overrides for Material Table options. diff --git a/.changeset/pretty-ladybugs-taste.md b/.changeset/pretty-ladybugs-taste.md index 5c87cde123..b4620f4c51 100644 --- a/.changeset/pretty-ladybugs-taste.md +++ b/.changeset/pretty-ladybugs-taste.md @@ -1,5 +1,5 @@ --- -'@backstage/core-components': patch +'@backstage/core-components': minor --- Adds new type, TableOptions, extending Material Table Options. From 783eb151a238fcc75c6a9b1410418c999b17d3ae Mon Sep 17 00:00:00 2001 From: Sayak Mukhopadhyay Date: Tue, 17 Jan 2023 20:11:05 +0530 Subject: [PATCH 022/156] fix: docs with wrong identifiers Signed-off-by: Sayak Mukhopadhyay --- .../software-templates/writing-custom-field-extensions.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/features/software-templates/writing-custom-field-extensions.md b/docs/features/software-templates/writing-custom-field-extensions.md index be00453795..3bbe4777fb 100644 --- a/docs/features/software-templates/writing-custom-field-extensions.md +++ b/docs/features/software-templates/writing-custom-field-extensions.md @@ -94,14 +94,14 @@ import { createScaffolderFieldExtension, } from '@backstage/plugin-scaffolder'; import { - ValidateKebabCase, + ValidateKebabCaseExtension, validateKebabCaseValidation, } from './ValidateKebabCase'; export const ValidateKebabCaseFieldExtension = scaffolderPlugin.provide( createScaffolderFieldExtension({ name: 'ValidateKebabCase', - component: ValidateKebabCase, + component: ValidateKebabCaseExtension, validation: validateKebabCaseValidation, }), ); @@ -173,7 +173,7 @@ spec: title: Name type: string description: My custom name for the component - ui:field: ValidateKebabCaseExtension + ui:field: ValidateKebabCase steps: [...] ``` From 0eebcb20c4f99c9dd3abacb553e40517947b03b8 Mon Sep 17 00:00:00 2001 From: Sayak Mukhopadhyay Date: Fri, 20 Jan 2023 22:46:25 +0530 Subject: [PATCH 023/156] fix: field extensions with correct CSS and HTML Signed-off-by: Sayak Mukhopadhyay --- .../software-templates/writing-custom-field-extensions.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/features/software-templates/writing-custom-field-extensions.md b/docs/features/software-templates/writing-custom-field-extensions.md index 3bbe4777fb..20575a0b4a 100644 --- a/docs/features/software-templates/writing-custom-field-extensions.md +++ b/docs/features/software-templates/writing-custom-field-extensions.md @@ -35,7 +35,7 @@ import FormControl from '@material-ui/core/FormControl'; /* This is the actual component that will get rendered in the form */ -export const ValidateKebabCaseExtension = ({ +export const ValidateKebabCase = ({ onChange, rawErrors, required, @@ -94,14 +94,14 @@ import { createScaffolderFieldExtension, } from '@backstage/plugin-scaffolder'; import { - ValidateKebabCaseExtension, + ValidateKebabCase, validateKebabCaseValidation, -} from './ValidateKebabCase'; +} from './ValidateKebabCase/ValidateKebabCaseExtension'; export const ValidateKebabCaseFieldExtension = scaffolderPlugin.provide( createScaffolderFieldExtension({ name: 'ValidateKebabCase', - component: ValidateKebabCaseExtension, + component: ValidateKebabCase, validation: validateKebabCaseValidation, }), ); From ac15c0cb1f316a86eb2143fff27e2cffdd4ef025 Mon Sep 17 00:00:00 2001 From: Dominik Pfaffenbauer Date: Sun, 22 Jan 2023 19:39:59 +0100 Subject: [PATCH 024/156] implement gitlab org catalog provider Signed-off-by: Dominik Pfaffenbauer --- docs/integrations/gitlab/org.md | 29 + .../src/index.ts | 5 +- .../src/lib/client.ts | 36 ++ .../src/lib/types.ts | 29 + .../GitlabOrgDiscoveryEntityProvider.test.ts | 514 ++++++++++++++++++ .../GitlabOrgDiscoveryEntityProvider.ts | 363 +++++++++++++ .../src/providers/config.test.ts | 9 + .../src/providers/config.ts | 10 + .../src/providers/index.ts | 1 + 9 files changed, 995 insertions(+), 1 deletion(-) create mode 100644 docs/integrations/gitlab/org.md create mode 100644 plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts create mode 100644 plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts diff --git a/docs/integrations/gitlab/org.md b/docs/integrations/gitlab/org.md new file mode 100644 index 0000000000..caf0851477 --- /dev/null +++ b/docs/integrations/gitlab/org.md @@ -0,0 +1,29 @@ +--- +id: org +title: GitLab Org +sidebar_label: Org Data +description: Importing users and groups from a GitLab organization into Backstage +--- + +The Backstage catalog can be set up to ingest organizational data - users and +teams - directly from an organization in GitLab. The result +is a hierarchy of +[`User`](../../features/software-catalog/descriptor-format.md#kind-user) and +[`Group`](../../features/software-catalog/descriptor-format.md#kind-group) kind +entities that mirror your org setup. + +```yaml +integrations: + gitlab: + - host: gitlab.com + token: ${GITLAB_TOKEN} +``` + +```yaml +catalog: + providers: + gitlab: + yourProviderId: + host: gitlab.com + orgEnabled: true +``` diff --git a/plugins/catalog-backend-module-gitlab/src/index.ts b/plugins/catalog-backend-module-gitlab/src/index.ts index 27aac9e78f..30efac4924 100644 --- a/plugins/catalog-backend-module-gitlab/src/index.ts +++ b/plugins/catalog-backend-module-gitlab/src/index.ts @@ -21,5 +21,8 @@ */ export { GitLabDiscoveryProcessor } from './GitLabDiscoveryProcessor'; -export { GitlabDiscoveryEntityProvider } from './providers'; +export { + GitlabDiscoveryEntityProvider, + GitlabOrgDiscoveryEntityProvider, +} from './providers'; export { gitlabDiscoveryEntityProviderCatalogModule } from './service/GitlabDiscoveryEntityProviderCatalogModule'; diff --git a/plugins/catalog-backend-module-gitlab/src/lib/client.ts b/plugins/catalog-backend-module-gitlab/src/lib/client.ts index adf0a78e8f..b86de7bf1d 100644 --- a/plugins/catalog-backend-module-gitlab/src/lib/client.ts +++ b/plugins/catalog-backend-module-gitlab/src/lib/client.ts @@ -20,12 +20,14 @@ import { GitLabIntegrationConfig, } from '@backstage/integration'; import { Logger } from 'winston'; +import { GitLabGroup, GitLabMembership, GitLabUser } from './types'; export type ListOptions = { [key: string]: string | number | boolean | undefined; group?: string; per_page?: number | undefined; page?: number | undefined; + active?: boolean; }; export type PagedResponse = { @@ -63,6 +65,40 @@ export class GitLabClient { return this.pagedRequest(`/projects`, options); } + async listUsers(options?: ListOptions): Promise> { + return this.pagedRequest(`/users`, options); + } + + async listGroups(options?: ListOptions): Promise> { + return this.pagedRequest(`/groups`, options); + } + + async getUserMemberships(userId: number): Promise { + const endpoint: string = `/users/${encodeURIComponent(userId)}/memberships`; + const request = new URL(`${this.config.apiBaseUrl}${endpoint}`); + request.searchParams.append('per_page', '100'); + + const response = await fetch(request.toString(), { + headers: getGitLabRequestOptions(this.config).headers, + method: 'GET', + }); + + if (!response.ok) { + if (response.status >= 500) { + this.logger.debug( + `Unexpected response when fetching ${request.toString()}. Expected 200 but got ${ + response.status + } - ${response.statusText}`, + ); + } + return []; + } + + return response.json().then(items => { + return items as GitLabMembership[]; + }); + } + /** * General existence check. * diff --git a/plugins/catalog-backend-module-gitlab/src/lib/types.ts b/plugins/catalog-backend-module-gitlab/src/lib/types.ts index 86fe1aa385..97ea87ea98 100644 --- a/plugins/catalog-backend-module-gitlab/src/lib/types.ts +++ b/plugins/catalog-backend-module-gitlab/src/lib/types.ts @@ -31,6 +31,32 @@ export type GitLabProject = { path_with_namespace?: string; }; +export type GitLabUser = { + id: number; + username: string; + name: string; + email: string; + active: boolean; + web_url: string; + avatar_url: string; + groups?: GitLabGroup[]; +}; + +export type GitLabGroup = { + id: number; + name: string; + full_path: string; + description?: string; + parent_id?: number; +}; + +export type GitLabMembership = { + source_id: number; + source_name: string; + source_type: string; + access_level: number; +}; + export type GitlabProviderConfig = { host: string; group: string; @@ -38,5 +64,8 @@ export type GitlabProviderConfig = { branch: string; catalogFile: string; projectPattern: RegExp; + userPattern: RegExp; + groupPattern: RegExp; + orgEnabled?: boolean; schedule?: TaskScheduleDefinition; }; diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts new file mode 100644 index 0000000000..74649f41da --- /dev/null +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts @@ -0,0 +1,514 @@ +/* + * Copyright 2022 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 { getVoidLogger } from '@backstage/backend-common'; +import { + PluginTaskScheduler, + TaskInvocationDefinition, + TaskRunner, +} from '@backstage/backend-tasks'; +import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { ConfigReader } from '@backstage/config'; +import { EntityProviderConnection } from '@backstage/plugin-catalog-backend'; +import { rest } from 'msw'; +import { setupServer } from 'msw/node'; +import { GitlabOrgDiscoveryEntityProvider } from './GitlabOrgDiscoveryEntityProvider'; + +class PersistingTaskRunner implements TaskRunner { + private tasks: TaskInvocationDefinition[] = []; + + getTasks() { + return this.tasks; + } + + run(task: TaskInvocationDefinition): Promise { + this.tasks.push(task); + return Promise.resolve(undefined); + } +} + +const logger = getVoidLogger(); + +const server = setupServer(); + +describe('GitlabOrgDiscoveryEntityProvider', () => { + setupRequestMockHandlers(server); + afterEach(() => jest.resetAllMocks()); + + it('no provider config', () => { + const schedule = new PersistingTaskRunner(); + const config = new ConfigReader({}); + const providers = GitlabOrgDiscoveryEntityProvider.fromConfig(config, { + logger, + schedule, + }); + + expect(providers).toHaveLength(0); + }); + + it('single simple discovery config with org disabled', () => { + const schedule = new PersistingTaskRunner(); + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'test-gitlab', + apiBaseUrl: 'https://api.gitlab.example/api/v4', + token: '1234', + }, + ], + }, + catalog: { + providers: { + gitlab: { + 'test-id': { + host: 'test-gitlab', + group: 'test-group', + }, + }, + }, + }, + }); + const providers = GitlabOrgDiscoveryEntityProvider.fromConfig(config, { + logger, + schedule, + }); + + expect(providers).toHaveLength(0); + }); + + it('single simple discovery config with org enabled', () => { + const schedule = new PersistingTaskRunner(); + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'test-gitlab', + apiBaseUrl: 'https://api.gitlab.example/api/v4', + token: '1234', + }, + ], + }, + catalog: { + providers: { + gitlab: { + 'test-id': { + host: 'test-gitlab', + group: 'test-group', + orgEnabled: true, + }, + }, + }, + }, + }); + const providers = GitlabOrgDiscoveryEntityProvider.fromConfig(config, { + logger, + schedule, + }); + + expect(providers).toHaveLength(1); + expect(providers[0].getProviderName()).toEqual( + 'GitlabOrgDiscoveryEntityProvider:test-id', + ); + }); + + it('multiple discovery configs', () => { + const schedule = new PersistingTaskRunner(); + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'test-gitlab', + apiBaseUrl: 'https://api.gitlab.example/api/v4', + token: '1234', + }, + ], + }, + catalog: { + providers: { + gitlab: { + 'test-id': { + host: 'test-gitlab', + group: 'test-group', + orgEnabled: true, + }, + 'second-test': { + host: 'test-gitlab', + group: 'second-group', + orgEnabled: true, + }, + }, + }, + }, + }); + const providers = GitlabOrgDiscoveryEntityProvider.fromConfig(config, { + logger, + schedule, + }); + + expect(providers).toHaveLength(2); + expect(providers[0].getProviderName()).toEqual( + 'GitlabOrgDiscoveryEntityProvider:test-id', + ); + expect(providers[1].getProviderName()).toEqual( + 'GitlabOrgDiscoveryEntityProvider:second-test', + ); + }); + + it('apply full update on scheduled execution', async () => { + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'test-gitlab', + apiBaseUrl: 'https://api.gitlab.example/api/v4', + token: '1234', + }, + ], + }, + catalog: { + providers: { + gitlab: { + 'test-id': { + host: 'test-gitlab', + group: 'test-group', + orgEnabled: true, + }, + }, + }, + }, + }); + const schedule = new PersistingTaskRunner(); + const entityProviderConnection: EntityProviderConnection = { + applyMutation: jest.fn(), + refresh: jest.fn(), + }; + const provider = GitlabOrgDiscoveryEntityProvider.fromConfig(config, { + logger, + schedule, + })[0]; + expect(provider.getProviderName()).toEqual( + 'GitlabOrgDiscoveryEntityProvider:test-id', + ); + + server.use( + rest.get( + `https://api.gitlab.example/api/v4/groups/test-group/projects`, + (_req, res, ctx) => { + const response = [ + { + id: 123, + default_branch: 'master', + archived: false, + last_activity_at: new Date().toString(), + web_url: 'https://api.gitlab.example/test-group/test-repo', + path_with_namespace: 'test-group/test-repo', + }, + ]; + return res(ctx.json(response)); + }, + ), + rest.get(`https://api.gitlab.example/api/v4/users`, (_req, res, ctx) => { + const response = [ + { + id: 1, + username: 'test1', + name: 'Test Testit', + state: 'active', + avatar_url: 'https://secure.gravatar.com/', + web_url: 'https://gitlab.example/test1', + created_at: '2023-01-19T07:27:03.333Z', + bio: '', + location: null, + public_email: null, + skype: '', + linkedin: '', + twitter: '', + website_url: '', + organization: null, + job_title: '', + pronouns: null, + bot: false, + work_information: null, + followers: 0, + following: 0, + is_followed: false, + local_time: null, + last_sign_in_at: '2023-01-19T07:27:49.601Z', + confirmed_at: '2023-01-19T07:27:02.905Z', + last_activity_on: '2023-01-19', + email: 'test@example.com', + theme_id: 1, + color_scheme_id: 1, + projects_limit: 100000, + current_sign_in_at: '2023-01-19T09:09:10.676Z', + identities: [], + can_create_group: true, + can_create_project: true, + two_factor_enabled: false, + external: false, + private_profile: false, + commit_email: 'test@example.com', + is_admin: false, + note: '', + }, + ]; + return res(ctx.json(response)); + }), + rest.get(`https://api.gitlab.example/api/v4/groups`, (_req, res, ctx) => { + const response = [ + { + id: 1, + web_url: 'https://gitlab.example/groups/group1', + name: 'group1', + path: 'group1', + description: '', + visibility: 'internal', + share_with_group_lock: false, + require_two_factor_authentication: false, + two_factor_grace_period: 48, + project_creation_level: 'developer', + auto_devops_enabled: null, + subgroup_creation_level: 'owner', + emails_disabled: null, + mentions_disabled: null, + lfs_enabled: true, + default_branch_protection: 2, + avatar_url: null, + request_access_enabled: false, + full_name: '8020', + full_path: '8020', + created_at: '2017-06-19T06:42:34.160Z', + parent_id: null, + }, + { + id: 2, + web_url: 'https://gitlab.example/groups/group1/group2', + name: 'group2', + path: 'group1/group2', + description: 'Group2', + visibility: 'internal', + share_with_group_lock: false, + require_two_factor_authentication: false, + two_factor_grace_period: 48, + project_creation_level: 'developer', + auto_devops_enabled: null, + subgroup_creation_level: 'owner', + emails_disabled: null, + mentions_disabled: null, + lfs_enabled: true, + request_access_enabled: false, + full_name: 'group2', + full_path: 'group1/group2', + created_at: '2017-12-07T13:20:40.675Z', + parent_id: null, + }, + ]; + return res(ctx.json(response)); + }), + rest.get( + `https://api.gitlab.example/api/v4/users/1/memberships`, + (_req, res, ctx) => { + const response = [ + { + source_id: 2, + source_name: 'Group 2', + source_type: 'Namespace', + access_level: 50, + }, + ]; + return res(ctx.json(response)); + }, + ), + ); + + await provider.connect(entityProviderConnection); + + const taskDef = schedule.getTasks()[0]; + expect(taskDef.id).toEqual( + 'GitlabOrgDiscoveryEntityProvider:test-id:refresh', + ); + await (taskDef.fn as () => Promise)(); + + const expectedEntities = [ + { + entity: { + apiVersion: 'backstage.io/v1alpha1', + kind: 'User', + metadata: { + annotations: { + 'backstage.io/managed-by-location': 'url:test-gitlab/test1', + 'backstage.io/managed-by-origin-location': + 'url:test-gitlab/test1', + 'test-gitlab/user-login': 'https://gitlab.example/test1', + }, + name: 'test1', + }, + spec: { + memberOf: ['group1-group2'], + profile: { + displayName: 'Test Testit', + email: 'test@example.com', + picture: 'https://secure.gravatar.com/', + }, + }, + }, + locationKey: 'GitlabOrgDiscoveryEntityProvider:test-id', + }, + { + entity: { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Group', + metadata: { + annotations: { + 'backstage.io/managed-by-location': + 'url:test-gitlab/teams/group1-group2', + 'backstage.io/managed-by-origin-location': + 'url:test-gitlab/teams/group1-group2', + 'test-gitlab/team-path': 'group1/group2', + }, + description: 'Group2', + name: 'group1-group2', + }, + spec: { + children: [], + profile: { + displayName: 'group2', + }, + type: 'team', + }, + }, + locationKey: 'GitlabOrgDiscoveryEntityProvider:test-id', + }, + ]; + + expect(entityProviderConnection.applyMutation).toHaveBeenCalledTimes(1); + expect(entityProviderConnection.applyMutation).toHaveBeenCalledWith({ + type: 'full', + entities: expectedEntities, + }); + }); + + it('fail without schedule and scheduler', () => { + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'test-gitlab', + apiBaseUrl: 'https://api.gitlab.example/api/v4', + token: '1234', + }, + ], + }, + catalog: { + providers: { + gitlab: { + 'test-id': { + host: 'test-gitlab', + group: 'test-group', + orgEnabled: true, + }, + }, + }, + }, + }); + + expect(() => + GitlabOrgDiscoveryEntityProvider.fromConfig(config, { + logger, + }), + ).toThrow('Either schedule or scheduler must be provided'); + }); + + it('fail with scheduler but no schedule config', () => { + const scheduler = { + createScheduledTaskRunner: (_: any) => jest.fn(), + } as unknown as PluginTaskScheduler; + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'test-gitlab', + apiBaseUrl: 'https://api.gitlab.example/api/v4', + token: '1234', + }, + ], + }, + catalog: { + providers: { + gitlab: { + 'test-id': { + host: 'test-gitlab', + group: 'test-group', + orgEnabled: true, + }, + }, + }, + }, + }); + + expect(() => + GitlabOrgDiscoveryEntityProvider.fromConfig(config, { + logger, + scheduler, + }), + ).toThrow( + 'No schedule provided neither via code nor config for GitlabOrgDiscoveryEntityProvider:test-id', + ); + }); + + it('single simple provider config with schedule in config', async () => { + const schedule = new PersistingTaskRunner(); + const scheduler = { + createScheduledTaskRunner: (_: any) => schedule, + } as unknown as PluginTaskScheduler; + const config = new ConfigReader({ + integrations: { + gitlab: [ + { + host: 'test-gitlab', + apiBaseUrl: 'https://api.gitlab.example/api/v4', + token: '1234', + }, + ], + }, + catalog: { + providers: { + gitlab: { + 'test-id': { + host: 'test-gitlab', + group: 'test-group', + orgEnabled: true, + schedule: { + frequency: 'PT30M', + timeout: 'PT3M', + }, + }, + }, + }, + }, + }); + const providers = GitlabOrgDiscoveryEntityProvider.fromConfig(config, { + logger, + scheduler, + }); + + expect(providers).toHaveLength(1); + expect(providers[0].getProviderName()).toEqual( + 'GitlabOrgDiscoveryEntityProvider:test-id', + ); + }); +}); diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts new file mode 100644 index 0000000000..ca4f9ec719 --- /dev/null +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts @@ -0,0 +1,363 @@ +/* + * 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 { PluginTaskScheduler, TaskRunner } from '@backstage/backend-tasks'; +import { Config } from '@backstage/config'; +import { GitLabIntegration, ScmIntegrations } from '@backstage/integration'; +import { + EntityProvider, + EntityProviderConnection, +} from '@backstage/plugin-catalog-backend'; +import * as uuid from 'uuid'; +import { Logger } from 'winston'; +import { + GitLabClient, + GitlabProviderConfig, + paginated, + readGitlabConfigs, +} from '../lib'; +import { GitLabGroup, GitLabUser } from '../lib/types'; +import { + ANNOTATION_LOCATION, + ANNOTATION_ORIGIN_LOCATION, + Entity, + UserEntity, + GroupEntity, +} from '@backstage/catalog-model'; +import { merge } from 'lodash'; + +type Result = { + scanned: number; + matches: GitLabUser[]; +}; + +type GroupResult = { + scanned: number; + matches: GitLabGroup[]; +}; + +/** + * Discovers entity definition files in the groups of a Gitlab instance. + * @public + */ +export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { + private readonly config: GitlabProviderConfig; + private readonly integration: GitLabIntegration; + private readonly logger: Logger; + private readonly scheduleFn: () => Promise; + private connection?: EntityProviderConnection; + + static fromConfig( + config: Config, + options: { + logger: Logger; + schedule?: TaskRunner; + scheduler?: PluginTaskScheduler; + }, + ): GitlabOrgDiscoveryEntityProvider[] { + if (!options.schedule && !options.scheduler) { + throw new Error('Either schedule or scheduler must be provided.'); + } + + const providerConfigs = readGitlabConfigs(config); + const integrations = ScmIntegrations.fromConfig(config).gitlab; + const providers: GitlabOrgDiscoveryEntityProvider[] = []; + + providerConfigs.forEach(providerConfig => { + const integration = integrations.byHost(providerConfig.host); + if (!integration) { + throw new Error( + `No gitlab integration found that matches host ${providerConfig.host}`, + ); + } + + if (!options.schedule && !providerConfig.schedule) { + throw new Error( + `No schedule provided neither via code nor config for GitlabOrgDiscoveryEntityProvider:${providerConfig.id}.`, + ); + } + + if (!providerConfig.orgEnabled) { + return; + } + + const taskRunner = + options.schedule ?? + options.scheduler!.createScheduledTaskRunner(providerConfig.schedule!); + + providers.push( + new GitlabOrgDiscoveryEntityProvider({ + ...options, + config: providerConfig, + integration, + taskRunner, + }), + ); + }); + return providers; + } + + private constructor(options: { + config: GitlabProviderConfig; + integration: GitLabIntegration; + logger: Logger; + taskRunner: TaskRunner; + }) { + this.config = options.config; + this.integration = options.integration; + this.logger = options.logger.child({ + target: this.getProviderName(), + }); + this.scheduleFn = this.createScheduleFn(options.taskRunner); + } + + getProviderName(): string { + return `GitlabOrgDiscoveryEntityProvider:${this.config.id}`; + } + + async connect(connection: EntityProviderConnection): Promise { + this.connection = connection; + await this.scheduleFn(); + } + + private createScheduleFn(taskRunner: TaskRunner): () => Promise { + return async () => { + const taskId = `${this.getProviderName()}:refresh`; + return taskRunner.run({ + id: taskId, + fn: async () => { + const logger = this.logger.child({ + class: GitlabOrgDiscoveryEntityProvider.prototype.constructor.name, + taskId, + taskInstanceId: uuid.v4(), + }); + + try { + await this.refresh(logger); + } catch (error) { + logger.error(`${this.getProviderName()} refresh failed`, error); + } + }, + }); + }; + } + + async refresh(logger: Logger): Promise { + if (!this.connection) { + throw new Error( + `Gitlab discovery connection not initialized for ${this.getProviderName()}`, + ); + } + + const client = new GitLabClient({ + config: this.integration.config, + logger: logger, + }); + + const users = paginated(options => client.listUsers(options), { + page: 1, + per_page: 50, + active: true, + }); + + const groups = paginated( + options => client.listGroups(options), + { + page: 1, + per_page: 50, + }, + ); + + const idMappedGroup: { [groupId: number]: GitLabGroup } = {}; + + const res: Result = { + scanned: 0, + matches: [], + }; + + const groupRes: GroupResult = { + scanned: 0, + matches: [], + }; + + for await (const group of groups) { + if (!this.config.groupPattern.test(group.full_path ?? '')) { + continue; + } + + groupRes.scanned++; + groupRes.matches.push(group); + + idMappedGroup[group.id] = group; + } + + for await (const user of users) { + if (!this.config.userPattern.test(user.email ?? '')) { + continue; + } + + res.scanned++; + + if (user.active) { + continue; + } + + const memberships = await client.getUserMemberships(user.id); + const userGroups: GitLabGroup[] = []; + + for (const i of memberships) { + if ( + i.source_type === 'Namespace' && + idMappedGroup.hasOwnProperty(i.source_id) + ) { + userGroups.push(idMappedGroup[i.source_id]); + } + } + + user.groups = userGroups; + + res.matches.push(user); + } + + const groupsWithUsers = groupRes.matches.filter(group => { + return ( + res.matches.filter(x => { + return !!x.groups?.find(y => y.id === group.id); + }).length > 0 + ); + }); + + const userEntities = res.matches.map(p => + this.createUserEntity(p, this.integration.config.host), + ); + const groupEntities = this.createGroupEntities( + groupsWithUsers, + this.integration.config.host, + ); + + await this.connection.applyMutation({ + type: 'full', + entities: [...userEntities, ...groupEntities].map(entity => ({ + locationKey: this.getProviderName(), + entity: this.withLocations(this.integration.config.host, entity), + })), + }); + } + + private createGroupEntities( + groupResult: GitLabGroup[], + host: string, + ): GroupEntity[] { + const idMapped: { [groupId: number]: GitLabGroup } = {}; + const entities: GroupEntity[] = []; + + for (const group of groupResult) { + idMapped[group.id] = group; + } + + for (const group of groupResult) { + const entity = this.createGroupEntity(group, host); + + if (group.parent_id && idMapped.hasOwnProperty(group.parent_id)) { + entity.spec.parent = idMapped[group.parent_id].full_path; + } + + entities.push(entity); + } + + return entities; + } + + private withLocations(host: string, entity: Entity): Entity { + const location = + entity.kind === 'Group' + ? `url:${host}/teams/${entity.metadata.name}` + : `url:${host}/${entity.metadata.name}`; + return merge( + { + metadata: { + annotations: { + [ANNOTATION_LOCATION]: location, + [ANNOTATION_ORIGIN_LOCATION]: location, + }, + }, + }, + entity, + ) as Entity; + } + + private createUserEntity(user: GitLabUser, host: string): UserEntity { + const annotations: { [annotationName: string]: string } = {}; + + annotations[`${host}/user-login`] = user.web_url; + + const entity: UserEntity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'User', + metadata: { + name: user.username, + annotations: annotations, + }, + spec: { + profile: { + email: user.email, + displayName: user.name, + picture: user.avatar_url, + }, + memberOf: [], + }, + }; + + if (user.groups) { + for (const group of user.groups) { + if (!entity.spec.memberOf) { + entity.spec.memberOf = []; + } + entity.spec.memberOf.push(group.full_path.replace('/', '-')); + } + } + + return entity; + } + + private createGroupEntity(group: GitLabGroup, host: string): GroupEntity { + const annotations: { [annotationName: string]: string } = {}; + + annotations[`${host}/team-path`] = group.full_path; + + const entity: GroupEntity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Group', + metadata: { + name: group.full_path.replace('/', '-'), + annotations: annotations, + }, + spec: { + type: 'team', + children: [], + profile: { + displayName: group.name, + }, + }, + }; + + if (group.description) { + entity.metadata.description = group.description; + } + + return entity; + } +} diff --git a/plugins/catalog-backend-module-gitlab/src/providers/config.test.ts b/plugins/catalog-backend-module-gitlab/src/providers/config.test.ts index 6b337bf7cd..e72c38e9d1 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/config.test.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/config.test.ts @@ -54,6 +54,9 @@ describe('config', () => { host: 'host', catalogFile: 'catalog-info.yaml', projectPattern: /[\s\S]*/, + groupPattern: /[\s\S]*/, + userPattern: /[\s\S]*/, + orgEnabled: false, schedule: undefined, }), ); @@ -85,6 +88,9 @@ describe('config', () => { host: 'host', catalogFile: 'custom-file.yaml', projectPattern: /[\s\S]*/, + groupPattern: /[\s\S]*/, + userPattern: /[\s\S]*/, + orgEnabled: false, schedule: undefined, }), ); @@ -120,6 +126,9 @@ describe('config', () => { host: 'host', catalogFile: 'catalog-info.yaml', projectPattern: /[\s\S]*/, + groupPattern: /[\s\S]*/, + userPattern: /[\s\S]*/, + orgEnabled: false, schedule: { frequency: Duration.fromISO('PT30M'), timeout: { diff --git a/plugins/catalog-backend-module-gitlab/src/providers/config.ts b/plugins/catalog-backend-module-gitlab/src/providers/config.ts index 3dfc00745e..9980d59023 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/config.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/config.ts @@ -35,6 +35,13 @@ function readGitlabConfig(id: string, config: Config): GitlabProviderConfig { const projectPattern = new RegExp( config.getOptionalString('projectPattern') ?? /[\s\S]*/, ); + const userPattern = new RegExp( + config.getOptionalString('userPattern') ?? /[\s\S]*/, + ); + const groupPattern = new RegExp( + config.getOptionalString('grupPattern') ?? /[\s\S]*/, + ); + const orgEnabled: boolean = config.getOptionalBoolean('orgEnabled') ?? false; const schedule = config.has('schedule') ? readTaskScheduleDefinitionFromConfig(config.getConfig('schedule')) @@ -47,7 +54,10 @@ function readGitlabConfig(id: string, config: Config): GitlabProviderConfig { host, catalogFile, projectPattern, + userPattern, + groupPattern, schedule, + orgEnabled, }; } diff --git a/plugins/catalog-backend-module-gitlab/src/providers/index.ts b/plugins/catalog-backend-module-gitlab/src/providers/index.ts index e7cb00a73f..2091b3f47a 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/index.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/index.ts @@ -15,3 +15,4 @@ */ export { GitlabDiscoveryEntityProvider } from './GitlabDiscoveryEntityProvider'; +export { GitlabOrgDiscoveryEntityProvider } from './GitlabOrgDiscoveryEntityProvider'; From 52c5685ceb01a355d959a72cebb7496d1730a181 Mon Sep 17 00:00:00 2001 From: Dominik Pfaffenbauer Date: Sun, 22 Jan 2023 19:40:56 +0100 Subject: [PATCH 025/156] implement gitlab org catalog provider Signed-off-by: Dominik Pfaffenbauer --- .changeset/soft-boxes-buy.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/soft-boxes-buy.md diff --git a/.changeset/soft-boxes-buy.md b/.changeset/soft-boxes-buy.md new file mode 100644 index 0000000000..5e50be4028 --- /dev/null +++ b/.changeset/soft-boxes-buy.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-gitlab': minor +--- + +Implement Group and User Catalog Provider From 2318e7956d076156b19e0b4924a7a8ee25ff4e72 Mon Sep 17 00:00:00 2001 From: Dominik Pfaffenbauer Date: Mon, 23 Jan 2023 08:12:56 +0100 Subject: [PATCH 026/156] api-report Signed-off-by: Dominik Pfaffenbauer --- .../api-report.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/plugins/catalog-backend-module-gitlab/api-report.md b/plugins/catalog-backend-module-gitlab/api-report.md index 36713d2427..b69b9904f5 100644 --- a/plugins/catalog-backend-module-gitlab/api-report.md +++ b/plugins/catalog-backend-module-gitlab/api-report.md @@ -55,4 +55,23 @@ export class GitLabDiscoveryProcessor implements CatalogProcessor { emit: CatalogProcessorEmit, ): Promise; } + +// @public +export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { + // (undocumented) + connect(connection: EntityProviderConnection): Promise; + // (undocumented) + static fromConfig( + config: Config, + options: { + logger: Logger; + schedule?: TaskRunner; + scheduler?: PluginTaskScheduler; + }, + ): GitlabOrgDiscoveryEntityProvider[]; + // (undocumented) + getProviderName(): string; + // (undocumented) + refresh(logger: Logger): Promise; +} ``` From 2d60f01e2a7bff2d0d9813279b7664c63f932645 Mon Sep 17 00:00:00 2001 From: Dominik Pfaffenbauer Date: Mon, 23 Jan 2023 09:36:21 +0100 Subject: [PATCH 027/156] fix typo Signed-off-by: Dominik Pfaffenbauer --- plugins/catalog-backend-module-gitlab/src/providers/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog-backend-module-gitlab/src/providers/config.ts b/plugins/catalog-backend-module-gitlab/src/providers/config.ts index 9980d59023..cd856f97da 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/config.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/config.ts @@ -39,7 +39,7 @@ function readGitlabConfig(id: string, config: Config): GitlabProviderConfig { config.getOptionalString('userPattern') ?? /[\s\S]*/, ); const groupPattern = new RegExp( - config.getOptionalString('grupPattern') ?? /[\s\S]*/, + config.getOptionalString('groupPattern') ?? /[\s\S]*/, ); const orgEnabled: boolean = config.getOptionalBoolean('orgEnabled') ?? false; From 42ac2ad34ce49a50f589a6d916ac40b255b1d76e Mon Sep 17 00:00:00 2001 From: Dominik Pfaffenbauer Date: Mon, 23 Jan 2023 12:22:38 +0100 Subject: [PATCH 028/156] move enabled check before schedule check Signed-off-by: Dominik Pfaffenbauer --- .../src/providers/GitlabOrgDiscoveryEntityProvider.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts index ca4f9ec719..3b862b6aaa 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts @@ -78,6 +78,11 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { providerConfigs.forEach(providerConfig => { const integration = integrations.byHost(providerConfig.host); + + if (!providerConfig.orgEnabled) { + return; + } + if (!integration) { throw new Error( `No gitlab integration found that matches host ${providerConfig.host}`, @@ -90,10 +95,6 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { ); } - if (!providerConfig.orgEnabled) { - return; - } - const taskRunner = options.schedule ?? options.scheduler!.createScheduledTaskRunner(providerConfig.schedule!); From 85b04f659af088034fcdc80e49cc6e5185d44254 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Mon, 23 Jan 2023 14:20:17 +0100 Subject: [PATCH 029/156] get rid of usages of substr which is deprecated MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/shy-steaks-invite.md | 16 ++++++++++++++++ microsite/pages/en/on-demand.js | 2 +- microsite/pages/en/plugins.js | 2 +- .../src/components/Avatar/utils.ts | 4 ++-- .../ScheduleIntervalLabel.tsx | 2 +- .../src/api/AzureDevOpsApi.ts | 4 ++-- .../BitriseBuildsTableComponent.tsx | 2 +- .../processors/AzureDevOpsDiscoveryProcessor.ts | 2 +- .../src/BitbucketDiscoveryProcessor.ts | 4 ++-- .../src/lib/util.ts | 2 +- .../src/processors/GithubDiscoveryProcessor.ts | 2 +- .../src/providers/GithubEntityProvider.ts | 2 +- .../src/GitLabDiscoveryProcessor.ts | 2 +- plugins/circleci/src/state/useBuilds.ts | 2 +- .../src/helpers/getShortCommitHash.ts | 2 +- .../src/service/ListPlaylistsFilter.ts | 4 ++-- .../src/database/util.test.ts | 2 +- .../src/components/ErrorCell/ErrorCell.tsx | 2 +- 18 files changed, 37 insertions(+), 21 deletions(-) create mode 100644 .changeset/shy-steaks-invite.md diff --git a/.changeset/shy-steaks-invite.md b/.changeset/shy-steaks-invite.md new file mode 100644 index 0000000000..b4a70589f9 --- /dev/null +++ b/.changeset/shy-steaks-invite.md @@ -0,0 +1,16 @@ +--- +'@backstage/plugin-catalog-backend-module-bitbucket': patch +'@backstage/plugin-catalog-backend-module-github': patch +'@backstage/plugin-catalog-backend-module-gitlab': patch +'@backstage/plugin-catalog-backend-module-azure': patch +'@backstage/plugin-azure-devops-backend': patch +'@backstage/plugin-git-release-manager': patch +'@backstage/core-components': patch +'@backstage/plugin-playlist-backend': patch +'@backstage/plugin-apache-airflow': patch +'@backstage/plugin-circleci': patch +'@backstage/plugin-bitrise': patch +'@backstage/plugin-sentry': patch +--- + +Internal refactor to not use deprecated `substr` diff --git a/microsite/pages/en/on-demand.js b/microsite/pages/en/on-demand.js index 41a730205b..15059e91a1 100644 --- a/microsite/pages/en/on-demand.js +++ b/microsite/pages/en/on-demand.js @@ -20,7 +20,7 @@ const ondemandMetadata = fs .reverse() .map(file => yaml.load(fs.readFileSync(`./data/on-demand/${file}`, 'utf8'))); const truncate = text => - text.length > 170 ? text.substr(0, 170) + '...' : text; + text.length > 170 ? text.slice(0, 170) + '...' : text; const addVideoDocsLink = '/docs/overview/support'; const defaultIconUrl = 'img/logo-gradient-on-dark.svg'; diff --git a/microsite/pages/en/plugins.js b/microsite/pages/en/plugins.js index 9a0a59bd4b..237161b98a 100644 --- a/microsite/pages/en/plugins.js +++ b/microsite/pages/en/plugins.js @@ -19,7 +19,7 @@ const pluginMetadata = fs .map(file => yaml.load(fs.readFileSync(`./data/plugins/${file}`, 'utf8'))) .sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase())); const truncate = text => - text.length > 170 ? text.substr(0, 170) + '...' : text; + text.length > 170 ? text.slice(0, 170) + '...' : text; const newForDays = 100; diff --git a/packages/core-components/src/components/Avatar/utils.ts b/packages/core-components/src/components/Avatar/utils.ts index d8310f18c0..4f71d736f1 100644 --- a/packages/core-components/src/components/Avatar/utils.ts +++ b/packages/core-components/src/components/Avatar/utils.ts @@ -22,11 +22,11 @@ export function stringToColor(str: string) { let color = '#'; for (let i = 0; i < 3; i++) { const value = (hash >> (i * 8)) & 0xff; - color += `00${value.toString(16)}`.substr(-2); + color += `00${value.toString(16)}`.slice(-2); } return color; } export function extractInitials(value: string) { - return value.match(/\b\w/g)?.join('').substring(0, 2); + return value.match(/\b\w/g)?.join('').slice(0, 2); } diff --git a/plugins/apache-airflow/src/components/ScheduleIntervalLabel/ScheduleIntervalLabel.tsx b/plugins/apache-airflow/src/components/ScheduleIntervalLabel/ScheduleIntervalLabel.tsx index 14e8148b50..7bd8445766 100644 --- a/plugins/apache-airflow/src/components/ScheduleIntervalLabel/ScheduleIntervalLabel.tsx +++ b/plugins/apache-airflow/src/components/ScheduleIntervalLabel/ScheduleIntervalLabel.tsx @@ -26,7 +26,7 @@ const timeDeltaToLabel = (delta: TimeDelta): string => { let label = ''; const date = new Date(0); date.setSeconds(delta.seconds); - const time = date.toISOString().substr(11, 8); + const time = date.toISOString().slice(11, 11 + 8); if (delta.days === 0) { label = `${time}`; } else if (delta.days === 1) { diff --git a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts index 24c13020b6..87ded2f0e9 100644 --- a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts +++ b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts @@ -434,7 +434,7 @@ export function mappedRepoBuild(build: Build): RepoBuild { queueTime: build.queueTime?.toISOString(), startTime: build.startTime?.toISOString(), finishTime: build.finishTime?.toISOString(), - source: `${build.sourceBranch} (${build.sourceVersion?.substr(0, 8)})`, + source: `${build.sourceBranch} (${build.sourceVersion?.slice(0, 8)})`, uniqueName: build.requestedFor?.uniqueName ?? 'N/A', }; } @@ -489,7 +489,7 @@ export function mappedBuildRun(build: Build): BuildRun { queueTime: build.queueTime?.toISOString(), startTime: build.startTime?.toISOString(), finishTime: build.finishTime?.toISOString(), - source: `${build.sourceBranch} (${build.sourceVersion?.substr(0, 8)})`, + source: `${build.sourceBranch} (${build.sourceVersion?.slice(0, 8)})`, uniqueName: build.requestedFor?.uniqueName ?? 'N/A', }; } diff --git a/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.tsx b/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.tsx index 0966de3377..3f6ebf93f4 100644 --- a/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.tsx +++ b/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.tsx @@ -81,7 +81,7 @@ const renderSource = (build: BitriseBuildResult): React.ReactNode => { rel="noreferrer" startIcon={} > - {build.commitHash.substr(0, 6)} + {build.commitHash.slice(0, 6)} ) : null; }; diff --git a/plugins/catalog-backend-module-azure/src/processors/AzureDevOpsDiscoveryProcessor.ts b/plugins/catalog-backend-module-azure/src/processors/AzureDevOpsDiscoveryProcessor.ts index ad63fef810..4852edbb03 100644 --- a/plugins/catalog-backend-module-azure/src/processors/AzureDevOpsDiscoveryProcessor.ts +++ b/plugins/catalog-backend-module-azure/src/processors/AzureDevOpsDiscoveryProcessor.ts @@ -132,7 +132,7 @@ export function parseUrl(urlString: string): { catalogPath: string; } { const url = new URL(urlString); - const path = url.pathname.substr(1).split('/'); + const path = url.pathname.slice(1).split('/'); const catalogPath = url.searchParams.get('path') || '/catalog-info.yaml'; diff --git a/plugins/catalog-backend-module-bitbucket/src/BitbucketDiscoveryProcessor.ts b/plugins/catalog-backend-module-bitbucket/src/BitbucketDiscoveryProcessor.ts index 6924765483..78aa3eacfd 100644 --- a/plugins/catalog-backend-module-bitbucket/src/BitbucketDiscoveryProcessor.ts +++ b/plugins/catalog-backend-module-bitbucket/src/BitbucketDiscoveryProcessor.ts @@ -342,7 +342,7 @@ function parseUrl(urlString: string): { const url = new URL(urlString); const indexOfProjectSegment = url.pathname.toLowerCase().indexOf('/projects/') + 1; - const path = url.pathname.substr(indexOfProjectSegment).split('/'); + const path = url.pathname.slice(indexOfProjectSegment).split('/'); // /projects/backstage/repos/techdocs-*/catalog-info.yaml if (path.length > 3 && path[1].length && path[3].length) { @@ -373,7 +373,7 @@ function parseBitbucketCloudUrl(urlString: string): { searchEnabled: boolean; } { const url = new URL(urlString); - const pathMap = readPathParameters(url.pathname.substr(1).split('/')); + const pathMap = readPathParameters(url.pathname.slice(1).split('/')); const query = url.searchParams; if (!pathMap.has('workspaces')) { diff --git a/plugins/catalog-backend-module-github/src/lib/util.ts b/plugins/catalog-backend-module-github/src/lib/util.ts index ece463bb40..967a3231b6 100644 --- a/plugins/catalog-backend-module-github/src/lib/util.ts +++ b/plugins/catalog-backend-module-github/src/lib/util.ts @@ -17,7 +17,7 @@ import { GithubTopicFilters } from '../providers/GithubEntityProviderConfig'; export function parseGithubOrgUrl(urlString: string): { org: string } { - const path = new URL(urlString).pathname.substr(1).split('/'); + const path = new URL(urlString).pathname.slice(1).split('/'); // /backstage if (path.length === 1 && path[0].length) { diff --git a/plugins/catalog-backend-module-github/src/processors/GithubDiscoveryProcessor.ts b/plugins/catalog-backend-module-github/src/processors/GithubDiscoveryProcessor.ts index 593f5f72f1..3fec87d0b2 100644 --- a/plugins/catalog-backend-module-github/src/processors/GithubDiscoveryProcessor.ts +++ b/plugins/catalog-backend-module-github/src/processors/GithubDiscoveryProcessor.ts @@ -176,7 +176,7 @@ export function parseUrl(urlString: string): { host: string; } { const url = new URL(urlString); - const path = url.pathname.substr(1).split('/'); + const path = url.pathname.slice(1).split('/'); // /backstage/techdocs-*/blob/master/catalog-info.yaml // can also be diff --git a/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.ts b/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.ts index 1344e2f5d1..01cb701d46 100644 --- a/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.ts +++ b/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.ts @@ -423,7 +423,7 @@ export function parseUrl(urlString: string): { host: string; } { const url = new URL(urlString); - const path = url.pathname.substr(1).split('/'); + const path = url.pathname.slice(1).split('/'); // /backstage/techdocs-*/blob/master/catalog-info.yaml // can also be diff --git a/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.ts b/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.ts index b03c665ebc..756093bc56 100644 --- a/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.ts +++ b/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.ts @@ -193,7 +193,7 @@ export function parseUrl(urlString: string): { catalogPath: string; } { const url = new URL(urlString); - const path = url.pathname.substr(1).split('/'); + const path = url.pathname.slice(1).split('/'); // (/group/subgroup)/blob/branch|*/filepath const blobIndex = path.findIndex(p => p === 'blob'); diff --git a/plugins/circleci/src/state/useBuilds.ts b/plugins/circleci/src/state/useBuilds.ts index 760c57d764..1e199cfd34 100644 --- a/plugins/circleci/src/state/useBuilds.ts +++ b/plugins/circleci/src/state/useBuilds.ts @@ -64,7 +64,7 @@ const mapSourceDetails = (buildData: BuildSummary) => { branchName: String(buildData.branch), commit: { hash: String(buildData.vcs_revision), - shortHash: String(buildData.vcs_revision).substr(0, 7), + shortHash: String(buildData.vcs_revision).slice(0, 7), committerName: buildData.committer_name, url: commitDetails.commit_url, }, diff --git a/plugins/git-release-manager/src/helpers/getShortCommitHash.ts b/plugins/git-release-manager/src/helpers/getShortCommitHash.ts index fd53ac7941..3b7a9cc310 100644 --- a/plugins/git-release-manager/src/helpers/getShortCommitHash.ts +++ b/plugins/git-release-manager/src/helpers/getShortCommitHash.ts @@ -17,7 +17,7 @@ import { GitReleaseManagerError } from '../errors/GitReleaseManagerError'; export function getShortCommitHash(hash: string) { - const shortCommitHash = hash.substr(0, 7); + const shortCommitHash = hash.slice(0, 7); if (shortCommitHash.length < 7) { throw new GitReleaseManagerError( diff --git a/plugins/playlist-backend/src/service/ListPlaylistsFilter.ts b/plugins/playlist-backend/src/service/ListPlaylistsFilter.ts index a746286136..680f389f8c 100644 --- a/plugins/playlist-backend/src/service/ListPlaylistsFilter.ts +++ b/plugins/playlist-backend/src/service/ListPlaylistsFilter.ts @@ -79,9 +79,9 @@ export function parseListPlaylistsFilterString( const equalsIndex = statement.indexOf('='); const key = - equalsIndex === -1 ? statement : statement.substr(0, equalsIndex).trim(); + equalsIndex === -1 ? statement : statement.slice(0, equalsIndex).trim(); const value = - equalsIndex === -1 ? undefined : statement.substr(equalsIndex + 1).trim(); + equalsIndex === -1 ? undefined : statement.slice(equalsIndex + 1).trim(); if (!key || !value) { throw new InputError( diff --git a/plugins/search-backend-module-pg/src/database/util.test.ts b/plugins/search-backend-module-pg/src/database/util.test.ts index 09eb70c096..b3df5a3ad4 100644 --- a/plugins/search-backend-module-pg/src/database/util.test.ts +++ b/plugins/search-backend-module-pg/src/database/util.test.ts @@ -50,7 +50,7 @@ describe('util', () => { 'should get postgres major version, %p', async databaseId => { const knex = await databases.init(databaseId); - const expectedVersion = +databaseId.substr(9); + const expectedVersion = +databaseId.slice(9); await expect(queryPostgresMajorVersion(knex)).resolves.toBe( expectedVersion, diff --git a/plugins/sentry/src/components/ErrorCell/ErrorCell.tsx b/plugins/sentry/src/components/ErrorCell/ErrorCell.tsx index 015cf96ed1..14e0213bfa 100644 --- a/plugins/sentry/src/components/ErrorCell/ErrorCell.tsx +++ b/plugins/sentry/src/components/ErrorCell/ErrorCell.tsx @@ -22,7 +22,7 @@ import { BackstageTheme } from '@backstage/theme'; import { Link } from '@backstage/core-components'; function stripText(text: string, maxLength: number) { - return text.length > maxLength ? `${text.substr(0, maxLength)}...` : text; + return text.length > maxLength ? `${text.slice(0, maxLength)}...` : text; } const useStyles = makeStyles(theme => ({ root: { From 6310eacc11efb7b062ea2108f21c9b69bf5fa9f6 Mon Sep 17 00:00:00 2001 From: Magnus Persson Date: Mon, 23 Jan 2023 00:07:32 +0100 Subject: [PATCH 030/156] Additional package export Signed-off-by: Magnus Persson --- .changeset/afraid-foxes-provide.md | 5 ++++ plugins/sonarqube/api-report.md | 27 ++++++++++++++++++++ plugins/sonarqube/package.json | 6 +++-- plugins/sonarqube/src/api/SonarQubeClient.ts | 1 + plugins/sonarqube/src/index.ts | 1 + 5 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 .changeset/afraid-foxes-provide.md diff --git a/.changeset/afraid-foxes-provide.md b/.changeset/afraid-foxes-provide.md new file mode 100644 index 0000000000..e02702b895 --- /dev/null +++ b/.changeset/afraid-foxes-provide.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-sonarqube': patch +--- + +Additional export added in order to bind SonarQubeClient to its apiref diff --git a/plugins/sonarqube/api-report.md b/plugins/sonarqube/api-report.md index 31e98a0f4a..f77c66ac59 100644 --- a/plugins/sonarqube/api-report.md +++ b/plugins/sonarqube/api-report.md @@ -6,8 +6,12 @@ /// import { BackstagePlugin } from '@backstage/core-plugin-api'; +import { DiscoveryApi } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; +import { FindingSummary } from '@backstage/plugin-sonarqube-react'; +import { IdentityApi } from '@backstage/core-plugin-api'; import { InfoCardVariants } from '@backstage/core-components'; +import { SonarQubeApi } from '@backstage/plugin-sonarqube-react'; // @public (undocumented) export type DuplicationRating = { @@ -38,6 +42,29 @@ export const SonarQubeCard: (props: { duplicationRatings?: DuplicationRating[]; }) => JSX.Element; +// @alpha (undocumented) +export class SonarQubeClient implements SonarQubeApi { + constructor({ + discoveryApi, + identityApi, + }: { + discoveryApi: DiscoveryApi; + identityApi: IdentityApi; + }); + // (undocumented) + discoveryApi: DiscoveryApi; + // (undocumented) + getFindingSummary({ + componentKey, + projectInstance, + }?: { + componentKey?: string; + projectInstance?: string; + }): Promise; + // (undocumented) + identityApi: IdentityApi; +} + // @public (undocumented) export type SonarQubeContentPageProps = { title?: string; diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index af04494906..65142d1c48 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -8,7 +8,8 @@ "publishConfig": { "access": "public", "main": "dist/index.esm.js", - "types": "dist/index.d.ts" + "types": "dist/index.d.ts", + "alphaTypes": "dist/index.alpha.d.ts" }, "backstage": { "role": "frontend-plugin" @@ -25,7 +26,7 @@ "sonarcloud" ], "scripts": { - "build": "backstage-cli package build", + "build": "backstage-cli package build --experimental-type-build", "start": "backstage-cli package start", "lint": "backstage-cli package lint", "test": "backstage-cli package test", @@ -64,6 +65,7 @@ }, "files": [ "dist", + "alpha", "config.d.ts" ], "configSchema": "config.d.ts" diff --git a/plugins/sonarqube/src/api/SonarQubeClient.ts b/plugins/sonarqube/src/api/SonarQubeClient.ts index cf893ccef5..f742fe026f 100644 --- a/plugins/sonarqube/src/api/SonarQubeClient.ts +++ b/plugins/sonarqube/src/api/SonarQubeClient.ts @@ -23,6 +23,7 @@ import { import { InstanceUrlWrapper, FindingsWrapper } from './types'; import { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api'; +/** @alpha */ export class SonarQubeClient implements SonarQubeApi { discoveryApi: DiscoveryApi; identityApi: IdentityApi; diff --git a/plugins/sonarqube/src/index.ts b/plugins/sonarqube/src/index.ts index 30f6351d4d..93648caeb5 100644 --- a/plugins/sonarqube/src/index.ts +++ b/plugins/sonarqube/src/index.ts @@ -21,5 +21,6 @@ * @packageDocumentation */ +export * from './api'; export * from './components'; export * from './plugin'; From f82dad6ebd9e1a23570bf949901b1695d3eddce8 Mon Sep 17 00:00:00 2001 From: Ryan Hanchett Date: Mon, 23 Jan 2023 15:40:27 -0800 Subject: [PATCH 031/156] chore: set core-components change to patch Signed-off-by: Ryan Hanchett --- .changeset/pretty-ladybugs-taste.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/pretty-ladybugs-taste.md b/.changeset/pretty-ladybugs-taste.md index b4620f4c51..5c87cde123 100644 --- a/.changeset/pretty-ladybugs-taste.md +++ b/.changeset/pretty-ladybugs-taste.md @@ -1,5 +1,5 @@ --- -'@backstage/core-components': minor +'@backstage/core-components': patch --- Adds new type, TableOptions, extending Material Table Options. From 89709d523f1419745b3b57707d53e377ac866039 Mon Sep 17 00:00:00 2001 From: Dominik Pfaffenbauer Date: Tue, 24 Jan 2023 10:51:45 +0100 Subject: [PATCH 032/156] make refresh private Signed-off-by: Dominik Pfaffenbauer --- plugins/catalog-backend-module-gitlab/api-report.md | 2 -- .../src/providers/GitlabOrgDiscoveryEntityProvider.ts | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/plugins/catalog-backend-module-gitlab/api-report.md b/plugins/catalog-backend-module-gitlab/api-report.md index b69b9904f5..0195975d4b 100644 --- a/plugins/catalog-backend-module-gitlab/api-report.md +++ b/plugins/catalog-backend-module-gitlab/api-report.md @@ -71,7 +71,5 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { ): GitlabOrgDiscoveryEntityProvider[]; // (undocumented) getProviderName(): string; - // (undocumented) - refresh(logger: Logger): Promise; } ``` diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts index 3b862b6aaa..df480de3cb 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts @@ -156,7 +156,7 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { }; } - async refresh(logger: Logger): Promise { + private async refresh(logger: Logger): Promise { if (!this.connection) { throw new Error( `Gitlab discovery connection not initialized for ${this.getProviderName()}`, From 0cf553dcd1e8f7e121cd85cb12ae1ef9f8d0a37f Mon Sep 17 00:00:00 2001 From: Marc Bruins Date: Tue, 24 Jan 2023 15:11:49 +0100 Subject: [PATCH 033/156] update docs Signed-off-by: Marc Bruins --- .changeset/ninety-hats-serve.md | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/.changeset/ninety-hats-serve.md b/.changeset/ninety-hats-serve.md index 9d9828f54c..762e53c242 100644 --- a/.changeset/ninety-hats-serve.md +++ b/.changeset/ninety-hats-serve.md @@ -2,4 +2,29 @@ '@backstage/plugin-catalog-backend-module-azure': patch --- -This will add the ability to use Azure DevOps with multi project with a single value which is a new feature as previously this had to be done manually for each project that you wanted to add +This will add the ability to use Azure DevOps with multi project with a single value which is a new feature as previously this had to be done manually for each project that you wanted to add. + +Right now you would have to fill in multiple values in the config to use multiple projects: + +``` +yourFirstProviderId: # identifies your dataset / provider independent of config changes + organization: myorg + project: 'firstProject' # this will match the firstProject project + repository: '*' # this will match all repos + path: /catalog-info.yaml +yourSecondProviderId: # identifies your dataset / provider independent of config changes + organization: myorg + project: 'secondProject' # this will match the secondProject project + repository: '*' # this will match all repos + path: /catalog-info.yaml +``` + +With this change you can actually have all projects available where your PAT determines which you have access to, so that includes multiple projects: + +``` +yourFirstProviderId: # identifies your dataset / provider independent of config changes + organization: myorg + project: '*' # this will match all projects where your PAT has access to + repository: '*' # this will match all repos + path: /catalog-info.yaml +``` From e8db0fe4cee7f130a2c4416c05208be1ecac263b Mon Sep 17 00:00:00 2001 From: Marc Bruins Date: Tue, 24 Jan 2023 15:14:41 +0100 Subject: [PATCH 034/156] update docs Signed-off-by: Marc Bruins --- docs/integrations/azure/discovery.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations/azure/discovery.md b/docs/integrations/azure/discovery.md index a7ddd9c4a9..7d53e21a89 100644 --- a/docs/integrations/azure/discovery.md +++ b/docs/integrations/azure/discovery.md @@ -67,7 +67,7 @@ The parameters available are: - **`host:`** _(optional)_ Leave empty for Cloud hosted, otherwise set to your self-hosted instance host. - **`organization:`** Your Organization slug (or Collection for on-premise users). Required. -- **`project:`** Your project slug. Required. Wildcards are supported as show on the examples above. If not set, all projects will be searched. +- **`project:`** _(optional)_ Your project slug. Wildcards are supported as show on the examples above. If not set, all projects will be searched. - **`repository:`** _(optional)_ The repository name. Wildcards are supported as show on the examples above. If not set, all repositories will be searched. - **`path:`** _(optional)_ Where to find catalog-info.yaml files. Defaults to /catalog-info.yaml. - **`schedule`** _(optional)_: From 3283ff18ec733df0735b42578f329432af984792 Mon Sep 17 00:00:00 2001 From: Dominik Pfaffenbauer Date: Tue, 24 Jan 2023 15:22:41 +0100 Subject: [PATCH 035/156] change to patch and add missing types for gitlab config Signed-off-by: Dominik Pfaffenbauer --- .changeset/soft-boxes-buy.md | 2 +- plugins/catalog-backend-module-gitlab/config.d.ts | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.changeset/soft-boxes-buy.md b/.changeset/soft-boxes-buy.md index 5e50be4028..581f69cacd 100644 --- a/.changeset/soft-boxes-buy.md +++ b/.changeset/soft-boxes-buy.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-catalog-backend-module-gitlab': minor +'@backstage/plugin-catalog-backend-module-gitlab': patch --- Implement Group and User Catalog Provider diff --git a/plugins/catalog-backend-module-gitlab/config.d.ts b/plugins/catalog-backend-module-gitlab/config.d.ts index ac75a04c2a..4f51867efc 100644 --- a/plugins/catalog-backend-module-gitlab/config.d.ts +++ b/plugins/catalog-backend-module-gitlab/config.d.ts @@ -48,6 +48,18 @@ export interface Config { * (Optional) TaskScheduleDefinition for the refresh. */ schedule?: TaskScheduleDefinitionConfig; + /** + * (Optional) RegExp for the Project Name Pattern + */ + projectPattern?: RegExp; + /** + * (Optional) RegExp for the User Name Pattern + */ + userPattern?: RegExp; + /** + * (Optional) RegExp for the Group Name Pattern + */ + groupPattern?: RegExp; } >; }; From 643bf8743c96aed04690681aa94acb40ab6b3124 Mon Sep 17 00:00:00 2001 From: Dominik Date: Wed, 25 Jan 2023 08:14:58 +0100 Subject: [PATCH 036/156] Update plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts Co-authored-by: Jamie Klassen Signed-off-by: Dominik --- .../src/providers/GitlabOrgDiscoveryEntityProvider.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts index df480de3cb..b4574a8660 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts @@ -170,7 +170,7 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { const users = paginated(options => client.listUsers(options), { page: 1, - per_page: 50, + per_page: 100, active: true, }); @@ -178,7 +178,7 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { options => client.listGroups(options), { page: 1, - per_page: 50, + per_page: 100, }, ); From 99dc7dd7e45acbaf5cf251ed0eb658ac215700c6 Mon Sep 17 00:00:00 2001 From: Dominik Date: Wed, 25 Jan 2023 08:15:04 +0100 Subject: [PATCH 037/156] Update plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts Co-authored-by: Jamie Klassen Signed-off-by: Dominik --- .../src/providers/GitlabOrgDiscoveryEntityProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts index b4574a8660..80286cf42b 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts @@ -50,7 +50,7 @@ type GroupResult = { }; /** - * Discovers entity definition files in the groups of a Gitlab instance. + * Discovers users and groups from a Gitlab instance. * @public */ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { From 957365191976d587da5b1c715755c3210fc2dd32 Mon Sep 17 00:00:00 2001 From: Mengnan Gong Date: Wed, 25 Jan 2023 17:23:24 +0800 Subject: [PATCH 038/156] add a migration script to trigger a reprocessing of the entities Signed-off-by: Mengnan Gong --- .changeset/dull-gorillas-sing.md | 5 +++ .../20230125085746_trigger_reprocessing.js | 33 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 .changeset/dull-gorillas-sing.md create mode 100644 plugins/catalog-backend/migrations/20230125085746_trigger_reprocessing.js diff --git a/.changeset/dull-gorillas-sing.md b/.changeset/dull-gorillas-sing.md new file mode 100644 index 0000000000..99246bea1c --- /dev/null +++ b/.changeset/dull-gorillas-sing.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +The previous migration that adds the `search.original_value` column may leave some of the entities not updated. Add a migration script to trigger a reprocessing of the entities. diff --git a/plugins/catalog-backend/migrations/20230125085746_trigger_reprocessing.js b/plugins/catalog-backend/migrations/20230125085746_trigger_reprocessing.js new file mode 100644 index 0000000000..9bd30723cd --- /dev/null +++ b/plugins/catalog-backend/migrations/20230125085746_trigger_reprocessing.js @@ -0,0 +1,33 @@ +/* + * Copyright 2022 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. + */ + +// @ts-check + +/** + * @param { import("knex").Knex } knex + */ +exports.up = async function up(knex) { + await knex('final_entities').update({ hash: '' }); + await knex('refresh_state').update({ + result_hash: '', + next_update_at: knex.fn.now(), + }); +}; + +/** + * @param { import("knex").Knex } _knex + */ +exports.down = async function down(_knex) {}; From ea0f19229aa7b71245958ff59687b1861541117f Mon Sep 17 00:00:00 2001 From: Costas Drogos Date: Wed, 25 Jan 2023 12:14:47 +0100 Subject: [PATCH 039/156] GithubDiscoveryProcessor: allow filtering on forks Forks of repositories containing a catalog yml, might override discovery for the upstream repository, if both are discovered. This might not be desired in environments working extensively with forks, as it can create a lot of confusion and potentially, breakage if fork and upstream end up with different versions of the catalog yaml. This changeset provides a way to enable or disable evaluating forked repositories via Github's API `isFork` attribute. In detail, this changeset introduces a new config option, namely `allowForks` (boolean, defaulting to true) and the underlying logic, that will exclude any forked repository from the list of repositories to be discovered, when set to false. Signed-off-by: Costas Drogos --- .../catalog-backend-module-github/config.d.ts | 8 +++++ .../src/lib/github.test.ts | 4 +++ .../src/lib/github.ts | 2 ++ .../src/lib/util.test.ts | 24 ++++++++++++- .../src/lib/util.ts | 11 ++++++ .../GithubDiscoveryProcessor.test.ts | 13 +++++++ .../providers/GithubEntityProvider.test.ts | 8 +++++ .../src/providers/GithubEntityProvider.ts | 7 +++- .../GithubEntityProviderConfig.test.ts | 34 +++++++++++++++++-- .../providers/GithubEntityProviderConfig.ts | 3 ++ 10 files changed, 110 insertions(+), 4 deletions(-) diff --git a/plugins/catalog-backend-module-github/config.d.ts b/plugins/catalog-backend-module-github/config.d.ts index 691caedc46..37852223c1 100644 --- a/plugins/catalog-backend-module-github/config.d.ts +++ b/plugins/catalog-backend-module-github/config.d.ts @@ -86,6 +86,10 @@ export interface Config { /** * (Optional) GitHub topic-based filters. */ + allowForks?: boolean; + /** + * (Optional) Allow Forks to be evaluated. + */ topic?: { /** * (Optional) An array of strings used to filter in results based on their associated GitHub topics. @@ -143,6 +147,10 @@ export interface Config { /** * (Optional) GitHub topic-based filters. */ + allowForks?: boolean; + /** + * (Optional) Allow Forks to be evaluated. + */ topic?: { /** * (Optional) An array of strings used to filter in results based on their associated GitHub topics. diff --git a/plugins/catalog-backend-module-github/src/lib/github.test.ts b/plugins/catalog-backend-module-github/src/lib/github.test.ts index 387dc8a2ee..624ea5c3c9 100644 --- a/plugins/catalog-backend-module-github/src/lib/github.test.ts +++ b/plugins/catalog-backend-module-github/src/lib/github.test.ts @@ -488,6 +488,7 @@ describe('github', () => { name: 'backstage', url: 'https://github.com/backstage/backstage', isArchived: false, + isFork: false, repositoryTopics: { nodes: [{ topic: { name: 'blah' } }], }, @@ -500,6 +501,7 @@ describe('github', () => { name: 'demo', url: 'https://github.com/backstage/demo', isArchived: true, + isFork: true, repositoryTopics: { nodes: [] }, defaultBranchRef: { name: 'main', @@ -524,6 +526,7 @@ describe('github', () => { name: 'backstage', url: 'https://github.com/backstage/backstage', isArchived: false, + isFork: false, repositoryTopics: { nodes: [{ topic: { name: 'blah' } }], }, @@ -536,6 +539,7 @@ describe('github', () => { name: 'demo', url: 'https://github.com/backstage/demo', isArchived: true, + isFork: true, repositoryTopics: { nodes: [] }, defaultBranchRef: { name: 'main', diff --git a/plugins/catalog-backend-module-github/src/lib/github.ts b/plugins/catalog-backend-module-github/src/lib/github.ts index f719e3d506..ae6e14fc23 100644 --- a/plugins/catalog-backend-module-github/src/lib/github.ts +++ b/plugins/catalog-backend-module-github/src/lib/github.ts @@ -89,6 +89,7 @@ export type RepositoryResponse = { name: string; url: string; isArchived: boolean; + isFork: boolean; repositoryTopics: RepositoryTopics; defaultBranchRef: { name: string; @@ -435,6 +436,7 @@ export async function getOrganizationRepositories( } url isArchived + isFork repositoryTopics(first: 100) { nodes { ... on RepositoryTopic { diff --git a/plugins/catalog-backend-module-github/src/lib/util.test.ts b/plugins/catalog-backend-module-github/src/lib/util.test.ts index 7aca6839ea..0de1d24bbf 100644 --- a/plugins/catalog-backend-module-github/src/lib/util.test.ts +++ b/plugins/catalog-backend-module-github/src/lib/util.test.ts @@ -15,7 +15,11 @@ */ import { GithubTopicFilters } from '../providers/GithubEntityProviderConfig'; -import { parseGithubOrgUrl, satisfiesTopicFilter } from './util'; +import { + parseGithubOrgUrl, + satisfiesTopicFilter, + satisfiesForkFilter, +} from './util'; describe('parseGithubOrgUrl', () => { it('only supports clean org urls, and decodes them', () => { @@ -87,3 +91,21 @@ describe('satisfiesTopicFilter', () => { ).toEqual(false); }); }); + +describe('satisfiesForkFilter', () => { + it('handles cases where forks are not allowed and a fork is evaluated', () => { + expect(satisfiesForkFilter(false, true)).toEqual(false); + }); + + it('handles cases where forks are not allowed and a fork is not evaluated', () => { + expect(satisfiesForkFilter(false, false)).toEqual(true); + }); + + it('handles cases where forks are allowed and a fork is evaluated', () => { + expect(satisfiesForkFilter(true, true)).toEqual(true); + }); + + it('handles cases where forks are allowed and a fork is not evaluated', () => { + expect(satisfiesForkFilter(true, false)).toEqual(true); + }); +}); diff --git a/plugins/catalog-backend-module-github/src/lib/util.ts b/plugins/catalog-backend-module-github/src/lib/util.ts index ece463bb40..5c0297c0cc 100644 --- a/plugins/catalog-backend-module-github/src/lib/util.ts +++ b/plugins/catalog-backend-module-github/src/lib/util.ts @@ -77,3 +77,14 @@ export function satisfiesTopicFilter( // not configured at all. return true; } + +export function satisfiesForkFilter( + allowForks: boolean | true, + isFork: boolean | false, +): Boolean { + // we don't want to include forks if forks are not allowed + if (!allowForks && isFork) return false; + + // if forks are allowed, allow all repos through + return true; +} diff --git a/plugins/catalog-backend-module-github/src/processors/GithubDiscoveryProcessor.test.ts b/plugins/catalog-backend-module-github/src/processors/GithubDiscoveryProcessor.test.ts index b69728cc62..f30007c677 100644 --- a/plugins/catalog-backend-module-github/src/processors/GithubDiscoveryProcessor.test.ts +++ b/plugins/catalog-backend-module-github/src/processors/GithubDiscoveryProcessor.test.ts @@ -150,6 +150,7 @@ describe('GithubDiscoveryProcessor', () => { url: 'https://github.com/backstage/backstage', repositoryTopics: { nodes: [] }, isArchived: false, + isFork: false, defaultBranchRef: { name: 'master', }, @@ -160,6 +161,7 @@ describe('GithubDiscoveryProcessor', () => { url: 'https://github.com/backstage/demo', repositoryTopics: { nodes: [] }, isArchived: false, + isFork: false, defaultBranchRef: { name: 'main', }, @@ -202,6 +204,7 @@ describe('GithubDiscoveryProcessor', () => { url: 'https://github.com/backstage/tech-docs', repositoryTopics: { nodes: [] }, isArchived: false, + isFork: false, defaultBranchRef: { name: 'main', }, @@ -236,6 +239,7 @@ describe('GithubDiscoveryProcessor', () => { url: 'https://github.com/backstage/tech-docs', repositoryTopics: { nodes: [] }, isArchived: false, + isFork: false, defaultBranchRef: null, catalogInfoFile: null, }, @@ -260,6 +264,7 @@ describe('GithubDiscoveryProcessor', () => { url: 'https://github.com/backstage/backstage', repositoryTopics: { nodes: [] }, isArchived: false, + isFork: false, defaultBranchRef: { name: 'master', }, @@ -295,6 +300,7 @@ describe('GithubDiscoveryProcessor', () => { url: 'https://github.com/backstage/backstage', repositoryTopics: { nodes: [] }, isArchived: false, + isFork: false, defaultBranchRef: { name: 'main', }, @@ -305,6 +311,7 @@ describe('GithubDiscoveryProcessor', () => { url: 'https://github.com/backstage/techdocs-cli', repositoryTopics: { nodes: [] }, isArchived: false, + isFork: false, defaultBranchRef: { name: 'main', }, @@ -315,6 +322,7 @@ describe('GithubDiscoveryProcessor', () => { url: 'https://github.com/backstage/techdocs-container', repositoryTopics: { nodes: [] }, isArchived: false, + isFork: false, defaultBranchRef: { name: 'main', }, @@ -325,6 +333,7 @@ describe('GithubDiscoveryProcessor', () => { url: 'https://github.com/backstage/techdocs-durp', repositoryTopics: { nodes: [] }, isArchived: false, + isFork: false, defaultBranchRef: null, catalogInfoFile: null, }, @@ -365,6 +374,7 @@ describe('GithubDiscoveryProcessor', () => { name: 'abstest', url: 'https://github.com/backstage/abctest', isArchived: false, + isFork: false, repositoryTopics: { nodes: [] }, defaultBranchRef: { name: 'main', @@ -375,6 +385,7 @@ describe('GithubDiscoveryProcessor', () => { name: 'test', url: 'https://github.com/backstage/test', isArchived: false, + isFork: false, repositoryTopics: { nodes: [] }, defaultBranchRef: { name: 'main', @@ -386,6 +397,7 @@ describe('GithubDiscoveryProcessor', () => { url: 'https://github.com/backstage/test', repositoryTopics: { nodes: [] }, isArchived: true, + isFork: false, defaultBranchRef: { name: 'main', }, @@ -396,6 +408,7 @@ describe('GithubDiscoveryProcessor', () => { url: 'https://github.com/backstage/testxyz', repositoryTopics: { nodes: [] }, isArchived: false, + isFork: false, defaultBranchRef: { name: 'main', }, diff --git a/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.test.ts b/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.test.ts index 9916825cdc..2be5df09fe 100644 --- a/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.test.ts +++ b/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.test.ts @@ -172,6 +172,7 @@ describe('GithubEntityProvider', () => { url: 'https://github.com/test-org/test-repo', repositoryTopics: { nodes: [] }, isArchived: false, + isFork: false, defaultBranchRef: { name: 'main', }, @@ -274,6 +275,7 @@ describe('GithubEntityProvider', () => { ], }, isArchived: false, + isFork: false, defaultBranchRef: { name: 'main', }, @@ -353,6 +355,7 @@ describe('GithubEntityProvider', () => { ], }, isArchived: false, + isFork: false, defaultBranchRef: { name: 'main', }, @@ -445,6 +448,7 @@ describe('GithubEntityProvider', () => { nodes: [], }, isArchived: false, + isFork: false, defaultBranchRef: { name: 'main', }, @@ -457,6 +461,7 @@ describe('GithubEntityProvider', () => { nodes: [], }, isArchived: false, + isFork: false, defaultBranchRef: { name: 'main', }, @@ -557,6 +562,7 @@ describe('GithubEntityProvider', () => { ], }, isArchived: false, + isFork: false, defaultBranchRef: { name: 'main', }, @@ -580,6 +586,7 @@ describe('GithubEntityProvider', () => { ], }, isArchived: false, + isFork: false, defaultBranchRef: { name: 'main', }, @@ -600,6 +607,7 @@ describe('GithubEntityProvider', () => { ], }, isArchived: false, + isFork: false, defaultBranchRef: { name: 'main', }, diff --git a/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.ts b/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.ts index 1344e2f5d1..f84f401191 100644 --- a/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.ts +++ b/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.ts @@ -40,7 +40,7 @@ import { GithubEntityProviderConfig, } from './GithubEntityProviderConfig'; import { getOrganizationRepositories } from '../lib/github'; -import { satisfiesTopicFilter } from '../lib/util'; +import { satisfiesTopicFilter, satisfiesForkFilter } from '../lib/util'; import { EventParams, EventSubscriber } from '@backstage/plugin-events-node'; import { PushEvent, Commit } from '@octokit/webhooks-types'; @@ -52,6 +52,7 @@ type Repository = { name: string; url: string; isArchived: boolean; + isFork: boolean; repositoryTopics: string[]; defaultBranchRef?: string; isCatalogInfoFilePresent: boolean; @@ -216,6 +217,7 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber { defaultBranchRef: r.defaultBranchRef?.name, repositoryTopics: r.repositoryTopics.nodes.map(t => t.topic.name), isArchived: r.isArchived, + isFork: r.isFork, isCatalogInfoFilePresent: r.catalogInfoFile?.__typename === 'Blob' && r.catalogInfoFile.text !== '', @@ -234,6 +236,7 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber { private matchesFilters(repositories: Repository[]) { const repositoryFilter = this.config.filters?.repository; const topicFilters = this.config.filters?.topic; + const allowForks = this.config.filters?.allowForks ?? true; const matchingRepositories = repositories.filter(r => { const repoTopics: string[] = r.repositoryTopics; @@ -241,6 +244,7 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber { !r.isArchived && (!repositoryFilter || repositoryFilter.test(r.name)) && satisfiesTopicFilter(repoTopics, topicFilters) && + satisfiesForkFilter(allowForks, r.isFork) && r.defaultBranchRef ); }); @@ -302,6 +306,7 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber { defaultBranchRef: event.repository.default_branch, repositoryTopics: event.repository.topics, isArchived: event.repository.archived, + isFork: event.repository.fork, // we can consider this file present because // only the catalog file will be recovered from the commits isCatalogInfoFilePresent: true, diff --git a/plugins/catalog-backend-module-github/src/providers/GithubEntityProviderConfig.test.ts b/plugins/catalog-backend-module-github/src/providers/GithubEntityProviderConfig.test.ts index 0d9b5ce65b..a597e9dbe0 100644 --- a/plugins/catalog-backend-module-github/src/providers/GithubEntityProviderConfig.test.ts +++ b/plugins/catalog-backend-module-github/src/providers/GithubEntityProviderConfig.test.ts @@ -78,6 +78,12 @@ describe('readProviderConfigs', () => { }, }, }, + providerWithForkFilter: { + organization: 'test-org6', + filters: { + allowForks: false, + }, + }, providerWithHost: { organization: 'test-org1', host: 'ghe.internal.com', @@ -97,7 +103,7 @@ describe('readProviderConfigs', () => { }); const providerConfigs = readProviderConfigs(config); - expect(providerConfigs).toHaveLength(7); + expect(providerConfigs).toHaveLength(8); expect(providerConfigs[0]).toEqual({ id: 'providerOrganizationOnly', organization: 'test-org1', @@ -106,6 +112,7 @@ describe('readProviderConfigs', () => { filters: { repository: undefined, branch: undefined, + allowForks: true, topic: { include: undefined, exclude: undefined, @@ -122,6 +129,7 @@ describe('readProviderConfigs', () => { filters: { repository: undefined, branch: undefined, + allowForks: true, topic: { include: undefined, exclude: undefined, @@ -138,6 +146,7 @@ describe('readProviderConfigs', () => { filters: { repository: /^repository.*filter$/, // repo branch: undefined, // branch + allowForks: true, topic: { include: undefined, exclude: undefined, @@ -154,6 +163,7 @@ describe('readProviderConfigs', () => { filters: { repository: undefined, branch: 'branch-name', + allowForks: true, topic: { include: undefined, exclude: undefined, @@ -170,6 +180,7 @@ describe('readProviderConfigs', () => { filters: { repository: undefined, branch: undefined, + allowForks: true, topic: { include: ['backstage-include'], exclude: ['backstage-exclude'], @@ -179,6 +190,23 @@ describe('readProviderConfigs', () => { validateLocationsExist: false, }); expect(providerConfigs[5]).toEqual({ + id: 'providerWithForkFilter', + organization: 'test-org6', + catalogPath: '/catalog-info.yaml', + host: 'github.com', + filters: { + repository: undefined, + branch: undefined, + allowForks: false, + topic: { + include: undefined, + exclude: undefined, + }, + }, + schedule: undefined, + validateLocationsExist: false, + }); + expect(providerConfigs[6]).toEqual({ id: 'providerWithHost', organization: 'test-org1', catalogPath: '/catalog-info.yaml', @@ -186,6 +214,7 @@ describe('readProviderConfigs', () => { filters: { repository: undefined, branch: undefined, + allowForks: true, topic: { include: undefined, exclude: undefined, @@ -194,7 +223,7 @@ describe('readProviderConfigs', () => { validateLocationsExist: false, schedule: undefined, }); - expect(providerConfigs[6]).toEqual({ + expect(providerConfigs[7]).toEqual({ id: 'providerWithSchedule', organization: 'test-org1', catalogPath: '/catalog-info.yaml', @@ -202,6 +231,7 @@ describe('readProviderConfigs', () => { filters: { repository: undefined, branch: undefined, + allowForks: true, topic: { include: undefined, exclude: undefined, diff --git a/plugins/catalog-backend-module-github/src/providers/GithubEntityProviderConfig.ts b/plugins/catalog-backend-module-github/src/providers/GithubEntityProviderConfig.ts index e888743258..a79a557ebf 100644 --- a/plugins/catalog-backend-module-github/src/providers/GithubEntityProviderConfig.ts +++ b/plugins/catalog-backend-module-github/src/providers/GithubEntityProviderConfig.ts @@ -32,6 +32,7 @@ export type GithubEntityProviderConfig = { repository?: RegExp; branch?: string; topic?: GithubTopicFilters; + allowForks?: boolean; }; validateLocationsExist: boolean; schedule?: TaskScheduleDefinition; @@ -72,6 +73,7 @@ function readProviderConfig( const host = config.getOptionalString('host') ?? 'github.com'; const repositoryPattern = config.getOptionalString('filters.repository'); const branchPattern = config.getOptionalString('filters.branch'); + const allowForks = config.getOptionalBoolean('filters.allowForks') ?? true; const topicFilterInclude = config?.getOptionalStringArray( 'filters.topic.include', ); @@ -103,6 +105,7 @@ function readProviderConfig( ? compileRegExp(repositoryPattern) : undefined, branch: branchPattern || undefined, + allowForks: allowForks, topic: { include: topicFilterInclude, exclude: topicFilterExclude, From 66158754b4aa18579f13e5b8d088d850a38d7b5f Mon Sep 17 00:00:00 2001 From: Costas Drogos Date: Wed, 25 Jan 2023 12:18:57 +0100 Subject: [PATCH 040/156] Add changeset Signed-off-by: Costas Drogos --- .changeset/hot-lions-cover.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/hot-lions-cover.md diff --git a/.changeset/hot-lions-cover.md b/.changeset/hot-lions-cover.md new file mode 100644 index 0000000000..62064188a4 --- /dev/null +++ b/.changeset/hot-lions-cover.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-github': patch +--- + +Add support for filtering out forks From d8249ea345a6e47a5ef0925d0268014399206583 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Jan 2023 12:07:36 +0000 Subject: [PATCH 041/156] fix(deps): update dependency @types/express to v4.17.16 Signed-off-by: Renovate Bot --- yarn.lock | 84 +++++++++++++++++++++++++++---------------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/yarn.lock b/yarn.lock index d0d2509f30..2a4af9a6f2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3398,7 +3398,7 @@ __metadata: "@manypkg/get-packages": ^1.1.3 "@types/compression": ^1.7.0 "@types/cors": ^2.8.6 - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/fs-extra": ^9.0.3 "@types/http-errors": ^2.0.0 "@types/minimist": ^1.2.0 @@ -3452,7 +3452,7 @@ __metadata: "@types/concat-stream": ^2.0.0 "@types/cors": ^2.8.6 "@types/dockerode": ^3.3.0 - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/fs-extra": ^9.0.3 "@types/http-errors": ^2.0.0 "@types/luxon": ^3.0.0 @@ -3537,7 +3537,7 @@ __metadata: "@backstage/plugin-auth-node": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" "@backstage/types": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 express: ^4.17.1 knex: ^2.0.0 languageName: unknown @@ -3691,7 +3691,7 @@ __metadata: "@swc/helpers": ^0.4.7 "@swc/jest": ^0.2.22 "@types/diff": ^5.0.0 - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/fs-extra": ^9.0.1 "@types/http-proxy": ^1.17.4 "@types/inquirer": ^8.1.3 @@ -4201,7 +4201,7 @@ __metadata: "@backstage/backend-common": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" - "@types/express": "*" + "@types/express": ^4.17.15 "@types/http-proxy-middleware": ^0.19.3 "@types/supertest": ^2.0.8 express: ^4.17.1 @@ -4417,7 +4417,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/config-loader": "workspace:^" "@backstage/types": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/supertest": ^2.0.8 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -4453,7 +4453,7 @@ __metadata: "@google-cloud/firestore": ^6.0.0 "@types/body-parser": ^1.19.0 "@types/cookie-parser": ^1.4.2 - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/express-session": ^1.17.2 "@types/jwt-decode": ^3.1.0 "@types/passport": ^1.0.3 @@ -4509,7 +4509,7 @@ __metadata: "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" - "@types/express": "*" + "@types/express": ^4.17.15 express: ^4.17.1 jose: ^4.6.0 lodash: ^4.17.21 @@ -4528,7 +4528,7 @@ __metadata: "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/plugin-azure-devops-common": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/supertest": ^2.0.8 azure-devops-node-api: ^11.0.1 express: ^4.17.1 @@ -4594,7 +4594,7 @@ __metadata: "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/plugin-azure-sites-common": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/supertest": ^2.0.8 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -4653,7 +4653,7 @@ __metadata: "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/supertest": ^2.0.8 badge-maker: ^3.3.0 cors: ^2.8.5 @@ -4705,7 +4705,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 express: ^4.17.1 express-promise-router: ^4.1.0 knex: ^2.0.0 @@ -5017,7 +5017,7 @@ __metadata: "@backstage/plugin-catalog-node": "workspace:^" "@backstage/plugin-events-node": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/luxon": ^3.0.0 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -5120,7 +5120,7 @@ __metadata: "@backstage/types": "workspace:^" "@opentelemetry/api": ^1.3.0 "@types/core-js": ^2.5.4 - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/git-url-parse": ^9.0.0 "@types/lodash": ^4.14.151 "@types/supertest": ^2.0.8 @@ -5562,7 +5562,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/integration": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/express-xml-bodyparser": ^0.3.2 "@types/supertest": ^2.0.8 express: ^4.17.1 @@ -5872,7 +5872,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/plugin-events-backend-test-utils": "workspace:^" "@backstage/plugin-events-node": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 express: ^4.17.1 express-promise-router: ^4.1.0 supertest: ^6.1.3 @@ -5898,7 +5898,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/plugin-explore-common": "workspace:^" "@backstage/plugin-search-common": "workspace:^" - "@types/express": "*" + "@types/express": ^4.17.15 "@types/supertest": ^2.0.8 express: ^4.18.1 express-promise-router: ^4.1.0 @@ -6364,7 +6364,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/plugin-catalog-graphql": "workspace:^" "@graphql-tools/schema": ^9.0.0 - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/supertest": ^2.0.8 apollo-server: ^3.0.0 apollo-server-express: ^3.0.0 @@ -6484,7 +6484,7 @@ __metadata: "@backstage/plugin-auth-node": "workspace:^" "@backstage/plugin-jenkins-common": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/jenkins": ^0.23.1 "@types/supertest": ^2.0.8 express: ^4.17.1 @@ -6549,7 +6549,7 @@ __metadata: "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/jest-when": ^3.5.0 "@types/lodash": ^4.14.151 express: ^4.17.1 @@ -6612,7 +6612,7 @@ __metadata: "@jest-mock/express": ^2.0.1 "@kubernetes/client-node": 0.18.1 "@types/aws4": ^1.5.1 - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/http-proxy-middleware": ^0.19.3 "@types/luxon": ^3.0.0 aws-sdk: ^2.840.0 @@ -6869,7 +6869,7 @@ __metadata: "@backstage/backend-common": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" - "@types/express": "*" + "@types/express": ^4.17.15 "@types/supertest": ^2.0.8 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -6924,7 +6924,7 @@ __metadata: "@backstage/plugin-auth-node": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" "@backstage/plugin-permission-node": "workspace:^" - "@types/express": "*" + "@types/express": ^4.17.15 "@types/lodash": ^4.14.151 "@types/supertest": ^2.0.8 dataloader: ^2.0.0 @@ -6966,7 +6966,7 @@ __metadata: "@backstage/errors": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/supertest": ^2.0.8 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -7013,7 +7013,7 @@ __metadata: "@backstage/plugin-permission-common": "workspace:^" "@backstage/plugin-permission-node": "workspace:^" "@backstage/plugin-playlist-common": "workspace:^" - "@types/express": "*" + "@types/express": ^4.17.15 "@types/supertest": ^2.0.8 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -7084,7 +7084,7 @@ __metadata: "@backstage/backend-common": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/http-proxy-middleware": ^0.19.3 "@types/supertest": ^2.0.8 "@types/uuid": ^8.0.0 @@ -7111,7 +7111,7 @@ __metadata: "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/supertest": ^2.0.8 camelcase-keys: ^7.0.1 compression: ^1.7.4 @@ -7270,7 +7270,7 @@ __metadata: "@gitbeaker/node": ^35.1.0 "@octokit/webhooks": ^10.0.0 "@types/command-exists": ^1.2.0 - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/fs-extra": ^9.0.1 "@types/git-url-parse": ^9.0.0 "@types/mock-fs": ^4.13.0 @@ -7529,7 +7529,7 @@ __metadata: "@backstage/plugin-search-backend-node": "workspace:^" "@backstage/plugin-search-common": "workspace:^" "@backstage/types": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/supertest": ^2.0.8 dataloader: ^2.0.0 express: ^4.17.1 @@ -7696,7 +7696,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/test-utils": "workspace:^" - "@types/express": "*" + "@types/express": ^4.17.15 "@types/supertest": ^2.0.12 express: ^4.18.1 express-promise-router: ^4.1.0 @@ -7890,7 +7890,7 @@ __metadata: "@backstage/plugin-tech-insights-common": "workspace:^" "@backstage/plugin-tech-insights-node": "workspace:^" "@backstage/types": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/luxon": ^3.0.0 "@types/semver": ^7.3.8 "@types/supertest": ^2.0.8 @@ -8054,7 +8054,7 @@ __metadata: "@backstage/plugin-search-common": "workspace:^" "@backstage/plugin-techdocs-node": "workspace:^" "@types/dockerode": ^3.3.0 - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 dockerode: ^3.3.1 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -8122,7 +8122,7 @@ __metadata: "@backstage/plugin-search-common": "workspace:^" "@google-cloud/storage": ^6.0.0 "@trendyol-js/openstack-swift-sdk": ^0.0.5 - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/fs-extra": ^9.0.5 "@types/js-yaml": ^4.0.0 "@types/mime-types": ^2.1.0 @@ -8234,7 +8234,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/integration": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/supertest": ^2.0.8 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -8287,7 +8287,7 @@ __metadata: "@backstage/errors": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" "@backstage/types": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/supertest": ^2.0.8 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -8341,7 +8341,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@types/compression": ^1.7.2 - "@types/express": "*" + "@types/express": ^4.17.15 "@types/supertest": ^2.0.8 compression: ^1.7.4 cors: ^2.8.5 @@ -10275,7 +10275,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/supertest": ^2.0.8 "@types/uuid": ^8.0.0 express: ^4.17.1 @@ -14390,15 +14390,15 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:*, @types/express@npm:^4.17.13, @types/express@npm:^4.17.15, @types/express@npm:^4.17.6": - version: 4.17.15 - resolution: "@types/express@npm:4.17.15" +"@types/express@npm:*, @types/express@npm:^4.17.13, @types/express@npm:^4.17.15": + version: 4.17.16 + resolution: "@types/express@npm:4.17.16" dependencies: "@types/body-parser": "*" "@types/express-serve-static-core": ^4.17.31 "@types/qs": "*" "@types/serve-static": "*" - checksum: b4acd8a836d4f6409cdf79b12d6e660485249b62500cccd61e7997d2f520093edf77d7f8498ca79d64a112c6434b6de5ca48039b8fde2c881679eced7e96979b + checksum: 43f3ed2cea6e5e83c7c1098c5152f644e975fd764443717ff9c812a1518416a9e7e9f824ffe852c118888cbfb994ed023cad08331f49b19ced469bb185cdd5cd languageName: node linkType: hard @@ -22463,7 +22463,7 @@ __metadata: "@gitbeaker/node": ^35.1.0 "@octokit/rest": ^19.0.3 "@types/dockerode": ^3.3.0 - "@types/express": ^4.17.6 + "@types/express": ^4.17.15 "@types/express-serve-static-core": ^4.17.5 "@types/luxon": ^3.0.0 azure-devops-node-api: ^11.0.1 From ae88f61e00dc21efeca3cbf5e09a4c411ad747c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 25 Jan 2023 13:47:27 +0100 Subject: [PATCH 042/156] break into dedicated plugin and module registration points MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/sharp-lobsters-build.md | 10 +++++ packages/backend-plugin-api/api-report.md | 43 ++++++++++++++++--- .../src/wiring/factories.ts | 13 +++--- .../backend-plugin-api/src/wiring/index.ts | 2 + .../backend-plugin-api/src/wiring/types.ts | 40 ++++++++++++++++- 5 files changed, 96 insertions(+), 12 deletions(-) create mode 100644 .changeset/sharp-lobsters-build.md diff --git a/.changeset/sharp-lobsters-build.md b/.changeset/sharp-lobsters-build.md new file mode 100644 index 0000000000..f9d317a1f6 --- /dev/null +++ b/.changeset/sharp-lobsters-build.md @@ -0,0 +1,10 @@ +--- +'@backstage/backend-plugin-api': minor +--- + +The `register` methods passed to `createBackendPlugin` and `createBackendModule` +now have dedicated `BackendPluginRegistrationPoints` and +`BackendModuleRegistrationPoints` arguments, respectively. This lets us make it +clear on a type level that it's not possible to pass in extension points as +dependencies to plugins (should only ever be done for modules). This has no +practical effect on code that was already well behaved. diff --git a/packages/backend-plugin-api/api-report.md b/packages/backend-plugin-api/api-report.md index 86917dae11..4543e5b580 100644 --- a/packages/backend-plugin-api/api-report.md +++ b/packages/backend-plugin-api/api-report.md @@ -29,9 +29,22 @@ export interface BackendModuleConfig { // (undocumented) pluginId: string; // (undocumented) - register( - reg: Omit, - ): void; + register(reg: BackendModuleRegistrationPoints): void; +} + +// @public +export interface BackendModuleRegistrationPoints { + // (undocumented) + registerInit< + Deps extends { + [name in string]: unknown; + }, + >(options: { + deps: { + [name in keyof Deps]: ServiceRef | ExtensionPoint; + }; + init(deps: Deps): Promise; + }): void; } // @public (undocumented) @@ -39,10 +52,30 @@ export interface BackendPluginConfig { // (undocumented) id: string; // (undocumented) - register(reg: BackendRegistrationPoints): void; + register(reg: BackendPluginRegistrationPoints): void; } -// @public (undocumented) +// @public +export interface BackendPluginRegistrationPoints { + // (undocumented) + registerExtensionPoint( + ref: ExtensionPoint, + impl: TExtensionPoint, + ): void; + // (undocumented) + registerInit< + Deps extends { + [name in string]: unknown; + }, + >(options: { + deps: { + [name in keyof Deps]: ServiceRef; + }; + init(deps: Deps): Promise; + }): void; +} + +// @public export interface BackendRegistrationPoints { // (undocumented) registerExtensionPoint( diff --git a/packages/backend-plugin-api/src/wiring/factories.ts b/packages/backend-plugin-api/src/wiring/factories.ts index ad2e8edd13..b7482a9f0b 100644 --- a/packages/backend-plugin-api/src/wiring/factories.ts +++ b/packages/backend-plugin-api/src/wiring/factories.ts @@ -15,6 +15,8 @@ */ import { + BackendModuleRegistrationPoints, + BackendPluginRegistrationPoints, BackendRegistrationPoints, BackendFeature, ExtensionPoint, @@ -44,7 +46,7 @@ export function createExtensionPoint( /** @public */ export interface BackendPluginConfig { id: string; - register(reg: BackendRegistrationPoints): void; + register(reg: BackendPluginRegistrationPoints): void; } /** @public */ @@ -62,9 +64,7 @@ export function createBackendPlugin( export interface BackendModuleConfig { pluginId: string; moduleId: string; - register( - reg: Omit, - ): void; + register(reg: BackendModuleRegistrationPoints): void; } /** @@ -96,8 +96,9 @@ export function createBackendModule( return () => ({ id: `${config.pluginId}.${config.moduleId}`, register(register: BackendRegistrationPoints) { - // TODO: Hide registerExtensionPoint - return config.register(register); + return config.register({ + registerInit: register.registerInit.bind(register), + }); }, }); } diff --git a/packages/backend-plugin-api/src/wiring/index.ts b/packages/backend-plugin-api/src/wiring/index.ts index 0d5999ad12..e0c25eeb4e 100644 --- a/packages/backend-plugin-api/src/wiring/index.ts +++ b/packages/backend-plugin-api/src/wiring/index.ts @@ -30,6 +30,8 @@ export { createExtensionPoint, } from './factories'; export type { + BackendModuleRegistrationPoints, + BackendPluginRegistrationPoints, BackendRegistrationPoints, BackendFeature, ExtensionPoint, diff --git a/packages/backend-plugin-api/src/wiring/types.ts b/packages/backend-plugin-api/src/wiring/types.ts index cdb56ea2e4..6e081f57e5 100644 --- a/packages/backend-plugin-api/src/wiring/types.ts +++ b/packages/backend-plugin-api/src/wiring/types.ts @@ -35,7 +35,13 @@ export type ExtensionPoint = { $$ref: 'extension-point'; }; -/** @public */ +/** + * The callbacks passed to the `register` method of a backend feature; this is + * essentially a superset of {@link BackendPluginRegistrationPoints} and + * {@link BackendModuleRegistrationPoints}. + * + * @public + */ export interface BackendRegistrationPoints { registerExtensionPoint( ref: ExtensionPoint, @@ -49,6 +55,38 @@ export interface BackendRegistrationPoints { }): void; } +/** + * The callbacks passed to the `register` method of a backend plugin. + * + * @public + */ +export interface BackendPluginRegistrationPoints { + registerExtensionPoint( + ref: ExtensionPoint, + impl: TExtensionPoint, + ): void; + registerInit(options: { + deps: { + [name in keyof Deps]: ServiceRef; + }; + init(deps: Deps): Promise; + }): void; +} + +/** + * The callbacks passed to the `register` method of a backend module. + * + * @public + */ +export interface BackendModuleRegistrationPoints { + registerInit(options: { + deps: { + [name in keyof Deps]: ServiceRef | ExtensionPoint; + }; + init(deps: Deps): Promise; + }): void; +} + /** @public */ export interface BackendFeature { // TODO(Rugvip): Try to get rid of the ID at this level, allowing for a feature to register multiple features as a bundle From 46d5d73bf815deb600fe04591f26ab7c21846e7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 25 Jan 2023 14:34:28 +0100 Subject: [PATCH 043/156] update some backend system doc comments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- packages/backend-plugin-api/api-report.md | 18 ++--- .../src/wiring/createSharedEnvironment.ts | 34 +++++++--- .../src/wiring/factories.ts | 68 +++++++++++++++---- 3 files changed, 84 insertions(+), 36 deletions(-) diff --git a/packages/backend-plugin-api/api-report.md b/packages/backend-plugin-api/api-report.md index 86917dae11..da30e3a1d5 100644 --- a/packages/backend-plugin-api/api-report.md +++ b/packages/backend-plugin-api/api-report.md @@ -22,11 +22,9 @@ export interface BackendFeature { register(reg: BackendRegistrationPoints): void; } -// @public (undocumented) +// @public export interface BackendModuleConfig { - // (undocumented) moduleId: string; - // (undocumented) pluginId: string; // (undocumented) register( @@ -34,9 +32,8 @@ export interface BackendModuleConfig { ): void; } -// @public (undocumented) +// @public export interface BackendPluginConfig { - // (undocumented) id: string; // (undocumented) register(reg: BackendRegistrationPoints): void; @@ -116,12 +113,12 @@ export function createBackendModule( config: BackendModuleConfig | ((...params: TOptions) => BackendModuleConfig), ): (...params: TOptions) => BackendFeature; -// @public (undocumented) +// @public export function createBackendPlugin( config: BackendPluginConfig | ((...params: TOptions) => BackendPluginConfig), ): (...params: TOptions) => BackendFeature; -// @public (undocumented) +// @public export function createExtensionPoint( config: ExtensionPointConfig, ): ExtensionPoint; @@ -248,9 +245,8 @@ export type ExtensionPoint = { $$ref: 'extension-point'; }; -// @public (undocumented) +// @public export interface ExtensionPointConfig { - // (undocumented) id: string; } @@ -476,13 +472,13 @@ export interface ServiceRefConfig { scope?: TScope; } -// @public (undocumented) +// @public export interface SharedBackendEnvironment { // (undocumented) $$type: 'SharedBackendEnvironment'; } -// @public (undocumented) +// @public export interface SharedBackendEnvironmentConfig { // (undocumented) services?: ServiceFactoryOrFunction[]; diff --git a/packages/backend-plugin-api/src/wiring/createSharedEnvironment.ts b/packages/backend-plugin-api/src/wiring/createSharedEnvironment.ts index 3258188772..2eb2cdec6a 100644 --- a/packages/backend-plugin-api/src/wiring/createSharedEnvironment.ts +++ b/packages/backend-plugin-api/src/wiring/createSharedEnvironment.ts @@ -16,35 +16,47 @@ import { ServiceFactory, ServiceFactoryOrFunction } from '../services'; -/** @public */ +/** + * The configuration options passed to {@link createSharedEnvironment}. + * + * @public + */ export interface SharedBackendEnvironmentConfig { services?: ServiceFactoryOrFunction[]; } -// This type is opaque in order to allow for future API evolution without -// cluttering the external API. For example we might want to add support -// for more powerful callback based backend modifications. -// -// By making this opaque we also ensure that the type doesn't become an input -// type that we need to care about, as it would otherwise be possible to pass -// a custom environment definition to `createBackend`, which we don't want. /** + * An opaque type that represents the contents of a shared backend environment. + * * @public */ export interface SharedBackendEnvironment { $$type: 'SharedBackendEnvironment'; + + // NOTE: This type is opaque in order to allow for future API evolution without + // cluttering the external API. For example we might want to add support + // for more powerful callback based backend modifications. + // + // By making this opaque we also ensure that the type doesn't become an input + // type that we need to care about, as it would otherwise be possible to pass + // a custom environment definition to `createBackend`, which we don't want. } /** - * This type is NOT supposed to be used by anyone except internally by the backend-app-api package. - * @internal */ + * This type is NOT supposed to be used by anyone except internally by the + * backend-app-api package. + * + * @internal + */ export interface InternalSharedBackendEnvironment { version: 'v1'; services?: ServiceFactory[]; } /** - * Creates a shared backend environment which can be used to create multiple backends + * Creates a shared backend environment which can be used to create multiple + * backends. + * * @public */ export function createSharedEnvironment< diff --git a/packages/backend-plugin-api/src/wiring/factories.ts b/packages/backend-plugin-api/src/wiring/factories.ts index ad2e8edd13..dd0240b71c 100644 --- a/packages/backend-plugin-api/src/wiring/factories.ts +++ b/packages/backend-plugin-api/src/wiring/factories.ts @@ -20,12 +20,28 @@ import { ExtensionPoint, } from './types'; -/** @public */ +/** + * The configuration options passed to {@link createExtensionPoint}. + * + * @public + * @see {@link https://backstage.io/docs/backend-system/architecture/extension-points | The architecture of extension points} + * @see {@link https://backstage.io/docs/backend-system/architecture/naming-patterns | Recommended naming patterns} + */ export interface ExtensionPointConfig { + /** + * The ID of this extension point. + * + * @see {@link https://backstage.io/docs/backend-system/architecture/naming-patterns | Recommended naming patterns} + */ id: string; } -/** @public */ +/** + * Creates a new backend extension point. + * + * @public + * @see {@link https://backstage.io/docs/backend-system/architecture/extension-points | The architecture of extension points} + */ export function createExtensionPoint( config: ExtensionPointConfig, ): ExtensionPoint { @@ -41,13 +57,30 @@ export function createExtensionPoint( }; } -/** @public */ +/** + * The configuration options passed to {@link createBackendPlugin}. + * + * @public + * @see {@link https://backstage.io/docs/backend-system/architecture/plugins | The architecture of plugins} + * @see {@link https://backstage.io/docs/backend-system/architecture/naming-patterns | Recommended naming patterns} + */ export interface BackendPluginConfig { + /** + * The ID of this plugin. + * + * @see {@link https://backstage.io/docs/backend-system/architecture/naming-patterns | Recommended naming patterns} + */ id: string; register(reg: BackendRegistrationPoints): void; } -/** @public */ +/** + * Creates a new backend plugin. + * + * @public + * @see {@link https://backstage.io/docs/backend-system/architecture/plugins | The architecture of plugins} + * @see {@link https://backstage.io/docs/backend-system/architecture/naming-patterns | Recommended naming patterns} + */ export function createBackendPlugin( config: BackendPluginConfig | ((...params: TOptions) => BackendPluginConfig), ): (...params: TOptions) => BackendFeature { @@ -58,9 +91,23 @@ export function createBackendPlugin( return () => config; } -/** @public */ +/** + * The configuration options passed to {@link createBackendModule}. + * + * @public + * @see {@link https://backstage.io/docs/backend-system/architecture/modules | The architecture of modules} + * @see {@link https://backstage.io/docs/backend-system/architecture/naming-patterns | Recommended naming patterns} + */ export interface BackendModuleConfig { + /** + * The ID of this plugin. + * + * @see {@link https://backstage.io/docs/backend-system/architecture/naming-patterns | Recommended naming patterns} + */ pluginId: string; + /** + * Should exactly match the `id` of the plugin that the module extends. + */ moduleId: string; register( reg: Omit, @@ -71,15 +118,8 @@ export interface BackendModuleConfig { * Creates a new backend module for a given plugin. * * @public - * - * @remarks - * - * The `moduleId` should be equal to the module-specific suffix of the exported name, such - * that the full name is `pluginId + "Module" + ModuleId`. For example, a GitHub entity - * provider module for the `catalog` plugin might have the module ID `'githubEntityProvider'`, - * and the full exported name would be `catalogModuleGithubEntityProvider`. - * - * The `pluginId` should exactly match the `id` of the plugin that the module extends. + * @see {@link https://backstage.io/docs/backend-system/architecture/modules | The architecture of modules} + * @see {@link https://backstage.io/docs/backend-system/architecture/naming-patterns | Recommended naming patterns} */ export function createBackendModule( config: BackendModuleConfig | ((...params: TOptions) => BackendModuleConfig), From 120594f05eb7b965dcf2c35dcedebb76cc5e5569 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 25 Jan 2023 14:46:04 +0100 Subject: [PATCH 044/156] amend the threat model docs regarding package bumps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- docs/overview/threat-model.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/overview/threat-model.md b/docs/overview/threat-model.md index 57fafd1c28..eddb7539f8 100644 --- a/docs/overview/threat-model.md +++ b/docs/overview/threat-model.md @@ -28,6 +28,8 @@ Other responsibilities include protecting the integrity of configuration files a The integrator is ultimately responsible for auditing usage of internal and external plugins as these run on the host system and have access to configuration and secrets. When installing plugins from sources like NPM, you should vet these in the same way that you would vet any other package installed from that source. +The integrator is also responsible for due diligence in maintaining the resolved NPM dependencies of their Backstage project. This involves ensuring that `yarn.lock` receives updated versions of packages that have vulnerabilities, when those fixed versions are in range of what the Backstage packages request in their respective `package.json` files. This is commonly done by employing automated tooling such as `dependabot` on your own repository. When fixed versions exist that are _not_ in range of what Backstage packages request, or when larger operations such as switching out an entire dependency for another one is required, maintainers collaborate with contributors to try to address those dependency declarations in the main project as soon as possible. + ## Common Backend Configuration There are many common facilities that are configured centrally and available to all Backstage backend plugins. For example there is a `DatabaseManager` that provides access to a SQL database, `TaskScheduler` for scheduling long-running tasks, `Logger` as a general logging facility, and `UrlReader` for reading content from external sources. These are all configured either directly in code, or within the `backend` block of the static configuration. The appropriate care needs to be taken to ensure that any secrets remain confidential and no malicious configuration is injected. From 219debde712fefead96be62a041761e505210407 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 25 Jan 2023 14:48:16 +0100 Subject: [PATCH 045/156] better links MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- docs/overview/threat-model.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/threat-model.md b/docs/overview/threat-model.md index eddb7539f8..b18f21bd37 100644 --- a/docs/overview/threat-model.md +++ b/docs/overview/threat-model.md @@ -28,7 +28,7 @@ Other responsibilities include protecting the integrity of configuration files a The integrator is ultimately responsible for auditing usage of internal and external plugins as these run on the host system and have access to configuration and secrets. When installing plugins from sources like NPM, you should vet these in the same way that you would vet any other package installed from that source. -The integrator is also responsible for due diligence in maintaining the resolved NPM dependencies of their Backstage project. This involves ensuring that `yarn.lock` receives updated versions of packages that have vulnerabilities, when those fixed versions are in range of what the Backstage packages request in their respective `package.json` files. This is commonly done by employing automated tooling such as `dependabot` on your own repository. When fixed versions exist that are _not_ in range of what Backstage packages request, or when larger operations such as switching out an entire dependency for another one is required, maintainers collaborate with contributors to try to address those dependency declarations in the main project as soon as possible. +The integrator is also responsible for due diligence in maintaining the resolved NPM dependencies of their Backstage project. This involves ensuring that `yarn.lock` receives updated versions of packages that have vulnerabilities, when those fixed versions are in range of what the Backstage packages request in their respective `package.json` files. This is commonly done by employing automated tooling such as [Dependabot](https://dependabot.com/), [Snyk](https://snyk.io/), and/or [Renovate](https://docs.renovatebot.com/) on your own repository. When fixed versions exist that are _not_ in range of what Backstage packages request, or when larger operations such as switching out an entire dependency for another one is required, maintainers collaborate with contributors to try to address those dependency declarations in the main project as soon as possible. ## Common Backend Configuration From db887c4884c836d155b8bdb862ca64ed29c61d6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 25 Jan 2023 14:50:41 +0100 Subject: [PATCH 046/156] less diligence MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- docs/overview/threat-model.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/threat-model.md b/docs/overview/threat-model.md index b18f21bd37..a6435f8cc5 100644 --- a/docs/overview/threat-model.md +++ b/docs/overview/threat-model.md @@ -28,7 +28,7 @@ Other responsibilities include protecting the integrity of configuration files a The integrator is ultimately responsible for auditing usage of internal and external plugins as these run on the host system and have access to configuration and secrets. When installing plugins from sources like NPM, you should vet these in the same way that you would vet any other package installed from that source. -The integrator is also responsible for due diligence in maintaining the resolved NPM dependencies of their Backstage project. This involves ensuring that `yarn.lock` receives updated versions of packages that have vulnerabilities, when those fixed versions are in range of what the Backstage packages request in their respective `package.json` files. This is commonly done by employing automated tooling such as [Dependabot](https://dependabot.com/), [Snyk](https://snyk.io/), and/or [Renovate](https://docs.renovatebot.com/) on your own repository. When fixed versions exist that are _not_ in range of what Backstage packages request, or when larger operations such as switching out an entire dependency for another one is required, maintainers collaborate with contributors to try to address those dependency declarations in the main project as soon as possible. +The integrator is also responsible for maintaining the resolved NPM dependencies of their Backstage project. This involves ensuring that `yarn.lock` receives updated versions of packages that have vulnerabilities, when those fixed versions are in range of what the Backstage packages request in their respective `package.json` files. This is commonly done by employing automated tooling such as [Dependabot](https://dependabot.com/), [Snyk](https://snyk.io/), and/or [Renovate](https://docs.renovatebot.com/) on your own repository. When fixed versions exist that are _not_ in range of what Backstage packages request, or when larger operations such as switching out an entire dependency for another one is required, maintainers collaborate with contributors to try to address those dependency declarations in the main project as soon as possible. ## Common Backend Configuration From 4930413406fa05d07f9ea923c8a95b14580ec3be Mon Sep 17 00:00:00 2001 From: Dominik Pfaffenbauer Date: Wed, 25 Jan 2023 14:58:49 +0100 Subject: [PATCH 047/156] Gitlab Org Provider changes Signed-off-by: Dominik Pfaffenbauer --- docs/integrations/gitlab/org.md | 5 +++ .../src/lib/client.ts | 41 +++++++++++++++---- .../src/lib/types.ts | 4 +- .../GitlabOrgDiscoveryEntityProvider.ts | 17 ++++++-- 4 files changed, 53 insertions(+), 14 deletions(-) diff --git a/docs/integrations/gitlab/org.md b/docs/integrations/gitlab/org.md index caf0851477..fc87f968d1 100644 --- a/docs/integrations/gitlab/org.md +++ b/docs/integrations/gitlab/org.md @@ -19,6 +19,11 @@ integrations: token: ${GITLAB_TOKEN} ``` +This will query all users and groups from your gitlab installation. Depending on the size +of the Gitlab Instance, this can take some time our resources. + +The token that is used for the Organization Integration, has to be an Admin PAT. + ```yaml catalog: providers: diff --git a/plugins/catalog-backend-module-gitlab/src/lib/client.ts b/plugins/catalog-backend-module-gitlab/src/lib/client.ts index b86de7bf1d..bad0eb2a86 100644 --- a/plugins/catalog-backend-module-gitlab/src/lib/client.ts +++ b/plugins/catalog-backend-module-gitlab/src/lib/client.ts @@ -22,14 +22,22 @@ import { import { Logger } from 'winston'; import { GitLabGroup, GitLabMembership, GitLabUser } from './types'; -export type ListOptions = { +export type CommonListOptions = { [key: string]: string | number | boolean | undefined; - group?: string; per_page?: number | undefined; page?: number | undefined; active?: boolean; }; +interface ListProjectOptions extends CommonListOptions { + group?: string; +} + +interface UserListOptions extends CommonListOptions { + without_project_bots?: boolean | undefined; + exclude_internal?: boolean | undefined; +} + export type PagedResponse = { items: T[]; nextPage?: number; @@ -51,7 +59,9 @@ export class GitLabClient { return this.config.host !== 'gitlab.com'; } - async listProjects(options?: ListOptions): Promise> { + async listProjects( + options?: ListProjectOptions, + ): Promise> { if (options?.group) { return this.pagedRequest( `/groups/${encodeURIComponent(options?.group)}/projects`, @@ -65,11 +75,24 @@ export class GitLabClient { return this.pagedRequest(`/projects`, options); } - async listUsers(options?: ListOptions): Promise> { - return this.pagedRequest(`/users`, options); + async listUsers( + options?: UserListOptions, + ): Promise> { + let requestOptions = options; + + if (!requestOptions) { + requestOptions = {}; + } + + requestOptions.without_project_bots = true; + requestOptions.exclude_internal = true; + + return this.pagedRequest(`/users?`, requestOptions); } - async listGroups(options?: ListOptions): Promise> { + async listGroups( + options?: CommonListOptions, + ): Promise> { return this.pagedRequest(`/groups`, options); } @@ -150,7 +173,7 @@ export class GitLabClient { */ async pagedRequest( endpoint: string, - options?: ListOptions, + options?: CommonListOptions, ): Promise> { const request = new URL(`${this.config.apiBaseUrl}${endpoint}`); for (const key in options) { @@ -195,8 +218,8 @@ export class GitLabClient { * @param options - Initial ListOptions for the request function. */ export async function* paginated( - request: (options: ListOptions) => Promise>, - options: ListOptions, + request: (options: CommonListOptions) => Promise>, + options: CommonListOptions, ) { let res; do { diff --git a/plugins/catalog-backend-module-gitlab/src/lib/types.ts b/plugins/catalog-backend-module-gitlab/src/lib/types.ts index 97ea87ea98..2b2b888851 100644 --- a/plugins/catalog-backend-module-gitlab/src/lib/types.ts +++ b/plugins/catalog-backend-module-gitlab/src/lib/types.ts @@ -34,9 +34,9 @@ export type GitLabProject = { export type GitLabUser = { id: number; username: string; - name: string; email: string; - active: boolean; + name: string; + state: string; web_url: string; avatar_url: string; groups?: GitLabGroup[]; diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts index df480de3cb..a66efc1369 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts @@ -206,13 +206,13 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { } for await (const user of users) { - if (!this.config.userPattern.test(user.email ?? '')) { + if (!this.config.userPattern.test(user.email ?? user.username ?? '')) { continue; } res.scanned++; - if (user.active) { + if (user.state !== 'active') { continue; } @@ -314,7 +314,6 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { }, spec: { profile: { - email: user.email, displayName: user.name, picture: user.avatar_url, }, @@ -322,6 +321,18 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { }, }; + if (user.email) { + if (!entity.spec) { + entity.spec = {}; + } + + if (!entity.spec.profile) { + entity.spec.profile = {}; + } + + entity.spec.profile.email = user.email; + } + if (user.groups) { for (const group of user.groups) { if (!entity.spec.memberOf) { From 3dad2bfdffc57d5ee033086cf44b413846e90d34 Mon Sep 17 00:00:00 2001 From: Giorgos Papaefthimiou Date: Wed, 25 Jan 2023 16:06:12 +0200 Subject: [PATCH 048/156] Update org.md `luxon` dependency is not used Signed-off-by: Giorgos Papaefthimiou --- docs/integrations/ldap/org.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/integrations/ldap/org.md b/docs/integrations/ldap/org.md index dbd3f4ff43..f8b9a18c55 100644 --- a/docs/integrations/ldap/org.md +++ b/docs/integrations/ldap/org.md @@ -37,7 +37,6 @@ schedule it: ```diff // packages/backend/src/plugins/catalog.ts -+import { Duration } from 'luxon'; +import { LdapOrgEntityProvider } from '@backstage/plugin-catalog-backend-module-ldap'; export default async function createPlugin( From 83b719678c976144bb8937048301e7c555d9ab09 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 25 Jan 2023 16:04:45 +0100 Subject: [PATCH 049/156] docs/backend-system: service architecture Signed-off-by: Patrik Oldsberg --- .../architecture/03-services.md | 278 +++++++++++++----- 1 file changed, 201 insertions(+), 77 deletions(-) diff --git a/docs/backend-system/architecture/03-services.md b/docs/backend-system/architecture/03-services.md index 27fea27db9..21fb085c1d 100644 --- a/docs/backend-system/architecture/03-services.md +++ b/docs/backend-system/architecture/03-services.md @@ -1,103 +1,227 @@ --- id: services -title: Backend Service APIs -sidebar_label: Service APIs +title: Backend Services +sidebar_label: Services # prettier-ignore -description: Service APIs for backend plugins +description: Services for backend plugins --- -## Backend Services +Backend services provide shared functionality available to all backend plugins and modules. They are made available through services references that embed a type that represents the service interface, similar to how [Utility APIs](../../api/utility-apis.md) work in the Backstage frontend system. To use a service in your plugin or module you request an implementation of that service using the service reference. -The default backend provides several [core services](https://github.com/backstage/backstage/blob/master/packages/backend-plugin-api/src/services/definitions/coreServices.ts) out of the box which includes access to configuration, logging, databases and more. -Service dependencies are declared using their `ServiceRef`s in the `deps` section of the plugin or module, and the implementations are then forwarded to the `init` method of the plugin or module. +The system surrounding services exists to provide a level of indirection between the service interfaces and their implementation. It is an implementation of dependency injection, where each backend instance is the dependency injection container. The implementation for each service is provided by a service factory, which encapsulates the logic for how each service instance is created. -### Service References +## Service Interfaces -A `ServiceRef` is a named reference to an interface which are later used to resolve the concrete service implementation. Conceptually this is very similar to `ApiRef`s in the frontend. -Services is what provides common utilities that previously resided in the `PluginEnvironment` such as Config, Logging and Database. +Service interfaces can be any TypeScript type, but it is best make it an object interface with a number of methods. General guidelines for interface design apply, keep them simple and lean, with few but powerful methods. Take care to avoid locking down the ways in which individual methods can evolve. Often you want to stick to a method with an options object as its only parameter, and return a result object. If there is any reason on uncertainty whether the method should be async or not, always make it async. For example, a minimal interface should often use the following pattern: -On startup the backend will make sure that the services are initialized before being passed to the plugin/module that depend on them. -ServiceRefs contain a scope which is used to determine if the serviceFactory creating the service will create a new instance scoped per plugin/module or if it will be shared. `plugin` scoped services will be created once per plugin/module and `root` scoped services will be created once per backend instance. +```ts +export interface FooService { + foo(options: FooOptions): Promise; +} +``` -#### Defining a Service +## Service References + +Once you have defined a service interface, you need to create a service reference using the `createServiceRef` function. This will create a `ServiceRef` instance, which is a reference that you export in order to allow users to interact with your service. Conceptually this is very similar to `ApiRef`s in the frontend system. For example: + +```ts +import { createServiceRef } from '@backstage/backend-plugin-api'; + +export interface FooService { + foo(options: FooOptions): Promise; +} + +export const fooServiceRef = createServiceRef({ + id: 'example.foo', // the owner of this service is in this case the 'example' plugin +}); +``` + +The `fooServiceRef` that we create above should be exported, and can then be used to declare a dependency on the `FooService` interface and receive and implementation of it at runtime. + +When creating a service reference you need to give it an ID. This ID needs to be globally unique, and should generally be of the format `'.'`. For more naming patters surrounding services, see the [naming patterns](./07-naming-patterns.md#services) page. + +A note on naming: the frontend and backend systems intentionally use the separate names "APIs" and "Services" for concepts that are quite similar. This is to avoid confusion between the two, both in documentation and discussion, but also in code. While the two systems are quite similar, they are not identical, and they can't be used interchangeably. + +## Service Factories + +In order to be able to depend on a service interface through a service reference, we of course also need to have some way of creating the concrete implementation of it. To encapsulate that logic we use service factories, which define both how service instances are created, as well as what other services they depends on for their implementation. + +Service factories can come from many different sources. There are built-in service factories, external ones that you can import from other packages, and you can also create your own. Specific service factories are installed within each backend instance, which acts as the dependency injection container. For any given backend instance there can only be a single designated service factory for each service. + +To define a service factory, we use `createServiceFactory`: + +```ts +import { createServiceFactory } from '@backstage/backend-plugin-api'; + +class DefaultFooService implements FooService { + async foo(options: FooOptions): Promise { + // ... + } +} + +export const fooFactory = createServiceFactory({ + service: fooServiceRef, + deps: { bar: barServiceRef }, + factory({ bar }) { + return new DefaultFooService(bar); + }, +}); +``` + +To create a service factory we need to provide a reference to the `service` for which the factory will create instances, a `deps` object which lists the other services that the factory depends on, and a `factory` function which will be called to create the service instance. The backend system will call the `factory` function with an object that contains the service instances for each of the dependencies listed in the `deps` object. If a service implementation does not depend on any other services, the `deps` are left as an empty object (`{}`). The `factory` function must return a value that implements the service interface. + +If you need the creation of the service instance to be asynchronous, you can make the `factory` function async. For example: + +```ts +export const fooFactory = createServiceFactory({ + service: fooServiceRef, + deps: {}, + async factory() { + const foo = new DefaultFooService(); + await foo.init(); + return foo; + }, +}); +``` + +Note that circular dependencies among service factories are not allowed. This is verified at runtime, and your backend instance will refuse to start up it detects any conflicts. Likewise, the backend will also fail to start up if a service factory depends on a service that is not provided by any registered service factory. + +## Service Factory Options + +To install a service factory in a backend instance, we pass it in through the `services` option to `createBackend`: + +```ts +const backend = createBackend({ + services: [fooFactory()], +}); +``` + +Note that we call `fooFactory` to create the service factory instance. This is because `createServiceFactory` always returns a factory function that creates the actual service factory. This is done to always allow for options to be added to the service factory in the future, without breaking existing code. To add options to your service factory, you wrap the object passed to `createServiceFactory` in a callback that accepts the desired options. For example: + +```ts +export interface FooFactoryOptions { + mode: 'eager' | 'lazy'; +} + +export const fooFactory = createServiceFactory( + (options?: FooFactoryOptions) => ({ + service: fooServiceRef, + deps: { bar: barServiceRef }, + factory({ bar }) { + return new DefaultFooService(bar, options?.mode); + }, + }), +); +``` + +This lets us use the options to customize the factory implementation in any way we want. From the outside the service factory looks just like before, except that we're now also able to pass options when installing the factory: + +```ts +const backend = createBackend({ + services: [fooFactory({ mode: 'eager' })], +}); +``` + +## Core Services + +The backend system provides a number of core service definitions that both help implement the main functionality of the backend, but also provide a set of utilities for common concerns, such as logging, database access, job scheduling, and so on. These core services will always be present in a backend instance created with `createBackend`, and they can all be overridden with custom implementations if needed. + +The service references for all core services are exported via their own `coreServices` object, available from the `@backstage/backend-plugin-api` package. For example, the logging service is accessible via `coreServices.logger`. + +You can read more about what core services there are and how to use them in the [core services](../core-services/01-index.md) section. + +## Service Scope + +By default services are scoped to individual plugins, meaning that separate instances of the service will be created for each plugin. For example, in our `fooFactory` above, a separate instance of `DefaultFooService` will be created for every plugin that depends on the service. This both makes it possible to tailor the service implementations for the individual plugins, and also ensures some level of separation between plugins. + +The service scope is defined during the call to `createServiceRef`, with plugin scope being the default. Our above definition of the `fooServiceRef` is therefore equivalent to the following: + +```ts +export const fooServiceRef = createServiceRef({ + scope: 'plugin', + id: 'example.foo', +}); +``` + +There are only two possible scopes for services, `'plugin'` and `'root'`. + +## Root Scoped Services + +If a service is defined as a root scoped service, the implementation created by the factory will be shared across all plugins and services. One other differentiating factory for root scoped services is that they are always initialized, regardless of whether any plugin depend on them or not. This makes them suitable for implementing backend-wide concerns that are not specific to any individual plugin. + +There is a limitation in the usage of root scoped services, which is that their implementation can only depend on other root scoped services. Plugin scoped services on the other hand can depend on both root and plugin scoped services. Because of this limitation, one of the main reasons to define a root scoped services is to make it possible for other root scoped services to depend on it. + +Because of these limitations and particular use-cases for root scoped services, they tend to be more rare than plugin scoped services. In general, you should prefer defining a service as plugin scoped, unless you are implementing either of the two mentioned use-cases. + +Some services come in pairs of a plugin and a root scoped service definition. For example, the `rootLogger` service is a root scoped service, while the `logger` service is a plugin scoped service. The `rootLogger` service houses the main logging implementation, while the `logger` service simply builds upon the `rootLogger` to add plugin specific labels. This division exists so that other root scoped services also have access to a logging service, but it is always preferable if the split can be avoided. If you do end up implementing this pattern, the root scoped service should be prefixed with `root`, this is to encourage use of the plugin scoped service instead. + +## Plugin Metadata + +Plugins scoped services have access to a plugin metadata service, which is a special service provided by the backend system that is not possible to override. The plugin metadata service provides information about the plugin that a service instance is being created for. It is itself a plugin scoped service, and can be depended on like any other service through the `coreServices.pluginMetadata` reference. + +The plugin metadata service is the base for all plugin specific customizations for services. For example, the default implementation of the plugin scoped logger service uses the plugin metadata service to attach the plugin ID as a field in all log messages: + +```ts +export const loggerFactory = createServiceFactory({ + service: coreServices.logger, + deps: { + rootLogger: coreServices.rootLogger, + pluginMetadata: coreServices.pluginMetadata, + }, + factory({ rootLogger, pluginMetadata }) { + return rootLogger.child({ plugin: pluginMetadata.getId() }); + }, +}); +``` + +## Root Context for Service Factories + +Some service may benefit from having a context that is shared across all instances of a service. This of course only applies to plugin scoped services, as root scoped services only ever have a single instance. The root context could for example be used for sharing a common connection pool for database access, generated secrets for development, or any other kind of shared facility. Note that you should not use this to share state between plugins in production, as that would be a violation of the [plugin isolation rule](./04-plugins.md#rules-of-plugins). + +The root context is defined as part of the service factory by passing the `createRootContext` option: + +```ts +export const fooFactory = createServiceFactory({ + service: fooServiceRef, + deps: { rootLogger: coreServices.rootLogger, bar: barServiceRef }, + createRootContext({ rootLogger }) { + return new FooRootContext(rootLogger); + } + factory({ bar }, ctx) { + return ctx.forPlugin(bar) + }, +}); +``` + +Whatever value is returned by the `createRootContext` function will shared and passed as the second argument to each invocation of the `factory` function. That way you can create a shared context that is used in the creation of each plugin instance. Unlike the `factory` function, the `createRootContext` function will only receive root scoped services as its dependencies, but just like the `factory` function, it can also be `async`. + +## Default Service Factories + +There are a lot of services that are installed in any standard Backstage backend instance by default. You can expect on these services to always exist, and do not need to take any additional steps to make them available. This is not necessarily true for services that you import from external packages, as the user of your plugin or module might not have installed a factory for that service in their backend. In order to avoid having to ask integrators of your plugin to install a service factory for a service that you depend on, it is possible to define a default factory for a service. + +Default service factories are defined as part of the service reference by passing the `defaultFactory` option to `createServiceRef`: ```ts import { createServiceFactory, - coreServices, + createServiceRef, } from '@backstage/backend-plugin-api'; -import { ExampleImpl } from './ExampleImpl'; -export interface ExampleApi { - doSomething(): Promise; -} - -export const exampleServiceRef = createServiceRef({ - id: 'example', - scope: 'plugin', // can be 'root' or 'plugin' - - // The defaultFactory is optional to implement but it will be used if no - // other factory is provided to the backend. This allows for the backend - // to provide a default implementation of the service without having to wire - // it beforehand. +export const fooServiceRef = createServiceRef({ + id: 'example.foo', defaultFactory: async service => createServiceFactory({ service, - deps: { - logger: coreServices.logger, - plugin: coreServices.pluginMetadata, - }, - // This root context method is only available for plugin scoped services. - // It's only called once per backend instance. - // Logger is available at the root context level as it's also a root - // scoped service. - createRootContext({ logger }) { - return new ExampleImplFactory({ logger }); - }, - // Plugin is available as it's a plugin scoped service and will be - // created once per plugin. The logger can be had here too if needed. - // Both this anc the root context can also be async. - factory({ logger, plugin }, rootContext) { - // This block will be executed once for every plugin that depends on - // this service - logger.info('Initializing example service plugin instance'); - return rootContext.forPlugin(plugin.getId()); + deps: {}, + factory() { + return new DefaultFooService(); }, }), }); ``` -### Overriding Services +Note that we don't use the `fooServiceRef` when creating our service factory, but instead use the `service` parameter in the default factory callback. This is because attempting to use `fooServiceRef` directly would result in a circular reference. -In this example we replace the default root logger service implementation with a custom one that streams logs to GCP. The `rootLoggerServiceRef` has a `'root'` scope, meaning there are no plugin-specific instances of this service. +If a service defines a default factory, that factory will be used if there is no explicit factory registered in the backend for that service. This allows users of your service to directly import and use a service, without worrying about whether it is installed or not. It is recommended to always define a default factory for any service that you are exporting for use in other plugins or modules. -```ts -import { - createServiceFactory, - rootLoggerServiceRef, - LoggerService, -} from '@backstage/backend-plugin-api'; - -// This custom implementation would typically live separately from -// the backend setup code, either nearby such as in -// packages/backend/src/services/logger/GoogleCloudLogger.ts -// Or you can let it live in its own library package. -class GoogleCloudLogger implements LoggerService { - static factory = createServiceFactory({ - service: rootLoggerServiceRef, - deps: {}, - factory() { - return new GoogleCloudLogger(); - }, - }); - // custom implementation here ... -} - -// packages/backend/src/index.ts -const backend = createBackend({ - services: [ - // supplies additional or replacement services to the backend - GoogleCloudLogger.factory(), - ], -}); -``` +When defining a default factory for a service, it is possible for it to end up with duplicate implementations at runtime. This applies both to any shared root context in your factory, as well as plugin specific instances of your service. This is because package dependency version ranges may not line up perfectly, causing duplicate installations of the same package. This can happen both for two different plugins using the same service, but also across a plugin and its modules. If your service would break in this scenario, you should not define a default factory for it, but instead require that users of your service explicitly install a factory in their backend instance. From b40661378d5318c61748423ce17df475384e75aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 25 Jan 2023 16:47:14 +0100 Subject: [PATCH 050/156] add a test for the core scheduler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- packages/backend-app-api/package.json | 1 + .../scheduler/schedulerFactory.test.ts | 68 +++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 packages/backend-app-api/src/services/implementations/scheduler/schedulerFactory.test.ts diff --git a/packages/backend-app-api/package.json b/packages/backend-app-api/package.json index f7c574d7b6..ef34fbdb25 100644 --- a/packages/backend-app-api/package.json +++ b/packages/backend-app-api/package.json @@ -64,6 +64,7 @@ "winston-transport": "^4.5.0" }, "devDependencies": { + "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "@types/compression": "^1.7.0", "@types/fs-extra": "^9.0.3", diff --git a/packages/backend-app-api/src/services/implementations/scheduler/schedulerFactory.test.ts b/packages/backend-app-api/src/services/implementations/scheduler/schedulerFactory.test.ts new file mode 100644 index 0000000000..1aaf4ec71d --- /dev/null +++ b/packages/backend-app-api/src/services/implementations/scheduler/schedulerFactory.test.ts @@ -0,0 +1,68 @@ +/* + * Copyright 2023 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 { + coreServices, + createBackendPlugin, +} from '@backstage/backend-plugin-api'; +import { startTestBackend } from '@backstage/backend-test-utils'; +import { schedulerFactory } from './schedulerFactory'; + +describe('schedulerFactory', () => { + it('creates sidecar database features', async () => { + expect.assertions(3); + + const subject = schedulerFactory(); + + const plugin = createBackendPlugin({ + id: 'example', + register(reg) { + reg.registerInit({ + deps: { + scheduler: subject.service, + database: coreServices.database, + }, + init: async ({ scheduler, database }) => { + await scheduler.scheduleTask({ + id: 'task1', + timeout: { seconds: 1 }, + frequency: { seconds: 1 }, + fn: async () => {}, + }); + + const client = await database.getClient(); + await expect( + client.from('backstage_backend_tasks__tasks').count(), + ).resolves.toEqual([{ 'count(*)': 1 }]); + await expect( + client.from('backstage_backend_tasks__knex_migrations').count(), + ).resolves.toEqual([{ 'count(*)': expect.any(Number) }]); + await expect( + client + .from('backstage_backend_tasks__knex_migrations_lock') + .count(), + ).resolves.toEqual([{ 'count(*)': expect.any(Number) }]); + }, + }); + }, + }); + + await startTestBackend({ + features: [plugin()], + services: [subject], + }); + }); +}); From 8c2468e56921c8218210b7b5efc4b0dad72b8745 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 25 Jan 2023 16:56:14 +0100 Subject: [PATCH 051/156] yarn lock too MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- yarn.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/yarn.lock b/yarn.lock index ede8ab22a2..a6c98b23bf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3387,6 +3387,7 @@ __metadata: "@backstage/backend-common": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-tasks": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/cli-common": "workspace:^" "@backstage/config": "workspace:^" From 476d5a83c77572ef4ffc35938769c9e837bb2319 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 25 Jan 2023 17:36:24 +0100 Subject: [PATCH 052/156] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Fredrik Adelöw Co-authored-by: Phil Kuang Signed-off-by: Patrik Oldsberg --- .../backend-system/architecture/03-services.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/backend-system/architecture/03-services.md b/docs/backend-system/architecture/03-services.md index 21fb085c1d..96b82d7e95 100644 --- a/docs/backend-system/architecture/03-services.md +++ b/docs/backend-system/architecture/03-services.md @@ -6,13 +6,13 @@ sidebar_label: Services description: Services for backend plugins --- -Backend services provide shared functionality available to all backend plugins and modules. They are made available through services references that embed a type that represents the service interface, similar to how [Utility APIs](../../api/utility-apis.md) work in the Backstage frontend system. To use a service in your plugin or module you request an implementation of that service using the service reference. +Backend services provide shared functionality available to all backend plugins and modules. They are made available through service references that embed a type that represents the service interface, similar to how [Utility APIs](../../api/utility-apis.md) work in the Backstage frontend system. To use a service in your plugin or module you request an implementation of that service using the service reference. The system surrounding services exists to provide a level of indirection between the service interfaces and their implementation. It is an implementation of dependency injection, where each backend instance is the dependency injection container. The implementation for each service is provided by a service factory, which encapsulates the logic for how each service instance is created. ## Service Interfaces -Service interfaces can be any TypeScript type, but it is best make it an object interface with a number of methods. General guidelines for interface design apply, keep them simple and lean, with few but powerful methods. Take care to avoid locking down the ways in which individual methods can evolve. Often you want to stick to a method with an options object as its only parameter, and return a result object. If there is any reason on uncertainty whether the method should be async or not, always make it async. For example, a minimal interface should often use the following pattern: +Service interfaces can be any TypeScript type, but it is best to make it an object interface with a number of methods. General guidelines for interface design apply: keep them simple and lean, with few but powerful methods. Take care to avoid locking down the ways in which individual methods can evolve. Often you want to stick to a method with an options object as its only parameter, and return a result object. If there is any reason for uncertainty about whether the method should be async or not, always make it async. For example, a minimal interface should often use the following pattern: ```ts export interface FooService { @@ -36,7 +36,7 @@ export const fooServiceRef = createServiceRef({ }); ``` -The `fooServiceRef` that we create above should be exported, and can then be used to declare a dependency on the `FooService` interface and receive and implementation of it at runtime. +The `fooServiceRef` that we create above should be exported, and can then be used to declare a dependency on the `FooService` interface and receive an implementation of it at runtime. When creating a service reference you need to give it an ID. This ID needs to be globally unique, and should generally be of the format `'.'`. For more naming patters surrounding services, see the [naming patterns](./07-naming-patterns.md#services) page. @@ -44,7 +44,7 @@ A note on naming: the frontend and backend systems intentionally use the separat ## Service Factories -In order to be able to depend on a service interface through a service reference, we of course also need to have some way of creating the concrete implementation of it. To encapsulate that logic we use service factories, which define both how service instances are created, as well as what other services they depends on for their implementation. +In order to be able to depend on a service interface through a service reference, we of course also need to have some way of creating the concrete implementation of it. To encapsulate that logic we use service factories, which define both how service instances are created, as well as what other services they depend on for their implementation. Service factories can come from many different sources. There are built-in service factories, external ones that you can import from other packages, and you can also create your own. Specific service factories are installed within each backend instance, which acts as the dependency injection container. For any given backend instance there can only be a single designated service factory for each service. @@ -84,7 +84,7 @@ export const fooFactory = createServiceFactory({ }); ``` -Note that circular dependencies among service factories are not allowed. This is verified at runtime, and your backend instance will refuse to start up it detects any conflicts. Likewise, the backend will also fail to start up if a service factory depends on a service that is not provided by any registered service factory. +Note that circular dependencies among service factories are not allowed. This is verified at runtime, and your backend instance will refuse to start up if it detects any conflicts. Likewise, the backend will also fail to start up if a service factory depends on a service that is not provided by any registered service factory. ## Service Factory Options @@ -147,7 +147,7 @@ There are only two possible scopes for services, `'plugin'` and `'root'`. ## Root Scoped Services -If a service is defined as a root scoped service, the implementation created by the factory will be shared across all plugins and services. One other differentiating factory for root scoped services is that they are always initialized, regardless of whether any plugin depend on them or not. This makes them suitable for implementing backend-wide concerns that are not specific to any individual plugin. +If a service is defined as a root scoped service, the implementation created by the factory will be shared across all plugins and services. One other differentiating factory for root scoped services is that they are always initialized, regardless of whether any plugins depend on them or not. This makes them suitable for implementing backend-wide concerns that are not specific to any individual plugin. There is a limitation in the usage of root scoped services, which is that their implementation can only depend on other root scoped services. Plugin scoped services on the other hand can depend on both root and plugin scoped services. Because of this limitation, one of the main reasons to define a root scoped services is to make it possible for other root scoped services to depend on it. @@ -157,7 +157,7 @@ Some services come in pairs of a plugin and a root scoped service definition. Fo ## Plugin Metadata -Plugins scoped services have access to a plugin metadata service, which is a special service provided by the backend system that is not possible to override. The plugin metadata service provides information about the plugin that a service instance is being created for. It is itself a plugin scoped service, and can be depended on like any other service through the `coreServices.pluginMetadata` reference. +Plugin scoped services have access to a plugin metadata service, which is a special service provided by the backend system that is not possible to override. The plugin metadata service provides information about the plugin that a service instance is being created for. It is itself a plugin scoped service, and can be depended on like any other service through the `coreServices.pluginMetadata` reference. The plugin metadata service is the base for all plugin specific customizations for services. For example, the default implementation of the plugin scoped logger service uses the plugin metadata service to attach the plugin ID as a field in all log messages: @@ -176,7 +176,7 @@ export const loggerFactory = createServiceFactory({ ## Root Context for Service Factories -Some service may benefit from having a context that is shared across all instances of a service. This of course only applies to plugin scoped services, as root scoped services only ever have a single instance. The root context could for example be used for sharing a common connection pool for database access, generated secrets for development, or any other kind of shared facility. Note that you should not use this to share state between plugins in production, as that would be a violation of the [plugin isolation rule](./04-plugins.md#rules-of-plugins). +Some services may benefit from having a context that is shared across all instances of a service. This of course only applies to plugin scoped services, as root scoped services only ever have a single instance. The root context could for example be used for sharing a common connection pool for database access, generated secrets for development, or any other kind of shared facility. Note that you should not use this to share state between plugins in production, as that would be a violation of the [plugin isolation rule](./04-plugins.md#rules-of-plugins). The root context is defined as part of the service factory by passing the `createRootContext` option: @@ -197,7 +197,7 @@ Whatever value is returned by the `createRootContext` function will shared and p ## Default Service Factories -There are a lot of services that are installed in any standard Backstage backend instance by default. You can expect on these services to always exist, and do not need to take any additional steps to make them available. This is not necessarily true for services that you import from external packages, as the user of your plugin or module might not have installed a factory for that service in their backend. In order to avoid having to ask integrators of your plugin to install a service factory for a service that you depend on, it is possible to define a default factory for a service. +There are a lot of services that are installed in any standard Backstage backend instance by default. You can expect these services to always exist, and do not need to take any additional steps to make them available. This is not necessarily true for services that you import from external packages, as the user of your plugin or module might not have installed a factory for that service in their backend. In order to avoid having to ask integrators of your plugin to install a service factory for a service that you depend on, it is possible to define a default factory for a service. Default service factories are defined as part of the service reference by passing the `defaultFactory` option to `createServiceRef`: From e448b1a1e9580d302270e2902cfbc4dfd62a5a87 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Jan 2023 16:40:51 +0000 Subject: [PATCH 053/156] fix(deps): update dependency @apidevtools/json-schema-ref-parser to v9.1.2 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index ede8ab22a2..8b63950b77 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22,14 +22,14 @@ __metadata: linkType: hard "@apidevtools/json-schema-ref-parser@npm:^9.0.6": - version: 9.1.1 - resolution: "@apidevtools/json-schema-ref-parser@npm:9.1.1" + version: 9.1.2 + resolution: "@apidevtools/json-schema-ref-parser@npm:9.1.2" dependencies: "@jsdevtools/ono": ^7.1.3 "@types/json-schema": ^7.0.6 call-me-maybe: ^1.0.1 js-yaml: ^4.1.0 - checksum: f8fb98fec4d510ef7a135256745b7321fbc1547a83cdeb458b143d46f3d5fae1450673a9f485f77051391d052e6ec9d6ec6c0d3091d7dfe4b6ac5d85ee77e10d + checksum: 5bd6885db0fd6633879bb4638b7a3aead6b061cb6422083c6be505ee6873be54e3376380df164c73edd8901d4145a9bfe9bc0b008a568fd8b0626b1df96fae8f languageName: node linkType: hard From aeac2d531f4094a326865efdae6433dd710994a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 25 Jan 2023 18:07:02 +0100 Subject: [PATCH 054/156] lower to patch level MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/sharp-lobsters-build.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/sharp-lobsters-build.md b/.changeset/sharp-lobsters-build.md index f9d317a1f6..d00333581b 100644 --- a/.changeset/sharp-lobsters-build.md +++ b/.changeset/sharp-lobsters-build.md @@ -1,5 +1,5 @@ --- -'@backstage/backend-plugin-api': minor +'@backstage/backend-plugin-api': patch --- The `register` methods passed to `createBackendPlugin` and `createBackendModule` From 15053c2a002c35802ca6d586aa9bd09e27303b91 Mon Sep 17 00:00:00 2001 From: Dmytro Dovbii Date: Wed, 25 Jan 2023 19:48:40 +0200 Subject: [PATCH 055/156] Add torque plugin Signed-off-by: Dmytro Dovbii --- microsite/data/plugins/torque.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 microsite/data/plugins/torque.yaml diff --git a/microsite/data/plugins/torque.yaml b/microsite/data/plugins/torque.yaml new file mode 100644 index 0000000000..1480c3bad9 --- /dev/null +++ b/microsite/data/plugins/torque.yaml @@ -0,0 +1,12 @@ +--- +title: Torque +author: Quali +authorUrl: 'https://www.qtorque.io/' +category: Orchestration +description: | + Deploy the environments you need to keep building, testing and delivering incredible code. + Plugin includes an Entity ComponentCard, Backend API route and scaffolder actions. +documentation: https://github.com/QualiTorque/torque-backstage-plugin/tree/main/packages/torque#readme +iconUrl: https://user-images.githubusercontent.com/8643801/214640977-751bc338-6b77-40a0-a897-cba41b6f006a.png +npmPackageName: '@qtorque/backstage-plugin-torque' +addedDate: '2023-01-25' From 06605d38f082b944103fe0dde50ce0cd9368dc5a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Jan 2023 17:56:27 +0000 Subject: [PATCH 056/156] fix(deps): update dependency openid-client to v5.3.2 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index e8a5742e8c..f8dcb7bab5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -30652,14 +30652,14 @@ __metadata: linkType: hard "openid-client@npm:^5.2.1, openid-client@npm:^5.3.0": - version: 5.3.1 - resolution: "openid-client@npm:5.3.1" + version: 5.3.2 + resolution: "openid-client@npm:5.3.2" dependencies: jose: ^4.10.0 lru-cache: ^6.0.0 object-hash: ^2.0.1 oidc-token-hash: ^5.0.1 - checksum: e8993cfe6ac55942fb7a5fc4db8ab88ab36bbcf2a6519993a9a2e288bfc248fcfb07804b6785eb7852a9eea0eec27f80ae57a29193c0b835f31f611b11b9bda1 + checksum: 59dc58d5b5cb795f3500f2d9d7ce604f6fb4c00623b16660fdf635d2789c3b2bb32e328ff10c918f9fa4e7fb269c768658d00769761d301be2d96d6150e07051 languageName: node linkType: hard From 434dc117a14ba30535eb79674b863a1ef4c20c3d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Jan 2023 17:56:59 +0000 Subject: [PATCH 057/156] fix(deps): update dependency react-markdown to v8.0.5 Signed-off-by: Renovate Bot --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index e8a5742e8c..1c50046ad0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -33230,8 +33230,8 @@ __metadata: linkType: hard "react-markdown@npm:^8.0.0": - version: 8.0.4 - resolution: "react-markdown@npm:8.0.4" + version: 8.0.5 + resolution: "react-markdown@npm:8.0.5" dependencies: "@types/hast": ^2.0.0 "@types/prop-types": ^15.0.0 @@ -33244,14 +33244,14 @@ __metadata: remark-parse: ^10.0.0 remark-rehype: ^10.0.0 space-separated-tokens: ^2.0.0 - style-to-object: ^0.3.0 + style-to-object: ^0.4.0 unified: ^10.0.0 unist-util-visit: ^4.0.0 vfile: ^5.0.0 peerDependencies: "@types/react": ">=16" react: ">=16" - checksum: 9feec3734694ef05f450779a1adac10dbb768b8f3adbf4c81f59ca3cea8fd2f6a578fa4c488183597a7418f972715e5d84705cc76f278b55c86d622e82561bf8 + checksum: 9d11b7aba16216d590e56b4744e05d2925141bfb0f5885b3d9400ccf006cd24b79ce3b3d20af8a083a01324215b58fa4c5979e44f69d54123ff1dd5dacb0dc89 languageName: node linkType: hard @@ -36207,12 +36207,12 @@ __metadata: languageName: node linkType: hard -"style-to-object@npm:^0.3.0": - version: 0.3.0 - resolution: "style-to-object@npm:0.3.0" +"style-to-object@npm:^0.4.0": + version: 0.4.1 + resolution: "style-to-object@npm:0.4.1" dependencies: inline-style-parser: 0.1.1 - checksum: 4d7084015207f2a606dfc10c29cb5ba569f2fe8005551df7396110dd694d6ff650f2debafa95bd5d147dfb4ca50f57868e2a7f91bf5d11ef734fe7ccbd7abf59 + checksum: 2ea213e98eed21764ae1d1dc9359231a9f2d480d6ba55344c4c15eb275f0809f1845786e66d4caf62414a5cc8f112ce9425a58d251c77224060373e0db48f8c2 languageName: node linkType: hard From 66cf22fdc41e915dd36503b8b7d7332e27d2dfd8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Jan 2023 18:53:29 +0000 Subject: [PATCH 058/156] chore(deps): update dependency esbuild to ^0.17.0 Signed-off-by: Renovate Bot --- .changeset/renovate-0c3644c.md | 6 + packages/cli/package.json | 2 +- plugins/scaffolder-backend/package.json | 2 +- yarn.lock | 188 ++++++++++++------------ 4 files changed, 102 insertions(+), 96 deletions(-) create mode 100644 .changeset/renovate-0c3644c.md diff --git a/.changeset/renovate-0c3644c.md b/.changeset/renovate-0c3644c.md new file mode 100644 index 0000000000..c32438b452 --- /dev/null +++ b/.changeset/renovate-0c3644c.md @@ -0,0 +1,6 @@ +--- +'@backstage/cli': patch +'@backstage/plugin-scaffolder-backend': patch +--- + +Updated dependency `esbuild` to `^0.17.0`. diff --git a/packages/cli/package.json b/packages/cli/package.json index 486a64dcdb..59bb880ffb 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -67,7 +67,7 @@ "commander": "^9.1.0", "css-loader": "^6.5.1", "diff": "^5.0.0", - "esbuild": "^0.16.0", + "esbuild": "^0.17.0", "esbuild-loader": "^2.18.0", "eslint": "^8.6.0", "eslint-config-prettier": "^8.3.0", diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index ad5edee668..6098fdc537 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -92,7 +92,7 @@ "@types/nunjucks": "^3.1.4", "@types/supertest": "^2.0.8", "@types/zen-observable": "^0.8.0", - "esbuild": "^0.16.0", + "esbuild": "^0.17.0", "jest-when": "^3.1.0", "mock-fs": "^5.1.0", "msw": "^0.49.0", diff --git a/yarn.lock b/yarn.lock index bcc1177fdc..fcfa45ff1a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3721,7 +3721,7 @@ __metadata: css-loader: ^6.5.1 del: ^6.0.0 diff: ^5.0.0 - esbuild: ^0.16.0 + esbuild: ^0.17.0 esbuild-loader: ^2.18.0 eslint: ^8.6.0 eslint-config-prettier: ^8.3.0 @@ -7282,7 +7282,7 @@ __metadata: command-exists: ^1.2.9 compression: ^1.7.4 cors: ^2.8.5 - esbuild: ^0.16.0 + esbuild: ^0.17.0 express: ^4.17.1 express-promise-router: ^4.1.0 fs-extra: 10.1.0 @@ -9058,9 +9058,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/android-arm64@npm:0.16.16" +"@esbuild/android-arm64@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/android-arm64@npm:0.17.4" conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -9072,65 +9072,65 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/android-arm@npm:0.16.16" +"@esbuild/android-arm@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/android-arm@npm:0.17.4" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/android-x64@npm:0.16.16" +"@esbuild/android-x64@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/android-x64@npm:0.17.4" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/darwin-arm64@npm:0.16.16" +"@esbuild/darwin-arm64@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/darwin-arm64@npm:0.17.4" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/darwin-x64@npm:0.16.16" +"@esbuild/darwin-x64@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/darwin-x64@npm:0.17.4" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/freebsd-arm64@npm:0.16.16" +"@esbuild/freebsd-arm64@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/freebsd-arm64@npm:0.17.4" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/freebsd-x64@npm:0.16.16" +"@esbuild/freebsd-x64@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/freebsd-x64@npm:0.17.4" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-arm64@npm:0.16.16" +"@esbuild/linux-arm64@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/linux-arm64@npm:0.17.4" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-arm@npm:0.16.16" +"@esbuild/linux-arm@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/linux-arm@npm:0.17.4" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-ia32@npm:0.16.16" +"@esbuild/linux-ia32@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/linux-ia32@npm:0.17.4" conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -9142,86 +9142,86 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-loong64@npm:0.16.16" +"@esbuild/linux-loong64@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/linux-loong64@npm:0.17.4" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-mips64el@npm:0.16.16" +"@esbuild/linux-mips64el@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/linux-mips64el@npm:0.17.4" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-ppc64@npm:0.16.16" +"@esbuild/linux-ppc64@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/linux-ppc64@npm:0.17.4" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-riscv64@npm:0.16.16" +"@esbuild/linux-riscv64@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/linux-riscv64@npm:0.17.4" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-s390x@npm:0.16.16" +"@esbuild/linux-s390x@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/linux-s390x@npm:0.17.4" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-x64@npm:0.16.16" +"@esbuild/linux-x64@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/linux-x64@npm:0.17.4" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/netbsd-x64@npm:0.16.16" +"@esbuild/netbsd-x64@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/netbsd-x64@npm:0.17.4" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/openbsd-x64@npm:0.16.16" +"@esbuild/openbsd-x64@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/openbsd-x64@npm:0.17.4" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/sunos-x64@npm:0.16.16" +"@esbuild/sunos-x64@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/sunos-x64@npm:0.17.4" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/win32-arm64@npm:0.16.16" +"@esbuild/win32-arm64@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/win32-arm64@npm:0.17.4" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/win32-ia32@npm:0.16.16" +"@esbuild/win32-ia32@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/win32-ia32@npm:0.17.4" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/win32-x64@npm:0.16.16" +"@esbuild/win32-x64@npm:0.17.4": + version: 0.17.4 + resolution: "@esbuild/win32-x64@npm:0.17.4" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -21650,32 +21650,32 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.16.0": - version: 0.16.16 - resolution: "esbuild@npm:0.16.16" +"esbuild@npm:^0.17.0": + version: 0.17.4 + resolution: "esbuild@npm:0.17.4" dependencies: - "@esbuild/android-arm": 0.16.16 - "@esbuild/android-arm64": 0.16.16 - "@esbuild/android-x64": 0.16.16 - "@esbuild/darwin-arm64": 0.16.16 - "@esbuild/darwin-x64": 0.16.16 - "@esbuild/freebsd-arm64": 0.16.16 - "@esbuild/freebsd-x64": 0.16.16 - "@esbuild/linux-arm": 0.16.16 - "@esbuild/linux-arm64": 0.16.16 - "@esbuild/linux-ia32": 0.16.16 - "@esbuild/linux-loong64": 0.16.16 - "@esbuild/linux-mips64el": 0.16.16 - "@esbuild/linux-ppc64": 0.16.16 - "@esbuild/linux-riscv64": 0.16.16 - "@esbuild/linux-s390x": 0.16.16 - "@esbuild/linux-x64": 0.16.16 - "@esbuild/netbsd-x64": 0.16.16 - "@esbuild/openbsd-x64": 0.16.16 - "@esbuild/sunos-x64": 0.16.16 - "@esbuild/win32-arm64": 0.16.16 - "@esbuild/win32-ia32": 0.16.16 - "@esbuild/win32-x64": 0.16.16 + "@esbuild/android-arm": 0.17.4 + "@esbuild/android-arm64": 0.17.4 + "@esbuild/android-x64": 0.17.4 + "@esbuild/darwin-arm64": 0.17.4 + "@esbuild/darwin-x64": 0.17.4 + "@esbuild/freebsd-arm64": 0.17.4 + "@esbuild/freebsd-x64": 0.17.4 + "@esbuild/linux-arm": 0.17.4 + "@esbuild/linux-arm64": 0.17.4 + "@esbuild/linux-ia32": 0.17.4 + "@esbuild/linux-loong64": 0.17.4 + "@esbuild/linux-mips64el": 0.17.4 + "@esbuild/linux-ppc64": 0.17.4 + "@esbuild/linux-riscv64": 0.17.4 + "@esbuild/linux-s390x": 0.17.4 + "@esbuild/linux-x64": 0.17.4 + "@esbuild/netbsd-x64": 0.17.4 + "@esbuild/openbsd-x64": 0.17.4 + "@esbuild/sunos-x64": 0.17.4 + "@esbuild/win32-arm64": 0.17.4 + "@esbuild/win32-ia32": 0.17.4 + "@esbuild/win32-x64": 0.17.4 dependenciesMeta: "@esbuild/android-arm": optional: true @@ -21723,7 +21723,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: d3163ec01e017776df6b68e1825caa2323918f0d03eb92250bdcdff80410a2c0eb5b3807955db84d83b1b91cf24af9815a1d19efc2343c490be3e5d7b27a834f + checksum: caedb2161cde7280d21a905098c3155224a06c9198b883fac085d0ff39dfc2f6dea01c71037e1409d0ef43323af5b022c74af245a29dac36d10c5af57db258b3 languageName: node linkType: hard From 4024b374495a8e9ad216fbc93dd2411b63249719 Mon Sep 17 00:00:00 2001 From: "Fernando.Teixeira" Date: Wed, 25 Jan 2023 14:09:15 -0500 Subject: [PATCH 059/156] feat(tech-inights): adds getFactSchemas method to client Signed-off-by: Fernando.Teixeira --- .changeset/four-candles-add.md | 18 ++++++ .../src/service/fact/FactRetrieverRegistry.ts | 2 +- plugins/tech-insights-common/src/index.ts | 57 ++++++++++++++++++ plugins/tech-insights-node/src/facts.ts | 58 +------------------ plugins/tech-insights-node/src/persistence.ts | 2 +- .../tech-insights/src/api/TechInsightsApi.ts | 2 + .../src/api/TechInsightsClient.ts | 5 ++ 7 files changed, 85 insertions(+), 59 deletions(-) create mode 100644 .changeset/four-candles-add.md diff --git a/.changeset/four-candles-add.md b/.changeset/four-candles-add.md new file mode 100644 index 0000000000..bf465181b1 --- /dev/null +++ b/.changeset/four-candles-add.md @@ -0,0 +1,18 @@ +--- +'@backstage/plugin-tech-insights-backend': minor +'@backstage/plugin-tech-insights-common': minor +'@backstage/plugin-tech-insights-node': minor +'@backstage/plugin-tech-insights': minor +--- + +TechInsightsApi interface now has getFactSchemas() method. +TechInsightsClient now implements method getFactSchemas(). + +**BREAKING** FactSchema type moved from @backstage/plugin-tech-insights-node into @backstage/plugin-tech-insights-common + +These changes are **required** if you were importing this type directly. + +```diff +- import { FactSchema } from '@backstage/plugin-tech-insights-node'; ++ import { FactSchema } from '@backstage/plugin-tech-insights-common'; +``` diff --git a/plugins/tech-insights-backend/src/service/fact/FactRetrieverRegistry.ts b/plugins/tech-insights-backend/src/service/fact/FactRetrieverRegistry.ts index 62adbad8e3..8796f1511a 100644 --- a/plugins/tech-insights-backend/src/service/fact/FactRetrieverRegistry.ts +++ b/plugins/tech-insights-backend/src/service/fact/FactRetrieverRegistry.ts @@ -17,8 +17,8 @@ import { FactRetriever, FactRetrieverRegistration, - FactSchema, } from '@backstage/plugin-tech-insights-node'; +import { FactSchema } from '@backstage/plugin-tech-insights-common'; import { ConflictError, NotFoundError } from '@backstage/errors'; /** diff --git a/plugins/tech-insights-common/src/index.ts b/plugins/tech-insights-common/src/index.ts index 66af5c2f93..a74c1f16e9 100644 --- a/plugins/tech-insights-common/src/index.ts +++ b/plugins/tech-insights-common/src/index.ts @@ -134,3 +134,60 @@ export type BulkCheckResponse = Array<{ entity: string; results: CheckResult[]; }>; + +/** + * A record type to specify individual fact shapes + * + * Used as part of a schema to validate, identify and generically construct usage implementations + * of individual fact values in the system. + * + * @public + */ +export type FactSchema = { + /** + * Name of the fact + */ + [name: string]: { + /** + * Type of the individual fact value + * + * Numbers are split into integers and floating point values. + * `set` indicates a collection of values, `object` indicates JSON serializable value + */ + type: + | 'integer' + | 'float' + | 'string' + | 'boolean' + | 'datetime' + | 'set' + | 'object'; + + /** + * A description of this individual fact value + */ + description: string; + + /** + * Optional semver string to indicate when this specific fact definition was added to the schema + */ + since?: string; + + /** + * Metadata related to an individual fact. + * Can contain links, additional description texts and other actionable data. + * + * Currently loosely typed, but in the future when patterns emerge, key shapes can be defined + * + * examples: + * ``` + * \{ + * link: 'https://sonarqube.mycompany.com/fix-these-issues', + * suggestion: 'To affect this value, you can do x, y, z', + * minValue: 0 + * \} + * ``` + */ + metadata?: Record; + }; +}; diff --git a/plugins/tech-insights-node/src/facts.ts b/plugins/tech-insights-node/src/facts.ts index a4a0834970..3619f8b66f 100644 --- a/plugins/tech-insights-node/src/facts.ts +++ b/plugins/tech-insights-node/src/facts.ts @@ -20,6 +20,7 @@ import { PluginEndpointDiscovery, TokenManager, } from '@backstage/backend-common'; +import { FactSchema } from '@backstage/plugin-tech-insights-common'; import { Logger } from 'winston'; /** @@ -79,63 +80,6 @@ export type FlatTechInsightFact = TechInsightFact & { id: string; }; -/** - * A record type to specify individual fact shapes - * - * Used as part of a schema to validate, identify and generically construct usage implementations - * of individual fact values in the system. - * - * @public - */ -export type FactSchema = { - /** - * Name of the fact - */ - [name: string]: { - /** - * Type of the individual fact value - * - * Numbers are split into integers and floating point values. - * `set` indicates a collection of values, `object` indicates JSON serializable value - */ - type: - | 'integer' - | 'float' - | 'string' - | 'boolean' - | 'datetime' - | 'set' - | 'object'; - - /** - * A description of this individual fact value - */ - description: string; - - /** - * Optional semver string to indicate when this specific fact definition was added to the schema - */ - since?: string; - - /** - * Metadata related to an individual fact. - * Can contain links, additional description texts and other actionable data. - * - * Currently loosely typed, but in the future when patterns emerge, key shapes can be defined - * - * examples: - * ``` - * \{ - * link: 'https://sonarqube.mycompany.com/fix-these-issues', - * suggestion: 'To affect this value, you can do x, y, z', - * minValue: 0 - * \} - * ``` - */ - metadata?: Record; - }; -}; - /** * @public * diff --git a/plugins/tech-insights-node/src/persistence.ts b/plugins/tech-insights-node/src/persistence.ts index 31fda403a8..73abb6c5af 100644 --- a/plugins/tech-insights-node/src/persistence.ts +++ b/plugins/tech-insights-node/src/persistence.ts @@ -14,13 +14,13 @@ * limitations under the License. */ import { - FactSchema, TechInsightFact, FlatTechInsightFact, FactSchemaDefinition, FactLifecycle, } from './facts'; import { DateTime } from 'luxon'; +import { FactSchema } from '@backstage/plugin-tech-insights-common'; /** * TechInsights Database diff --git a/plugins/tech-insights/src/api/TechInsightsApi.ts b/plugins/tech-insights/src/api/TechInsightsApi.ts index 166f1d2782..bb915e06dd 100644 --- a/plugins/tech-insights/src/api/TechInsightsApi.ts +++ b/plugins/tech-insights/src/api/TechInsightsApi.ts @@ -18,6 +18,7 @@ import { createApiRef } from '@backstage/core-plugin-api'; import { CheckResult, BulkCheckResponse, + FactSchema, } from '@backstage/plugin-tech-insights-common'; import { Check, InsightFacts } from './types'; import { CheckResultRenderer } from '../components/CheckResultRenderer'; @@ -49,4 +50,5 @@ export interface TechInsightsApi { checks?: Check[], ): Promise; getFacts(entity: CompoundEntityRef, facts: string[]): Promise; + getFactSchemas(): Promise; } diff --git a/plugins/tech-insights/src/api/TechInsightsClient.ts b/plugins/tech-insights/src/api/TechInsightsClient.ts index 6e85769b34..a1a2e7ff77 100644 --- a/plugins/tech-insights/src/api/TechInsightsClient.ts +++ b/plugins/tech-insights/src/api/TechInsightsClient.ts @@ -18,6 +18,7 @@ import { TechInsightsApi } from './TechInsightsApi'; import { BulkCheckResponse, CheckResult, + FactSchema, } from '@backstage/plugin-tech-insights-common'; import { Check, InsightFacts } from './types'; import { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api'; @@ -69,6 +70,10 @@ export class TechInsightsClient implements TechInsightsApi { return this.api('/checks'); } + async getFactSchemas(): Promise { + return this.api('/fact-schemas'); + } + async runChecks( entityParams: CompoundEntityRef, checks?: string[], From f44199533a02b9e404c3079c4e0b167f96993afc Mon Sep 17 00:00:00 2001 From: "Fernando.Teixeira" Date: Wed, 25 Jan 2023 14:28:51 -0500 Subject: [PATCH 060/156] fix(tech-inisghts): fix reference to FactSchema type Signed-off-by: Fernando.Teixeira --- .../src/service/persistence/TechInsightsDatabase.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.ts b/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.ts index 7c2ba52717..c8f098a895 100644 --- a/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.ts +++ b/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.ts @@ -16,12 +16,12 @@ import { Knex } from 'knex'; import { FactLifecycle, - FactSchema, FactSchemaDefinition, FlatTechInsightFact, TechInsightFact, TechInsightsStore, } from '@backstage/plugin-tech-insights-node'; +import { FactSchema } from '@backstage/plugin-tech-insights-common'; import { rsort } from 'semver'; import { groupBy, omit } from 'lodash'; import { DateTime } from 'luxon'; From 9d59c101c8d836b1c1a22e695980e724a2c7266d Mon Sep 17 00:00:00 2001 From: "Fernando.Teixeira" Date: Wed, 25 Jan 2023 15:03:16 -0500 Subject: [PATCH 061/156] chore(api-report): update api report for tech-inisghts Signed-off-by: Fernando.Teixeira --- plugins/tech-insights-backend/api-report.md | 2 +- plugins/tech-insights-common/api-report.md | 17 +++++++++++++++++ plugins/tech-insights-node/api-report.md | 18 +----------------- plugins/tech-insights/api-report.md | 5 +++++ 4 files changed, 24 insertions(+), 18 deletions(-) diff --git a/plugins/tech-insights-backend/api-report.md b/plugins/tech-insights-backend/api-report.md index a757f0d67c..4b6e5b34dc 100644 --- a/plugins/tech-insights-backend/api-report.md +++ b/plugins/tech-insights-backend/api-report.md @@ -12,7 +12,7 @@ import { FactCheckerFactory } from '@backstage/plugin-tech-insights-node'; import { FactLifecycle } from '@backstage/plugin-tech-insights-node'; import { FactRetriever } from '@backstage/plugin-tech-insights-node'; import { FactRetrieverRegistration } from '@backstage/plugin-tech-insights-node'; -import { FactSchema } from '@backstage/plugin-tech-insights-node'; +import { FactSchema } from '@backstage/plugin-tech-insights-common'; import { HumanDuration } from '@backstage/types'; import { Logger } from 'winston'; import { PluginDatabaseManager } from '@backstage/backend-common'; diff --git a/plugins/tech-insights-common/api-report.md b/plugins/tech-insights-common/api-report.md index 0236c0619a..51ef13a013 100644 --- a/plugins/tech-insights-common/api-report.md +++ b/plugins/tech-insights-common/api-report.md @@ -47,5 +47,22 @@ export type FactResponse = { }; }; +// @public +export type FactSchema = { + [name: string]: { + type: + | 'integer' + | 'float' + | 'string' + | 'boolean' + | 'datetime' + | 'set' + | 'object'; + description: string; + since?: string; + metadata?: Record; + }; +}; + // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/tech-insights-node/api-report.md b/plugins/tech-insights-node/api-report.md index 47e76b07ce..dbb8a8b674 100644 --- a/plugins/tech-insights-node/api-report.md +++ b/plugins/tech-insights-node/api-report.md @@ -8,6 +8,7 @@ import { Config } from '@backstage/config'; import { DateTime } from 'luxon'; import { Duration } from 'luxon'; import { DurationLike } from 'luxon'; +import { FactSchema } from '@backstage/plugin-tech-insights-common'; import { HumanDuration } from '@backstage/types'; import { JsonValue } from '@backstage/types'; import { Logger } from 'winston'; @@ -78,23 +79,6 @@ export type FactRetrieverRegistration = { initialDelay?: Duration | HumanDuration; }; -// @public -export type FactSchema = { - [name: string]: { - type: - | 'integer' - | 'float' - | 'string' - | 'boolean' - | 'datetime' - | 'set' - | 'object'; - description: string; - since?: string; - metadata?: Record; - }; -}; - // @public export type FactSchemaDefinition = Omit; diff --git a/plugins/tech-insights/api-report.md b/plugins/tech-insights/api-report.md index 2d25d6d39d..d7ae337196 100644 --- a/plugins/tech-insights/api-report.md +++ b/plugins/tech-insights/api-report.md @@ -11,6 +11,7 @@ import { BulkCheckResponse } from '@backstage/plugin-tech-insights-common'; import { CheckResult } from '@backstage/plugin-tech-insights-common'; import { CompoundEntityRef } from '@backstage/catalog-model'; import { DiscoveryApi } from '@backstage/core-plugin-api'; +import { FactSchema } from '@backstage/plugin-tech-insights-common'; import { IdentityApi } from '@backstage/core-plugin-api'; import { JsonValue } from '@backstage/types'; import { default as React_2 } from 'react'; @@ -74,6 +75,8 @@ export interface TechInsightsApi { // (undocumented) getFacts(entity: CompoundEntityRef, facts: string[]): Promise; // (undocumented) + getFactSchemas(): Promise; + // (undocumented) runBulkChecks( entities: CompoundEntityRef[], checks?: Check[], @@ -102,6 +105,8 @@ export class TechInsightsClient implements TechInsightsApi { // (undocumented) getFacts(entity: CompoundEntityRef, facts: string[]): Promise; // (undocumented) + getFactSchemas(): Promise; + // (undocumented) runBulkChecks( entities: CompoundEntityRef[], checks?: Check[], From bce8eb1bfffb6672a4c7dca395c5450dff0c8b9e Mon Sep 17 00:00:00 2001 From: matt-200 <123186429+matt-200@users.noreply.github.com> Date: Wed, 25 Jan 2023 17:50:04 -0600 Subject: [PATCH 062/156] Remove host encoding Fixes bug #15874 Signed-off-by: matt-200 <123186429+matt-200@users.noreply.github.com> --- plugins/azure-devops-backend/src/utils/azure-devops-utils.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts b/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts index 0aafb54a0a..aa946e7a74 100644 --- a/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts +++ b/plugins/azure-devops-backend/src/utils/azure-devops-utils.ts @@ -242,12 +242,11 @@ export function buildEncodedUrl( repo: string, path: string, ): string { - const encodedHost = encodeURIComponent(host); const encodedOrg = encodeURIComponent(org); const encodedProject = encodeURIComponent(project); const encodedRepo = encodeURIComponent(repo); const encodedPath = encodeURIComponent(path); - return `https://${encodedHost}/${encodedOrg}/${encodedProject}/_git/${encodedRepo}?path=${encodedPath}`; + return `https://${host}/${encodedOrg}/${encodedProject}/_git/${encodedRepo}?path=${encodedPath}`; } function convertReviewer( From cc926a59bd11834850ed1678cdd93b9edeb5c6a8 Mon Sep 17 00:00:00 2001 From: matt-200 <123186429+matt-200@users.noreply.github.com> Date: Wed, 25 Jan 2023 18:20:51 -0600 Subject: [PATCH 063/156] Add changeset Happy cows moo! Signed-off-by: matt-200 <123186429+matt-200@users.noreply.github.com> --- .changeset/happy-cows-moo.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/happy-cows-moo.md diff --git a/.changeset/happy-cows-moo.md b/.changeset/happy-cows-moo.md new file mode 100644 index 0000000000..e59d9a72d0 --- /dev/null +++ b/.changeset/happy-cows-moo.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-azure-devops-backend': patch +--- + +Fixed a bug in buildEncodedUrl function where port was being encoded and breaking the readme card From 21a7b9fd83b7c70dac25de66b497e79f9299d03f Mon Sep 17 00:00:00 2001 From: matt-200 <123186429+matt-200@users.noreply.github.com> Date: Wed, 25 Jan 2023 18:34:14 -0600 Subject: [PATCH 064/156] Add a test for buildEncodedUrl Protect against regression Signed-off-by: matt-200 <123186429+matt-200@users.noreply.github.com> --- .../src/utils/azure-devops-utils.test.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts b/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts index 4b912a8340..ba288dad95 100644 --- a/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts +++ b/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts @@ -278,3 +278,17 @@ describe('replaceReadme', () => { expect(expected).toBe(result); }); }); + +describe('buildEncodedUrl', () => { + it('should not encode the colon between host and port', async () => { + const result = await buildEncodedUrl( + 'tfs.myorg.com:8443', + 'org', + 'project', + 'repo', + 'path' + ); + + expect(result).toBe('https://tfs.myorg.com:8443/org/project/_git/repo?path=path'); + }); +}); From 09547ac9647390cf64e17a95557bc4c71dda58ce Mon Sep 17 00:00:00 2001 From: matt-200 <123186429+matt-200@users.noreply.github.com> Date: Wed, 25 Jan 2023 18:59:20 -0600 Subject: [PATCH 065/156] Ran npx prettier --write . It looks better now. Signed-off-by: matt-200 <123186429+matt-200@users.noreply.github.com> --- .../src/utils/azure-devops-utils.test.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts b/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts index ba288dad95..355919dc55 100644 --- a/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts +++ b/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts @@ -281,14 +281,16 @@ describe('replaceReadme', () => { describe('buildEncodedUrl', () => { it('should not encode the colon between host and port', async () => { - const result = await buildEncodedUrl( + const result = await buildEncodedUrl( 'tfs.myorg.com:8443', 'org', 'project', 'repo', - 'path' + 'path', + ); + + expect(result).toBe( + 'https://tfs.myorg.com:8443/org/project/_git/repo?path=path', ); - - expect(result).toBe('https://tfs.myorg.com:8443/org/project/_git/repo?path=path'); }); }); From d015fe1f7ea4f92fb59a729351336438b57cd9cf Mon Sep 17 00:00:00 2001 From: matt-200 <123186429+matt-200@users.noreply.github.com> Date: Wed, 25 Jan 2023 19:09:18 -0600 Subject: [PATCH 066/156] Slight tweak Was missing some words Signed-off-by: matt-200 <123186429+matt-200@users.noreply.github.com> --- .changeset/happy-cows-moo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/happy-cows-moo.md b/.changeset/happy-cows-moo.md index e59d9a72d0..69a8d9d4f5 100644 --- a/.changeset/happy-cows-moo.md +++ b/.changeset/happy-cows-moo.md @@ -2,4 +2,4 @@ '@backstage/plugin-azure-devops-backend': patch --- -Fixed a bug in buildEncodedUrl function where port was being encoded and breaking the readme card +Fixed a bug in buildEncodedUrl function where the colon between host name and port was being encoded and breaking the readme card From 9e9fa77d59153ba0076b9053c7e1e222ba95b546 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 26 Jan 2023 10:20:01 +0100 Subject: [PATCH 067/156] .github/ISSUE_TEMPLATE: add title placeholder Signed-off-by: Patrik Oldsberg --- .github/ISSUE_TEMPLATE/bug.yaml | 2 +- .github/ISSUE_TEMPLATE/feature.yaml | 2 +- .github/ISSUE_TEMPLATE/plugin.yaml | 2 +- .github/ISSUE_TEMPLATE/rfc.yaml | 2 +- .github/ISSUE_TEMPLATE/ux_component.yaml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug.yaml b/.github/ISSUE_TEMPLATE/bug.yaml index 782b5fdfa0..57595621e4 100644 --- a/.github/ISSUE_TEMPLATE/bug.yaml +++ b/.github/ISSUE_TEMPLATE/bug.yaml @@ -1,6 +1,6 @@ name: '🐛 Bug Report' description: 'Submit a bug report to help us improve' -title: '🐛 Bug Report: ' +title: '🐛 Bug Report: ' labels: - bug body: diff --git a/.github/ISSUE_TEMPLATE/feature.yaml b/.github/ISSUE_TEMPLATE/feature.yaml index b5e06d48cf..b2d5a6be81 100644 --- a/.github/ISSUE_TEMPLATE/feature.yaml +++ b/.github/ISSUE_TEMPLATE/feature.yaml @@ -1,6 +1,6 @@ name: 🚀 Feature description: 'Submit a proposal for a new feature' -title: '🚀 Feature: ' +title: '🚀 Feature: <title>' labels: [enhancement] body: - type: markdown diff --git a/.github/ISSUE_TEMPLATE/plugin.yaml b/.github/ISSUE_TEMPLATE/plugin.yaml index a36c427981..a7f5216631 100644 --- a/.github/ISSUE_TEMPLATE/plugin.yaml +++ b/.github/ISSUE_TEMPLATE/plugin.yaml @@ -1,6 +1,6 @@ name: 🔌 Plugin description: 'Submit a proposal for a new Plugin' -title: '🔌 Plugin: ' +title: '🔌 Plugin: <title>' labels: [plugin] body: - type: markdown diff --git a/.github/ISSUE_TEMPLATE/rfc.yaml b/.github/ISSUE_TEMPLATE/rfc.yaml index 775c64e674..8e73992dc8 100644 --- a/.github/ISSUE_TEMPLATE/rfc.yaml +++ b/.github/ISSUE_TEMPLATE/rfc.yaml @@ -1,6 +1,6 @@ name: 💬 RFC description: 'Request For Comments (RFC) from the community' -title: '💬 RFC: ' +title: '💬 RFC: <title>' labels: [rfc] body: - type: markdown diff --git a/.github/ISSUE_TEMPLATE/ux_component.yaml b/.github/ISSUE_TEMPLATE/ux_component.yaml index 453f1e8278..c528356eb3 100644 --- a/.github/ISSUE_TEMPLATE/ux_component.yaml +++ b/.github/ISSUE_TEMPLATE/ux_component.yaml @@ -1,6 +1,6 @@ name: 🦄 UX Component description: 'For designers to request UX components to be added to the Backstage Storybook' -title: '🦄 UX Component: ' +title: '🦄 UX Component: <title>' labels: [design] body: - type: markdown From da418c89e41dbf11e95ed3d79c71105cac64c6c3 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg <poldsberg@gmail.com> Date: Thu, 26 Jan 2023 10:46:23 +0100 Subject: [PATCH 068/156] scaffolder-backend-module-sentry: fix module setup Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com> --- .changeset/hungry-news-fix.md | 5 +++++ .../package.json | 19 +++---------------- yarn.lock | 12 ------------ 3 files changed, 8 insertions(+), 28 deletions(-) create mode 100644 .changeset/hungry-news-fix.md diff --git a/.changeset/hungry-news-fix.md b/.changeset/hungry-news-fix.md new file mode 100644 index 0000000000..c59113d9f4 --- /dev/null +++ b/.changeset/hungry-news-fix.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-sentry': patch +--- + +Fix broken module exports and dependencies to match a backend module, rather than a frontend plugin. diff --git a/plugins/scaffolder-backend-module-sentry/package.json b/plugins/scaffolder-backend-module-sentry/package.json index 9978f0acc7..95a89371c8 100644 --- a/plugins/scaffolder-backend-module-sentry/package.json +++ b/plugins/scaffolder-backend-module-sentry/package.json @@ -6,11 +6,11 @@ "license": "Apache-2.0", "publishConfig": { "access": "public", - "main": "dist/index.esm.js", + "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, "backstage": { - "role": "frontend-plugin" + "role": "backend-plugin-module" }, "scripts": { "start": "backstage-cli package start", @@ -24,23 +24,10 @@ "dependencies": { "@backstage/config": "workspace:^", "@backstage/errors": "workspace:^", - "@backstage/integration": "workspace:^", "@backstage/plugin-scaffolder-node": "workspace:^" }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0" - }, "devDependencies": { - "@backstage/cli": "workspace:^", - "@backstage/core-app-api": "workspace:^", - "@backstage/dev-utils": "workspace:^", - "@backstage/test-utils": "workspace:^", - "@testing-library/jest-dom": "^5.10.1", - "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^14.0.0", - "@types/node": "*", - "cross-fetch": "^3.1.5", - "msw": "^0.49.0" + "@backstage/cli": "workspace:^" }, "files": [ "dist" diff --git a/yarn.lock b/yarn.lock index bcc1177fdc..ad38ddc7c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7216,20 +7216,8 @@ __metadata: dependencies: "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" - "@backstage/core-app-api": "workspace:^" - "@backstage/dev-utils": "workspace:^" "@backstage/errors": "workspace:^" - "@backstage/integration": "workspace:^" "@backstage/plugin-scaffolder-node": "workspace:^" - "@backstage/test-utils": "workspace:^" - "@testing-library/jest-dom": ^5.10.1 - "@testing-library/react": ^12.1.3 - "@testing-library/user-event": ^14.0.0 - "@types/node": "*" - cross-fetch: ^3.1.5 - msw: ^0.49.0 - peerDependencies: - react: ^16.13.1 || ^17.0.0 languageName: unknown linkType: soft From 561df21ea3aa3c1596e62d06252b4dd3d3c43332 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg <poldsberg@gmail.com> Date: Thu, 26 Jan 2023 12:09:34 +0100 Subject: [PATCH 069/156] cli: set a default jest worker memory limit Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com> --- .changeset/chatty-owls-care.md | 5 +++++ packages/cli/src/commands/repo/test.ts | 7 +++++++ 2 files changed, 12 insertions(+) create mode 100644 .changeset/chatty-owls-care.md diff --git a/.changeset/chatty-owls-care.md b/.changeset/chatty-owls-care.md new file mode 100644 index 0000000000..84b6fc76f6 --- /dev/null +++ b/.changeset/chatty-owls-care.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +The `backstage-cli repo test` command now sets a default Jest `--workerIdleMemoryLimit` of 1GB. This is the recommended workaround for dealing with Jest workers leaking memory and eventually hitting the heap limit. diff --git a/packages/cli/src/commands/repo/test.ts b/packages/cli/src/commands/repo/test.ts index 95bfe8f449..69b3d914ed 100644 --- a/packages/cli/src/commands/repo/test.ts +++ b/packages/cli/src/commands/repo/test.ts @@ -84,6 +84,13 @@ export async function command(opts: OptionValues, cmd: Command): Promise<void> { } } + // When running tests from the repo root in large repos you can easily hit the heap limit. + // This is because Jest workers leak a lot of memory, and the workaround is to limit worker memory. + // We set a default memory limit, but if an explicit one is supplied it will be used instead + if (!args.some(arg => arg.match(/^--workerIdleMemoryLimit/))) { + args.push('--workerIdleMemoryLimit=1000M'); + } + if (opts.since) { removeOptionArg(args, '--since'); } From fc73f6aae5f6dddb876a6edf5a88b7e561e7287d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= <freben@gmail.com> Date: Thu, 26 Jan 2023 12:32:52 +0100 Subject: [PATCH 070/156] switch the order of the reprocessing statements in migrations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw <freben@gmail.com> --- .changeset/modern-cats-worry.md | 5 +++++ .../migrations/20220222164811_reprocess_for_relation_refs.js | 2 +- .../20221109192547_search_add_original_value_column.js | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/modern-cats-worry.md diff --git a/.changeset/modern-cats-worry.md b/.changeset/modern-cats-worry.md new file mode 100644 index 0000000000..b6698cb805 --- /dev/null +++ b/.changeset/modern-cats-worry.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Switched the order of reprocessing statements retroactively in migrations. This only improves the experience for those who at a later time perform a large upgrade of an old Backstage installation. diff --git a/plugins/catalog-backend/migrations/20220222164811_reprocess_for_relation_refs.js b/plugins/catalog-backend/migrations/20220222164811_reprocess_for_relation_refs.js index f4be2172a0..0679d5cbdb 100644 --- a/plugins/catalog-backend/migrations/20220222164811_reprocess_for_relation_refs.js +++ b/plugins/catalog-backend/migrations/20220222164811_reprocess_for_relation_refs.js @@ -21,11 +21,11 @@ */ exports.up = async function up(knex) { // Make sure to reprocess everything, to make sure that relations have a targetRef produced + await knex('final_entities').update({ hash: '' }); await knex('refresh_state').update({ result_hash: '', next_update_at: knex.fn.now(), }); - await knex('final_entities').update({ hash: '' }); }; exports.down = async function down() {}; diff --git a/plugins/catalog-backend/migrations/20221109192547_search_add_original_value_column.js b/plugins/catalog-backend/migrations/20221109192547_search_add_original_value_column.js index fff7955530..597006e6f5 100644 --- a/plugins/catalog-backend/migrations/20221109192547_search_add_original_value_column.js +++ b/plugins/catalog-backend/migrations/20221109192547_search_add_original_value_column.js @@ -34,11 +34,11 @@ exports.up = async function up(knex) { // not enough to just reset the final_entities hash, since stitching is driven // only by processing resulting in data that isn't matching the refresh_state // hash. + await knex('final_entities').update({ hash: '' }); await knex('refresh_state').update({ result_hash: '', next_update_at: knex.fn.now(), }); - await knex('final_entities').update({ hash: '' }); }; /** From 9d0900ee0b6326e8577a03c72a29537e804ca6b2 Mon Sep 17 00:00:00 2001 From: matt-200 <123186429+matt-200@users.noreply.github.com> Date: Thu, 26 Jan 2023 08:21:27 -0600 Subject: [PATCH 071/156] Slight tweak to changeset file Make it clearer Signed-off-by: matt-200 <123186429+matt-200@users.noreply.github.com> --- .changeset/happy-cows-moo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/happy-cows-moo.md b/.changeset/happy-cows-moo.md index 69a8d9d4f5..a5e425f5d2 100644 --- a/.changeset/happy-cows-moo.md +++ b/.changeset/happy-cows-moo.md @@ -2,4 +2,4 @@ '@backstage/plugin-azure-devops-backend': patch --- -Fixed a bug in buildEncodedUrl function where the colon between host name and port was being encoded and breaking the readme card +Fixed a bug where the azure devops host in URLs on the readme card was being URL encoded, breaking hosts with ports. From 0aeeafe7a7c2b0065f9f54cf04a4fb0ba8d91f86 Mon Sep 17 00:00:00 2001 From: matt-200 <123186429+matt-200@users.noreply.github.com> Date: Thu, 26 Jan 2023 08:22:35 -0600 Subject: [PATCH 072/156] Add missing import Forgot the import Signed-off-by: matt-200 <123186429+matt-200@users.noreply.github.com> --- .../azure-devops-backend/src/utils/azure-devops-utils.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts b/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts index 355919dc55..427980be14 100644 --- a/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts +++ b/plugins/azure-devops-backend/src/utils/azure-devops-utils.test.ts @@ -27,6 +27,7 @@ import { getAvatarUrl, getPullRequestLink, replaceReadme, + buildEncodedUrl, } from './azure-devops-utils'; import { GitPullRequest } from 'azure-devops-node-api/interfaces/GitInterfaces'; import { UrlReader } from '@backstage/backend-common'; From 763dd1ccecee76180b20f3d8ba2a80b1e45fe96f Mon Sep 17 00:00:00 2001 From: Casper Thygesen <cth@trifork.com> Date: Thu, 26 Jan 2023 15:28:20 +0100 Subject: [PATCH 073/156] Remove plugin-stack-overflow from packages.json in @plugin-home Signed-off-by: Casper Thygesen <cth@trifork.com> --- plugins/home/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/home/package.json b/plugins/home/package.json index ae3c03f975..39d9b68aaf 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -38,7 +38,6 @@ "@backstage/core-components": "workspace:^", "@backstage/core-plugin-api": "workspace:^", "@backstage/plugin-catalog-react": "workspace:^", - "@backstage/plugin-stack-overflow": "workspace:^", "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", From c553a625d29b06b1dc50f307a4e0c0e6dbe75ac2 Mon Sep 17 00:00:00 2001 From: Casper Thygesen <cth@trifork.com> Date: Thu, 26 Jan 2023 14:39:49 +0000 Subject: [PATCH 074/156] Added changeset Signed-off-by: Casper Thygesen <cth@trifork.com> --- .changeset/nine-guests-compete.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/nine-guests-compete.md diff --git a/.changeset/nine-guests-compete.md b/.changeset/nine-guests-compete.md new file mode 100644 index 0000000000..697236d0b7 --- /dev/null +++ b/.changeset/nine-guests-compete.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-home': patch +--- + +remove unused plugin-stack-overflow dependency From b8b48b00f8c661bf45e5fad0ff34d6457306ea07 Mon Sep 17 00:00:00 2001 From: Casper Thygesen <cth@trifork.com> Date: Thu, 26 Jan 2023 14:40:24 +0000 Subject: [PATCH 075/156] update yarn.lock Signed-off-by: Casper Thygesen <cth@trifork.com> --- yarn.lock | 1 - 1 file changed, 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index ad38ddc7c7..d8429c3876 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6418,7 +6418,6 @@ __metadata: "@backstage/core-plugin-api": "workspace:^" "@backstage/dev-utils": "workspace:^" "@backstage/plugin-catalog-react": "workspace:^" - "@backstage/plugin-stack-overflow": "workspace:^" "@backstage/test-utils": "workspace:^" "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 From f9f81aaf5881a929528c98968f94e3c03027c6f3 Mon Sep 17 00:00:00 2001 From: Marc Bruins <marc@marcbruins.nl> Date: Thu, 26 Jan 2023 20:04:59 +0100 Subject: [PATCH 076/156] update tests Signed-off-by: Marc Bruins <marc@marcbruins.nl> --- .../src/lib/azure.test.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/plugins/catalog-backend-module-azure/src/lib/azure.test.ts b/plugins/catalog-backend-module-azure/src/lib/azure.test.ts index 4a68603246..47a3bc4fcb 100644 --- a/plugins/catalog-backend-module-azure/src/lib/azure.test.ts +++ b/plugins/catalog-backend-module-azure/src/lib/azure.test.ts @@ -33,7 +33,7 @@ describe('azure', () => { (req, res, ctx) => { expect(req.headers.get('Authorization')).toBe('Basic OkFCQw=='); expect(req.body).toEqual({ - searchText: 'path:/catalog-info.yaml repo:* proj:*', + searchText: 'path:/catalog-info.yaml repo:* proj:engineering', $skip: 0, $top: 1000, }); @@ -87,7 +87,7 @@ describe('azure', () => { (req, res, ctx) => { expect(req.headers.get('Authorization')).toBe('Basic OkFCQw=='); expect(req.body).toEqual({ - searchText: 'path:/catalog-info.yaml repo:* proj:backstage', + searchText: 'path:/catalog-info.yaml repo:* proj:engineering', $skip: 0, $top: 1000, }); @@ -130,7 +130,8 @@ describe('azure', () => { (req, res, ctx) => { expect(req.headers.get('Authorization')).toBe('Basic OkFCQw=='); expect(req.body).toEqual({ - searchText: 'path:/catalog-info.yaml repo:backstage: proj:*', + searchText: + 'path:/catalog-info.yaml repo:backstage: proj:engineering', $skip: 0, $top: 1000, }); @@ -173,7 +174,7 @@ describe('azure', () => { (req, res, ctx) => { expect(req.headers.get('Authorization')).toBe('Basic OkFCQw=='); expect(req.body).toEqual({ - searchText: 'path:/catalog-info.yaml repo:* proj:*', + searchText: 'path:/catalog-info.yaml repo:* proj:engineering', $skip: 0, $top: 1000, }); @@ -214,7 +215,8 @@ describe('azure', () => { (req, res, ctx) => { expect(req.headers.get('Authorization')).toBe('Basic OkFCQw=='); expect(req.body).toMatchObject({ - searchText: 'path:/catalog-info.yaml repo:backstage', + searchText: + 'proj:engineering path:/catalog-info.yaml repo:backstage', $top: 1000, }); From 2ad2119e4481880e4ce40a2094d5b6bf0bc3d550 Mon Sep 17 00:00:00 2001 From: Marc Bruins <marc@marcbruins.nl> Date: Thu, 26 Jan 2023 20:22:52 +0100 Subject: [PATCH 077/156] update test url Signed-off-by: Marc Bruins <marc@marcbruins.nl> --- .../src/lib/azure.test.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/catalog-backend-module-azure/src/lib/azure.test.ts b/plugins/catalog-backend-module-azure/src/lib/azure.test.ts index 47a3bc4fcb..10a7482387 100644 --- a/plugins/catalog-backend-module-azure/src/lib/azure.test.ts +++ b/plugins/catalog-backend-module-azure/src/lib/azure.test.ts @@ -29,7 +29,7 @@ describe('azure', () => { server.use( rest.post( - `https://almsearch.dev.azure.com/shopify/engineering/_apis/search/codesearchresults`, + `https://almsearch.dev.azure.com/shopify/_apis/search/codesearchresults`, (req, res, ctx) => { expect(req.headers.get('Authorization')).toBe('Basic OkFCQw=='); expect(req.body).toEqual({ @@ -83,7 +83,7 @@ describe('azure', () => { server.use( rest.post( - `https://almsearch.dev.azure.com/shopify/engineering/_apis/search/codesearchresults`, + `https://almsearch.dev.azure.com/shopify/_apis/search/codesearchresults`, (req, res, ctx) => { expect(req.headers.get('Authorization')).toBe('Basic OkFCQw=='); expect(req.body).toEqual({ @@ -126,7 +126,7 @@ describe('azure', () => { server.use( rest.post( - `https://almsearch.dev.azure.com/shopify/engineering/_apis/search/codesearchresults`, + `https://almsearch.dev.azure.com/shopify/_apis/search/codesearchresults`, (req, res, ctx) => { expect(req.headers.get('Authorization')).toBe('Basic OkFCQw=='); expect(req.body).toEqual({ @@ -170,7 +170,7 @@ describe('azure', () => { server.use( rest.post( - `https://azuredevops.mycompany.com/shopify/engineering/_apis/search/codesearchresults`, + `https://azuredevops.mycompany.com/shopify/_apis/search/codesearchresults`, (req, res, ctx) => { expect(req.headers.get('Authorization')).toBe('Basic OkFCQw=='); expect(req.body).toEqual({ @@ -204,19 +204,19 @@ describe('azure', () => { name: 'backstage', }, project: { - name: '*', + name: 'engineering', }, })); }; server.use( rest.post( - `https://almsearch.dev.azure.com/shopify/engineering/_apis/search/codesearchresults`, + `https://almsearch.dev.azure.com/shopify/_apis/search/codesearchresults`, (req, res, ctx) => { expect(req.headers.get('Authorization')).toBe('Basic OkFCQw=='); expect(req.body).toMatchObject({ searchText: - 'proj:engineering path:/catalog-info.yaml repo:backstage', + 'path:/catalog-info.yaml repo:backstage proj:engineering', $top: 1000, }); From 6ad70dbf68c8166a714435a8405afbdf13fe7dd3 Mon Sep 17 00:00:00 2001 From: Marc Bruins <marc@marcbruins.nl> Date: Thu, 26 Jan 2023 20:28:47 +0100 Subject: [PATCH 078/156] remove double quote Signed-off-by: Marc Bruins <marc@marcbruins.nl> --- plugins/catalog-backend-module-azure/src/lib/azure.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog-backend-module-azure/src/lib/azure.test.ts b/plugins/catalog-backend-module-azure/src/lib/azure.test.ts index 10a7482387..f26208353a 100644 --- a/plugins/catalog-backend-module-azure/src/lib/azure.test.ts +++ b/plugins/catalog-backend-module-azure/src/lib/azure.test.ts @@ -131,7 +131,7 @@ describe('azure', () => { expect(req.headers.get('Authorization')).toBe('Basic OkFCQw=='); expect(req.body).toEqual({ searchText: - 'path:/catalog-info.yaml repo:backstage: proj:engineering', + 'path:/catalog-info.yaml repo:backstage proj:engineering', $skip: 0, $top: 1000, }); From 3ea29add12fae20a33d9ce84b9dd8b36aa17c4f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=82=98=EC=83=81=EC=9A=B0=28Roy=29?= <robbyra@gmail.com> Date: Fri, 27 Jan 2023 17:16:35 +0900 Subject: [PATCH 079/156] Add missing finishing single quote. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 나상우(Roy) <robbyra@gmail.com> --- docs/features/techdocs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/techdocs/configuration.md b/docs/features/techdocs/configuration.md index 097d31f760..38a0143bea 100644 --- a/docs/features/techdocs/configuration.md +++ b/docs/features/techdocs/configuration.md @@ -49,7 +49,7 @@ techdocs: # will be broken in these scenarios. legacyCopyReadmeMdToIndexMd: false - # techdocs.builder can be either 'local' or 'external. + # techdocs.builder can be either 'local' or 'external'. # Using the default build strategy, if builder is set to 'local' and you open a TechDocs page, # techdocs-backend will try to generate the docs, publish to storage and show the generated docs afterwords. # This is the "Basic" setup of the TechDocs Architecture. From 4c86436fdfe6d92c8d8f325f2ed889d9cb651aa0 Mon Sep 17 00:00:00 2001 From: Heikki Hellgren <heikki.hellgren@op.fi> Date: Fri, 27 Jan 2023 11:58:14 +0200 Subject: [PATCH 080/156] fix: use graph API target url for access token this fixes #15998 Signed-off-by: Heikki Hellgren <heikki.hellgren@op.fi> --- .changeset/four-rivers-enjoy.md | 5 +++++ .../src/microsoftGraph/client.test.ts | 2 +- .../src/microsoftGraph/client.ts | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/four-rivers-enjoy.md diff --git a/.changeset/four-rivers-enjoy.md b/.changeset/four-rivers-enjoy.md new file mode 100644 index 0000000000..b38babd8bd --- /dev/null +++ b/.changeset/four-rivers-enjoy.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-msgraph': patch +--- + +Fix MS Graph provider to use target URL for fetching access token diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.test.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.test.ts index 05693149d8..fdaa2a6a43 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.test.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.test.ts @@ -53,7 +53,7 @@ describe('MicrosoftGraphClient', () => { expect(await response.json()).toEqual({ value: 'example' }); expect(tokenCredential.getToken).toHaveBeenCalledTimes(1); expect(tokenCredential.getToken).toHaveBeenCalledWith( - 'https://graph.microsoft.com/.default', + 'https://example.com/.default', ); }); diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts index 26da0cb64b..321d784543 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts @@ -214,7 +214,7 @@ export class MicrosoftGraphClient { ): Promise<Response> { // Make sure that we always have a valid access token (might be cached) const token = await this.tokenCredential.getToken( - 'https://graph.microsoft.com/.default', + `${this.baseUrl}/.default`, ); if (!token) { From b3ca30ca248eebb05735584096f3d2e6e4849bda Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 27 Jan 2023 10:36:24 +0000 Subject: [PATCH 081/156] fix(deps): update dependency @roadiehq/backstage-plugin-travis-ci to v2.1.3 Signed-off-by: Renovate Bot <bot@renovateapp.com> --- yarn.lock | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/yarn.lock b/yarn.lock index ad38ddc7c7..5826c10d9c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3614,7 +3614,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/catalog-model@npm:^1.1.3, @backstage/catalog-model@npm:^1.1.4, @backstage/catalog-model@npm:^1.1.5": +"@backstage/catalog-model@npm:^1.1.3, @backstage/catalog-model@npm:^1.1.5": version: 1.1.5 resolution: "@backstage/catalog-model@npm:1.1.5" dependencies: @@ -3887,7 +3887,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/core-components@^0.12.0, @backstage/core-components@^0.12.2, @backstage/core-components@^0.12.3, @backstage/core-components@workspace:^, @backstage/core-components@workspace:packages/core-components": +"@backstage/core-components@^0.12.0, @backstage/core-components@^0.12.3, @backstage/core-components@workspace:^, @backstage/core-components@workspace:packages/core-components": version: 0.0.0-use.local resolution: "@backstage/core-components@workspace:packages/core-components" dependencies: @@ -3958,7 +3958,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/core-plugin-api@^1.1.0, @backstage/core-plugin-api@^1.2.0, @backstage/core-plugin-api@^1.3.0, @backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": +"@backstage/core-plugin-api@^1.1.0, @backstage/core-plugin-api@^1.3.0, @backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": version: 0.0.0-use.local resolution: "@backstage/core-plugin-api@workspace:packages/core-plugin-api" dependencies: @@ -5292,7 +5292,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-react@npm:^1.2.1, @backstage/plugin-catalog-react@npm:^1.2.3, @backstage/plugin-catalog-react@npm:^1.2.4": +"@backstage/plugin-catalog-react@npm:^1.2.1, @backstage/plugin-catalog-react@npm:^1.2.4": version: 1.2.4 resolution: "@backstage/plugin-catalog-react@npm:1.2.4" dependencies: @@ -12916,13 +12916,13 @@ __metadata: linkType: hard "@roadiehq/backstage-plugin-travis-ci@npm:^2.0.5": - version: 2.1.2 - resolution: "@roadiehq/backstage-plugin-travis-ci@npm:2.1.2" + version: 2.1.3 + resolution: "@roadiehq/backstage-plugin-travis-ci@npm:2.1.3" dependencies: - "@backstage/catalog-model": ^1.1.4 - "@backstage/core-components": ^0.12.2 - "@backstage/core-plugin-api": ^1.2.0 - "@backstage/plugin-catalog-react": ^1.2.3 + "@backstage/catalog-model": ^1.1.5 + "@backstage/core-components": ^0.12.3 + "@backstage/core-plugin-api": ^1.3.0 + "@backstage/plugin-catalog-react": ^1.2.4 "@backstage/theme": ^0.2.16 "@material-ui/core": ^4.11.3 "@material-ui/icons": ^4.11.2 @@ -12937,7 +12937,7 @@ __metadata: react-dom: ^16.13.1 || ^17.0.0 react-router: 6.0.0-beta.0 || ^6.3.0 react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 64e2878fd517e63eb765a65c60f1276cc6a12e4abb128001ed92a1e634546c0ec9236cbb67c6b534ece126fe64b5fb251e985fe3e5f42ce4500b6108b9f7f889 + checksum: 8051bd38465f73c1d09c7a88fe86f3c32fcd8d32924d7a5c0100cad0b6fba5e48684dc4b15ebdbbdc8f351c9e05286e1546b0a4499ad1385848e205737354d89 languageName: node linkType: hard From dc2af7e8bc651ee4554c04a5e5d394296b26a695 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 27 Jan 2023 10:37:44 +0000 Subject: [PATCH 082/156] fix(deps): update dependency eslint-plugin-jsx-a11y to v6.7.1 Signed-off-by: Renovate Bot <bot@renovateapp.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index ad38ddc7c7..aadf0f7a23 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21905,8 +21905,8 @@ __metadata: linkType: hard "eslint-plugin-jsx-a11y@npm:^6.5.1": - version: 6.7.0 - resolution: "eslint-plugin-jsx-a11y@npm:6.7.0" + version: 6.7.1 + resolution: "eslint-plugin-jsx-a11y@npm:6.7.1" dependencies: "@babel/runtime": ^7.20.7 aria-query: ^5.1.3 @@ -21926,7 +21926,7 @@ __metadata: semver: ^6.3.0 peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: b7ea212bcf84912d264229e5e3cf255bc95a1193de1c7453d275a7afc959ce679c1bffb77cfd3d17f9b7105f41e0f62c8edb7f6d76985c79647edaa9f08aa814 + checksum: f166dd5fe7257c7b891c6692e6a3ede6f237a14043ae3d97581daf318fc5833ddc6b4871aa34ab7656187430170500f6d806895747ea17ecdf8231a666c3c2fd languageName: node linkType: hard From 5a795f57775b96fb07b9605ddc9641f804a30bbf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 27 Jan 2023 11:25:11 +0000 Subject: [PATCH 083/156] chore(deps): update dependency swr to v2.0.2 Signed-off-by: Renovate Bot <bot@renovateapp.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5826c10d9c..174c6373f4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -36450,13 +36450,13 @@ __metadata: linkType: hard "swr@npm:^2.0.0": - version: 2.0.1 - resolution: "swr@npm:2.0.1" + version: 2.0.2 + resolution: "swr@npm:2.0.2" dependencies: use-sync-external-store: ^1.2.0 peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 - checksum: 5466e46a80bccf722c212ea3f14668b4e7f047d958f3da7252fba3529e6b1773a1762aa4bbf43aec104cc50625dbd55380539eeef59fd5ad9ebca6ad0552f45d + checksum: d68f6b5dfd66d9c3e36b7248d00c306d2a11e0f1a0fbb58956fef041f83dfc997b0d0c49532e05abdb9092d8b7be0d5b25803305225bdf0188157f6442f186c4 languageName: node linkType: hard From f1650524457d015a1a70041d0102fd114f0ca2db Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 27 Jan 2023 11:36:33 +0000 Subject: [PATCH 084/156] chore(deps): update storybook monorepo to v6.5.16 Signed-off-by: Renovate Bot <bot@renovateapp.com> --- storybook/yarn.lock | 554 ++++++++++++++++++++++---------------------- 1 file changed, 277 insertions(+), 277 deletions(-) diff --git a/storybook/yarn.lock b/storybook/yarn.lock index c1ece03aac..6ace50cde8 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -1801,17 +1801,17 @@ __metadata: linkType: hard "@storybook/addon-a11y@npm:^6.5.9": - version: 6.5.15 - resolution: "@storybook/addon-a11y@npm:6.5.15" + version: 6.5.16 + resolution: "@storybook/addon-a11y@npm:6.5.16" dependencies: - "@storybook/addons": 6.5.15 - "@storybook/api": 6.5.15 - "@storybook/channels": 6.5.15 - "@storybook/client-logger": 6.5.15 - "@storybook/components": 6.5.15 - "@storybook/core-events": 6.5.15 + "@storybook/addons": 6.5.16 + "@storybook/api": 6.5.16 + "@storybook/channels": 6.5.16 + "@storybook/client-logger": 6.5.16 + "@storybook/components": 6.5.16 + "@storybook/core-events": 6.5.16 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/theming": 6.5.15 + "@storybook/theming": 6.5.16 axe-core: ^4.2.0 core-js: ^3.8.2 global: ^4.4.0 @@ -1828,21 +1828,21 @@ __metadata: optional: true react-dom: optional: true - checksum: 409e1393f655099b199dd3ba279d926b42d11ca8ce37255eec1e5d6ed3526cae559cd02d3485b70023846c3430b41630c2b6e14ed288580fcce00a12c34f7fcb + checksum: 05ce7f696254782b521a5e946f7d58b207d854e69ce8b624a14de0192ce558f640b9dae821e122911059a24d2f9907e783e8dce5fb9288d5cfbdf0833aaab503 languageName: node linkType: hard "@storybook/addon-actions@npm:^6.5.9": - version: 6.5.15 - resolution: "@storybook/addon-actions@npm:6.5.15" + version: 6.5.16 + resolution: "@storybook/addon-actions@npm:6.5.16" dependencies: - "@storybook/addons": 6.5.15 - "@storybook/api": 6.5.15 - "@storybook/client-logger": 6.5.15 - "@storybook/components": 6.5.15 - "@storybook/core-events": 6.5.15 + "@storybook/addons": 6.5.16 + "@storybook/api": 6.5.16 + "@storybook/client-logger": 6.5.16 + "@storybook/components": 6.5.16 + "@storybook/core-events": 6.5.16 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/theming": 6.5.15 + "@storybook/theming": 6.5.16 core-js: ^3.8.2 fast-deep-equal: ^3.1.3 global: ^4.4.0 @@ -1863,23 +1863,23 @@ __metadata: optional: true react-dom: optional: true - checksum: ce0ca5fddeb196adec7757dd287085c19d89d26506539d07445df3759eca9817a779f2923cc5fd7dfc9f515788628f6c0f604b10366659ca46562fab980c64f5 + checksum: d506a932f38412fc234cd58b5f2c8a0bfb8f3820b0ce8042234e9bf4bd277a2befc2d8458d061405ee72722206756375f471a22c37ea32f384259fcbb1a2b6a5 languageName: node linkType: hard "@storybook/addon-controls@npm:^6.5.9": - version: 6.5.15 - resolution: "@storybook/addon-controls@npm:6.5.15" + version: 6.5.16 + resolution: "@storybook/addon-controls@npm:6.5.16" dependencies: - "@storybook/addons": 6.5.15 - "@storybook/api": 6.5.15 - "@storybook/client-logger": 6.5.15 - "@storybook/components": 6.5.15 - "@storybook/core-common": 6.5.15 + "@storybook/addons": 6.5.16 + "@storybook/api": 6.5.16 + "@storybook/client-logger": 6.5.16 + "@storybook/components": 6.5.16 + "@storybook/core-common": 6.5.16 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/node-logger": 6.5.15 - "@storybook/store": 6.5.15 - "@storybook/theming": 6.5.15 + "@storybook/node-logger": 6.5.16 + "@storybook/store": 6.5.16 + "@storybook/theming": 6.5.16 core-js: ^3.8.2 lodash: ^4.17.21 ts-dedent: ^2.0.0 @@ -1891,19 +1891,19 @@ __metadata: optional: true react-dom: optional: true - checksum: c87b01e035f7e0e6f3a1e864333c03e44f76ccd04a687cbe19cde59cfa1109eb2b124c288e1cf68c3a291dc6c28c056852aa2413c8157b92792ef339a33142ef + checksum: a9f1f577e5d991ae271c9823662adf65952554303094a2e0127bfe9d48e2415796628dadc3cfbc767600e21588336bfd9cb43da59fe76507b2186f6a61da34b8 languageName: node linkType: hard "@storybook/addon-links@npm:^6.5.9": - version: 6.5.15 - resolution: "@storybook/addon-links@npm:6.5.15" + version: 6.5.16 + resolution: "@storybook/addon-links@npm:6.5.16" dependencies: - "@storybook/addons": 6.5.15 - "@storybook/client-logger": 6.5.15 - "@storybook/core-events": 6.5.15 + "@storybook/addons": 6.5.16 + "@storybook/client-logger": 6.5.16 + "@storybook/core-events": 6.5.16 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/router": 6.5.15 + "@storybook/router": 6.5.16 "@types/qs": ^6.9.5 core-js: ^3.8.2 global: ^4.4.0 @@ -1919,21 +1919,21 @@ __metadata: optional: true react-dom: optional: true - checksum: ef40b02a3f48de2f591486fb04910e996bcb8d5fd406e2d6b81752659551b366ffc64f6cfdb461585e52c0ae98fa102be8595678e63a27171f9e2a0e20869bd6 + checksum: 40fa5fcd98df3be50b3587efda79ddf0156eb0078dd0afec43e81e961475bc8583feec1314baabe59fe2dc8e5b9b4bb4a738435172c208f828d1538cd59882fe languageName: node linkType: hard "@storybook/addon-storysource@npm:^6.5.9": - version: 6.5.15 - resolution: "@storybook/addon-storysource@npm:6.5.15" + version: 6.5.16 + resolution: "@storybook/addon-storysource@npm:6.5.16" dependencies: - "@storybook/addons": 6.5.15 - "@storybook/api": 6.5.15 - "@storybook/client-logger": 6.5.15 - "@storybook/components": 6.5.15 - "@storybook/router": 6.5.15 - "@storybook/source-loader": 6.5.15 - "@storybook/theming": 6.5.15 + "@storybook/addons": 6.5.16 + "@storybook/api": 6.5.16 + "@storybook/client-logger": 6.5.16 + "@storybook/components": 6.5.16 + "@storybook/router": 6.5.16 + "@storybook/source-loader": 6.5.16 + "@storybook/theming": 6.5.16 core-js: ^3.8.2 estraverse: ^5.2.0 loader-utils: ^2.0.4 @@ -1948,7 +1948,7 @@ __metadata: optional: true react-dom: optional: true - checksum: e501c78ad8224b07a15fd8626399ebc63f131feb615ad6c6a3d6a7eac320b8fd01ec74d7406e8422c224771dfca17cfa159816b272e9f635e07dd67a8b4f8cb8 + checksum: 0e614542c99a0470c8b70881f2f5bd41f0d0f6e94c99b4efc2be9ff757a8021d00a4adc9e80c0c85dbdb3fe89f244fdf5633b0f0017fe565f81a7bde42dc96d2 languageName: node linkType: hard @@ -1974,17 +1974,17 @@ __metadata: languageName: node linkType: hard -"@storybook/addons@npm:6.5.15, @storybook/addons@npm:^6.0.0, @storybook/addons@npm:^6.5.9": - version: 6.5.15 - resolution: "@storybook/addons@npm:6.5.15" +"@storybook/addons@npm:6.5.16, @storybook/addons@npm:^6.0.0, @storybook/addons@npm:^6.5.9": + version: 6.5.16 + resolution: "@storybook/addons@npm:6.5.16" dependencies: - "@storybook/api": 6.5.15 - "@storybook/channels": 6.5.15 - "@storybook/client-logger": 6.5.15 - "@storybook/core-events": 6.5.15 + "@storybook/api": 6.5.16 + "@storybook/channels": 6.5.16 + "@storybook/client-logger": 6.5.16 + "@storybook/core-events": 6.5.16 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/router": 6.5.15 - "@storybook/theming": 6.5.15 + "@storybook/router": 6.5.16 + "@storybook/theming": 6.5.16 "@types/webpack-env": ^1.16.0 core-js: ^3.8.2 global: ^4.4.0 @@ -1992,7 +1992,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 9de4cb9ff51cde37c456a0315f47c751daf4412a8d90321b5249a9b05f48a44dc48f01bbf83c9f369f63232da423d58ed47e4c03d50d16a8835d372022095b70 + checksum: 0463150e4cf7bd2b2aaafdbaadfb4420e4e0a31eb651cfc1a2d7f4b4974caf67878712602474585dfa18f583000608598045594909959d2e9e2ec32ba004392d languageName: node linkType: hard @@ -2024,17 +2024,17 @@ __metadata: languageName: node linkType: hard -"@storybook/api@npm:6.5.15, @storybook/api@npm:^6.0.0": - version: 6.5.15 - resolution: "@storybook/api@npm:6.5.15" +"@storybook/api@npm:6.5.16, @storybook/api@npm:^6.0.0": + version: 6.5.16 + resolution: "@storybook/api@npm:6.5.16" dependencies: - "@storybook/channels": 6.5.15 - "@storybook/client-logger": 6.5.15 - "@storybook/core-events": 6.5.15 + "@storybook/channels": 6.5.16 + "@storybook/client-logger": 6.5.16 + "@storybook/core-events": 6.5.16 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/router": 6.5.15 + "@storybook/router": 6.5.16 "@storybook/semver": ^7.3.2 - "@storybook/theming": 6.5.15 + "@storybook/theming": 6.5.16 core-js: ^3.8.2 fast-deep-equal: ^3.1.3 global: ^4.4.0 @@ -2048,31 +2048,31 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: cebf1b70309c9c4a135c4ad8d3ebd85d01cfa4942e43231831e67514604199d3ed26395bbe0f89954718498a800085bd7d6eaef61c5d702e3a669532a227bd93 + checksum: c873189ac1e501825d647903baa125899c492cee962cb86ebb7455110bd09194eeb6943f5c58a1f808ce4ee2e20e305f5604a4e60b07003c82a6fc6ceaee5ea9 languageName: node linkType: hard -"@storybook/builder-webpack4@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/builder-webpack4@npm:6.5.15" +"@storybook/builder-webpack4@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/builder-webpack4@npm:6.5.16" dependencies: "@babel/core": ^7.12.10 - "@storybook/addons": 6.5.15 - "@storybook/api": 6.5.15 - "@storybook/channel-postmessage": 6.5.15 - "@storybook/channels": 6.5.15 - "@storybook/client-api": 6.5.15 - "@storybook/client-logger": 6.5.15 - "@storybook/components": 6.5.15 - "@storybook/core-common": 6.5.15 - "@storybook/core-events": 6.5.15 - "@storybook/node-logger": 6.5.15 - "@storybook/preview-web": 6.5.15 - "@storybook/router": 6.5.15 + "@storybook/addons": 6.5.16 + "@storybook/api": 6.5.16 + "@storybook/channel-postmessage": 6.5.16 + "@storybook/channels": 6.5.16 + "@storybook/client-api": 6.5.16 + "@storybook/client-logger": 6.5.16 + "@storybook/components": 6.5.16 + "@storybook/core-common": 6.5.16 + "@storybook/core-events": 6.5.16 + "@storybook/node-logger": 6.5.16 + "@storybook/preview-web": 6.5.16 + "@storybook/router": 6.5.16 "@storybook/semver": ^7.3.2 - "@storybook/store": 6.5.15 - "@storybook/theming": 6.5.15 - "@storybook/ui": 6.5.15 + "@storybook/store": 6.5.16 + "@storybook/theming": 6.5.16 + "@storybook/ui": 6.5.16 "@types/node": ^14.0.10 || ^16.0.0 "@types/webpack": ^4.41.26 autoprefixer: ^9.8.6 @@ -2109,30 +2109,30 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: bd676e9302d34445884376582c5d4cfe854ed8e64a9df6bbdcc76ef433534e65a23b1bf20c7225e85d21a27e1f1d905d0accd821fdef08afcd76569a8c8977c2 + checksum: 5e9137c390db00b4e166df3ca730eb1748f6bac92c841f3f75c37ad5277d6f5565f899de3bb0357fc51ce6821c8a8a8adba724e3dd7a3d1cc80816e09e5b7128 languageName: node linkType: hard "@storybook/builder-webpack5@npm:^6.5.9": - version: 6.5.15 - resolution: "@storybook/builder-webpack5@npm:6.5.15" + version: 6.5.16 + resolution: "@storybook/builder-webpack5@npm:6.5.16" dependencies: "@babel/core": ^7.12.10 - "@storybook/addons": 6.5.15 - "@storybook/api": 6.5.15 - "@storybook/channel-postmessage": 6.5.15 - "@storybook/channels": 6.5.15 - "@storybook/client-api": 6.5.15 - "@storybook/client-logger": 6.5.15 - "@storybook/components": 6.5.15 - "@storybook/core-common": 6.5.15 - "@storybook/core-events": 6.5.15 - "@storybook/node-logger": 6.5.15 - "@storybook/preview-web": 6.5.15 - "@storybook/router": 6.5.15 + "@storybook/addons": 6.5.16 + "@storybook/api": 6.5.16 + "@storybook/channel-postmessage": 6.5.16 + "@storybook/channels": 6.5.16 + "@storybook/client-api": 6.5.16 + "@storybook/client-logger": 6.5.16 + "@storybook/components": 6.5.16 + "@storybook/core-common": 6.5.16 + "@storybook/core-events": 6.5.16 + "@storybook/node-logger": 6.5.16 + "@storybook/preview-web": 6.5.16 + "@storybook/router": 6.5.16 "@storybook/semver": ^7.3.2 - "@storybook/store": 6.5.15 - "@storybook/theming": 6.5.15 + "@storybook/store": 6.5.16 + "@storybook/theming": 6.5.16 "@types/node": ^14.0.10 || ^16.0.0 babel-loader: ^8.0.0 babel-plugin-named-exports-order: ^0.0.2 @@ -2161,35 +2161,35 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 9bde333540c41c55e7687b1230fdd92926074df1a3be900b969d6d9eea240fb962b6fafb59e5c3fe83eeb42e0f0c835d2e226fc332f460f8aba0f4f49d833ffd + checksum: 0a6631f307c5ac56423860216d42ed95757906b004e949ed3dc2cce4f81d83d38de5cddbae65a0e65083eece6e4e8af05f6aabf5d78a80a7a7f62cf157a4e577 languageName: node linkType: hard -"@storybook/channel-postmessage@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/channel-postmessage@npm:6.5.15" +"@storybook/channel-postmessage@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/channel-postmessage@npm:6.5.16" dependencies: - "@storybook/channels": 6.5.15 - "@storybook/client-logger": 6.5.15 - "@storybook/core-events": 6.5.15 + "@storybook/channels": 6.5.16 + "@storybook/client-logger": 6.5.16 + "@storybook/core-events": 6.5.16 core-js: ^3.8.2 global: ^4.4.0 qs: ^6.10.0 telejson: ^6.0.8 - checksum: 7a09ba5bf163f8f5fef0bfd99eaab6c6391fa854e86bb44fcd0586bb73dd4ab5827cc23b7b38f993b81cbdb2ff8d58f81371be9301ddb3ea6f963ba560a42f09 + checksum: d3560d81dbf4710cc23b227c12be328d87e627581afcb5fec959f1e795fb2b5824db2a7f03a4ddcd185ec9a37a7025415d8bb43b7a245f2466395908eb3e9bc3 languageName: node linkType: hard -"@storybook/channel-websocket@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/channel-websocket@npm:6.5.15" +"@storybook/channel-websocket@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/channel-websocket@npm:6.5.16" dependencies: - "@storybook/channels": 6.5.15 - "@storybook/client-logger": 6.5.15 + "@storybook/channels": 6.5.16 + "@storybook/client-logger": 6.5.16 core-js: ^3.8.2 global: ^4.4.0 telejson: ^6.0.8 - checksum: c482b18b28f06644f684ed2b88ab53d6c5853925343e60a50a9bcfb2888123c4accfe30b51743905693e4d73c32c77e30d6dbaba377b486bee6e51faae39cf85 + checksum: 355c85f22d7cc65764871852debe347c43c3fe92d6a0caa64aecbe2dce78d4bf73b98e997099f9e4e7c204ad5821b979939b0700e446fa26478c1e1ba48e7380 languageName: node linkType: hard @@ -2204,28 +2204,28 @@ __metadata: languageName: node linkType: hard -"@storybook/channels@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/channels@npm:6.5.15" +"@storybook/channels@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/channels@npm:6.5.16" dependencies: core-js: ^3.8.2 ts-dedent: ^2.0.0 util-deprecate: ^1.0.2 - checksum: 7963c34246b3cc84bb6fb0965834110d9b839a5c32cced0756948e4e88fb8bf23a0d584723abbab6d30a6282fa1023017bb82eba68c23389652c77d8d33cb4f9 + checksum: 3d7f7bc19ed7b250976e00e02ab544408806b439106bed18a5db9815612f6c5df9bdf7c1a97b5a40ba3194184ebe7e4c75e2bca5496025d6b26afefa95cfccbd languageName: node linkType: hard -"@storybook/client-api@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/client-api@npm:6.5.15" +"@storybook/client-api@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/client-api@npm:6.5.16" dependencies: - "@storybook/addons": 6.5.15 - "@storybook/channel-postmessage": 6.5.15 - "@storybook/channels": 6.5.15 - "@storybook/client-logger": 6.5.15 - "@storybook/core-events": 6.5.15 + "@storybook/addons": 6.5.16 + "@storybook/channel-postmessage": 6.5.16 + "@storybook/channels": 6.5.16 + "@storybook/client-logger": 6.5.16 + "@storybook/core-events": 6.5.16 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/store": 6.5.15 + "@storybook/store": 6.5.16 "@types/qs": ^6.9.5 "@types/webpack-env": ^1.16.0 core-js: ^3.8.2 @@ -2242,7 +2242,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 0c3b3f7febe16b00beb4aeafe79fd97cc4a6b4db868e37002856fc34878bc955336929362b3015ba1688b47131ca0b729c94ee70f69855da0e819dad6d48ee1b + checksum: a62276fa67d2c3cc766ea9145d3798c0c8ef3f9de9fb18e7c43d67e39226f47a2546c4319ccc6075545df65dc4fc65bdb97e904062daf426be6534767eacada6 languageName: node linkType: hard @@ -2256,23 +2256,23 @@ __metadata: languageName: node linkType: hard -"@storybook/client-logger@npm:6.5.15, @storybook/client-logger@npm:^6.4.0": - version: 6.5.15 - resolution: "@storybook/client-logger@npm:6.5.15" +"@storybook/client-logger@npm:6.5.16, @storybook/client-logger@npm:^6.4.0": + version: 6.5.16 + resolution: "@storybook/client-logger@npm:6.5.16" dependencies: core-js: ^3.8.2 global: ^4.4.0 - checksum: cee16aea089b60b33ad643bde5e0d62274230d38e2033f0bfd0780fc092bc24b5acff63a6c569c9db989e59b89518ec964d0665a51548450716c4c50d3a3e66e + checksum: 0a86959b1bacb1b893e282173b48afe9c857b8cdc67a47ad87a7f11ba7dbc15ebc4f0d05c07dffb988e0cd3e1de0f09f300ee06c66afe4c50e9be83aaed75971 languageName: node linkType: hard -"@storybook/components@npm:6.5.15, @storybook/components@npm:^6.0.0": - version: 6.5.15 - resolution: "@storybook/components@npm:6.5.15" +"@storybook/components@npm:6.5.16, @storybook/components@npm:^6.0.0": + version: 6.5.16 + resolution: "@storybook/components@npm:6.5.16" dependencies: - "@storybook/client-logger": 6.5.15 + "@storybook/client-logger": 6.5.16 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/theming": 6.5.15 + "@storybook/theming": 6.5.16 core-js: ^3.8.2 memoizerific: ^1.11.3 qs: ^6.10.0 @@ -2281,24 +2281,24 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: c405643a002b7770567aba3f0e43cad975fbb0f728148f82c46c35b13958d3f6900eed619a60f22c0ee923c20828026d5f1c77cd950d21ebfd6cf57f8e64f791 + checksum: 1caf822bf1293ca043822f1c77f05c0f01631e8a61adad6bc4651ba9be78c8f4822ba0905e39c8feaa3fb44ae10422e9ccd3004348b18531fb82c54cfcea4fa9 languageName: node linkType: hard -"@storybook/core-client@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/core-client@npm:6.5.15" +"@storybook/core-client@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/core-client@npm:6.5.16" dependencies: - "@storybook/addons": 6.5.15 - "@storybook/channel-postmessage": 6.5.15 - "@storybook/channel-websocket": 6.5.15 - "@storybook/client-api": 6.5.15 - "@storybook/client-logger": 6.5.15 - "@storybook/core-events": 6.5.15 + "@storybook/addons": 6.5.16 + "@storybook/channel-postmessage": 6.5.16 + "@storybook/channel-websocket": 6.5.16 + "@storybook/client-api": 6.5.16 + "@storybook/client-logger": 6.5.16 + "@storybook/core-events": 6.5.16 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/preview-web": 6.5.15 - "@storybook/store": 6.5.15 - "@storybook/ui": 6.5.15 + "@storybook/preview-web": 6.5.16 + "@storybook/store": 6.5.16 + "@storybook/ui": 6.5.16 airbnb-js-shims: ^2.2.1 ansi-to-html: ^0.6.11 core-js: ^3.8.2 @@ -2316,13 +2316,13 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 60f03d031fa87a1a116b0ccbffd2270b8d28757d89c17af6eb368224603dfd0d219fd5ac086bf859cb8bda0f80b444195c7df94c4486107b9c5a6fbab29c65ac + checksum: 467710777ddd740c431cf65035ecc489daae2fc5f4844a40b7339b806535e239140f40442a0e1d89356e107169c39d9e84d726c01982ed4609c043b6861e0778 languageName: node linkType: hard -"@storybook/core-common@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/core-common@npm:6.5.15" +"@storybook/core-common@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/core-common@npm:6.5.16" dependencies: "@babel/core": ^7.12.10 "@babel/plugin-proposal-class-properties": ^7.12.1 @@ -2346,7 +2346,7 @@ __metadata: "@babel/preset-react": ^7.12.10 "@babel/preset-typescript": ^7.12.7 "@babel/register": ^7.12.1 - "@storybook/node-logger": 6.5.15 + "@storybook/node-logger": 6.5.16 "@storybook/semver": ^7.3.2 "@types/node": ^14.0.10 || ^16.0.0 "@types/pretty-hrtime": ^1.0.0 @@ -2363,7 +2363,7 @@ __metadata: glob: ^7.1.6 handlebars: ^4.7.7 interpret: ^2.2.0 - json5: ^2.1.3 + json5: ^2.2.3 lazy-universal-dotenv: ^3.0.1 picomatch: ^2.3.0 pkg-dir: ^5.0.0 @@ -2380,7 +2380,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 9c19c348137bea23295ff330d3a62d3551b6a8a2933f254f3f1cace4ef05e46b6c97e0cbca67cc5be45164e223d5ff52eced54b76564891c8a2dd085e3be4cc4 + checksum: 886a701876599939950c3c98e306b373cd026c7b995ca08d88475b3f35624a53763459d6b202728ec703e99126813a254b956c2d0fe7e85f99dcb5765a999b19 languageName: node linkType: hard @@ -2393,31 +2393,31 @@ __metadata: languageName: node linkType: hard -"@storybook/core-events@npm:6.5.15, @storybook/core-events@npm:^6.0.0": - version: 6.5.15 - resolution: "@storybook/core-events@npm:6.5.15" +"@storybook/core-events@npm:6.5.16, @storybook/core-events@npm:^6.0.0": + version: 6.5.16 + resolution: "@storybook/core-events@npm:6.5.16" dependencies: core-js: ^3.8.2 - checksum: 89916720933bc4de0b1f25c7cb1b8580d3cdd213b21a360f18ebd0b790cce2c641696282fee29bbc482ab2cc656271b2f0569f79559d90fb01fb16473421e79e + checksum: 1844bdabfb7828af7ddd54129fbb321bf65d8b65459eaac99c8f3f94c7c2f0ee000468362758076444083f863a3bc835ecd1e4f2128524eb5c00c8a576473bc9 languageName: node linkType: hard -"@storybook/core-server@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/core-server@npm:6.5.15" +"@storybook/core-server@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/core-server@npm:6.5.16" dependencies: "@discoveryjs/json-ext": ^0.5.3 - "@storybook/builder-webpack4": 6.5.15 - "@storybook/core-client": 6.5.15 - "@storybook/core-common": 6.5.15 - "@storybook/core-events": 6.5.15 + "@storybook/builder-webpack4": 6.5.16 + "@storybook/core-client": 6.5.16 + "@storybook/core-common": 6.5.16 + "@storybook/core-events": 6.5.16 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/csf-tools": 6.5.15 - "@storybook/manager-webpack4": 6.5.15 - "@storybook/node-logger": 6.5.15 + "@storybook/csf-tools": 6.5.16 + "@storybook/manager-webpack4": 6.5.16 + "@storybook/node-logger": 6.5.16 "@storybook/semver": ^7.3.2 - "@storybook/store": 6.5.15 - "@storybook/telemetry": 6.5.15 + "@storybook/store": 6.5.16 + "@storybook/telemetry": 6.5.16 "@types/node": ^14.0.10 || ^16.0.0 "@types/node-fetch": ^2.5.7 "@types/pretty-hrtime": ^1.0.0 @@ -2461,16 +2461,16 @@ __metadata: optional: true typescript: optional: true - checksum: 927085bd6e2c9cf756795760c5647ed5b40151e94a192e64313091fda8a06993541ecabb9c730cb01eb8baef0613b73ff63824812cfd7b8bbed3fd2ead8d1f18 + checksum: 2027adba39b2e0a5c3664241f48ec256a92866755aace96f3b8e2064b50237bbcd4e814bc58a1084006baae41c48d7d0eccefc9867d84e17d68d7f969e65f149 languageName: node linkType: hard -"@storybook/core@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/core@npm:6.5.15" +"@storybook/core@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/core@npm:6.5.16" dependencies: - "@storybook/core-client": 6.5.15 - "@storybook/core-server": 6.5.15 + "@storybook/core-client": 6.5.16 + "@storybook/core-server": 6.5.16 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2482,13 +2482,13 @@ __metadata: optional: true typescript: optional: true - checksum: a7eca427b14a9c1f557d598e7ac599dc120d382d3d762437b3b6ebb4638b19a74e48f9e8e526365951ec623d10b82d67279226d7e6ff54ac095afee02992e666 + checksum: f1732338741692007230a351419ef3aa4e387810d7d0c0e6ffb1159e1de4d757199f2b543cf4f6413fc40acda514b908d2fd9b3e0d56e3f6cec1e3a82c2fcc10 languageName: node linkType: hard -"@storybook/csf-tools@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/csf-tools@npm:6.5.15" +"@storybook/csf-tools@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/csf-tools@npm:6.5.16" dependencies: "@babel/core": ^7.12.10 "@babel/generator": ^7.12.11 @@ -2509,7 +2509,7 @@ __metadata: peerDependenciesMeta: "@storybook/mdx2-csf": optional: true - checksum: d7faafd175b232bb8fa6008ae6db5a40619a158ed7556686649dee665ac0cbbdb3cc404d2b9c0314ba7783c3f5baf1d87788f324d24136bd0f8cc671d573208b + checksum: ee71a47d90186c35fc1dbcb6ece2888ff4d730bde823bb1bd242d802b74045b482d2c469f3a91687b691b6f828ce449b182896d1912033846b9746457ee960ba languageName: node linkType: hard @@ -2522,18 +2522,18 @@ __metadata: languageName: node linkType: hard -"@storybook/docs-tools@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/docs-tools@npm:6.5.15" +"@storybook/docs-tools@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/docs-tools@npm:6.5.16" dependencies: "@babel/core": ^7.12.10 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/store": 6.5.15 + "@storybook/store": 6.5.16 core-js: ^3.8.2 doctrine: ^3.0.0 lodash: ^4.17.21 regenerator-runtime: ^0.13.7 - checksum: 051239a82cff47dbc52fae112c4c144d6e103cbb169c239b0a99fb0cb3e82fba2e460c9487469fafc19ee81ef2ecc33d59b05457c3c74375685de0f537460071 + checksum: 6351c5b1cbe5820f0f0dfcc3e4e7da8cca3c8d73a06c5803e65cb86e9e81ccbae53cec8e1b579af0ac9a5bbb6d4b6ac03ffe26af2220dc5dfe8f065067f0e2d7 languageName: node linkType: hard @@ -2550,19 +2550,19 @@ __metadata: languageName: node linkType: hard -"@storybook/manager-webpack4@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/manager-webpack4@npm:6.5.15" +"@storybook/manager-webpack4@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/manager-webpack4@npm:6.5.16" dependencies: "@babel/core": ^7.12.10 "@babel/plugin-transform-template-literals": ^7.12.1 "@babel/preset-react": ^7.12.10 - "@storybook/addons": 6.5.15 - "@storybook/core-client": 6.5.15 - "@storybook/core-common": 6.5.15 - "@storybook/node-logger": 6.5.15 - "@storybook/theming": 6.5.15 - "@storybook/ui": 6.5.15 + "@storybook/addons": 6.5.16 + "@storybook/core-client": 6.5.16 + "@storybook/core-common": 6.5.16 + "@storybook/node-logger": 6.5.16 + "@storybook/theming": 6.5.16 + "@storybook/ui": 6.5.16 "@types/node": ^14.0.10 || ^16.0.0 "@types/webpack": ^4.41.26 babel-loader: ^8.0.0 @@ -2595,23 +2595,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: de7b2624bf44cf4eb59839ac756e9e28715caae1d5efdfbd1e2cefb55a385cf80f3a651a29ed75a905f825d6b299ba46c3cd71068eecb3b985b5a315ed03470b + checksum: 873c871c822ecde30fbd95e9517549a18c5bb2de46d6160d6dcd7c1b5635fda2073b5bc4bd4d87e72de6e8df8bccf39b81f062e07cd7a23ffb4b43293e488fbb languageName: node linkType: hard "@storybook/manager-webpack5@npm:^6.5.9": - version: 6.5.15 - resolution: "@storybook/manager-webpack5@npm:6.5.15" + version: 6.5.16 + resolution: "@storybook/manager-webpack5@npm:6.5.16" dependencies: "@babel/core": ^7.12.10 "@babel/plugin-transform-template-literals": ^7.12.1 "@babel/preset-react": ^7.12.10 - "@storybook/addons": 6.5.15 - "@storybook/core-client": 6.5.15 - "@storybook/core-common": 6.5.15 - "@storybook/node-logger": 6.5.15 - "@storybook/theming": 6.5.15 - "@storybook/ui": 6.5.15 + "@storybook/addons": 6.5.16 + "@storybook/core-client": 6.5.16 + "@storybook/core-common": 6.5.16 + "@storybook/node-logger": 6.5.16 + "@storybook/theming": 6.5.16 + "@storybook/ui": 6.5.16 "@types/node": ^14.0.10 || ^16.0.0 babel-loader: ^8.0.0 case-sensitive-paths-webpack-plugin: ^2.3.0 @@ -2641,7 +2641,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 99f18a752230fa6360b216e3a7f85c70fe92baf01677571653b4f9fd62735d9ab12a0b91e4ae7eabd66b03f37e0b58f01fad8e5880a8e2012a98f6aedc944da1 + checksum: 1349c6b2af9d0cebc3c35c929e2ea0f9ff8d12f7a04c30126160d9c89a45b92412218304abda9126cf96303a2d73fb288a689a191fec12b0189f19e5f2032977 languageName: node linkType: hard @@ -2664,29 +2664,29 @@ __metadata: languageName: node linkType: hard -"@storybook/node-logger@npm:6.5.15, @storybook/node-logger@npm:^6.5.9": - version: 6.5.15 - resolution: "@storybook/node-logger@npm:6.5.15" +"@storybook/node-logger@npm:6.5.16, @storybook/node-logger@npm:^6.5.9": + version: 6.5.16 + resolution: "@storybook/node-logger@npm:6.5.16" dependencies: "@types/npmlog": ^4.1.2 chalk: ^4.1.0 core-js: ^3.8.2 npmlog: ^5.0.1 pretty-hrtime: ^1.0.3 - checksum: 9c01127d3b57db7a85759d2f179afec0e1207c0754e80e22472e73468f831e1dafa2a5bf1047e54f92d47b5103325c157c14655208a6ddcdb8f9e7ee0b256e48 + checksum: 4ae47c03b6cec6b820e0e482e6f6675bf745fca5c124eb919240c0339b9f4a1b110c8fde7c5ddbc1748d3992773c61d37ba1f5c489b42279cf03517d4e1d51c5 languageName: node linkType: hard -"@storybook/preview-web@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/preview-web@npm:6.5.15" +"@storybook/preview-web@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/preview-web@npm:6.5.16" dependencies: - "@storybook/addons": 6.5.15 - "@storybook/channel-postmessage": 6.5.15 - "@storybook/client-logger": 6.5.15 - "@storybook/core-events": 6.5.15 + "@storybook/addons": 6.5.16 + "@storybook/channel-postmessage": 6.5.16 + "@storybook/client-logger": 6.5.16 + "@storybook/core-events": 6.5.16 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/store": 6.5.15 + "@storybook/store": 6.5.16 ansi-to-html: ^0.6.11 core-js: ^3.8.2 global: ^4.4.0 @@ -2700,7 +2700,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: fc178af772f39fcfe1b9926bf62bd7642984080442e8f7f2a0c6fe421513f9930ff5ccfea302d212199adf418c4bf9fc498ff65c30ad6e1cdd1b485a6d92b190 + checksum: 6161c96e9ee459ef93c3d972374ce339ae57d0c5fa25730007484e4824f79a34814110431db97031107558e5ce41259710f8a54564e8975db0215b78c5572a1b languageName: node linkType: hard @@ -2723,22 +2723,22 @@ __metadata: linkType: hard "@storybook/react@npm:^6.5.9": - version: 6.5.15 - resolution: "@storybook/react@npm:6.5.15" + version: 6.5.16 + resolution: "@storybook/react@npm:6.5.16" dependencies: "@babel/preset-flow": ^7.12.1 "@babel/preset-react": ^7.12.10 "@pmmmwh/react-refresh-webpack-plugin": ^0.5.3 - "@storybook/addons": 6.5.15 - "@storybook/client-logger": 6.5.15 - "@storybook/core": 6.5.15 - "@storybook/core-common": 6.5.15 + "@storybook/addons": 6.5.16 + "@storybook/client-logger": 6.5.16 + "@storybook/core": 6.5.16 + "@storybook/core-common": 6.5.16 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/docs-tools": 6.5.15 - "@storybook/node-logger": 6.5.15 + "@storybook/docs-tools": 6.5.16 + "@storybook/node-logger": 6.5.16 "@storybook/react-docgen-typescript-plugin": 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0 "@storybook/semver": ^7.3.2 - "@storybook/store": 6.5.15 + "@storybook/store": 6.5.16 "@types/estree": ^0.0.51 "@types/node": ^14.14.20 || ^16.0.0 "@types/webpack-env": ^1.16.0 @@ -2783,7 +2783,7 @@ __metadata: build-storybook: bin/build.js start-storybook: bin/index.js storybook-server: bin/index.js - checksum: c36f9a2401633b9632e5fce05bb43e8ea0a5338c8f0dc9e0da5eb87c7cfd1a3ef819124499679a3c797fbbe8278f03794d757563f388136a349e3815747036ae + checksum: c5396e748ef13acdb2590dc15ff0b3d95d3599abd0c372786d707164d3f71e46836240195dcd6f4bce6f90d2792602f6d31373fc87e069ef3c73a63d1e9a1289 languageName: node linkType: hard @@ -2803,11 +2803,11 @@ __metadata: languageName: node linkType: hard -"@storybook/router@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/router@npm:6.5.15" +"@storybook/router@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/router@npm:6.5.16" dependencies: - "@storybook/client-logger": 6.5.15 + "@storybook/client-logger": 6.5.16 core-js: ^3.8.2 memoizerific: ^1.11.3 qs: ^6.10.0 @@ -2815,7 +2815,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: d5ac1ac0d161e53764411dc84febed3819c5cefe669f2933434bcdc25bf011f89d2df2a504af8bf77f454e6598a74c794a17d01aad734c6ebe28cc13c490fff9 + checksum: 2812b93997026b1d85f02072d04f18e98e24de288efb73402f8d15ececd390e13dc620ef011268e09986c629f497ffa03230c2431e89b4e37c01b70761be2c6d languageName: node linkType: hard @@ -2831,12 +2831,12 @@ __metadata: languageName: node linkType: hard -"@storybook/source-loader@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/source-loader@npm:6.5.15" +"@storybook/source-loader@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/source-loader@npm:6.5.16" dependencies: - "@storybook/addons": 6.5.15 - "@storybook/client-logger": 6.5.15 + "@storybook/addons": 6.5.16 + "@storybook/client-logger": 6.5.16 "@storybook/csf": 0.0.2--canary.4566f4d.1 core-js: ^3.8.2 estraverse: ^5.2.0 @@ -2848,17 +2848,17 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 2330d2b16f097c4be4b0eccc466ae0142c2e04198acc529204d80c1005c1c32b6da8313661b10e641020efdfe4f1dd4f0ac67bc2c3797ae49383815f668ede5d + checksum: a299acdd6f36add3222ef294e1118b7b1f38c2cd2b4648ebf9e1803a3ccf532c147dbe643a527915b570eb3ce36c4a17ca2b3566fa58a2a0a7821f0849ec3e07 languageName: node linkType: hard -"@storybook/store@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/store@npm:6.5.15" +"@storybook/store@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/store@npm:6.5.16" dependencies: - "@storybook/addons": 6.5.15 - "@storybook/client-logger": 6.5.15 - "@storybook/core-events": 6.5.15 + "@storybook/addons": 6.5.16 + "@storybook/client-logger": 6.5.16 + "@storybook/core-events": 6.5.16 "@storybook/csf": 0.0.2--canary.4566f4d.1 core-js: ^3.8.2 fast-deep-equal: ^3.1.3 @@ -2874,16 +2874,16 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 918c3ed8c7a55ae4bf8bcb3a108d99a9d077c951b3f386cb0f8939d2eed7c9a9a2000075b341d5c934c0308c24287fc5cd110042a384411c25cec7632dfa5abb + checksum: f438fb020af240e23348742b2936a326bef1f7ffd489fe9f39cfd516310ab592a11609205fdacd11090b0c0b6bc72c75dff986085a6a97acc5efa64829a49309 languageName: node linkType: hard -"@storybook/telemetry@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/telemetry@npm:6.5.15" +"@storybook/telemetry@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/telemetry@npm:6.5.16" dependencies: - "@storybook/client-logger": 6.5.15 - "@storybook/core-common": 6.5.15 + "@storybook/client-logger": 6.5.16 + "@storybook/core-common": 6.5.16 chalk: ^4.1.0 core-js: ^3.8.2 detect-package-manager: ^2.0.1 @@ -2894,7 +2894,7 @@ __metadata: nanoid: ^3.3.1 read-pkg-up: ^7.0.1 regenerator-runtime: ^0.13.7 - checksum: aebb83186ff7308e21185a7152b27aed43f6d3967a7253ac94e3d4c1bce4935c471500c37d195e03f98953944812d2b24518d4147704e7ffb211430b27a2354e + checksum: 21eef590b04db8ee85b0b1d875d8646e26492b3e90538a248314f92d6ab0642ec65db09c5d2bc0d7f547f0fa6b83ca4442bdc115b400861360e02d8cf179497e languageName: node linkType: hard @@ -2926,34 +2926,34 @@ __metadata: languageName: node linkType: hard -"@storybook/theming@npm:6.5.15, @storybook/theming@npm:^6.0.0": - version: 6.5.15 - resolution: "@storybook/theming@npm:6.5.15" +"@storybook/theming@npm:6.5.16, @storybook/theming@npm:^6.0.0": + version: 6.5.16 + resolution: "@storybook/theming@npm:6.5.16" dependencies: - "@storybook/client-logger": 6.5.15 + "@storybook/client-logger": 6.5.16 core-js: ^3.8.2 memoizerific: ^1.11.3 regenerator-runtime: ^0.13.7 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 84d09b6bdd0a00246b207ef4307fc0ecbb5861792547a070ed45470335c323f18ba607cd1d3f0a5cea7e979dd73315cdb091548fe70e5946c1593d8c691be7ba + checksum: 349affa5c5208240291a5d24c73d852e220bfaf36b8fda70564aec1cac6070248ce7566ccb755c55a6ce0844ab2bbfd55881f6f788240b38cb407714e393c6f3 languageName: node linkType: hard -"@storybook/ui@npm:6.5.15": - version: 6.5.15 - resolution: "@storybook/ui@npm:6.5.15" +"@storybook/ui@npm:6.5.16": + version: 6.5.16 + resolution: "@storybook/ui@npm:6.5.16" dependencies: - "@storybook/addons": 6.5.15 - "@storybook/api": 6.5.15 - "@storybook/channels": 6.5.15 - "@storybook/client-logger": 6.5.15 - "@storybook/components": 6.5.15 - "@storybook/core-events": 6.5.15 - "@storybook/router": 6.5.15 + "@storybook/addons": 6.5.16 + "@storybook/api": 6.5.16 + "@storybook/channels": 6.5.16 + "@storybook/client-logger": 6.5.16 + "@storybook/components": 6.5.16 + "@storybook/core-events": 6.5.16 + "@storybook/router": 6.5.16 "@storybook/semver": ^7.3.2 - "@storybook/theming": 6.5.15 + "@storybook/theming": 6.5.16 core-js: ^3.8.2 memoizerific: ^1.11.3 qs: ^6.10.0 @@ -2962,7 +2962,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 8b75290c65a6a2beb3db4157ed95ce74dab06d5499dc3fc7a848fa5c9fc0f506bf6533638bb50c3a1f27acfeaa6ade0acdde8beede2241eba8d577965d85d299 + checksum: bfebcf4d56dc5fd6024eaa08fe50aecc3c348670b7c0ec6b467680d64d525421580b9c98839bcaf1e2a9e69b78478a21c9943a9a392b49a0405b4784038b2eba languageName: node linkType: hard @@ -7606,12 +7606,12 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.1.2, json5@npm:^2.1.3, json5@npm:^2.2.1": - version: 2.2.1 - resolution: "json5@npm:2.2.1" +"json5@npm:^2.1.2, json5@npm:^2.2.1, json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" bin: json5: lib/cli.js - checksum: 74b8a23b102a6f2bf2d224797ae553a75488b5adbaee9c9b6e5ab8b510a2fc6e38f876d4c77dea672d4014a44b2399e15f2051ac2b37b87f74c0c7602003543b + checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349 languageName: node linkType: hard From 0c166749cd5c3272a04b13ec10baf44025157343 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 27 Jan 2023 12:06:47 +0000 Subject: [PATCH 085/156] fix(deps): update dependency @graphql-tools/schema to v9.0.14 Signed-off-by: Renovate Bot <bot@renovateapp.com> --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5bedda0f23..c15fe997d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9854,15 +9854,15 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/merge@npm:8.3.15, @graphql-tools/merge@npm:^8.2.6": - version: 8.3.15 - resolution: "@graphql-tools/merge@npm:8.3.15" +"@graphql-tools/merge@npm:8.3.16, @graphql-tools/merge@npm:^8.2.6": + version: 8.3.16 + resolution: "@graphql-tools/merge@npm:8.3.16" dependencies: "@graphql-tools/utils": 9.1.4 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 7823d3b3a2bb7a661826eb8fce8a4fcb17439224818aa08ca814d7b25324b66b790cf8e7fa083dfa9f41b2213355fb1f0db88d1e7334788347a6d69c8f5555e9 + checksum: 4d7fa594e0d97b6d596c85619a8203cb9c88452b75efac4191697de00db5d043639ed47f6bf0a3ccc11e8638714d92a4a8bc37e77b61b46790ddf4a1e5d4bb87 languageName: node linkType: hard @@ -10002,16 +10002,16 @@ __metadata: linkType: hard "@graphql-tools/schema@npm:^9.0.0": - version: 9.0.13 - resolution: "@graphql-tools/schema@npm:9.0.13" + version: 9.0.14 + resolution: "@graphql-tools/schema@npm:9.0.14" dependencies: - "@graphql-tools/merge": 8.3.15 + "@graphql-tools/merge": 8.3.16 "@graphql-tools/utils": 9.1.4 tslib: ^2.4.0 value-or-promise: 1.0.12 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: fa5c5033c79e3ab210207c68bf80729448f0ae0bf071e029a218043d952dec8352b0d4ad467ca789a08e292d60c1ee111d266a2193bd50759c9eb82e8f9ad586 + checksum: ae958892363fe8b1715a9fd3c4bdb56d0d5d429693dbb9774ce930d104ed5a7c94db3c41c12d91fd930bf90ab186337d3ba660e765a99a98bde892f0d2dcf40e languageName: node linkType: hard From 27cceaead8bdf0d06b7d61901fa83668f762e55d Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg <poldsberg@gmail.com> Date: Fri, 27 Jan 2023 13:08:40 +0100 Subject: [PATCH 086/156] docs/backend-system: add plugin creation section Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com> --- .../backend-system/building-plugins-and-modules/01-index.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/backend-system/building-plugins-and-modules/01-index.md b/docs/backend-system/building-plugins-and-modules/01-index.md index 05908e59cb..7603306b33 100644 --- a/docs/backend-system/building-plugins-and-modules/01-index.md +++ b/docs/backend-system/building-plugins-and-modules/01-index.md @@ -16,6 +16,12 @@ Backend [plugins](../architecture/04-plugins.md) and backend _features_, are the building blocks that adopters add to their [backends](../architecture/02-backends.md). +## Creating a new Plugin + +This guide assumes that you already have a Backend project set up. Even if you only want to develop a single plugin for publishing, we still recommend that you do so in a standard Backstage monorepo project, as you often end up needing multiple package. For instructions on how to set up a new project, see our [getting started](../../getting-started/index.md#prerequisites) documentation. + +To create a Backend plugin, run `yarn new`, select `backend-plugin`, and fill out the rest of the prompts. This will create a new package at `plugins/<pluginId>-backend`, which will be the main entrypoint for your plugin. + ## Plugins A basic backend plugin might look as follows: From d457090598add86f85e73dbbf910220ec8332378 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg <poldsberg@gmail.com> Date: Fri, 27 Jan 2023 13:23:48 +0100 Subject: [PATCH 087/156] Update docs/backend-system/building-plugins-and-modules/01-index.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Fredrik Adelöw <freben@gmail.com> Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com> --- docs/backend-system/building-plugins-and-modules/01-index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/backend-system/building-plugins-and-modules/01-index.md b/docs/backend-system/building-plugins-and-modules/01-index.md index 7603306b33..01e35036aa 100644 --- a/docs/backend-system/building-plugins-and-modules/01-index.md +++ b/docs/backend-system/building-plugins-and-modules/01-index.md @@ -18,7 +18,7 @@ backend _features_, are the building blocks that adopters add to their ## Creating a new Plugin -This guide assumes that you already have a Backend project set up. Even if you only want to develop a single plugin for publishing, we still recommend that you do so in a standard Backstage monorepo project, as you often end up needing multiple package. For instructions on how to set up a new project, see our [getting started](../../getting-started/index.md#prerequisites) documentation. +This guide assumes that you already have a Backend project set up. Even if you only want to develop a single plugin for publishing, we still recommend that you do so in a standard Backstage monorepo project, as you often end up needing multiple packages. For instructions on how to set up a new project, see our [getting started](../../getting-started/index.md#prerequisites) documentation. To create a Backend plugin, run `yarn new`, select `backend-plugin`, and fill out the rest of the prompts. This will create a new package at `plugins/<pluginId>-backend`, which will be the main entrypoint for your plugin. From 0c1fc3986c3db3725f27a50591a6c7493ebba638 Mon Sep 17 00:00:00 2001 From: Konstantin Matyukhin <kmatyukhin@gmail.com> Date: Fri, 27 Jan 2023 14:15:01 +0100 Subject: [PATCH 088/156] Add Markdown support in the About Card description section To keep consistency with the Scaffolder template cards this commit introduces Markdown support in the Catalog components About Card Signed-off-by: Konstantin Matyukhin <kmatyukhin@gmail.com> --- .changeset/many-nails-joke.md | 5 +++++ .../examples/components/petstore-component.yaml | 7 +++++-- .../catalog/src/components/AboutCard/AboutContent.tsx | 10 ++++++---- 3 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 .changeset/many-nails-joke.md diff --git a/.changeset/many-nails-joke.md b/.changeset/many-nails-joke.md new file mode 100644 index 0000000000..8cfa79a446 --- /dev/null +++ b/.changeset/many-nails-joke.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Added Markdown support in the About card description section diff --git a/packages/catalog-model/examples/components/petstore-component.yaml b/packages/catalog-model/examples/components/petstore-component.yaml index 878fabd551..cdac4ce1ae 100644 --- a/packages/catalog-model/examples/components/petstore-component.yaml +++ b/packages/catalog-model/examples/components/petstore-component.yaml @@ -2,8 +2,11 @@ apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: petstore - # This is an extra long description - description: The Petstore is an example API used to show features of the OpenAPI spec. + # This is an extra long description with Markdown + description: | + [The Petstore](http://petstore.example.com) is an example API used to show features of the OpenAPI spec. + - First item + - Second item links: - url: https://github.com/swagger-api/swagger-petstore title: GitHub Repo diff --git a/plugins/catalog/src/components/AboutCard/AboutContent.tsx b/plugins/catalog/src/components/AboutCard/AboutContent.tsx index 260a0eccbf..245308cee2 100644 --- a/plugins/catalog/src/components/AboutCard/AboutContent.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutContent.tsx @@ -25,7 +25,8 @@ import { getEntityRelations, } from '@backstage/plugin-catalog-react'; import { JsonArray } from '@backstage/types'; -import { Chip, Grid, makeStyles, Typography } from '@material-ui/core'; +import { Chip, Grid, makeStyles } from '@material-ui/core'; +import { MarkdownContent } from '@backstage/core-components'; import React from 'react'; import { AboutField } from './AboutField'; import { LinksGridList } from '../EntityLinksCard/LinksGridList'; @@ -111,9 +112,10 @@ export function AboutContent(props: AboutContentProps) { return ( <Grid container> <AboutField label="Description" gridSizes={{ xs: 12 }}> - <Typography variant="body2" paragraph className={classes.description}> - {entity?.metadata?.description || 'No description'} - </Typography> + <MarkdownContent + className={classes.description} + content={entity?.metadata?.description || 'No description'} + /> </AboutField> <AboutField label="Owner" From 5fb4fd04e4fbe0c3944cf39faedf792ce3b334a1 Mon Sep 17 00:00:00 2001 From: Matt Benson <gudnabrsam@gmail.com> Date: Fri, 27 Jan 2023 12:58:12 -0600 Subject: [PATCH 089/156] issue 15788: restore schema-based review step property obfuscation Signed-off-by: Matt Benson <gudnabrsam@gmail.com> --- .../src/components/MultistepJsonForm/ReviewStep.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/scaffolder/src/components/MultistepJsonForm/ReviewStep.tsx b/plugins/scaffolder/src/components/MultistepJsonForm/ReviewStep.tsx index d78d726869..1bcf06eee7 100644 --- a/plugins/scaffolder/src/components/MultistepJsonForm/ReviewStep.tsx +++ b/plugins/scaffolder/src/components/MultistepJsonForm/ReviewStep.tsx @@ -98,7 +98,12 @@ export const ReviewStep = (props: ReviewStepProps) => { <Typography variant="h6">Review and create</Typography> <StructuredMetadataTable dense - metadata={getReviewData(formData, getUiSchemasFromSteps(steps))} + metadata={getReviewData( + formData, + getUiSchemasFromSteps( + steps.map(({ mergedSchema }) => ({ schema: mergedSchema })), + ), + )} /> <Box mb={4} /> <Button onClick={handleBack} disabled={disableButtons}> From 38992bdbaf5361dac1424352ba02eebace6e5388 Mon Sep 17 00:00:00 2001 From: Matt Benson <gudnabrsam@gmail.com> Date: Fri, 27 Jan 2023 13:05:49 -0600 Subject: [PATCH 090/156] add changeset for review step fix Signed-off-by: Matt Benson <gudnabrsam@gmail.com> --- .changeset/thick-clocks-pump.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/thick-clocks-pump.md diff --git a/.changeset/thick-clocks-pump.md b/.changeset/thick-clocks-pump.md new file mode 100644 index 0000000000..6b3b6e86de --- /dev/null +++ b/.changeset/thick-clocks-pump.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +Fixed bug in review step refactor that caused schema-based display settings for individual property values to be discarded. From 5cbcdbf3a5c7f8ba064dc3999be00e0ea1b66167 Mon Sep 17 00:00:00 2001 From: Jamie Klassen <jklassen@vmware.com> Date: Fri, 27 Jan 2023 22:37:23 -0500 Subject: [PATCH 091/156] Tweak Gitlab Org Data docs Add it to the sidebar, and make the title consistent with the other org data integration page titles. Signed-off-by: Jamie Klassen <jklassen@vmware.com> --- docs/integrations/gitlab/org.md | 2 +- microsite/sidebars.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/integrations/gitlab/org.md b/docs/integrations/gitlab/org.md index fc87f968d1..100b2c09fd 100644 --- a/docs/integrations/gitlab/org.md +++ b/docs/integrations/gitlab/org.md @@ -1,6 +1,6 @@ --- id: org -title: GitLab Org +title: GitLab Organizational Data sidebar_label: Org Data description: Importing users and groups from a GitLab organization into Backstage --- diff --git a/microsite/sidebars.json b/microsite/sidebars.json index 02e0c82fd4..fcded5ebfb 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -201,7 +201,8 @@ "label": "GitLab", "ids": [ "integrations/gitlab/locations", - "integrations/gitlab/discovery" + "integrations/gitlab/discovery", + "integrations/gitlab/org" ] }, { From 098cf0f8c0283183a0e00e28cebf7cec4e5a106e Mon Sep 17 00:00:00 2001 From: Camila Belo <camilaibs@gmail.com> Date: Sun, 22 Jan 2023 19:30:41 +0100 Subject: [PATCH 092/156] feat(search): create search result list item extensions Signed-off-by: Camila Belo <camilaibs@gmail.com> --- plugins/search-react/src/extensions.test.tsx | 209 ++++++++++++++++ plugins/search-react/src/extensions.tsx | 238 +++++++++++++++++++ plugins/search-react/src/index.ts | 1 + 3 files changed, 448 insertions(+) create mode 100644 plugins/search-react/src/extensions.test.tsx create mode 100644 plugins/search-react/src/extensions.tsx diff --git a/plugins/search-react/src/extensions.test.tsx b/plugins/search-react/src/extensions.test.tsx new file mode 100644 index 0000000000..24c115e572 --- /dev/null +++ b/plugins/search-react/src/extensions.test.tsx @@ -0,0 +1,209 @@ +/* + * Copyright 2023 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 { screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; + +import { ListItem, ListItemText } from '@material-ui/core'; + +import { + wrapInTestApp, + renderWithEffects, + TestApiProvider, + MockAnalyticsApi, +} from '@backstage/test-utils'; +import { + createPlugin, + BackstagePlugin, + analyticsApiRef, +} from '@backstage/core-plugin-api'; +import { SearchResult, SearchDocument } from '@backstage/plugin-search-common'; + +import { + SearchResultListItemExtensions, + createSearchResultListItemExtension, + SearchResultListItemExtensionOptions, +} from './extensions'; + +const analyticsApiMock = new MockAnalyticsApi(); + +const results = [ + { + type: 'explore', + document: { + location: 'search/search-result1', + title: 'Search Result 1', + text: 'Some text from the search result 1', + }, + }, + { + type: 'techdocs', + document: { + location: 'search/search-result2', + title: 'Search Result 2', + text: 'Some text from the search result 2', + }, + }, +]; + +const createExtension = ( + plugin: BackstagePlugin, + options: Partial< + Omit< + SearchResultListItemExtensionOptions< + (props: { result?: SearchDocument }) => JSX.Element | null + >, + 'name' + > + > = {}, +) => { + const { + predicate, + component = async () => (props: { result?: SearchDocument }) => + ( + <ListItem> + <ListItemText primary="Default" secondary={props.result?.title} /> + </ListItem> + ), + } = options; + return plugin.provide( + createSearchResultListItemExtension({ + predicate, + component, + name: 'TestSearchResultItemExtension', + }), + ); +}; + +describe('extensions', () => { + it('renders without exploding', async () => { + await renderWithEffects( + wrapInTestApp( + <TestApiProvider apis={[[analyticsApiRef, analyticsApiMock]]}> + <SearchResultListItemExtensions results={results} /> + </TestApiProvider>, + ), + ); + + expect(screen.getByText('Search Result 1')).toBeInTheDocument(); + expect( + screen.getByText('Some text from the search result 1'), + ).toBeInTheDocument(); + + expect(screen.getByText('Search Result 2')).toBeInTheDocument(); + expect( + screen.getByText('Some text from the search result 2'), + ).toBeInTheDocument(); + }); + + it('capture results discovery events', async () => { + await renderWithEffects( + wrapInTestApp( + <TestApiProvider apis={[[analyticsApiRef, analyticsApiMock]]}> + <SearchResultListItemExtensions results={results} /> + </TestApiProvider>, + ), + ); + + await userEvent.click( + screen.getByRole('button', { name: /Search Result 1/ }), + ); + + expect(analyticsApiMock.getEvents()[0]).toMatchObject({ + action: 'discover', + subject: 'Search Result 1', + context: { routeRef: 'unknown', pluginId: 'root', extension: 'App' }, + attributes: { to: 'search/search-result1' }, + }); + }); + + it('Could be used as simple components', async () => { + const plugin = createPlugin({ id: 'plugin' }); + const DefaultSearchResultListItemExtension = createExtension(plugin); + + await renderWithEffects( + wrapInTestApp( + <TestApiProvider apis={[[analyticsApiRef, analyticsApiMock]]}> + <DefaultSearchResultListItemExtension result={results[0].document} /> + </TestApiProvider>, + ), + ); + + expect(screen.getByText('Default')).toBeInTheDocument(); + expect(screen.getByText('Search Result 1')).toBeInTheDocument(); + + await userEvent.click( + screen.getByRole('button', { name: /Search Result 1/ }), + ); + + expect(analyticsApiMock.getEvents()[0]).toMatchObject({ + action: 'discover', + subject: 'Search Result 1', + context: { routeRef: 'unknown', pluginId: 'root', extension: 'App' }, + attributes: { to: 'search/search-result1' }, + }); + }); + + it('use default options for rendering results', async () => { + const plugin = createPlugin({ id: 'plugin' }); + const DefaultSearchResultListItemExtension = createExtension(plugin); + + await renderWithEffects( + wrapInTestApp( + <TestApiProvider apis={[[analyticsApiRef, analyticsApiMock]]}> + <SearchResultListItemExtensions results={results}> + <DefaultSearchResultListItemExtension /> + </SearchResultListItemExtensions> + </TestApiProvider>, + ), + ); + + expect(screen.getAllByText('Default')).toHaveLength(2); + expect(screen.getByText('Search Result 1')).toBeInTheDocument(); + expect(screen.getByText('Search Result 2')).toBeInTheDocument(); + }); + + it('use custom options for rendering results', async () => { + const plugin = createPlugin({ id: 'plugin' }); + const DefaultSearchResultListItemExtension = createExtension(plugin); + const ExploreSearchResultListItemExtension = createExtension(plugin, { + predicate: (result: SearchResult) => result.type === 'explore', + component: async () => (props: { result?: SearchDocument }) => + ( + <ListItem> + <ListItemText primary="Explore" secondary={props.result?.title} /> + </ListItem> + ), + }); + + await renderWithEffects( + wrapInTestApp( + <TestApiProvider apis={[[analyticsApiRef, analyticsApiMock]]}> + <SearchResultListItemExtensions results={results}> + <ExploreSearchResultListItemExtension /> + <DefaultSearchResultListItemExtension /> + </SearchResultListItemExtensions> + </TestApiProvider>, + ), + ); + + expect(screen.getAllByText('Default')).toHaveLength(1); + expect(screen.getAllByText('Explore')).toHaveLength(1); + expect(screen.getByText('Search Result 1')).toBeInTheDocument(); + expect(screen.getByText('Search Result 2')).toBeInTheDocument(); + }); +}); diff --git a/plugins/search-react/src/extensions.tsx b/plugins/search-react/src/extensions.tsx new file mode 100644 index 0000000000..1e0619b14c --- /dev/null +++ b/plugins/search-react/src/extensions.tsx @@ -0,0 +1,238 @@ +/* + * Copyright 2023 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, { + Fragment, + ReactNode, + PropsWithChildren, + isValidElement, + createElement, + cloneElement, + useCallback, +} from 'react'; + +import { + getComponentData, + useElementFilter, + Extension, + createReactExtension, + useAnalytics, +} from '@backstage/core-plugin-api'; +import { SearchDocument, SearchResult } from '@backstage/plugin-search-common'; + +import { Box, List, ListProps } from '@material-ui/core'; + +import { DefaultResultListItem } from './components'; + +/** + * @internal + * Key for result extensions. + */ +const SEARCH_RESULT_LIST_ITEM_EXTENSION = + 'search.results.list.items.extensions.v1'; + +/** + * @internal + * Returns the first extension element found for a given result, and null otherwise. + * @param elements - All extension elements. + * @param result - The search result. + */ +const findSearchResultListItemExtensionElement = ( + elements: ReactNode[], + result: SearchResult, +) => { + for (const element of elements) { + if (!isValidElement(element)) continue; + const predicate = getComponentData<(result: SearchResult) => boolean>( + element, + SEARCH_RESULT_LIST_ITEM_EXTENSION, + ); + if (!predicate?.(result)) continue; + return cloneElement(element, { + rank: result.rank, + highlight: result.highlight, + result: result.document, + // Use props in situations where a consumer is manually rendering the extension + ...element.props, + }); + } + return null; +}; + +/** + * @internal + * Props for {@link SearchResultListItemExtension}. + */ +type SearchResultListItemExtensionProps = PropsWithChildren<{ + rank?: number; + result?: SearchDocument; + noTrack?: boolean; +}>; + +/** + * @internal + * Extends children with extension capabilities. + * @param props - see {@link SearchResultListItemExtensionProps}. + */ +const SearchResultListItemExtension = ({ + rank, + result, + noTrack, + children, +}: SearchResultListItemExtensionProps) => { + const analytics = useAnalytics(); + + const handleClickCapture = useCallback(() => { + if (noTrack) return; + if (!result) return; + analytics.captureEvent('discover', result.title, { + attributes: { to: result.location }, + value: rank, + }); + }, [rank, result, noTrack, analytics]); + + return ( + <Box role="button" tabIndex={0} onClickCapture={handleClickCapture}> + {children} + </Box> + ); +}; + +/** + * @public + * Options for {@link createSearchResultListItemExtension}. + */ +export type SearchResultListItemExtensionOptions< + Component extends (props: any) => JSX.Element | null, +> = { + /** + * The extension name. + */ + name: string; + /** + * The extension component. + */ + component: () => Promise<Component>; + /** + * When an extension defines a predicate, it returns true if the result should be rendered by that extension. + * Defaults to a predicate that returns true, which means it renders all sorts of results. + */ + predicate?: (result: SearchResult) => boolean; +}; + +/** + * @public + * Creates a search result item extension. + * @param options - The extension options, see {@link SearchResultListItemExtensionOptions} for more details. + */ +export const createSearchResultListItemExtension = < + Component extends (props: any) => JSX.Element | null, +>( + options: SearchResultListItemExtensionOptions<Component>, +): Extension<Component> => { + const { name, component, predicate = () => true } = options; + + return createReactExtension<Component>({ + name, + component: { + lazy: () => + component().then( + type => + (props => ( + <SearchResultListItemExtension + rank={props.rank} + result={props.result} + noTrack={props.noTrack} + > + {createElement(type, props)} + </SearchResultListItemExtension> + )) as Component, + ), + }, + data: { + [SEARCH_RESULT_LIST_ITEM_EXTENSION]: predicate, + }, + }); +}; + +/** + * @public + * Returns a function that renders a result using extensions. + */ +export const useSearchResultListItemExtensions = (children: ReactNode) => { + const elements = useElementFilter( + children, + collection => { + return collection + .selectByComponentData({ + key: SEARCH_RESULT_LIST_ITEM_EXTENSION, + }) + .getElements(); + }, + [children], + ); + + return useCallback( + (result: SearchResult, key?: number) => { + const element = findSearchResultListItemExtensionElement( + elements, + result, + ); + + return ( + <Fragment key={key}> + {element ?? ( + <SearchResultListItemExtension + rank={result.rank} + result={result.document} + > + <DefaultResultListItem + rank={result.rank} + highlight={result.highlight} + result={result.document} + /> + </SearchResultListItemExtension> + )} + </Fragment> + ); + }, + [elements], + ); +}; + +/** + * @public + * Props for {@link SearchResultListItemExtensions} + */ +export type SearchResultListItemExtensionsProps = Omit<ListProps, 'results'> & { + /** + * Search result list. + */ + results: SearchResult[]; +}; + +/** + * @public + * Render results using search extensions. + * @param props - see {@link SearchResultListItemExtensionsProps} + */ +export const SearchResultListItemExtensions = ( + props: SearchResultListItemExtensionsProps, +) => { + const { results, children, ...rest } = props; + const render = useSearchResultListItemExtensions(children); + return <List {...rest}>{results.map(render)}</List>; +}; diff --git a/plugins/search-react/src/index.ts b/plugins/search-react/src/index.ts index 9813661f3e..8b234e3c05 100644 --- a/plugins/search-react/src/index.ts +++ b/plugins/search-react/src/index.ts @@ -22,6 +22,7 @@ export { searchApiRef, MockSearchApi } from './api'; export type { SearchApi } from './api'; +export * from './extensions'; export * from './components'; export { SearchContextProvider, From a7ec5e7d78264924b152ca048bddefc79185c617 Mon Sep 17 00:00:00 2001 From: Camila Belo <camilaibs@gmail.com> Date: Sun, 22 Jan 2023 19:33:25 +0100 Subject: [PATCH 093/156] feat(search): create result item hook and components Signed-off-by: Camila Belo <camilaibs@gmail.com> --- .../SearchResult/SearchResult.stories.tsx | 23 ++- .../SearchResult/SearchResult.test.tsx | 106 ++++++++++- .../components/SearchResult/SearchResult.tsx | 44 +++-- .../src/components/SearchResult/index.tsx | 2 +- .../SearchResultGroup.stories.tsx | 34 +++- .../SearchResultGroup.test.tsx | 174 ++++++++++++++++-- .../SearchResultGroup/SearchResultGroup.tsx | 122 ++++++------ .../SearchResultList.stories.tsx | 32 +++- .../SearchResultList.test.tsx | 89 ++++++++- .../SearchResultList/SearchResultList.tsx | 112 ++++++----- plugins/search-react/src/components/index.ts | 4 +- 11 files changed, 570 insertions(+), 172 deletions(-) diff --git a/plugins/search-react/src/components/SearchResult/SearchResult.stories.tsx b/plugins/search-react/src/components/SearchResult/SearchResult.stories.tsx index ef9b0d6b5c..b491d66c83 100644 --- a/plugins/search-react/src/components/SearchResult/SearchResult.stories.tsx +++ b/plugins/search-react/src/components/SearchResult/SearchResult.stories.tsx @@ -23,16 +23,18 @@ import CustomIcon from '@material-ui/icons/NoteAdd'; import { Link } from '@backstage/core-components'; import { TestApiProvider } from '@backstage/test-utils'; +import { createPlugin } from '@backstage/core-plugin-api'; import { SearchDocument } from '@backstage/plugin-search-common'; -import { searchApiRef, MockSearchApi } from '../../api'; import { SearchContextProvider } from '../../context'; +import { searchApiRef, MockSearchApi } from '../../api'; +import { createSearchResultListItemExtension } from '../../extensions'; -import { DefaultResultListItem } from '../DefaultResultListItem'; import { SearchResultListLayout } from '../SearchResultList'; +import { SearchResultGroupLayout } from '../SearchResultGroup'; +import { DefaultResultListItem } from '../DefaultResultListItem'; import { SearchResult } from './SearchResult'; -import { SearchResultGroupLayout } from '../SearchResultGroup'; const mockResults = { results: [ @@ -247,3 +249,18 @@ export const WithCustomNoResultsComponent = () => { </SearchResult> ); }; + +export const UsingSearchResultItemExtensions = () => { + const plugin = createPlugin({ id: 'plugin' }); + const DefaultResultItem = plugin.provide( + createSearchResultListItemExtension({ + name: 'DefaultResultListItem', + component: async () => DefaultResultListItem, + }), + ); + return ( + <SearchResult> + <DefaultResultItem /> + </SearchResult> + ); +}; diff --git a/plugins/search-react/src/components/SearchResult/SearchResult.test.tsx b/plugins/search-react/src/components/SearchResult/SearchResult.test.tsx index 5972eaa891..6a5a683295 100644 --- a/plugins/search-react/src/components/SearchResult/SearchResult.test.tsx +++ b/plugins/search-react/src/components/SearchResult/SearchResult.test.tsx @@ -17,9 +17,19 @@ import React from 'react'; import { waitFor } from '@testing-library/react'; -import { renderInTestApp } from '@backstage/test-utils'; +import { ListItem } from '@material-ui/core'; +import { + wrapInTestApp, + renderInTestApp, + renderWithEffects, + TestApiProvider, +} from '@backstage/test-utils'; +import { createPlugin } from '@backstage/core-plugin-api'; +import { searchApiRef } from '../../api'; import { useSearch } from '../../context'; +import { createSearchResultListItemExtension } from '../../extensions'; + import { SearchResult } from './SearchResult'; jest.mock('../../context', () => ({ @@ -30,8 +40,12 @@ jest.mock('../../context', () => ({ })); describe('SearchResult', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it('Progress rendered on Loading state', async () => { - (useSearch as jest.Mock).mockReturnValueOnce({ + (useSearch as jest.Mock).mockReturnValue({ result: { loading: true }, }); @@ -46,7 +60,7 @@ describe('SearchResult', () => { it('Alert rendered on Error state', async () => { const error = new Error('some error'); - (useSearch as jest.Mock).mockReturnValueOnce({ + (useSearch as jest.Mock).mockReturnValue({ result: { loading: false, error }, }); @@ -62,7 +76,7 @@ describe('SearchResult', () => { }); it('On no result value state', async () => { - (useSearch as jest.Mock).mockReturnValueOnce({ + (useSearch as jest.Mock).mockReturnValue({ result: { loading: false, error: '', value: undefined }, }); @@ -78,7 +92,7 @@ describe('SearchResult', () => { }); it('On empty result value state', async () => { - (useSearch as jest.Mock).mockReturnValueOnce({ + (useSearch as jest.Mock).mockReturnValue({ result: { loading: false, error: '', value: { results: [] } }, }); @@ -94,7 +108,7 @@ describe('SearchResult', () => { }); it('On empty result value state with custom component', async () => { - (useSearch as jest.Mock).mockReturnValueOnce({ + (useSearch as jest.Mock).mockReturnValue({ result: { loading: false, error: '', value: { results: [] } }, }); @@ -110,7 +124,7 @@ describe('SearchResult', () => { }); it('Calls children with results set to result.value', async () => { - (useSearch as jest.Mock).mockReturnValueOnce({ + (useSearch as jest.Mock).mockReturnValue({ result: { loading: false, error: '', @@ -140,4 +154,82 @@ describe('SearchResult', () => { expect(getByText('Results 1')).toBeInTheDocument(); }); + + it('Renders results from api', async () => { + const results = [ + { + type: 'some-type', + document: { + title: 'some-title', + text: 'some-text', + location: 'some-location', + }, + }, + ]; + const query = jest.fn().mockResolvedValue({ results }); + await renderWithEffects( + wrapInTestApp( + <TestApiProvider apis={[[searchApiRef, { query }]]}> + <SearchResult query={{ types: ['techdocs'] }}> + {value => { + expect(value.results).toStrictEqual(results); + return <></>; + }} + </SearchResult> + </TestApiProvider>, + ), + ); + + expect(query).toHaveBeenCalledWith({ + term: '', + filters: {}, + types: ['techdocs'], + }); + }); + + it('Renders using search result item extensions', async () => { + (useSearch as jest.Mock).mockReturnValue({ + result: { + loading: false, + error: '', + value: { + totalCount: 1, + results: [ + { + type: 'some-type', + document: { + title: 'some-title', + text: 'some-text', + location: 'some-location', + }, + }, + ], + }, + }, + }); + + const { getByText, rerender } = await renderInTestApp(<SearchResult />); + + expect(getByText('some-title')).toBeInTheDocument(); + + const SearchResultExtension = createPlugin({ + id: 'plugin', + }).provide( + createSearchResultListItemExtension({ + name: 'SearchResultExtension', + component: async () => props => + <ListItem>Result: {props.result?.title}</ListItem>, + }), + ); + + rerender( + <SearchResult> + <SearchResultExtension /> + </SearchResult>, + ); + + await waitFor(() => { + expect(getByText('Result: some-title')).toBeInTheDocument(); + }); + }); }); diff --git a/plugins/search-react/src/components/SearchResult/SearchResult.tsx b/plugins/search-react/src/components/SearchResult/SearchResult.tsx index 333156aab9..f362ff27d3 100644 --- a/plugins/search-react/src/components/SearchResult/SearchResult.tsx +++ b/plugins/search-react/src/components/SearchResult/SearchResult.tsx @@ -14,19 +14,24 @@ * limitations under the License. */ -import React from 'react'; +import React, { ReactNode } from 'react'; import useAsync, { AsyncState } from 'react-use/lib/useAsync'; +import { isFunction } from 'lodash'; import { - EmptyState, Progress, + EmptyState, ResponseErrorPanel, } from '@backstage/core-components'; -import { AnalyticsContext, useApi } from '@backstage/core-plugin-api'; +import { useApi, AnalyticsContext } from '@backstage/core-plugin-api'; import { SearchQuery, SearchResultSet } from '@backstage/plugin-search-common'; -import { useSearch } from '../../context'; import { searchApiRef } from '../../api'; +import { useSearch } from '../../context'; +import { + SearchResultListItemExtensions, + SearchResultListItemExtensionsProps, +} from '../../extensions'; /** * Props for {@link SearchResultContext} @@ -36,7 +41,10 @@ export type SearchResultContextProps = { /** * A child function that receives an asynchronous result set and returns a react element. */ - children: (state: AsyncState<SearchResultSet>) => JSX.Element | null; + children: ( + state: AsyncState<SearchResultSet>, + query: Partial<SearchQuery>, + ) => JSX.Element | null; }; /** @@ -62,8 +70,8 @@ export type SearchResultContextProps = { export const SearchResultContext = (props: SearchResultContextProps) => { const { children } = props; const context = useSearch(); - const state = context.result; - return children(state); + const { result: state, ...query } = context; + return children(state, query); }; /** @@ -103,7 +111,7 @@ export const SearchResultApi = (props: SearchResultApiProps) => { return searchApi.query({ ...rest, term, types, filters }); }, [query]); - return children(state); + return children(state, query); }; /** @@ -165,10 +173,11 @@ export const SearchResultState = (props: SearchResultStateProps) => { * Props for {@link SearchResult} * @public */ -export type SearchResultProps = Pick<SearchResultStateProps, 'query'> & { - children: (resultSet: SearchResultSet) => JSX.Element; - noResultsComponent?: JSX.Element; -}; +export type SearchResultProps = Pick<SearchResultStateProps, 'query'> & + Omit<SearchResultListItemExtensionsProps, 'results' | 'children'> & { + children?: ReactNode | ((resultSet: SearchResultSet) => JSX.Element); + noResultsComponent?: JSX.Element; + }; /** * Renders results from a parent search context or api. @@ -183,6 +192,7 @@ export const SearchResultComponent = (props: SearchResultProps) => { noResultsComponent = ( <EmptyState missing="data" title="Sorry, no results were found" /> ), + ...rest } = props; return ( @@ -205,7 +215,15 @@ export const SearchResultComponent = (props: SearchResultProps) => { return noResultsComponent; } - return children(value); + if (isFunction(children)) { + return children(value); + } + + return ( + <SearchResultListItemExtensions {...rest} results={value.results}> + {children} + </SearchResultListItemExtensions> + ); }} </SearchResultState> ); diff --git a/plugins/search-react/src/components/SearchResult/index.tsx b/plugins/search-react/src/components/SearchResult/index.tsx index eab599883b..cf36b7ec9e 100644 --- a/plugins/search-react/src/components/SearchResult/index.tsx +++ b/plugins/search-react/src/components/SearchResult/index.tsx @@ -18,8 +18,8 @@ export { SearchResult, SearchResultApi, SearchResultContext, - SearchResultState, SearchResultComponent, + SearchResultState, } from './SearchResult'; export type { diff --git a/plugins/search-react/src/components/SearchResultGroup/SearchResultGroup.stories.tsx b/plugins/search-react/src/components/SearchResultGroup/SearchResultGroup.stories.tsx index fab807dd84..40f7d30ff4 100644 --- a/plugins/search-react/src/components/SearchResultGroup/SearchResultGroup.stories.tsx +++ b/plugins/search-react/src/components/SearchResultGroup/SearchResultGroup.stories.tsx @@ -27,11 +27,15 @@ import DocsIcon from '@material-ui/icons/InsertDriveFile'; import { JsonValue } from '@backstage/types'; import { Link } from '@backstage/core-components'; -import { createRouteRef } from '@backstage/core-plugin-api'; -import { SearchQuery, SearchResultSet } from '@backstage/plugin-search-common'; import { TestApiProvider, wrapInTestApp } from '@backstage/test-utils'; +import { createPlugin, createRouteRef } from '@backstage/core-plugin-api'; +import { SearchQuery, SearchResultSet } from '@backstage/plugin-search-common'; +import { DefaultResultListItem } from '../DefaultResultListItem'; + +import { SearchContextProvider } from '../../context'; import { searchApiRef, MockSearchApi } from '../../api'; +import { createSearchResultListItemExtension } from '../../extensions'; import { SearchResultGroup, @@ -83,6 +87,14 @@ export default { }; export const Default = () => { + return ( + <SearchContextProvider> + <SearchResultGroup icon={<DocsIcon />} title="Documentation" /> + </SearchContextProvider> + ); +}; + +export const WithQuery = () => { const [query] = useState<Partial<SearchQuery>>({ types: ['techdocs'], }); @@ -341,3 +353,21 @@ export const WithCustomResultItem = () => { /> ); }; + +export const WithResultItemExtensions = () => { + const [query] = useState<Partial<SearchQuery>>({ + types: ['techdocs'], + }); + const plugin = createPlugin({ id: 'plugin' }); + const DefaultSearchResultGroupItem = plugin.provide( + createSearchResultListItemExtension({ + name: 'DefaultResultListItem', + component: async () => DefaultResultListItem, + }), + ); + return ( + <SearchResultGroup query={query} icon={<DocsIcon />} title="Documentation"> + <DefaultSearchResultGroupItem /> + </SearchResultGroup> + ); +}; diff --git a/plugins/search-react/src/components/SearchResultGroup/SearchResultGroup.test.tsx b/plugins/search-react/src/components/SearchResultGroup/SearchResultGroup.test.tsx index 7943dba3f7..728bd9113a 100644 --- a/plugins/search-react/src/components/SearchResultGroup/SearchResultGroup.test.tsx +++ b/plugins/search-react/src/components/SearchResultGroup/SearchResultGroup.test.tsx @@ -18,16 +18,21 @@ import React from 'react'; import { screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import { MenuItem } from '@material-ui/core'; +import { ListItem, MenuItem } from '@material-ui/core'; import DocsIcon from '@material-ui/icons/InsertDriveFile'; import { - TestApiProvider, - renderWithEffects, wrapInTestApp, + renderWithEffects, + TestApiProvider, + MockAnalyticsApi, } from '@backstage/test-utils'; +import { createPlugin, analyticsApiRef } from '@backstage/core-plugin-api'; import { searchApiRef } from '../../api'; +import { SearchContextProvider } from '../../context'; +import { createSearchResultListItemExtension } from '../../extensions'; + import { SearchResultGroup, SearchResultGroupSelectFilterField, @@ -36,6 +41,7 @@ import { const query = jest.fn().mockResolvedValue({ results: [] }); const searchApiMock = { query }; +const analyticsApiMock = new MockAnalyticsApi(); describe('SearchResultGroup', () => { const results = [ @@ -62,9 +68,18 @@ describe('SearchResultGroup', () => { }); it('Renders without exploding', async () => { + query.mockResolvedValueOnce({ + results, + }); + await renderWithEffects( wrapInTestApp( - <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > <SearchResultGroup query={{ types: ['techdocs'] }} icon={<DocsIcon titleAccess="Docs icon" />} @@ -84,10 +99,94 @@ describe('SearchResultGroup', () => { }); }); - it('Defines a default link', async () => { + it('Renders search results from context', async () => { + query.mockResolvedValueOnce({ + results, + }); + await renderWithEffects( wrapInTestApp( - <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > + <SearchContextProvider> + <SearchResultGroup + icon={<DocsIcon titleAccess="Docs icon" />} + title="Documentation" + /> + </SearchContextProvider> + </TestApiProvider>, + ), + ); + + expect(screen.getByText('Search Result 1')).toBeInTheDocument(); + expect( + screen.getByText('Some text from the search result 1'), + ).toBeInTheDocument(); + + expect(screen.getByText('Search Result 2')).toBeInTheDocument(); + expect( + screen.getByText('Some text from the search result 2'), + ).toBeInTheDocument(); + }); + + it('Renders search results using extensions', async () => { + query.mockResolvedValueOnce({ + results, + }); + + const SearchResultGroupItemExtension = createPlugin({ + id: 'plugin', + }).provide( + createSearchResultListItemExtension({ + name: 'SearchResultGroupItemExtension', + component: async () => props => + <ListItem>Result: {props.result?.title}</ListItem>, + }), + ); + + await renderWithEffects( + wrapInTestApp( + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > + <SearchResultGroup + query={{ types: ['techdocs'] }} + icon={<DocsIcon titleAccess="Docs icon" />} + title="Documentation" + > + <SearchResultGroupItemExtension /> + </SearchResultGroup> + </TestApiProvider>, + ), + ); + + await waitFor(() => { + expect(screen.getByText('Result: Search Result 1')).toBeInTheDocument(); + }); + + expect(screen.getByText('Result: Search Result 2')).toBeInTheDocument(); + }); + + it('Defines a default link', async () => { + query.mockResolvedValueOnce({ + results, + }); + + await renderWithEffects( + wrapInTestApp( + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > <SearchResultGroup query={{ types: ['techdocs'] }} icon={<DocsIcon titleAccess="Docs icon" />} @@ -108,7 +207,12 @@ describe('SearchResultGroup', () => { await renderWithEffects( wrapInTestApp( - <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > <SearchResultGroup query={{ types: ['techdocs'] }} icon={<DocsIcon titleAccess="Docs icon" />} @@ -132,7 +236,12 @@ describe('SearchResultGroup', () => { it('Could be customized with no results text', async () => { await renderWithEffects( wrapInTestApp( - <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > <SearchResultGroup query={{ types: ['techdocs'] }} icon={<DocsIcon titleAccess="Docs icon" />} @@ -154,7 +263,12 @@ describe('SearchResultGroup', () => { await renderWithEffects( wrapInTestApp( - <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > <SearchResultGroup query={{ types: ['techdocs'] }} icon={<DocsIcon titleAccess="Docs icon" />} @@ -184,7 +298,12 @@ describe('SearchResultGroup', () => { await renderWithEffects( wrapInTestApp( - <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > <SearchResultGroup query={{ types: ['techdocs'], @@ -232,7 +351,12 @@ describe('SearchResultGroup', () => { await renderWithEffects( wrapInTestApp( - <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > <SearchResultGroup query={{ types: ['techdocs'], @@ -276,7 +400,12 @@ describe('SearchResultGroup', () => { query.mockReturnValueOnce(new Promise(() => {})); await renderWithEffects( wrapInTestApp( - <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > <SearchResultGroup query={{ types: ['techdocs'] }} icon={<DocsIcon titleAccess="Docs icon" />} @@ -295,7 +424,12 @@ describe('SearchResultGroup', () => { query.mockResolvedValueOnce({ results: [] }); await renderWithEffects( wrapInTestApp( - <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > <SearchResultGroup query={{ types: ['techdocs'] }} icon={<DocsIcon titleAccess="Docs icon" />} @@ -315,7 +449,12 @@ describe('SearchResultGroup', () => { query.mockResolvedValueOnce({ results: [] }); await renderWithEffects( wrapInTestApp( - <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > <SearchResultGroup query={{ types: ['techdocs'] }} icon={<DocsIcon titleAccess="Docs icon" />} @@ -335,7 +474,12 @@ describe('SearchResultGroup', () => { query.mockRejectedValueOnce(new Error()); await renderWithEffects( wrapInTestApp( - <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > <SearchResultGroup query={{ types: ['techdocs'] }} icon={<DocsIcon titleAccess="Docs icon" />} diff --git a/plugins/search-react/src/components/SearchResultGroup/SearchResultGroup.tsx b/plugins/search-react/src/components/SearchResultGroup/SearchResultGroup.tsx index 6040dbe560..2a3ae1e24c 100644 --- a/plugins/search-react/src/components/SearchResultGroup/SearchResultGroup.tsx +++ b/plugins/search-react/src/components/SearchResultGroup/SearchResultGroup.tsx @@ -27,9 +27,8 @@ import { makeStyles, Theme, List, - ListSubheader, - ListItem, ListProps, + ListSubheader, Menu, MenuItem, InputBase, @@ -43,17 +42,19 @@ import ArrowRightIcon from '@material-ui/icons/ArrowForwardIos'; import { JsonValue } from '@backstage/types'; import { - EmptyState, Link, LinkProps, Progress, + EmptyState, ResponseErrorPanel, } from '@backstage/core-components'; import { AnalyticsContext } from '@backstage/core-plugin-api'; -import { SearchQuery, SearchResult } from '@backstage/plugin-search-common'; +import { SearchResult } from '@backstage/plugin-search-common'; + +import { useSearchResultListItemExtensions } from '../../extensions'; import { DefaultResultListItem } from '../DefaultResultListItem'; -import { SearchResultState } from '../SearchResult'; +import { SearchResultState, SearchResultStateProps } from '../SearchResult'; const useStyles = makeStyles((theme: Theme) => ({ listSubheader: { @@ -278,6 +279,14 @@ export const SearchResultGroupSelectFilterField = ( * @public */ export type SearchResultGroupLayoutProps<FilterOption> = ListProps & { + /** + * If defined, will render a default error panel. + */ + error?: Error; + /** + * If defined, will render a default loading progress. + */ + loading?: boolean; /** * Icon that representing a result group. */ @@ -331,18 +340,14 @@ export type SearchResultGroupLayoutProps<FilterOption> = ListProps & { index: number, array: SearchResult[], ) => JSX.Element | null; - /** - * If defined, will render a default error panel. - */ - error?: Error; - /** - * If defined, will render a default loading progress. - */ - loading?: boolean; /** * Optional component to render when no results. Default to <EmptyState /> component. */ noResultsComponent?: ReactNode; + /** + * Optional property to provide if component should not render the component when no results are found. + */ + disableRenderingWithNoResults?: boolean; }; /** @@ -357,8 +362,8 @@ export function SearchResultGroupLayout<FilterOption>( const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null); const { - loading, error, + loading, icon, title, titleProps = {}, @@ -384,7 +389,8 @@ export function SearchResultGroupLayout<FilterOption>( result={resultItem.document} /> ), - noResultsComponent = ( + disableRenderingWithNoResults, + noResultsComponent = disableRenderingWithNoResults ? null : ( <EmptyState missing="data" title="Sorry, no results were found" /> ), ...rest @@ -398,6 +404,23 @@ export function SearchResultGroupLayout<FilterOption>( setAnchorEl(null); }, []); + if (loading) { + return <Progress />; + } + + if (error) { + return ( + <ResponseErrorPanel + title="Error encountered while fetching search results" + error={error} + /> + ); + } + + if (!resultItems?.length) { + return <>{noResultsComponent}</>; + } + return ( <List {...rest}> <ListSubheader className={classes.listSubheader}> @@ -440,19 +463,7 @@ export function SearchResultGroupLayout<FilterOption>( {link} </Link> </ListSubheader> - {loading ? <Progress /> : null} - {!loading && error ? ( - <ResponseErrorPanel - title="Error encountered while fetching search results" - error={error} - /> - ) : null} - {!loading && !error && resultItems?.length - ? resultItems.map(renderResultItem) - : null} - {!loading && !error && !resultItems?.length ? ( - <ListItem>{noResultsComponent}</ListItem> - ) : null} + {resultItems.map(renderResultItem)} </List> ); } @@ -461,19 +472,14 @@ export function SearchResultGroupLayout<FilterOption>( * Props for {@link SearchResultGroup}. * @public */ -export type SearchResultGroupProps<FilterOption> = Omit< - SearchResultGroupLayoutProps<FilterOption>, - 'loading' | 'error' | 'resultItems' | 'filterFields' -> & { - /** - * A search query used for requesting the results to be grouped. - */ - query: Partial<SearchQuery>; - /** - * Optional property to provide if component should not render the group when no results are found. - */ - disableRenderingWithNoResults?: boolean; -}; +export type SearchResultGroupProps<FilterOption> = Pick< + SearchResultStateProps, + 'query' +> & + Omit< + SearchResultGroupLayoutProps<FilterOption>, + 'loading' | 'error' | 'resultItems' | 'filterFields' + >; /** * Given a query, search for results and render them as a group. @@ -483,22 +489,9 @@ export type SearchResultGroupProps<FilterOption> = Omit< export function SearchResultGroup<FilterOption>( props: SearchResultGroupProps<FilterOption>, ) { - const { - query, - linkProps = {}, - disableRenderingWithNoResults, - ...rest - } = props; + const { query, children, renderResultItem, linkProps = {}, ...rest } = props; - const to = `/search?${qs.stringify( - { - query: query.term, - types: query.types, - filters: query.filters, - pageCursor: query.pageCursor, - }, - { arrayFormat: 'brackets' }, - )}`; + const defaultRenderResultItem = useSearchResultListItemExtensions(children); return ( <AnalyticsContext @@ -508,19 +501,24 @@ export function SearchResultGroup<FilterOption>( }} > <SearchResultState query={query}> - {({ loading, error, value }) => { - if (!value?.results?.length && disableRenderingWithNoResults) { - return null; - } + {( + { loading, error, value }, + { term, types, pageCursor, filters = {} }, + ) => { + const to = `/search?${qs.stringify( + { term, types, filters, pageCursor, query: term }, + { arrayFormat: 'brackets' }, + )}`; return ( <SearchResultGroupLayout {...rest} - loading={loading} error={error} + loading={loading} linkProps={{ to, ...linkProps }} + filterFields={Object.keys(filters)} resultItems={value?.results} - filterFields={Object.keys(query.filters ?? {})} + renderResultItem={renderResultItem ?? defaultRenderResultItem} /> ); }} diff --git a/plugins/search-react/src/components/SearchResultList/SearchResultList.stories.tsx b/plugins/search-react/src/components/SearchResultList/SearchResultList.stories.tsx index fcda4cec87..4369b6636e 100644 --- a/plugins/search-react/src/components/SearchResultList/SearchResultList.stories.tsx +++ b/plugins/search-react/src/components/SearchResultList/SearchResultList.stories.tsx @@ -18,12 +18,14 @@ import React, { ComponentType, useState } from 'react'; import { Grid, ListItem, ListItemIcon, ListItemText } from '@material-ui/core'; -import { createRouteRef } from '@backstage/core-plugin-api'; import { CatalogIcon, Link } from '@backstage/core-components'; -import { SearchQuery, SearchResultSet } from '@backstage/plugin-search-common'; import { TestApiProvider, wrapInTestApp } from '@backstage/test-utils'; +import { createPlugin, createRouteRef } from '@backstage/core-plugin-api'; +import { SearchQuery, SearchResultSet } from '@backstage/plugin-search-common'; +import { SearchContextProvider } from '../../context'; import { searchApiRef, MockSearchApi } from '../../api'; +import { createSearchResultListItemExtension } from '../../extensions'; import { SearchResultList } from './SearchResultList'; import { DefaultResultListItem } from '../DefaultResultListItem'; @@ -72,6 +74,14 @@ export default { }; export const Default = () => { + return ( + <SearchContextProvider> + <SearchResultList /> + </SearchContextProvider> + ); +}; + +export const WithQuery = () => { const [query] = useState<Partial<SearchQuery>>({ types: ['techdocs'], }); @@ -195,3 +205,21 @@ export const WithCustomResultItem = () => { /> ); }; + +export const WithResultItemExtensions = () => { + const [query] = useState<Partial<SearchQuery>>({ + types: ['techdocs'], + }); + const plugin = createPlugin({ id: 'plugin' }); + const DefaultSearchResultListItem = plugin.provide( + createSearchResultListItemExtension({ + name: 'DefaultResultListItem', + component: async () => DefaultResultListItem, + }), + ); + return ( + <SearchResultList query={query}> + <DefaultSearchResultListItem /> + </SearchResultList> + ); +}; diff --git a/plugins/search-react/src/components/SearchResultList/SearchResultList.test.tsx b/plugins/search-react/src/components/SearchResultList/SearchResultList.test.tsx index 93bbaa5602..7e8aa7bb33 100644 --- a/plugins/search-react/src/components/SearchResultList/SearchResultList.test.tsx +++ b/plugins/search-react/src/components/SearchResultList/SearchResultList.test.tsx @@ -17,17 +17,23 @@ import React from 'react'; import { screen, waitFor } from '@testing-library/react'; +import { ListItem } from '@material-ui/core'; import { TestApiProvider, renderWithEffects, wrapInTestApp, + MockAnalyticsApi, } from '@backstage/test-utils'; +import { analyticsApiRef, createPlugin } from '@backstage/core-plugin-api'; import { searchApiRef } from '../../api'; +import { createSearchResultListItemExtension } from '../../extensions'; + import { SearchResultList } from './SearchResultList'; const query = jest.fn().mockResolvedValue({ results: [] }); const searchApiMock = { query }; +const analyticsApiMock = new MockAnalyticsApi(); describe('SearchResultList', () => { const results = [ @@ -56,7 +62,12 @@ describe('SearchResultList', () => { it('Renders without exploding', async () => { await renderWithEffects( wrapInTestApp( - <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > <SearchResultList query={{ types: ['techdocs'], @@ -81,7 +92,12 @@ describe('SearchResultList', () => { await renderWithEffects( wrapInTestApp( - <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > <SearchResultList query={{ types: ['techdocs'], @@ -106,7 +122,12 @@ describe('SearchResultList', () => { query.mockReturnValueOnce(new Promise(() => {})); await renderWithEffects( wrapInTestApp( - <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > <SearchResultList query={{ types: ['techdocs'], @@ -125,7 +146,12 @@ describe('SearchResultList', () => { query.mockResolvedValueOnce({ results: [] }); await renderWithEffects( wrapInTestApp( - <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > <SearchResultList query={{ types: ['techdocs'] }} disableRenderingWithNoResults @@ -143,7 +169,12 @@ describe('SearchResultList', () => { query.mockResolvedValueOnce({ results: [] }); await renderWithEffects( wrapInTestApp( - <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > <SearchResultList query={{ types: ['techdocs'] }} noResultsComponent="No results were found" @@ -161,7 +192,12 @@ describe('SearchResultList', () => { query.mockRejectedValueOnce(new Error()); await renderWithEffects( wrapInTestApp( - <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > <SearchResultList query={{ types: ['techdocs'], @@ -179,4 +215,45 @@ describe('SearchResultList', () => { ).toBeInTheDocument(); }); }); + + it('should render search results using list item extensions', async () => { + query.mockResolvedValueOnce({ + results, + }); + + const SearchResultListItemExtension = createPlugin({ + id: 'plugin', + }).provide( + createSearchResultListItemExtension({ + name: 'SearchResultListItemExtension', + component: async () => props => + <ListItem>Result: {props.result?.title}</ListItem>, + }), + ); + + await renderWithEffects( + wrapInTestApp( + <TestApiProvider + apis={[ + [searchApiRef, searchApiMock], + [analyticsApiRef, analyticsApiMock], + ]} + > + <SearchResultList + query={{ + types: ['techdocs'], + }} + > + <SearchResultListItemExtension /> + </SearchResultList> + </TestApiProvider>, + ), + ); + + await waitFor(() => { + expect(screen.getByText('Result: Search Result 1')).toBeInTheDocument(); + }); + + expect(screen.getByText('Result: Search Result 2')).toBeInTheDocument(); + }); }); diff --git a/plugins/search-react/src/components/SearchResultList/SearchResultList.tsx b/plugins/search-react/src/components/SearchResultList/SearchResultList.tsx index 4279e8936a..1a539b74a6 100644 --- a/plugins/search-react/src/components/SearchResultList/SearchResultList.tsx +++ b/plugins/search-react/src/components/SearchResultList/SearchResultList.tsx @@ -16,24 +16,34 @@ import React, { ReactNode } from 'react'; -import { List, ListItem, ListProps } from '@material-ui/core'; +import { List, ListProps } from '@material-ui/core'; import { - EmptyState, Progress, + EmptyState, ResponseErrorPanel, } from '@backstage/core-components'; import { AnalyticsContext } from '@backstage/core-plugin-api'; -import { SearchQuery, SearchResult } from '@backstage/plugin-search-common'; +import { SearchResult } from '@backstage/plugin-search-common'; + +import { useSearchResultListItemExtensions } from '../../extensions'; import { DefaultResultListItem } from '../DefaultResultListItem'; -import { SearchResultState } from '../SearchResult'; +import { SearchResultState, SearchResultStateProps } from '../SearchResult'; /** * Props for {@link SearchResultListLayout} * @public */ export type SearchResultListLayoutProps = ListProps & { + /** + * If defined, will render a default error panel. + */ + error?: Error; + /** + * If defined, will render a default loading progress. + */ + loading?: boolean; /** * Search results to be rendered as a list. */ @@ -46,18 +56,14 @@ export type SearchResultListLayoutProps = ListProps & { index: number, array: SearchResult[], ) => JSX.Element | null; - /** - * If defined, will render a default error panel. - */ - error?: Error; - /** - * If defined, will render a default loading progress. - */ - loading?: boolean; /** * Optional component to render when no results. Default to <EmptyState /> component. */ noResultsComponent?: ReactNode; + /** + * Optional property to provide if component should not render the component when no results are found. + */ + disableRenderingWithNoResults?: boolean; }; /** @@ -67,8 +73,8 @@ export type SearchResultListLayoutProps = ListProps & { */ export const SearchResultListLayout = (props: SearchResultListLayoutProps) => { const { - loading, error, + loading, resultItems, renderResultItem = resultItem => ( <DefaultResultListItem @@ -76,48 +82,39 @@ export const SearchResultListLayout = (props: SearchResultListLayoutProps) => { result={resultItem.document} /> ), - noResultsComponent = ( + disableRenderingWithNoResults, + noResultsComponent = disableRenderingWithNoResults ? null : ( <EmptyState missing="data" title="Sorry, no results were found" /> ), ...rest } = props; - return ( - <List {...rest}> - {loading ? <Progress /> : null} - {!loading && error ? ( - <ResponseErrorPanel - title="Error encountered while fetching search results" - error={error} - /> - ) : null} - {!loading && !error && resultItems?.length - ? resultItems.map(renderResultItem) - : null} - {!loading && !error && !resultItems?.length ? ( - <ListItem>{noResultsComponent}</ListItem> - ) : null} - </List> - ); + if (loading) { + return <Progress />; + } + + if (error) { + return ( + <ResponseErrorPanel + title="Error encountered while fetching search results" + error={error} + /> + ); + } + + if (!resultItems?.length) { + return <>{noResultsComponent}</>; + } + + return <List {...rest}>{resultItems.map(renderResultItem)}</List>; }; /** * Props for {@link SearchResultList}. * @public */ -export type SearchResultListProps = Omit< - SearchResultListLayoutProps, - 'loading' | 'error' | 'resultItems' -> & { - /** - * A search query used for requesting the results to be listed. - */ - query: Partial<SearchQuery>; - /** - * Optional property to provide if component should not render the component when no results are found. - */ - disableRenderingWithNoResults?: boolean; -}; +export type SearchResultListProps = Pick<SearchResultStateProps, 'query'> & + Omit<SearchResultListLayoutProps, 'loading' | 'error' | 'resultItems'>; /** * Given a query, search for results and render them as a list. @@ -125,7 +122,9 @@ export type SearchResultListProps = Omit< * @public */ export const SearchResultList = (props: SearchResultListProps) => { - const { query, disableRenderingWithNoResults, ...rest } = props; + const { query, renderResultItem, children, ...rest } = props; + + const defaultRenderResultItem = useSearchResultListItemExtensions(children); return ( <AnalyticsContext @@ -135,20 +134,15 @@ export const SearchResultList = (props: SearchResultListProps) => { }} > <SearchResultState query={query}> - {({ loading, error, value }) => { - if (!value?.results?.length && disableRenderingWithNoResults) { - return null; - } - - return ( - <SearchResultListLayout - {...rest} - loading={loading} - error={error} - resultItems={value?.results} - /> - ); - }} + {({ loading, error, value }) => ( + <SearchResultListLayout + {...rest} + error={error} + loading={loading} + resultItems={value?.results} + renderResultItem={renderResultItem ?? defaultRenderResultItem} + /> + )} </SearchResultState> </AnalyticsContext> ); diff --git a/plugins/search-react/src/components/index.ts b/plugins/search-react/src/components/index.ts index 5f68905407..c85714fa46 100644 --- a/plugins/search-react/src/components/index.ts +++ b/plugins/search-react/src/components/index.ts @@ -18,9 +18,9 @@ export * from './HighlightedSearchResultText'; export * from './SearchBar'; export * from './SearchAutocomplete'; export * from './SearchFilter'; -export * from './SearchResult'; -export * from './SearchResultPager'; export * from './SearchPagination'; +export * from './SearchResult'; export * from './SearchResultList'; export * from './SearchResultGroup'; +export * from './SearchResultPager'; export * from './DefaultResultListItem'; From 2f91e1684eae3f202f82dad721586f66b4889287 Mon Sep 17 00:00:00 2001 From: Camila Belo <camilaibs@gmail.com> Date: Mon, 23 Jan 2023 17:45:19 +0100 Subject: [PATCH 094/156] feat(search): create catalog, explore, tools, and search extensions Signed-off-by: Camila Belo <camilaibs@gmail.com> --- .../CatalogSearchResultListItem.tsx | 14 ++++--------- plugins/catalog/src/index.ts | 3 ++- plugins/catalog/src/plugin.ts | 16 +++++++++++++++ .../ToolSearchResultListItem.tsx | 16 +++++---------- plugins/explore/src/components/index.ts | 1 - plugins/explore/src/index.ts | 8 +++++++- plugins/explore/src/plugin.ts | 16 +++++++++++++++ .../DefaultResultListItem.tsx | 15 ++++---------- plugins/search/src/index.ts | 2 +- plugins/techdocs/src/index.ts | 3 +++ plugins/techdocs/src/plugin.ts | 20 +++++++++++++++++++ .../TechDocsSearchResultListItem.tsx | 16 ++++----------- .../techdocs/src/search/components/index.ts | 1 - 13 files changed, 82 insertions(+), 49 deletions(-) diff --git a/plugins/catalog/src/components/CatalogSearchResultListItem/CatalogSearchResultListItem.tsx b/plugins/catalog/src/components/CatalogSearchResultListItem/CatalogSearchResultListItem.tsx index 2e5cbe2899..cf60138d99 100644 --- a/plugins/catalog/src/components/CatalogSearchResultListItem/CatalogSearchResultListItem.tsx +++ b/plugins/catalog/src/components/CatalogSearchResultListItem/CatalogSearchResultListItem.tsx @@ -25,7 +25,6 @@ import { makeStyles, } from '@material-ui/core'; import { Link } from '@backstage/core-components'; -import { useAnalytics } from '@backstage/core-plugin-api'; import { IndexableDocument, ResultHighlight, @@ -50,7 +49,7 @@ const useStyles = makeStyles({ */ export interface CatalogSearchResultListItemProps { icon?: ReactNode; - result: IndexableDocument; + result?: IndexableDocument; highlight?: ResultHighlight; rank?: number; } @@ -63,13 +62,8 @@ export function CatalogSearchResultListItem( const highlight = props.highlight as ResultHighlight; const classes = useStyles(); - const analytics = useAnalytics(); - const handleClick = () => { - analytics.captureEvent('discover', result.title, { - attributes: { to: result.location }, - value: props.rank, - }); - }; + + if (!result) return null; return ( <> @@ -80,7 +74,7 @@ export function CatalogSearchResultListItem( className={classes.itemText} primaryTypographyProps={{ variant: 'h6' }} primary={ - <Link noTrack to={result.location} onClick={handleClick}> + <Link noTrack to={result.location}> {highlight?.fields.title ? ( <HighlightedSearchResultText text={highlight.fields.title} diff --git a/plugins/catalog/src/index.ts b/plugins/catalog/src/index.ts index 7de332cf51..42150dfd66 100644 --- a/plugins/catalog/src/index.ts +++ b/plugins/catalog/src/index.ts @@ -29,7 +29,6 @@ export type { } from './components/AboutCard'; export { AboutContent, AboutField } from './components/AboutCard'; export * from './components/CatalogKindHeader'; -export * from './components/CatalogSearchResultListItem'; export * from './components/CatalogTable'; export * from './components/EntityLayout'; export * from './components/EntityOrphanWarning'; @@ -53,6 +52,7 @@ export { EntityLinksCard, EntityLabelsCard, RelatedEntitiesCard, + CatalogSearchResultListItem, } from './plugin'; export type { DependencyOfComponentsCardProps } from './components/DependencyOfComponentsCard'; @@ -72,3 +72,4 @@ export type { HasResourcesCardProps } from './components/HasResourcesCard'; export type { HasSubcomponentsCardProps } from './components/HasSubcomponentsCard'; export type { HasSystemsCardProps } from './components/HasSystemsCard'; export type { RelatedEntitiesCardProps } from './components/RelatedEntitiesCard'; +export type { CatalogSearchResultListItemProps } from './components/CatalogSearchResultListItem'; diff --git a/plugins/catalog/src/plugin.ts b/plugins/catalog/src/plugin.ts index c83657b85a..12c22eb537 100644 --- a/plugins/catalog/src/plugin.ts +++ b/plugins/catalog/src/plugin.ts @@ -31,6 +31,7 @@ import { fetchApiRef, storageApiRef, } from '@backstage/core-plugin-api'; +import { createSearchResultListItemExtension } from '@backstage/plugin-search-react'; import { DefaultStarredEntitiesApi } from './apis'; import { AboutCardProps } from './components/AboutCard'; import { DefaultCatalogPageProps } from './components/CatalogPage'; @@ -42,6 +43,7 @@ import { HasResourcesCardProps } from './components/HasResourcesCard'; import { HasSubcomponentsCardProps } from './components/HasSubcomponentsCard'; import { HasSystemsCardProps } from './components/HasSystemsCard'; import { RelatedEntitiesCardProps } from './components/RelatedEntitiesCard'; +import { CatalogSearchResultListItemProps } from './components/CatalogSearchResultListItem'; import { rootRouteRef } from './routes'; import { CatalogInputPluginOptions, CatalogPluginOptions } from './options'; @@ -249,3 +251,17 @@ export const RelatedEntitiesCard: <T extends Entity>( }, }), ); + +/** @public */ +export const CatalogSearchResultListItem: ( + props: CatalogSearchResultListItemProps, +) => JSX.Element | null = catalogPlugin.provide( + createSearchResultListItemExtension({ + name: 'CatalogSearchResultListItem', + component: () => + import('./components/CatalogSearchResultListItem').then( + m => m.CatalogSearchResultListItem, + ), + predicate: result => result.type === 'software-catalog', + }), +); diff --git a/plugins/explore/src/components/ToolSearchResultListItem/ToolSearchResultListItem.tsx b/plugins/explore/src/components/ToolSearchResultListItem/ToolSearchResultListItem.tsx index 3f5a515efb..c9e8946f26 100644 --- a/plugins/explore/src/components/ToolSearchResultListItem/ToolSearchResultListItem.tsx +++ b/plugins/explore/src/components/ToolSearchResultListItem/ToolSearchResultListItem.tsx @@ -25,7 +25,6 @@ import { makeStyles, } from '@material-ui/core'; import { Link } from '@backstage/core-components'; -import { useAnalytics } from '@backstage/core-plugin-api'; import { IndexableDocument, ResultHighlight, @@ -50,23 +49,18 @@ const useStyles = makeStyles({ */ export interface ToolSearchResultListItemProps { icon?: ReactNode; - result: IndexableDocument; + result?: IndexableDocument; highlight?: ResultHighlight; rank?: number; } -/** @public */ +/** @public */ export function ToolSearchResultListItem(props: ToolSearchResultListItemProps) { const result = props.result as any; const classes = useStyles(); - const analytics = useAnalytics(); - const handleClick = () => { - analytics.captureEvent('discover', result.title, { - attributes: { to: result.location }, - value: props.rank, - }); - }; + + if (!result) return null; return ( <> @@ -77,7 +71,7 @@ export function ToolSearchResultListItem(props: ToolSearchResultListItemProps) { className={classes.itemText} primaryTypographyProps={{ variant: 'h6' }} primary={ - <Link noTrack to={result.location} onClick={handleClick}> + <Link noTrack to={result.location}> {props.highlight?.fields.title ? ( <HighlightedSearchResultText text={props.highlight.fields.title} diff --git a/plugins/explore/src/components/index.ts b/plugins/explore/src/components/index.ts index d3af1b99c2..f8fba16910 100644 --- a/plugins/explore/src/components/index.ts +++ b/plugins/explore/src/components/index.ts @@ -16,4 +16,3 @@ export * from './DomainCard'; export * from './ExploreLayout'; -export * from './ToolSearchResultListItem'; diff --git a/plugins/explore/src/index.ts b/plugins/explore/src/index.ts index 24591211f7..ec910640cd 100644 --- a/plugins/explore/src/index.ts +++ b/plugins/explore/src/index.ts @@ -23,5 +23,11 @@ export * from './api'; export * from './components'; export * from './extensions'; -export { explorePlugin, explorePlugin as plugin } from './plugin'; +export { + ToolSearchResultListItem, + explorePlugin, + explorePlugin as plugin, +} from './plugin'; export * from './routes'; + +export type { ToolSearchResultListItemProps } from './components/ToolSearchResultListItem'; diff --git a/plugins/explore/src/plugin.ts b/plugins/explore/src/plugin.ts index ab8eedf7ef..5a4bec53c5 100644 --- a/plugins/explore/src/plugin.ts +++ b/plugins/explore/src/plugin.ts @@ -22,7 +22,9 @@ import { discoveryApiRef, fetchApiRef, } from '@backstage/core-plugin-api'; +import { createSearchResultListItemExtension } from '@backstage/plugin-search-react'; import { ExploreClient, exploreApiRef } from './api'; +import { ToolSearchResultListItemProps } from './components/ToolSearchResultListItem'; // import { exampleTools } from './util/examples'; /** @public */ @@ -65,3 +67,17 @@ export const explorePlugin = createPlugin({ catalogEntity: catalogEntityRouteRef, }, }); + +/** @public */ +export const ToolSearchResultListItem: ( + props: ToolSearchResultListItemProps, +) => JSX.Element | null = explorePlugin.provide( + createSearchResultListItemExtension({ + name: 'ToolSearchResultListItem', + component: () => + import('./components/ToolSearchResultListItem').then( + m => m.ToolSearchResultListItem, + ), + predicate: result => result.type === 'tools', + }), +); diff --git a/plugins/search-react/src/components/DefaultResultListItem/DefaultResultListItem.tsx b/plugins/search-react/src/components/DefaultResultListItem/DefaultResultListItem.tsx index 6158aed008..6ea5e4d1a2 100644 --- a/plugins/search-react/src/components/DefaultResultListItem/DefaultResultListItem.tsx +++ b/plugins/search-react/src/components/DefaultResultListItem/DefaultResultListItem.tsx @@ -15,7 +15,7 @@ */ import React, { ReactNode } from 'react'; -import { AnalyticsContext, useAnalytics } from '@backstage/core-plugin-api'; +import { AnalyticsContext } from '@backstage/core-plugin-api'; import { ResultHighlight, SearchDocument, @@ -39,7 +39,7 @@ import { Link } from '@backstage/core-components'; export type DefaultResultListItemProps = { icon?: ReactNode; secondaryAction?: ReactNode; - result: SearchDocument; + result?: SearchDocument; highlight?: ResultHighlight; rank?: number; lineClamp?: number; @@ -53,18 +53,11 @@ export type DefaultResultListItemProps = { export const DefaultResultListItemComponent = ({ result, highlight, - rank, icon, secondaryAction, lineClamp = 5, }: DefaultResultListItemProps) => { - const analytics = useAnalytics(); - const handleClick = () => { - analytics.captureEvent('discover', result.title, { - attributes: { to: result.location }, - value: rank, - }); - }; + if (!result) return null; return ( <> @@ -73,7 +66,7 @@ export const DefaultResultListItemComponent = ({ <ListItemText primaryTypographyProps={{ variant: 'h6' }} primary={ - <Link noTrack to={result.location} onClick={handleClick}> + <Link noTrack to={result.location}> {highlight?.fields.title ? ( <HighlightedSearchResultText text={highlight?.fields.title || ''} diff --git a/plugins/search/src/index.ts b/plugins/search/src/index.ts index 8e1db7c2b8..66b032c83c 100644 --- a/plugins/search/src/index.ts +++ b/plugins/search/src/index.ts @@ -47,7 +47,7 @@ export type { SidebarSearchModalProps } from './components/SidebarSearchModal'; export { HomePageSearchBar, SearchPage, + SidebarSearchModal, searchPlugin as plugin, searchPlugin, - SidebarSearchModal, } from './plugin'; diff --git a/plugins/techdocs/src/index.ts b/plugins/techdocs/src/index.ts index 13b71d49ed..c759d43fe9 100644 --- a/plugins/techdocs/src/index.ts +++ b/plugins/techdocs/src/index.ts @@ -37,11 +37,14 @@ export { TechDocsIndexPage, TechdocsPage, TechDocsReaderPage, + TechDocsSearchResultListItem, techdocsPlugin as plugin, techdocsPlugin, } from './plugin'; export * from './Router'; +export type { TechDocsSearchResultListItemProps } from './search/components/TechDocsSearchResultListItem'; + /** * @deprecated Import from `@backstage/plugin-techdocs-react` instead * diff --git a/plugins/techdocs/src/plugin.ts b/plugins/techdocs/src/plugin.ts index 4ad8b98e37..331eefe121 100644 --- a/plugins/techdocs/src/plugin.ts +++ b/plugins/techdocs/src/plugin.ts @@ -33,6 +33,8 @@ import { fetchApiRef, identityApiRef, } from '@backstage/core-plugin-api'; +import { createSearchResultListItemExtension } from '@backstage/plugin-search-react'; +import { TechDocsSearchResultListItemProps } from './search/components/TechDocsSearchResultListItem'; /** * The Backstage plugin that renders technical documentation for your components @@ -153,3 +155,21 @@ export const TechDocsReaderPage = techdocsPlugin.provide( mountPoint: rootDocsRouteRef, }), ); + +/** + * React extension used to render results on Search page or modal + * + * @public + */ +export const TechDocsSearchResultListItem: ( + props: TechDocsSearchResultListItemProps, +) => JSX.Element | null = techdocsPlugin.provide( + createSearchResultListItemExtension({ + name: 'TechDocsSearchResultListItem', + component: () => + import('./search/components/TechDocsSearchResultListItem').then( + m => m.TechDocsSearchResultListItem, + ), + predicate: result => result.type === 'techdocs', + }), +); diff --git a/plugins/techdocs/src/search/components/TechDocsSearchResultListItem.tsx b/plugins/techdocs/src/search/components/TechDocsSearchResultListItem.tsx index 800fba2260..f058fd0a9e 100644 --- a/plugins/techdocs/src/search/components/TechDocsSearchResultListItem.tsx +++ b/plugins/techdocs/src/search/components/TechDocsSearchResultListItem.tsx @@ -24,7 +24,6 @@ import { } from '@material-ui/core'; import Typography from '@material-ui/core/Typography'; import { Link } from '@backstage/core-components'; -import { useAnalytics } from '@backstage/core-plugin-api'; import { ResultHighlight } from '@backstage/plugin-search-common'; import { HighlightedSearchResultText } from '@backstage/plugin-search-react'; @@ -45,7 +44,7 @@ const useStyles = makeStyles({ */ export type TechDocsSearchResultListItemProps = { icon?: ReactNode; - result: any; + result?: any; highlight?: ResultHighlight; rank?: number; lineClamp?: number; @@ -65,7 +64,6 @@ export const TechDocsSearchResultListItem = ( const { result, highlight, - rank, lineClamp = 5, asListItem = true, asLink = true, @@ -74,17 +72,9 @@ export const TechDocsSearchResultListItem = ( } = props; const classes = useStyles(); - const analytics = useAnalytics(); - const handleClick = () => { - analytics.captureEvent('discover', result.title, { - attributes: { to: result.location }, - value: rank, - }); - }; - const LinkWrapper = ({ children }: PropsWithChildren<{}>) => asLink ? ( - <Link noTrack to={result.location} onClick={handleClick}> + <Link noTrack to={result.location}> {children} </Link> ) : ( @@ -122,6 +112,8 @@ export const TechDocsSearchResultListItem = ( result.name ); + if (!result) return null; + return ( <ListItemText className={classes.itemText} diff --git a/plugins/techdocs/src/search/components/index.ts b/plugins/techdocs/src/search/components/index.ts index 1f7615b4ff..c70681fc53 100644 --- a/plugins/techdocs/src/search/components/index.ts +++ b/plugins/techdocs/src/search/components/index.ts @@ -14,5 +14,4 @@ * limitations under the License. */ -export * from './TechDocsSearchResultListItem'; export * from './TechDocsSearch'; From 5f16dddc96493e460a4b58685087ef672f076959 Mon Sep 17 00:00:00 2001 From: Camila Belo <camilaibs@gmail.com> Date: Sun, 22 Jan 2023 19:42:58 +0100 Subject: [PATCH 095/156] feat(search): use extensions on search pages and modals Signed-off-by: Camila Belo <camilaibs@gmail.com> --- .../app/src/components/search/SearchModal.tsx | 82 +++---------------- .../app/src/components/search/SearchPage.tsx | 55 ++----------- .../app/src/components/search/SearchPage.tsx | 40 +-------- .../components/SearchModal/SearchModal.tsx | 27 +----- 4 files changed, 24 insertions(+), 180 deletions(-) diff --git a/packages/app/src/components/search/SearchModal.tsx b/packages/app/src/components/search/SearchModal.tsx index 527351a857..4694d56390 100644 --- a/packages/app/src/components/search/SearchModal.tsx +++ b/packages/app/src/components/search/SearchModal.tsx @@ -21,7 +21,6 @@ import { DialogContent, DialogTitle, Grid, - List, makeStyles, Paper, useTheme, @@ -44,9 +43,8 @@ import { import { ToolSearchResultListItem } from '@backstage/plugin-explore'; import { searchPlugin, SearchType } from '@backstage/plugin-search'; import { - DefaultResultListItem, - SearchFilter, SearchBar, + SearchFilter, SearchResult, SearchResultPager, useSearch, @@ -93,7 +91,7 @@ export const SearchModal = ({ toggleModal }: { toggleModal: () => void }) => { searchBarRef?.current?.focus(); }); - const handleSearchResulClick = useCallback(() => { + const handleSearchResultClick = useCallback(() => { toggleModal(); setTimeout(focusContent, transitions.duration.leavingScreen); }, [toggleModal, focusContent, transitions]); @@ -101,11 +99,11 @@ export const SearchModal = ({ toggleModal }: { toggleModal: () => void }) => { const handleSearchBarKeyDown = useCallback( (e: KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => { if (e.key === 'Enter') { + handleSearchResultClick(); navigate(searchPagePath); - toggleModal(); } }, - [navigate, toggleModal, searchPagePath], + [navigate, searchPagePath, handleSearchResultClick], ); return ( @@ -189,7 +187,7 @@ export const SearchModal = ({ toggleModal }: { toggleModal: () => void }) => { alignItems="center" > <Grid item> - <Link to={searchPagePath} onClick={handleSearchResulClick}> + <Link to={searchPagePath} onClick={handleSearchResultClick}> <Typography component="span" className={classes.viewResultsLink} @@ -202,69 +200,13 @@ export const SearchModal = ({ toggleModal }: { toggleModal: () => void }) => { </Grid> </Grid> <Grid item xs> - <SearchResult> - {({ results }) => ( - <List> - {results.map(({ type, document, highlight, rank }) => { - let resultItem; - switch (type) { - case 'software-catalog': - resultItem = ( - <CatalogSearchResultListItem - icon={<CatalogIcon />} - key={document.location} - result={document} - highlight={highlight} - rank={rank} - /> - ); - break; - case 'techdocs': - resultItem = ( - <TechDocsSearchResultListItem - icon={<DocsIcon />} - key={document.location} - result={document} - highlight={highlight} - rank={rank} - /> - ); - break; - case 'tools': - resultItem = ( - <ToolSearchResultListItem - icon={<BuildIcon />} - key={document.location} - result={document} - highlight={highlight} - rank={rank} - /> - ); - break; - default: - resultItem = ( - <DefaultResultListItem - key={document.location} - result={document} - highlight={highlight} - rank={rank} - /> - ); - } - return ( - <div - role="button" - tabIndex={0} - key={`${document.location}-btn`} - onClick={handleSearchResulClick} - onKeyDown={handleSearchResulClick} - > - {resultItem} - </div> - ); - })} - </List> - )} + <SearchResult + onClick={handleSearchResultClick} + onKeyDown={handleSearchResultClick} + > + <CatalogSearchResultListItem icon={<CatalogIcon />} /> + <TechDocsSearchResultListItem icon={<DocsIcon />} /> + <ToolSearchResultListItem icon={<BuildIcon />} /> </SearchResult> </Grid> </Grid> diff --git a/packages/app/src/components/search/SearchPage.tsx b/packages/app/src/components/search/SearchPage.tsx index b79c6a7248..8167889b02 100644 --- a/packages/app/src/components/search/SearchPage.tsx +++ b/packages/app/src/components/search/SearchPage.tsx @@ -30,16 +30,15 @@ import { } from '@backstage/plugin-catalog-react'; import { SearchType } from '@backstage/plugin-search'; import { - DefaultResultListItem, SearchBar, SearchFilter, - SearchResult, SearchPagination, + SearchResult, SearchResultPager, useSearch, } from '@backstage/plugin-search-react'; import { TechDocsSearchResultListItem } from '@backstage/plugin-techdocs'; -import { Grid, List, makeStyles, Paper, Theme } from '@material-ui/core'; +import { Grid, makeStyles, Paper, Theme } from '@material-ui/core'; import React from 'react'; import { ToolSearchResultListItem } from '@backstage/plugin-explore'; import BuildIcon from '@material-ui/icons/Build'; @@ -133,53 +132,9 @@ const SearchPage = () => { <Grid item xs> <SearchPagination /> <SearchResult> - {({ results }) => ( - <List> - {results.map(({ type, document, highlight, rank }) => { - switch (type) { - case 'software-catalog': - return ( - <CatalogSearchResultListItem - icon={<CatalogIcon />} - key={document.location} - result={document} - highlight={highlight} - rank={rank} - /> - ); - case 'techdocs': - return ( - <TechDocsSearchResultListItem - icon={<DocsIcon />} - key={document.location} - result={document} - highlight={highlight} - rank={rank} - /> - ); - case 'tools': - return ( - <ToolSearchResultListItem - icon={<BuildIcon />} - key={document.location} - result={document} - highlight={highlight} - rank={rank} - /> - ); - default: - return ( - <DefaultResultListItem - key={document.location} - result={document} - highlight={highlight} - rank={rank} - /> - ); - } - })} - </List> - )} + <CatalogSearchResultListItem icon={<CatalogIcon />} /> + <TechDocsSearchResultListItem icon={<DocsIcon />} /> + <ToolSearchResultListItem icon={<BuildIcon />} /> </SearchResult> <SearchResultPager /> </Grid> diff --git a/packages/create-app/templates/default-app/packages/app/src/components/search/SearchPage.tsx b/packages/create-app/templates/default-app/packages/app/src/components/search/SearchPage.tsx index 9f11d0c80c..1788dde1bd 100644 --- a/packages/create-app/templates/default-app/packages/app/src/components/search/SearchPage.tsx +++ b/packages/create-app/templates/default-app/packages/app/src/components/search/SearchPage.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { makeStyles, Theme, Grid, List, Paper } from '@material-ui/core'; +import { makeStyles, Theme, Grid, Paper } from '@material-ui/core'; import { CatalogSearchResultListItem } from '@backstage/plugin-catalog'; import { @@ -10,7 +10,6 @@ import { TechDocsSearchResultListItem } from '@backstage/plugin-techdocs'; import { SearchType } from '@backstage/plugin-search'; import { - DefaultResultListItem, SearchBar, SearchFilter, SearchResult, @@ -112,41 +111,8 @@ const SearchPage = () => { <Grid item xs={9}> <SearchPagination /> <SearchResult> - {({ results }) => ( - <List> - {results.map(({ type, document, highlight, rank }) => { - switch (type) { - case 'software-catalog': - return ( - <CatalogSearchResultListItem - key={document.location} - result={document} - highlight={highlight} - rank={rank} - /> - ); - case 'techdocs': - return ( - <TechDocsSearchResultListItem - key={document.location} - result={document} - highlight={highlight} - rank={rank} - /> - ); - default: - return ( - <DefaultResultListItem - key={document.location} - result={document} - highlight={highlight} - rank={rank} - /> - ); - } - })} - </List> - )} + <CatalogSearchResultListItem icon={<CatalogIcon />} /> + <TechDocsSearchResultListItem icon={<DocsIcon />} /> </SearchResult> </Grid> </Grid> diff --git a/plugins/search/src/components/SearchModal/SearchModal.tsx b/plugins/search/src/components/SearchModal/SearchModal.tsx index b1a0b2cd45..d17cf0f6ba 100644 --- a/plugins/search/src/components/SearchModal/SearchModal.tsx +++ b/plugins/search/src/components/SearchModal/SearchModal.tsx @@ -23,7 +23,6 @@ import { DialogTitle, Divider, Grid, - List, Paper, useTheme, } from '@material-ui/core'; @@ -31,7 +30,6 @@ import Typography from '@material-ui/core/Typography'; import LaunchIcon from '@material-ui/icons/Launch'; import { makeStyles } from '@material-ui/core/styles'; import { - DefaultResultListItem, SearchContextProvider, SearchBar, SearchResult, @@ -151,27 +149,10 @@ export const Modal = ({ toggleModal }: SearchModalProps) => { </Grid> </Grid> <Divider /> - <SearchResult> - {({ results }) => ( - <List> - {results.map(({ document, highlight }) => ( - <div - role="button" - tabIndex={0} - key={`${document.location}-btn`} - onClick={handleSearchResultClick} - onKeyDown={handleSearchResultClick} - > - <DefaultResultListItem - key={document.location} - result={document} - highlight={highlight} - /> - </div> - ))} - </List> - )} - </SearchResult> + <SearchResult + onClick={handleSearchResultClick} + onKeyDown={handleSearchResultClick} + /> </DialogContent> <DialogActions className={classes.dialogActionsContainer}> <Grid container direction="row"> From f5fbd82b1ddf0f9e4a26447b4536204d5f66174f Mon Sep 17 00:00:00 2001 From: Camila Belo <camilaibs@gmail.com> Date: Sun, 22 Jan 2023 19:43:31 +0100 Subject: [PATCH 096/156] docs(search): update official page Signed-off-by: Camila Belo <camilaibs@gmail.com> --- docs/features/search/how-to-guides.md | 153 ++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) diff --git a/docs/features/search/how-to-guides.md b/docs/features/search/how-to-guides.md index eb162ce527..6f113630f6 100644 --- a/docs/features/search/how-to-guides.md +++ b/docs/features/search/how-to-guides.md @@ -210,3 +210,156 @@ const highlightOverride = { [obj-mode]: https://nodejs.org/dist/latest-v16.x/docs/api/stream.html#stream_object_mode [read-stream]: https://nodejs.org/dist/latest-v16.x/docs/api/stream.html#readable-streams [async-gen]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of#iterating_over_async_generators + +## How to render search results using extensions + +Extensions for search results let you customize components used to render search result items, It is possible to provide your own search result item extensions or use the ones provided by plugin packages: + +### 1. Providing an extension in your plugin package + +Using the example below, you can provide an extension to be used as a default result item: + +```tsx +// plugins/your-plugin/src/plugin.ts +import { createPlugin } from '@backstage/core-plugin-api'; +import { createSearchResultListItemExtension } from '@backstage/plugin-search-react'; + +const plugin = createPlugin({ id: 'YOUR_PLUGIN_ID' }); + +export const YourSearchResultListItemExtension = plugin.provide( + createSearchResultListItemExtension({ + name: 'YourSearchResultListItem', + component: () => + import('./components').then(m => m.YourSearchResultListItem), + }), +); +``` + +Additionally, you can define a predicate function that receives a result and returns whether your extension should be used to render it or not: + +```tsx +// plugins/your-plugin/src/plugin.ts +import { createPlugin } from '@backstage/core-plugin-api'; +import { createSearchResultListItemExtension } from '@backstage/plugin-search-react'; + +const plugin = createPlugin({ id: 'YOUR_PLUGIN_ID' }); + +export const YourSearchResultListItemExtension = plugin.provide( + createSearchResultListItemExtension({ + name: 'YourSearchResultListItem', + component: () => + import('./components').then(m => m.YourSearchResultListItem), + // Only results matching your type will be rendered by this extension + predicate: result => result.type === 'YOUR_RESULT_TYPE', + }), +); +``` + +Remember to export your new extension: + +```tsx +// plugins/your-plugin/src/index.ts +export { YourSearchResultListItem } from './plugin.ts'; +``` + +For more details, see the [createSearchResultListItemExtension](https://backstage.io/docs/reference/plugin-search-react.createsearchresultlistitemextension) API reference. + +### 2. Using an extension in your Backstage app + +Now that you know how a search result item is provided, let's finally see how they can be used, for example, to compose a page in your application: + +```tsx +// packages/app/src/components/searchPage.tsx +import React from 'react'; + +import { Grid, Paper } from '@material-ui/core'; +import BuildIcon from '@material-ui/icons/Build'; + +import { + Page, + Header, + Content, + DocsIcon, + CatalogIcon, +} from '@backstage/core-components'; +import { SearchBar, SearchResult } from '@backstage/plugin-search-react'; + +// Your search result item extension +import { YourSearchResultListItem } from '@backstage/your-plugin'; + +// Extensions provided by other plugin developers +import { ToolSearchResultListItem } from '@backstage/plugin-explore'; +import { TechDocsSearchResultListItem } from '@backstage/plugin-techdocs'; +import { CatalogSearchResultListItem } from '@internal/plugin-catalog-customized'; + +// This example omits other components, like filter and pagination +const SearchPage = () => ( + <Page themeId="home"> + <Header title="Search" /> + <Content> + <Grid container direction="row"> + <Grid item xs={12}> + <Paper> + <SearchBar /> + </Paper> + </Grid> + <Grid item xs={12}> + <SearchResult> + <YourSearchResultListItem /> + <CatalogSearchResultListItem icon={<CatalogIcon />} /> + <TechDocsSearchResultListItem icon={<DocsIcon />} /> + <ToolSearchResultListItem icon={<BuildIcon />} /> + </SearchResult> + </Grid> + </Grid> + </Content> + </Page> +); + +export const searchPage = <SearchPage />; +``` + +> **Important**: A default result item extension should be placed as the last child, so it can be used only when no other extensions match the result being rendered. If a non-default extension is specified, the `DefaultResultListItem` component will be used. + +As another example, here's a search modal that renders results with extensions: + +```tsx +// packages/app/src/components/searchModal.tsx +import React from 'react'; + +import { DialogContent, DialogTitle, Paper } from '@material-ui/core'; +import BuildIcon from '@material-ui/icons/Build'; + +import { DocsIcon, CatalogIcon } from '@backstage/core-components'; +import { SearchBar, SearchResult } from '@backstage/plugin-search-react'; + +// Your search result item extension +import { YourSearchResultListItem } from '@backstage/your-plugin'; + +// Extensions provided by other plugin developers +import { ToolSearchResultListItem } from '@backstage/plugin-explore'; +import { TechDocsSearchResultListItem } from '@backstage/plugin-techdocs'; +import { CatalogSearchResultListItem } from '@internal/plugin-catalog-customized'; + +export const SearchModal = ({ toggleModal }: { toggleModal: () => void }) => ( + <> + <DialogTitle> + <Paper> + <SearchBar /> + </Paper> + </DialogTitle> + <DialogContent> + <SearchResult onClick={toggleModal}> + <CatalogSearchResultListItem icon={<CatalogIcon />} /> + <TechDocsSearchResultListItem icon={<DocsIcon />} /> + <ToolSearchResultListItem icon={<BuildIcon />} /> + {/* As a "default" extension, it does not define a predicate function, + so it must be the last child to render results that do not match the above extensions */} + <YourSearchResultListItem /> + </SearchResult> + </DialogContent> + </> +); +``` + +There are other more specific search results layout components that also accept result item extensions, check their documentation: [SearchResultList](https://backstage.io/storybook/?path=/story/plugins-search-searchresultlist--with-result-item-extensions) and [SearchResultGroup](https://backstage.io/storybook/?path=/story/plugins-search-searchresultgroup--with-result-item-extensions). From 5dc2618440227535752c7250229b0d17fbf5e408 Mon Sep 17 00:00:00 2001 From: Camila Belo <camilaibs@gmail.com> Date: Sun, 22 Jan 2023 19:43:52 +0100 Subject: [PATCH 097/156] docs(search): update api reports Signed-off-by: Camila Belo <camilaibs@gmail.com> --- plugins/catalog/api-report.md | 7 ++- plugins/explore/api-report.md | 7 ++- plugins/search-react/api-report.md | 87 +++++++++++++++++++++--------- plugins/search/api-report.md | 5 ++ plugins/techdocs/api-report.md | 7 ++- 5 files changed, 77 insertions(+), 36 deletions(-) diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index 82df851239..0e7162ea07 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -19,6 +19,7 @@ import { default as React_2 } from 'react'; import { ReactNode } from 'react'; import { ResultHighlight } from '@backstage/plugin-search-common'; import { RouteRef } from '@backstage/core-plugin-api'; +import { SearchResultListItemExtensionComponent } from '@backstage/plugin-search-react'; import { StarredEntitiesApi } from '@backstage/plugin-catalog-react'; import { StorageApi } from '@backstage/core-plugin-api'; import { StyleRules } from '@material-ui/core/styles/withStyles'; @@ -107,9 +108,7 @@ export const catalogPlugin: BackstagePlugin< >; // @public (undocumented) -export function CatalogSearchResultListItem( - props: CatalogSearchResultListItemProps, -): JSX.Element; +export const CatalogSearchResultListItem: SearchResultListItemExtensionComponent<CatalogSearchResultListItemProps>; // @public export interface CatalogSearchResultListItemProps { @@ -120,7 +119,7 @@ export interface CatalogSearchResultListItemProps { // (undocumented) rank?: number; // (undocumented) - result: IndexableDocument; + result?: IndexableDocument; } // @public (undocumented) diff --git a/plugins/explore/api-report.md b/plugins/explore/api-report.md index d184ce01a4..906e816442 100644 --- a/plugins/explore/api-report.md +++ b/plugins/explore/api-report.md @@ -19,6 +19,7 @@ import { IndexableDocument } from '@backstage/plugin-search-common'; import { ReactNode } from 'react'; import { ResultHighlight } from '@backstage/plugin-search-common'; import { RouteRef } from '@backstage/core-plugin-api'; +import { SearchResultListItemExtensionComponent } from '@backstage/plugin-search-react'; import { TabProps } from '@material-ui/core'; // @public @deprecated (undocumented) @@ -125,9 +126,7 @@ export const ToolExplorerContent: (props: { }) => JSX.Element; // @public (undocumented) -export function ToolSearchResultListItem( - props: ToolSearchResultListItemProps, -): JSX.Element; +export const ToolSearchResultListItem: SearchResultListItemExtensionComponent<ToolSearchResultListItemProps>; // @public export interface ToolSearchResultListItemProps { @@ -138,6 +137,6 @@ export interface ToolSearchResultListItemProps { // (undocumented) rank?: number; // (undocumented) - result: IndexableDocument; + result?: IndexableDocument; } ``` diff --git a/plugins/search-react/api-report.md b/plugins/search-react/api-report.md index 3d1e4091ea..8b09ad2a48 100644 --- a/plugins/search-react/api-report.md +++ b/plugins/search-react/api-report.md @@ -8,6 +8,7 @@ import { ApiRef } from '@backstage/core-plugin-api'; import { AsyncState } from 'react-use/lib/useAsync'; import { AutocompleteProps } from '@material-ui/lab'; +import { Extension } from '@backstage/core-plugin-api'; import { ForwardRefExoticComponent } from 'react'; import { InputBaseProps } from '@material-ui/core'; import { JsonObject } from '@backstage/types'; @@ -34,6 +35,13 @@ export const AutocompleteFilter: ( // @public (undocumented) export const CheckboxFilter: (props: SearchFilterComponentProps) => JSX.Element; +// @public +export const createSearchResultListItemExtension: < + Props extends SearchResultListItemExtensionProps, +>( + options: SearchResultListItemExtensionOptions<Props>, +) => Extension<SearchResultListItemExtensionComponent<Props>>; + // @public (undocumented) export const DefaultResultListItem: ( props: DefaultResultListItemProps, @@ -43,7 +51,7 @@ export const DefaultResultListItem: ( export type DefaultResultListItemProps = { icon?: ReactNode; secondaryAction?: ReactNode; - result: SearchDocument; + result?: SearchDocument; highlight?: ResultHighlight; rank?: number; lineClamp?: number; @@ -280,7 +288,10 @@ export const SearchResultContext: ( // @public export type SearchResultContextProps = { - children: (state: AsyncState<SearchResultSet>) => JSX.Element | null; + children: ( + state: AsyncState<SearchResultSet>, + query: Partial<SearchQuery>, + ) => JSX.Element | null; }; // @public @@ -313,6 +324,8 @@ export function SearchResultGroupLayout<FilterOption>( // @public export type SearchResultGroupLayoutProps<FilterOption> = ListProps & { + error?: Error; + loading?: boolean; icon: JSX.Element; title: ReactNode; titleProps?: Partial<TypographyProps>; @@ -332,19 +345,19 @@ export type SearchResultGroupLayoutProps<FilterOption> = ListProps & { index: number, array: SearchResult_2[], ) => JSX.Element | null; - error?: Error; - loading?: boolean; noResultsComponent?: ReactNode; + disableRenderingWithNoResults?: boolean; }; // @public -export type SearchResultGroupProps<FilterOption> = Omit< - SearchResultGroupLayoutProps<FilterOption>, - 'loading' | 'error' | 'resultItems' | 'filterFields' -> & { - query: Partial<SearchQuery>; - disableRenderingWithNoResults?: boolean; -}; +export type SearchResultGroupProps<FilterOption> = Pick< + SearchResultStateProps, + 'query' +> & + Omit< + SearchResultGroupLayoutProps<FilterOption>, + 'loading' | 'error' | 'resultItems' | 'filterFields' + >; // @public export const SearchResultGroupSelectFilterField: ( @@ -369,6 +382,30 @@ export type SearchResultGroupTextFilterFieldProps = // @public export const SearchResultList: (props: SearchResultListProps) => JSX.Element; +// @public +export type SearchResultListItemExtensionComponent< + Props extends SearchResultListItemExtensionProps, +> = (props: Props) => JSX.Element | null; + +// @public +export type SearchResultListItemExtensionOptions< + Props extends SearchResultListItemExtensionProps = SearchResultListItemExtensionProps, +> = { + name: string; + component: (props: Props) => JSX.Element | null; + predicate?: (result: SearchResult_2) => boolean; +}; + +// @public +export const SearchResultListItemExtensions: ( + props: SearchResultListItemExtensionsProps, +) => JSX.Element; + +// @public +export type SearchResultListItemExtensionsProps = Omit<ListProps, 'results'> & { + results: SearchResult_2[]; +}; + // @public export const SearchResultListLayout: ( props: SearchResultListLayoutProps, @@ -376,34 +413,31 @@ export const SearchResultListLayout: ( // @public export type SearchResultListLayoutProps = ListProps & { + error?: Error; + loading?: boolean; resultItems?: SearchResult_2[]; renderResultItem?: ( value: SearchResult_2, index: number, array: SearchResult_2[], ) => JSX.Element | null; - error?: Error; - loading?: boolean; noResultsComponent?: ReactNode; + disableRenderingWithNoResults?: boolean; }; // @public -export type SearchResultListProps = Omit< - SearchResultListLayoutProps, - 'loading' | 'error' | 'resultItems' -> & { - query: Partial<SearchQuery>; - disableRenderingWithNoResults?: boolean; -}; +export type SearchResultListProps = Pick<SearchResultStateProps, 'query'> & + Omit<SearchResultListLayoutProps, 'loading' | 'error' | 'resultItems'>; // @public (undocumented) export const SearchResultPager: () => JSX.Element; // @public -export type SearchResultProps = Pick<SearchResultStateProps, 'query'> & { - children: (resultSet: SearchResultSet) => JSX.Element; - noResultsComponent?: JSX.Element; -}; +export type SearchResultProps = Pick<SearchResultStateProps, 'query'> & + Omit<SearchResultListItemExtensionsProps, 'results' | 'children'> & { + children?: ReactNode | ((resultSet: SearchResultSet) => JSX.Element); + noResultsComponent?: JSX.Element; + }; // @public export const SearchResultState: (props: SearchResultStateProps) => JSX.Element; @@ -420,4 +454,9 @@ export const useSearch: () => SearchContextValue; // @public export const useSearchContextCheck: () => boolean; + +// @public +export const useSearchResultListItemExtensions: ( + children: ReactNode, +) => (result: SearchResult_2, key?: number) => JSX.Element; ``` diff --git a/plugins/search/api-report.md b/plugins/search/api-report.md index cdbdc4c095..0a31b3021b 100644 --- a/plugins/search/api-report.md +++ b/plugins/search/api-report.md @@ -6,10 +6,15 @@ /// <reference types="react" /> import { BackstagePlugin } from '@backstage/core-plugin-api'; +import { DefaultResultListItemProps } from '@backstage/plugin-search-react'; import { IconComponent } from '@backstage/core-plugin-api'; import { ReactNode } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; import { SearchBarBaseProps } from '@backstage/plugin-search-react'; +import { SearchResultListItemExtensionComponent } from '@backstage/plugin-search-react'; + +// @public (undocumented) +export const DefaultSearchResultListItem: SearchResultListItemExtensionComponent<DefaultResultListItemProps>; // @public (undocumented) export const HomePageSearchBar: ({ diff --git a/plugins/techdocs/api-report.md b/plugins/techdocs/api-report.md index d1c05f5b8e..07067b9fcc 100644 --- a/plugins/techdocs/api-report.md +++ b/plugins/techdocs/api-report.md @@ -19,6 +19,7 @@ import { default as React_2 } from 'react'; import { ReactNode } from 'react'; import { ResultHighlight } from '@backstage/plugin-search-common'; import { RouteRef } from '@backstage/core-plugin-api'; +import { SearchResultListItemExtensionComponent } from '@backstage/plugin-search-react'; import { TableColumn } from '@backstage/core-components'; import { TableProps } from '@backstage/core-components'; import { TechDocsEntityMetadata as TechDocsEntityMetadata_2 } from '@backstage/plugin-techdocs-react'; @@ -396,14 +397,12 @@ export type TechDocsSearchProps = { }; // @public -export const TechDocsSearchResultListItem: ( - props: TechDocsSearchResultListItemProps, -) => JSX.Element; +export const TechDocsSearchResultListItem: SearchResultListItemExtensionComponent<TechDocsSearchResultListItemProps>; // @public export type TechDocsSearchResultListItemProps = { icon?: ReactNode; - result: any; + result?: any; highlight?: ResultHighlight; rank?: number; lineClamp?: number; From 0eaa579f894fe13aa24efdb68ff6ad7a038d7eff Mon Sep 17 00:00:00 2001 From: Camila Belo <camilaibs@gmail.com> Date: Mon, 23 Jan 2023 09:28:49 +0100 Subject: [PATCH 098/156] docs(search): add changeset files Signed-off-by: Camila Belo <camilaibs@gmail.com> --- .changeset/gold-bulldogs-talk.md | 5 +++++ .changeset/nasty-beans-accept.md | 5 +++++ .changeset/old-knives-wonder.md | 5 +++++ .changeset/rich-snakes-rest.md | 5 +++++ .changeset/stupid-ladybugs-brake.md | 6 ++++++ .changeset/witty-moose-itch.md | 5 +++++ plugins/catalog/api-report.md | 5 +++-- plugins/explore/api-report.md | 5 +++-- plugins/search-react/api-report.md | 15 +++++---------- plugins/search/api-report.md | 5 ----- plugins/techdocs/api-report.md | 5 +++-- 11 files changed, 45 insertions(+), 21 deletions(-) create mode 100644 .changeset/gold-bulldogs-talk.md create mode 100644 .changeset/nasty-beans-accept.md create mode 100644 .changeset/old-knives-wonder.md create mode 100644 .changeset/rich-snakes-rest.md create mode 100644 .changeset/stupid-ladybugs-brake.md create mode 100644 .changeset/witty-moose-itch.md diff --git a/.changeset/gold-bulldogs-talk.md b/.changeset/gold-bulldogs-talk.md new file mode 100644 index 0000000000..e5b6254ec5 --- /dev/null +++ b/.changeset/gold-bulldogs-talk.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search': minor +--- + +Update `SearchModal` component to use `SearchResult` extensions. diff --git a/.changeset/nasty-beans-accept.md b/.changeset/nasty-beans-accept.md new file mode 100644 index 0000000000..05ccb64c33 --- /dev/null +++ b/.changeset/nasty-beans-accept.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': minor +--- + +Update `SearchPage` template to use `SearchResult` extensions. diff --git a/.changeset/old-knives-wonder.md b/.changeset/old-knives-wonder.md new file mode 100644 index 0000000000..93d2be4871 --- /dev/null +++ b/.changeset/old-knives-wonder.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': minor +--- + +The `CatalogSearchResultListItem` component is now a search result extension. This means that when rendered as a child of components that render search extensions, the `result`, `rank`, and `highlight` properties are optional. See the [documentation](https://backstage.io/docs/features/search/how-to-guides#how-to-render-search-results-using-extensions) for more details. diff --git a/.changeset/rich-snakes-rest.md b/.changeset/rich-snakes-rest.md new file mode 100644 index 0000000000..7b42491ba1 --- /dev/null +++ b/.changeset/rich-snakes-rest.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-explore': minor +--- + +The `ToolSearchResultListItem` component is now a search result extension. This means that when rendered as a child of components that render search extensions, the `result`, `rank`, and `highlight` properties are optional. See the [documentation](https://backstage.io/docs/features/search/how-to-guides#how-to-render-search-results-using-extensions) for more details. diff --git a/.changeset/stupid-ladybugs-brake.md b/.changeset/stupid-ladybugs-brake.md new file mode 100644 index 0000000000..5a14b82937 --- /dev/null +++ b/.changeset/stupid-ladybugs-brake.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-search-react': minor +--- + +- Create the search results extensions, for more details see the documentation [here](https://backstage.io/docs/features/search/how-to-guides#how-to-render-search-results-using-extensions); +- Update the `SearchResult`, `SearchResultList` and `SearchResultGroup` components to use extensions and default their props to optionally accept a query, when the query is not passed, the component tries to get it from the search context. diff --git a/.changeset/witty-moose-itch.md b/.changeset/witty-moose-itch.md new file mode 100644 index 0000000000..e2593bf7e7 --- /dev/null +++ b/.changeset/witty-moose-itch.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': minor +--- + +The `TechDocsSearchResultListItem` component is now a search result extension. This means that when rendered as a child of components that render search extensions, the `result`, `rank`, and `highlight` properties are optional. See the [documentation](https://backstage.io/docs/features/search/how-to-guides#how-to-render-search-results-using-extensions) for more details. diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index 0e7162ea07..901120bd22 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -19,7 +19,6 @@ import { default as React_2 } from 'react'; import { ReactNode } from 'react'; import { ResultHighlight } from '@backstage/plugin-search-common'; import { RouteRef } from '@backstage/core-plugin-api'; -import { SearchResultListItemExtensionComponent } from '@backstage/plugin-search-react'; import { StarredEntitiesApi } from '@backstage/plugin-catalog-react'; import { StorageApi } from '@backstage/core-plugin-api'; import { StyleRules } from '@material-ui/core/styles/withStyles'; @@ -108,7 +107,9 @@ export const catalogPlugin: BackstagePlugin< >; // @public (undocumented) -export const CatalogSearchResultListItem: SearchResultListItemExtensionComponent<CatalogSearchResultListItemProps>; +export const CatalogSearchResultListItem: ( + props: CatalogSearchResultListItemProps, +) => JSX.Element | null; // @public export interface CatalogSearchResultListItemProps { diff --git a/plugins/explore/api-report.md b/plugins/explore/api-report.md index 906e816442..e7adde4b77 100644 --- a/plugins/explore/api-report.md +++ b/plugins/explore/api-report.md @@ -19,7 +19,6 @@ import { IndexableDocument } from '@backstage/plugin-search-common'; import { ReactNode } from 'react'; import { ResultHighlight } from '@backstage/plugin-search-common'; import { RouteRef } from '@backstage/core-plugin-api'; -import { SearchResultListItemExtensionComponent } from '@backstage/plugin-search-react'; import { TabProps } from '@material-ui/core'; // @public @deprecated (undocumented) @@ -126,7 +125,9 @@ export const ToolExplorerContent: (props: { }) => JSX.Element; // @public (undocumented) -export const ToolSearchResultListItem: SearchResultListItemExtensionComponent<ToolSearchResultListItemProps>; +export const ToolSearchResultListItem: ( + props: ToolSearchResultListItemProps, +) => JSX.Element | null; // @public export interface ToolSearchResultListItemProps { diff --git a/plugins/search-react/api-report.md b/plugins/search-react/api-report.md index 8b09ad2a48..ccf7a72e33 100644 --- a/plugins/search-react/api-report.md +++ b/plugins/search-react/api-report.md @@ -37,10 +37,10 @@ export const CheckboxFilter: (props: SearchFilterComponentProps) => JSX.Element; // @public export const createSearchResultListItemExtension: < - Props extends SearchResultListItemExtensionProps, + Component extends (props: any) => JSX.Element | null, >( - options: SearchResultListItemExtensionOptions<Props>, -) => Extension<SearchResultListItemExtensionComponent<Props>>; + options: SearchResultListItemExtensionOptions<Component>, +) => Extension<Component>; // @public (undocumented) export const DefaultResultListItem: ( @@ -382,17 +382,12 @@ export type SearchResultGroupTextFilterFieldProps = // @public export const SearchResultList: (props: SearchResultListProps) => JSX.Element; -// @public -export type SearchResultListItemExtensionComponent< - Props extends SearchResultListItemExtensionProps, -> = (props: Props) => JSX.Element | null; - // @public export type SearchResultListItemExtensionOptions< - Props extends SearchResultListItemExtensionProps = SearchResultListItemExtensionProps, + Component extends (props: any) => JSX.Element | null, > = { name: string; - component: (props: Props) => JSX.Element | null; + component: () => Promise<Component>; predicate?: (result: SearchResult_2) => boolean; }; diff --git a/plugins/search/api-report.md b/plugins/search/api-report.md index 0a31b3021b..cdbdc4c095 100644 --- a/plugins/search/api-report.md +++ b/plugins/search/api-report.md @@ -6,15 +6,10 @@ /// <reference types="react" /> import { BackstagePlugin } from '@backstage/core-plugin-api'; -import { DefaultResultListItemProps } from '@backstage/plugin-search-react'; import { IconComponent } from '@backstage/core-plugin-api'; import { ReactNode } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; import { SearchBarBaseProps } from '@backstage/plugin-search-react'; -import { SearchResultListItemExtensionComponent } from '@backstage/plugin-search-react'; - -// @public (undocumented) -export const DefaultSearchResultListItem: SearchResultListItemExtensionComponent<DefaultResultListItemProps>; // @public (undocumented) export const HomePageSearchBar: ({ diff --git a/plugins/techdocs/api-report.md b/plugins/techdocs/api-report.md index 07067b9fcc..ea7d86e9bc 100644 --- a/plugins/techdocs/api-report.md +++ b/plugins/techdocs/api-report.md @@ -19,7 +19,6 @@ import { default as React_2 } from 'react'; import { ReactNode } from 'react'; import { ResultHighlight } from '@backstage/plugin-search-common'; import { RouteRef } from '@backstage/core-plugin-api'; -import { SearchResultListItemExtensionComponent } from '@backstage/plugin-search-react'; import { TableColumn } from '@backstage/core-components'; import { TableProps } from '@backstage/core-components'; import { TechDocsEntityMetadata as TechDocsEntityMetadata_2 } from '@backstage/plugin-techdocs-react'; @@ -397,7 +396,9 @@ export type TechDocsSearchProps = { }; // @public -export const TechDocsSearchResultListItem: SearchResultListItemExtensionComponent<TechDocsSearchResultListItemProps>; +export const TechDocsSearchResultListItem: ( + props: TechDocsSearchResultListItemProps, +) => JSX.Element | null; // @public export type TechDocsSearchResultListItemProps = { From 6aba9d113d7ef824582238e31d0ac939fe7647c7 Mon Sep 17 00:00:00 2001 From: Camila Belo <camilaibs@gmail.com> Date: Sat, 28 Jan 2023 11:06:01 +0100 Subject: [PATCH 099/156] fix(search): result extension stories Signed-off-by: Camila Belo <camilaibs@gmail.com> --- .../components/SearchResult/SearchResult.stories.tsx | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/plugins/search-react/src/components/SearchResult/SearchResult.stories.tsx b/plugins/search-react/src/components/SearchResult/SearchResult.stories.tsx index b491d66c83..f3086fc40a 100644 --- a/plugins/search-react/src/components/SearchResult/SearchResult.stories.tsx +++ b/plugins/search-react/src/components/SearchResult/SearchResult.stories.tsx @@ -15,14 +15,13 @@ */ import React, { ComponentType } from 'react'; -import { MemoryRouter } from 'react-router-dom'; import { List, ListItem } from '@material-ui/core'; import DefaultIcon from '@material-ui/icons/InsertDriveFile'; import CustomIcon from '@material-ui/icons/NoteAdd'; import { Link } from '@backstage/core-components'; -import { TestApiProvider } from '@backstage/test-utils'; +import { TestApiProvider, wrapInTestApp } from '@backstage/test-utils'; import { createPlugin } from '@backstage/core-plugin-api'; import { SearchDocument } from '@backstage/plugin-search-common'; @@ -71,15 +70,14 @@ export default { title: 'Plugins/Search/SearchResult', component: SearchResult, decorators: [ - (Story: ComponentType<{}>) => ( - <MemoryRouter> + (Story: ComponentType<{}>) => + wrapInTestApp( <TestApiProvider apis={[[searchApiRef, searchApiMock]]}> <SearchContextProvider> <Story /> </SearchContextProvider> - </TestApiProvider> - </MemoryRouter> - ), + </TestApiProvider>, + ), ], }; From 312a5d9f30ff95bfacd70ff69b27128173d14aa0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg <poldsberg@gmail.com> Date: Sat, 28 Jan 2023 15:47:10 +0100 Subject: [PATCH 100/156] cli: make sure max workers workers are set to at least 2 by default Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com> --- .changeset/chatty-owls-care.md | 2 +- packages/cli/src/commands/repo/test.ts | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.changeset/chatty-owls-care.md b/.changeset/chatty-owls-care.md index 84b6fc76f6..9f39f51bb5 100644 --- a/.changeset/chatty-owls-care.md +++ b/.changeset/chatty-owls-care.md @@ -2,4 +2,4 @@ '@backstage/cli': patch --- -The `backstage-cli repo test` command now sets a default Jest `--workerIdleMemoryLimit` of 1GB. This is the recommended workaround for dealing with Jest workers leaking memory and eventually hitting the heap limit. +The `backstage-cli repo test` command now sets a default Jest `--workerIdleMemoryLimit` of 1GB. If needed to ensure that tests are not run in band, `--maxWorkers=2` is set as well. This is the recommended workaround for dealing with Jest workers leaking memory and eventually hitting the heap limit. diff --git a/packages/cli/src/commands/repo/test.ts b/packages/cli/src/commands/repo/test.ts index 69b3d914ed..22f1a68745 100644 --- a/packages/cli/src/commands/repo/test.ts +++ b/packages/cli/src/commands/repo/test.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +import os from 'os'; import { Command, OptionValues } from 'commander'; import { PackageGraph } from '../../lib/monorepo'; import { paths } from '../../lib/paths'; @@ -91,6 +92,19 @@ export async function command(opts: OptionValues, cmd: Command): Promise<void> { args.push('--workerIdleMemoryLimit=1000M'); } + // In order for the above worker memory limit to work we need to make sure the worker + // count is set to at least 2, as the tests will otherwise run in-band. + // Depending on the mode tests are run with the default count is either cpus-1, or cpus/2. + // This means that if we've got at 4 or more cores we'll always get at least 2 workers, but + // otherwise we need to set the worker count explicitly unless already done. + if ( + os.cpus().length <= 3 && + !includesAnyOf(args, '-i', '--runInBand') && + !args.some(arg => arg.match(/^(--maxWorkers|-w)/)) + ) { + args.push('--maxWorkers=2'); + } + if (opts.since) { removeOptionArg(args, '--since'); } From 32e280c81ac0cfca5b731c80fe5a644d185bd442 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg <poldsberg@gmail.com> Date: Sat, 28 Jan 2023 17:33:57 +0100 Subject: [PATCH 101/156] cli: refactor flag detection in repo test Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com> --- packages/cli/src/commands/repo/test.test.ts | 47 ++++++++++++++++++++ packages/cli/src/commands/repo/test.ts | 49 +++++++++++++-------- 2 files changed, 77 insertions(+), 19 deletions(-) create mode 100644 packages/cli/src/commands/repo/test.test.ts diff --git a/packages/cli/src/commands/repo/test.test.ts b/packages/cli/src/commands/repo/test.test.ts new file mode 100644 index 0000000000..d2f2485717 --- /dev/null +++ b/packages/cli/src/commands/repo/test.test.ts @@ -0,0 +1,47 @@ +/* + * 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 { createFlagFinder } from './test'; + +describe('createFlagFinder', () => { + it('finds flags', () => { + const find = createFlagFinder([ + '--foo', + '--no-bar', + '-b', + '-c', + '--baz=1', + '--qux', + '2', + '-de', + ]); + + expect( + find('--foo', '--bar', '-b', '-c', '--baz', '--qux', '-d', '-e'), + ).toBe(true); + expect(find('--foo')).toBe(true); + expect(find('--bar')).toBe(true); + expect(find('--no-bar')).toBe(false); + expect(find('-a')).toBe(false); + expect(find('-b')).toBe(true); + expect(find('-c')).toBe(true); + expect(find('-d')).toBe(true); + expect(find('-e')).toBe(true); + expect(find('--baz')).toBe(true); + expect(find('--qux')).toBe(true); + expect(find('--qux')).toBe(true); + }); +}); diff --git a/packages/cli/src/commands/repo/test.ts b/packages/cli/src/commands/repo/test.ts index 22f1a68745..2dd778677a 100644 --- a/packages/cli/src/commands/repo/test.ts +++ b/packages/cli/src/commands/repo/test.ts @@ -20,13 +20,30 @@ import { PackageGraph } from '../../lib/monorepo'; import { paths } from '../../lib/paths'; import { runCheck } from '../../lib/run'; -function includesAnyOf(hayStack: string[], ...needles: string[]) { - for (const needle of needles) { - if (hayStack.includes(needle)) { - return true; +export function createFlagFinder(args: string[]) { + const flags = new Set<string>(); + + for (const arg of args) { + if (arg.startsWith('--no-')) { + flags.add(`--${arg.slice('--no-'.length)}`); + } else if (arg.startsWith('--')) { + flags.add(arg.split('=')[0]); + } else if (arg.startsWith('-')) { + const shortFlags = arg.slice(1).split(''); + for (const shortFlag of shortFlags) { + flags.add(`-${shortFlag}`); + } } } - return false; + + return (...findFlags: string[]) => { + for (const flag of findFlags) { + if (flags.has(flag)) { + return true; + } + } + return false; + }; } function removeOptionArg(args: string[], option: string) { @@ -56,24 +73,19 @@ export async function command(opts: OptionValues, cmd: Command): Promise<void> { const allArgs = parent.args as string[]; const args = allArgs.slice(allArgs.indexOf('test') + 1); + const hasFlags = createFlagFinder(args); + // Only include our config if caller isn't passing their own config - if (!includesAnyOf(args, '-c', '--config')) { + if (!hasFlags('-c', '--config')) { args.push('--config', paths.resolveOwn('config/jest.js')); } - if (!includesAnyOf(args, '--no-passWithNoTests', '--passWithNoTests=false')) { + if (!hasFlags('--passWithNoTests')) { args.push('--passWithNoTests'); } // Run in watch mode unless in CI, coverage mode, or running all tests - if ( - !process.env.CI && - !args.includes('--coverage') && - // explicitly no watching - !includesAnyOf(args, '--no-watch', '--watch=false', '--watchAll=false') && - // already watching - !includesAnyOf(args, '--watch', '--watchAll') - ) { + if (!process.env.CI && !hasFlags('--coverage', '--watch', '--watchAll')) { const isGitRepo = () => runCheck('git', 'rev-parse', '--is-inside-work-tree'); const isMercurialRepo = () => runCheck('hg', '--cwd', '.', 'root'); @@ -88,7 +100,7 @@ export async function command(opts: OptionValues, cmd: Command): Promise<void> { // When running tests from the repo root in large repos you can easily hit the heap limit. // This is because Jest workers leak a lot of memory, and the workaround is to limit worker memory. // We set a default memory limit, but if an explicit one is supplied it will be used instead - if (!args.some(arg => arg.match(/^--workerIdleMemoryLimit/))) { + if (!hasFlags('--workerIdleMemoryLimit')) { args.push('--workerIdleMemoryLimit=1000M'); } @@ -99,8 +111,7 @@ export async function command(opts: OptionValues, cmd: Command): Promise<void> { // otherwise we need to set the worker count explicitly unless already done. if ( os.cpus().length <= 3 && - !includesAnyOf(args, '-i', '--runInBand') && - !args.some(arg => arg.match(/^(--maxWorkers|-w)/)) + !hasFlags('-i', '--runInBand', '-w', '--maxWorkers') ) { args.push('--maxWorkers=2'); } @@ -109,7 +120,7 @@ export async function command(opts: OptionValues, cmd: Command): Promise<void> { removeOptionArg(args, '--since'); } - if (opts.since && !args.some(arg => arg.startsWith('--selectProjects'))) { + if (opts.since && !hasFlags('--selectProjects')) { const packages = await PackageGraph.listTargetPackages(); const graph = PackageGraph.fromPackages(packages); const changedPackages = await graph.listChangedPackages({ From acd4f9b20bed06dbe24dd75d4bbdfb00c3b74501 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg <poldsberg@gmail.com> Date: Sun, 29 Jan 2023 14:35:34 +0100 Subject: [PATCH 102/156] scaffolder-react: refactor for cleaner separation between stable and next Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com> --- .changeset/forty-bulldogs-build.md | 5 ++++ plugins/scaffolder-react/api-report.md | 2 +- .../src/hooks/useCustomLayouts.ts | 4 +-- plugins/scaffolder-react/src/index.ts | 2 +- .../createScaffolderLayout.ts} | 25 ++++++++++++++++--- .../scaffolder-react/src/layouts/index.tsx | 25 +++++++++++++++++++ .../src/{next => }/layouts/keys.ts | 0 .../next/components/Stepper/Stepper.test.tsx | 2 +- .../src/next/components/Stepper/Stepper.tsx | 3 ++- .../next/hooks/useTransformSchemaToProps.ts | 2 +- plugins/scaffolder-react/src/next/index.ts | 2 -- plugins/scaffolder-react/src/next/types.ts | 23 +++-------------- 12 files changed, 63 insertions(+), 32 deletions(-) create mode 100644 .changeset/forty-bulldogs-build.md rename plugins/scaffolder-react/src/{next/layouts/index.tsx => layouts/createScaffolderLayout.ts} (76%) create mode 100644 plugins/scaffolder-react/src/layouts/index.tsx rename plugins/scaffolder-react/src/{next => }/layouts/keys.ts (100%) diff --git a/.changeset/forty-bulldogs-build.md b/.changeset/forty-bulldogs-build.md new file mode 100644 index 0000000000..aa7954a2c2 --- /dev/null +++ b/.changeset/forty-bulldogs-build.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': patch +--- + +The `FormProps` type is now correctly only available as an `/alpha` export. diff --git a/plugins/scaffolder-react/api-report.md b/plugins/scaffolder-react/api-report.md index deead4366c..7068bbbd4f 100644 --- a/plugins/scaffolder-react/api-report.md +++ b/plugins/scaffolder-react/api-report.md @@ -121,7 +121,7 @@ export type FieldExtensionOptions< schema?: CustomFieldExtensionSchema; }; -// @public +// @alpha export type FormProps = Pick< FormProps_2, 'transformErrors' | 'noHtml5Validate' diff --git a/plugins/scaffolder-react/src/hooks/useCustomLayouts.ts b/plugins/scaffolder-react/src/hooks/useCustomLayouts.ts index afcc45cd48..461b89f808 100644 --- a/plugins/scaffolder-react/src/hooks/useCustomLayouts.ts +++ b/plugins/scaffolder-react/src/hooks/useCustomLayouts.ts @@ -14,8 +14,8 @@ * limitations under the License. */ import { useElementFilter } from '@backstage/core-plugin-api'; -import { LAYOUTS_KEY, LAYOUTS_WRAPPER_KEY } from '../next/layouts/keys'; -import { type LayoutOptions } from '../next/types'; +import { LAYOUTS_KEY, LAYOUTS_WRAPPER_KEY } from '../layouts/keys'; +import { LayoutOptions } from '../layouts'; /** * Hook that returns all custom field extensions from the current outlet. diff --git a/plugins/scaffolder-react/src/index.ts b/plugins/scaffolder-react/src/index.ts index 41a1298b37..67703e3ed1 100644 --- a/plugins/scaffolder-react/src/index.ts +++ b/plugins/scaffolder-react/src/index.ts @@ -19,6 +19,6 @@ export * from './types'; export * from './secrets'; export * from './api'; export * from './hooks'; +export * from './layouts'; export * from './next'; -export type { FormProps } from './next'; diff --git a/plugins/scaffolder-react/src/next/layouts/index.tsx b/plugins/scaffolder-react/src/layouts/createScaffolderLayout.ts similarity index 76% rename from plugins/scaffolder-react/src/next/layouts/index.tsx rename to plugins/scaffolder-react/src/layouts/createScaffolderLayout.ts index 0b1533c7c8..328f366007 100644 --- a/plugins/scaffolder-react/src/next/layouts/index.tsx +++ b/plugins/scaffolder-react/src/layouts/createScaffolderLayout.ts @@ -1,6 +1,3 @@ -import { LayoutOptions } from '../types'; -import { LAYOUTS_KEY, LAYOUTS_WRAPPER_KEY } from './keys'; - /* * Copyright 2023 The Backstage Authors * @@ -16,7 +13,29 @@ import { LAYOUTS_KEY, LAYOUTS_WRAPPER_KEY } from './keys'; * See the License for the specific language governing permissions and * limitations under the License. */ + +import { LAYOUTS_KEY, LAYOUTS_WRAPPER_KEY } from './keys'; import { attachComponentData, Extension } from '@backstage/core-plugin-api'; +import type { FormProps as SchemaFormProps } from '@rjsf/core-v5'; + +/** + * The field template from `@rjsf/core` which is a react component that gets passed `@rjsf/core` field related props. + * + * @public + */ +export type LayoutTemplate<T = any> = NonNullable< + SchemaFormProps<T>['uiSchema'] +>['ui:ObjectFieldTemplate']; + +/** + * The type of layouts that is passed to the TemplateForms + * + * @public + */ +export interface LayoutOptions<P = any> { + name: string; + component: LayoutTemplate<P>; +} /** * A type used to wrap up the FieldExtension to embed the ReturnValue and the InputProps diff --git a/plugins/scaffolder-react/src/layouts/index.tsx b/plugins/scaffolder-react/src/layouts/index.tsx new file mode 100644 index 0000000000..ab3c30e1cb --- /dev/null +++ b/plugins/scaffolder-react/src/layouts/index.tsx @@ -0,0 +1,25 @@ +/* + * Copyright 2023 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 { + ScaffolderLayouts, + createScaffolderLayout, +} from './createScaffolderLayout'; +export type { + LayoutComponent, + LayoutTemplate, + LayoutOptions, +} from './createScaffolderLayout'; diff --git a/plugins/scaffolder-react/src/next/layouts/keys.ts b/plugins/scaffolder-react/src/layouts/keys.ts similarity index 100% rename from plugins/scaffolder-react/src/next/layouts/keys.ts rename to plugins/scaffolder-react/src/layouts/keys.ts diff --git a/plugins/scaffolder-react/src/next/components/Stepper/Stepper.test.tsx b/plugins/scaffolder-react/src/next/components/Stepper/Stepper.test.tsx index 5995d0e419..0b17c550a0 100644 --- a/plugins/scaffolder-react/src/next/components/Stepper/Stepper.test.tsx +++ b/plugins/scaffolder-react/src/next/components/Stepper/Stepper.test.tsx @@ -21,7 +21,7 @@ import { act, fireEvent } from '@testing-library/react'; import type { RJSFValidationError } from '@rjsf/utils'; import { JsonValue } from '@backstage/types'; import { NextFieldExtensionComponentProps } from '../../extensions'; -import { LayoutTemplate } from '../../types'; +import { LayoutTemplate } from '../../../layouts'; describe('Stepper', () => { it('should render the step titles for each step of the manifest', async () => { diff --git a/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx b/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx index 096173deb7..c97d31c487 100644 --- a/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx +++ b/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx @@ -32,7 +32,8 @@ import { ReviewState, type ReviewStateProps } from '../ReviewState'; import { useTemplateSchema } from '../../hooks/useTemplateSchema'; import validator from '@rjsf/validator-ajv8'; import { useFormDataFromQuery } from '../../hooks'; -import type { FormProps, LayoutOptions } from '../../types'; +import { FormProps } from '../../types'; +import { LayoutOptions } from '../../../layouts'; import { useTransformSchemaToProps } from '../../hooks/useTransformSchemaToProps'; const useStyles = makeStyles(theme => ({ diff --git a/plugins/scaffolder-react/src/next/hooks/useTransformSchemaToProps.ts b/plugins/scaffolder-react/src/next/hooks/useTransformSchemaToProps.ts index ffae1df8bf..881c4f90c5 100644 --- a/plugins/scaffolder-react/src/next/hooks/useTransformSchemaToProps.ts +++ b/plugins/scaffolder-react/src/next/hooks/useTransformSchemaToProps.ts @@ -14,7 +14,7 @@ * limitations under the License. */ import { type ParsedTemplateSchema } from './useTemplateSchema'; -import { type LayoutOptions } from '../types'; +import { type LayoutOptions } from '../../layouts'; interface Options { layouts?: LayoutOptions[]; diff --git a/plugins/scaffolder-react/src/next/index.ts b/plugins/scaffolder-react/src/next/index.ts index 4674c1f70a..a18649f506 100644 --- a/plugins/scaffolder-react/src/next/index.ts +++ b/plugins/scaffolder-react/src/next/index.ts @@ -15,8 +15,6 @@ */ export * from './components'; export * from './extensions'; -export * from './layouts'; export * from './types'; export * from './lib'; export * from './hooks'; -export * from './layouts'; diff --git a/plugins/scaffolder-react/src/next/types.ts b/plugins/scaffolder-react/src/next/types.ts index 40ba511dbe..f048b33ded 100644 --- a/plugins/scaffolder-react/src/next/types.ts +++ b/plugins/scaffolder-react/src/next/types.ts @@ -13,32 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import type { FormProps as SchemaFormProps } from '@rjsf/core-v5'; + /** * Any `@rjsf/core` form properties that are publicly exposed to the `NextScaffolderpage` * - * @public + * @alpha */ export type FormProps = Pick< SchemaFormProps, 'transformErrors' | 'noHtml5Validate' >; - -/** - * The field template from `@rjsf/core` which is a react component that gets passed `@rjsf/core` field related props. - * - * @public - */ -export type LayoutTemplate<T = any> = NonNullable< - SchemaFormProps<T>['uiSchema'] ->['ui:ObjectFieldTemplate']; - -/** - * The type of layouts that is passed to the TemplateForms - * - * @public - */ -export interface LayoutOptions<P = any> { - name: string; - component: LayoutTemplate<P>; -} From 6d3abfded199c4392fe8b71ba409d51eb7b74371 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg <poldsberg@gmail.com> Date: Sun, 29 Jan 2023 14:55:18 +0100 Subject: [PATCH 103/156] cli: switch to inline source maps for jest setup Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com> --- .changeset/two-melons-lie.md | 5 +++++ packages/cli/config/jest.js | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 .changeset/two-melons-lie.md diff --git a/.changeset/two-melons-lie.md b/.changeset/two-melons-lie.md new file mode 100644 index 0000000000..f7abd749d5 --- /dev/null +++ b/.changeset/two-melons-lie.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Switch to inline source maps for test transpilation, simplifying editor setups. diff --git a/packages/cli/config/jest.js b/packages/cli/config/jest.js index 24385a6b99..0e74b00d5a 100644 --- a/packages/cli/config/jest.js +++ b/packages/cli/config/jest.js @@ -22,7 +22,6 @@ const { version } = require('../package.json'); const envOptions = { oldTests: Boolean(process.env.BACKSTAGE_OLD_TESTS), - enableSourceMaps: Boolean(process.env.ENABLE_SOURCE_MAPS), }; const transformIgnorePattern = [ @@ -130,7 +129,6 @@ async function getProjectConfig(targetPath, extraConfig) { '\\.(mjs|cjs|js)$': [ require.resolve('./jestSwcTransform'), { - sourceMaps: envOptions.enableSourceMaps || !envOptions.oldTests, jsc: { parser: { syntax: 'ecmascript', @@ -141,7 +139,6 @@ async function getProjectConfig(targetPath, extraConfig) { '\\.jsx$': [ require.resolve('./jestSwcTransform'), { - sourceMaps: envOptions.enableSourceMaps || !envOptions.oldTests, jsc: { parser: { syntax: 'ecmascript', @@ -158,7 +155,6 @@ async function getProjectConfig(targetPath, extraConfig) { '\\.ts$': [ require.resolve('./jestSwcTransform'), { - sourceMaps: envOptions.enableSourceMaps || !envOptions.oldTests, jsc: { parser: { syntax: 'typescript', @@ -169,7 +165,6 @@ async function getProjectConfig(targetPath, extraConfig) { '\\.tsx$': [ require.resolve('./jestSwcTransform'), { - sourceMaps: envOptions.enableSourceMaps || !envOptions.oldTests, jsc: { parser: { syntax: 'typescript', From 96db35f389c0fa95e4d06f191e386ab246915640 Mon Sep 17 00:00:00 2001 From: lloydchang <lloydchang@gmail.com> Date: Sun, 29 Jan 2023 07:32:36 -0800 Subject: [PATCH 104/156] docs(using-cloud-storage.md): fix very minor typo remove extra period Signed-off-by: lloydchang <lloydchang@gmail.com> --- docs/features/techdocs/using-cloud-storage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/techdocs/using-cloud-storage.md b/docs/features/techdocs/using-cloud-storage.md index f38a806413..aaf2758241 100644 --- a/docs/features/techdocs/using-cloud-storage.md +++ b/docs/features/techdocs/using-cloud-storage.md @@ -230,7 +230,7 @@ If you are deploying Backstage to Amazon EC2, Amazon ECS, or Amazon EKS, you do not need to obtain the access keys separately. They can be made available in the environment automatically by defining appropriate IAM role with access to the bucket. Read more in the -[official AWS documentation for using IAM roles.](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html#use-roles). +[official AWS documentation for using IAM roles](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html#use-roles). **4b. Authentication using app-config.yaml** From 3d1d867d4230c20a9a0904f66de7be8241d90c73 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Wed, 25 Jan 2023 12:40:19 -0600 Subject: [PATCH 105/156] Fixed WelcomeTitle regression Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- .changeset/late-rice-crash.md | 5 ++++ .../WelcomeTitle/WelcomeTitle.stories.tsx | 29 +++++++++++++++++++ .../WelcomeTitle/WelcomeTitle.tsx | 5 ++-- 3 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 .changeset/late-rice-crash.md create mode 100644 plugins/home/src/homePageComponents/WelcomeTitle/WelcomeTitle.stories.tsx diff --git a/.changeset/late-rice-crash.md b/.changeset/late-rice-crash.md new file mode 100644 index 0000000000..dd7ec33595 --- /dev/null +++ b/.changeset/late-rice-crash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-home': patch +--- + +Fixed regresstion that caused the `WelcomeTitle` to not be the right size when passed to the `title` property of the `<Header>` component diff --git a/plugins/home/src/homePageComponents/WelcomeTitle/WelcomeTitle.stories.tsx b/plugins/home/src/homePageComponents/WelcomeTitle/WelcomeTitle.stories.tsx new file mode 100644 index 0000000000..ddcce2fe41 --- /dev/null +++ b/plugins/home/src/homePageComponents/WelcomeTitle/WelcomeTitle.stories.tsx @@ -0,0 +1,29 @@ +/* + * Copyright 2023 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 { Header } from '@backstage/core-components'; +import { wrapInTestApp } from '@backstage/test-utils'; +import React, { ComponentType } from 'react'; +import { WelcomeTitle } from './WelcomeTitle'; + +export default { + title: 'Plugins/Home/Components/WelcomeTitle', + decorators: [(Story: ComponentType<{}>) => wrapInTestApp(<Story />)], +}; + +export const Default = () => { + return <Header title={<WelcomeTitle />} pageTitleOverride="Home" />; +}; diff --git a/plugins/home/src/homePageComponents/WelcomeTitle/WelcomeTitle.tsx b/plugins/home/src/homePageComponents/WelcomeTitle/WelcomeTitle.tsx index 1d2f3d672a..045e223da5 100644 --- a/plugins/home/src/homePageComponents/WelcomeTitle/WelcomeTitle.tsx +++ b/plugins/home/src/homePageComponents/WelcomeTitle/WelcomeTitle.tsx @@ -19,7 +19,6 @@ import { useApi, } from '@backstage/core-plugin-api'; import { Tooltip } from '@material-ui/core'; -import Typography from '@material-ui/core/Typography'; import React, { useEffect, useMemo } from 'react'; import useAsync from 'react-use/lib/useAsync'; import { getTimeBasedGreeting } from './timeUtil'; @@ -44,9 +43,9 @@ export const WelcomeTitle = () => { return ( <Tooltip title={greeting.language}> - <Typography component="span">{`${greeting.greeting}${ + <>{`${greeting.greeting}${ profile?.displayName ? `, ${profile?.displayName}` : '' - }!`}</Typography> + }!`}</> </Tooltip> ); }; From 300bd69138a48e25fb221b688a5c405365e1e571 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Wed, 25 Jan 2023 12:45:06 -0600 Subject: [PATCH 106/156] Fixed changeset typo Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- .changeset/late-rice-crash.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/late-rice-crash.md b/.changeset/late-rice-crash.md index dd7ec33595..b692310c01 100644 --- a/.changeset/late-rice-crash.md +++ b/.changeset/late-rice-crash.md @@ -2,4 +2,4 @@ '@backstage/plugin-home': patch --- -Fixed regresstion that caused the `WelcomeTitle` to not be the right size when passed to the `title` property of the `<Header>` component +Fixed regression that caused the `WelcomeTitle` to not be the right size when passed to the `title` property of the `<Header>` component. A Storybook entry was also added for the `WelcomeTitle` From eebe28ec80b4d28d745eadce4006d625d76c84cd Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Sun, 29 Jan 2023 12:35:23 -0600 Subject: [PATCH 107/156] Updated to use Typography H3 variant Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- .../src/homePageComponents/WelcomeTitle/WelcomeTitle.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/home/src/homePageComponents/WelcomeTitle/WelcomeTitle.tsx b/plugins/home/src/homePageComponents/WelcomeTitle/WelcomeTitle.tsx index 045e223da5..d788561551 100644 --- a/plugins/home/src/homePageComponents/WelcomeTitle/WelcomeTitle.tsx +++ b/plugins/home/src/homePageComponents/WelcomeTitle/WelcomeTitle.tsx @@ -18,7 +18,7 @@ import { identityApiRef, useApi, } from '@backstage/core-plugin-api'; -import { Tooltip } from '@material-ui/core'; +import { Tooltip, Typography } from '@material-ui/core'; import React, { useEffect, useMemo } from 'react'; import useAsync from 'react-use/lib/useAsync'; import { getTimeBasedGreeting } from './timeUtil'; @@ -43,9 +43,9 @@ export const WelcomeTitle = () => { return ( <Tooltip title={greeting.language}> - <>{`${greeting.greeting}${ + <Typography variant="h3">{`${greeting.greeting}${ profile?.displayName ? `, ${profile?.displayName}` : '' - }!`}</> + }!`}</Typography> </Tooltip> ); }; From 0e4c640d0690c63a3752f3717f134e79608db715 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg <poldsberg@gmail.com> Date: Sun, 29 Jan 2023 19:51:14 +0100 Subject: [PATCH 108/156] scaffolder-react: refert FormProps back to alpha Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com> --- .changeset/forty-bulldogs-build.md | 5 ----- plugins/scaffolder-react/api-report.md | 2 +- plugins/scaffolder-react/src/next/types.ts | 6 +++++- 3 files changed, 6 insertions(+), 7 deletions(-) delete mode 100644 .changeset/forty-bulldogs-build.md diff --git a/.changeset/forty-bulldogs-build.md b/.changeset/forty-bulldogs-build.md deleted file mode 100644 index aa7954a2c2..0000000000 --- a/.changeset/forty-bulldogs-build.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-react': patch ---- - -The `FormProps` type is now correctly only available as an `/alpha` export. diff --git a/plugins/scaffolder-react/api-report.md b/plugins/scaffolder-react/api-report.md index 7068bbbd4f..deead4366c 100644 --- a/plugins/scaffolder-react/api-report.md +++ b/plugins/scaffolder-react/api-report.md @@ -121,7 +121,7 @@ export type FieldExtensionOptions< schema?: CustomFieldExtensionSchema; }; -// @alpha +// @public export type FormProps = Pick< FormProps_2, 'transformErrors' | 'noHtml5Validate' diff --git a/plugins/scaffolder-react/src/next/types.ts b/plugins/scaffolder-react/src/next/types.ts index f048b33ded..54a64a5323 100644 --- a/plugins/scaffolder-react/src/next/types.ts +++ b/plugins/scaffolder-react/src/next/types.ts @@ -16,10 +16,14 @@ import type { FormProps as SchemaFormProps } from '@rjsf/core-v5'; +// TODO(Rugvip): The FormProps type is actually supposed to be alpha, but since we want to +// refer to it from @backstage/plugin-scaffolder, it needs to be public for now. +// Once we support internal alpha re-exports this should be switched to an alpha export. + /** * Any `@rjsf/core` form properties that are publicly exposed to the `NextScaffolderpage` * - * @alpha + * @public */ export type FormProps = Pick< SchemaFormProps, From 6bcad0d76b8d1f8ab026dca6496f848f4cb3c44b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 30 Jan 2023 09:00:58 +0000 Subject: [PATCH 109/156] chore(deps): update dependency esbuild to v0.17.5 Signed-off-by: Renovate Bot <bot@renovateapp.com> --- yarn.lock | 182 +++++++++++++++++++++++++++--------------------------- 1 file changed, 91 insertions(+), 91 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0af5fe61ee..a0b7f2ec1d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9046,9 +9046,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/android-arm64@npm:0.17.4" +"@esbuild/android-arm64@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/android-arm64@npm:0.17.5" conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -9060,65 +9060,65 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/android-arm@npm:0.17.4" +"@esbuild/android-arm@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/android-arm@npm:0.17.5" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/android-x64@npm:0.17.4" +"@esbuild/android-x64@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/android-x64@npm:0.17.5" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/darwin-arm64@npm:0.17.4" +"@esbuild/darwin-arm64@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/darwin-arm64@npm:0.17.5" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/darwin-x64@npm:0.17.4" +"@esbuild/darwin-x64@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/darwin-x64@npm:0.17.5" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/freebsd-arm64@npm:0.17.4" +"@esbuild/freebsd-arm64@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/freebsd-arm64@npm:0.17.5" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/freebsd-x64@npm:0.17.4" +"@esbuild/freebsd-x64@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/freebsd-x64@npm:0.17.5" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/linux-arm64@npm:0.17.4" +"@esbuild/linux-arm64@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/linux-arm64@npm:0.17.5" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/linux-arm@npm:0.17.4" +"@esbuild/linux-arm@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/linux-arm@npm:0.17.5" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/linux-ia32@npm:0.17.4" +"@esbuild/linux-ia32@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/linux-ia32@npm:0.17.5" conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -9130,86 +9130,86 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/linux-loong64@npm:0.17.4" +"@esbuild/linux-loong64@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/linux-loong64@npm:0.17.5" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/linux-mips64el@npm:0.17.4" +"@esbuild/linux-mips64el@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/linux-mips64el@npm:0.17.5" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/linux-ppc64@npm:0.17.4" +"@esbuild/linux-ppc64@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/linux-ppc64@npm:0.17.5" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/linux-riscv64@npm:0.17.4" +"@esbuild/linux-riscv64@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/linux-riscv64@npm:0.17.5" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/linux-s390x@npm:0.17.4" +"@esbuild/linux-s390x@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/linux-s390x@npm:0.17.5" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/linux-x64@npm:0.17.4" +"@esbuild/linux-x64@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/linux-x64@npm:0.17.5" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/netbsd-x64@npm:0.17.4" +"@esbuild/netbsd-x64@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/netbsd-x64@npm:0.17.5" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/openbsd-x64@npm:0.17.4" +"@esbuild/openbsd-x64@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/openbsd-x64@npm:0.17.5" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/sunos-x64@npm:0.17.4" +"@esbuild/sunos-x64@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/sunos-x64@npm:0.17.5" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/win32-arm64@npm:0.17.4" +"@esbuild/win32-arm64@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/win32-arm64@npm:0.17.5" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/win32-ia32@npm:0.17.4" +"@esbuild/win32-ia32@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/win32-ia32@npm:0.17.5" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.17.4": - version: 0.17.4 - resolution: "@esbuild/win32-x64@npm:0.17.4" +"@esbuild/win32-x64@npm:0.17.5": + version: 0.17.5 + resolution: "@esbuild/win32-x64@npm:0.17.5" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -21639,31 +21639,31 @@ __metadata: linkType: hard "esbuild@npm:^0.17.0": - version: 0.17.4 - resolution: "esbuild@npm:0.17.4" + version: 0.17.5 + resolution: "esbuild@npm:0.17.5" dependencies: - "@esbuild/android-arm": 0.17.4 - "@esbuild/android-arm64": 0.17.4 - "@esbuild/android-x64": 0.17.4 - "@esbuild/darwin-arm64": 0.17.4 - "@esbuild/darwin-x64": 0.17.4 - "@esbuild/freebsd-arm64": 0.17.4 - "@esbuild/freebsd-x64": 0.17.4 - "@esbuild/linux-arm": 0.17.4 - "@esbuild/linux-arm64": 0.17.4 - "@esbuild/linux-ia32": 0.17.4 - "@esbuild/linux-loong64": 0.17.4 - "@esbuild/linux-mips64el": 0.17.4 - "@esbuild/linux-ppc64": 0.17.4 - "@esbuild/linux-riscv64": 0.17.4 - "@esbuild/linux-s390x": 0.17.4 - "@esbuild/linux-x64": 0.17.4 - "@esbuild/netbsd-x64": 0.17.4 - "@esbuild/openbsd-x64": 0.17.4 - "@esbuild/sunos-x64": 0.17.4 - "@esbuild/win32-arm64": 0.17.4 - "@esbuild/win32-ia32": 0.17.4 - "@esbuild/win32-x64": 0.17.4 + "@esbuild/android-arm": 0.17.5 + "@esbuild/android-arm64": 0.17.5 + "@esbuild/android-x64": 0.17.5 + "@esbuild/darwin-arm64": 0.17.5 + "@esbuild/darwin-x64": 0.17.5 + "@esbuild/freebsd-arm64": 0.17.5 + "@esbuild/freebsd-x64": 0.17.5 + "@esbuild/linux-arm": 0.17.5 + "@esbuild/linux-arm64": 0.17.5 + "@esbuild/linux-ia32": 0.17.5 + "@esbuild/linux-loong64": 0.17.5 + "@esbuild/linux-mips64el": 0.17.5 + "@esbuild/linux-ppc64": 0.17.5 + "@esbuild/linux-riscv64": 0.17.5 + "@esbuild/linux-s390x": 0.17.5 + "@esbuild/linux-x64": 0.17.5 + "@esbuild/netbsd-x64": 0.17.5 + "@esbuild/openbsd-x64": 0.17.5 + "@esbuild/sunos-x64": 0.17.5 + "@esbuild/win32-arm64": 0.17.5 + "@esbuild/win32-ia32": 0.17.5 + "@esbuild/win32-x64": 0.17.5 dependenciesMeta: "@esbuild/android-arm": optional: true @@ -21711,7 +21711,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: caedb2161cde7280d21a905098c3155224a06c9198b883fac085d0ff39dfc2f6dea01c71037e1409d0ef43323af5b022c74af245a29dac36d10c5af57db258b3 + checksum: 31829b46a0cad65f58d90d39b66fd32a2de820539dd8530199975e417aa0ecd63cfc340e402f4f4e9235906a1a05969ddac1d4ad1ba611a3f11c0f62516b9390 languageName: node linkType: hard From b98125873ba8e1ca08349dd4b887daaffe08c139 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 30 Jan 2023 09:05:07 +0000 Subject: [PATCH 110/156] chore(deps): update dependency swr to v2.0.3 Signed-off-by: Renovate Bot <bot@renovateapp.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0af5fe61ee..f68a2d20d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -36450,13 +36450,13 @@ __metadata: linkType: hard "swr@npm:^2.0.0": - version: 2.0.2 - resolution: "swr@npm:2.0.2" + version: 2.0.3 + resolution: "swr@npm:2.0.3" dependencies: use-sync-external-store: ^1.2.0 peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 - checksum: d68f6b5dfd66d9c3e36b7248d00c306d2a11e0f1a0fbb58956fef041f83dfc997b0d0c49532e05abdb9092d8b7be0d5b25803305225bdf0188157f6442f186c4 + checksum: 968071e3336b81194879fd94553777793314e773cd2a27665617131403dca6b7e4d3697ab00d0b0aa456c107c0c8d86f9ce52bac22f8533e8421099870d46b17 languageName: node linkType: hard From 18024a231c531ad4979406a107bab922f3bebc5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20=C5=A0neberger?= <marek@sneberger.cz> Date: Tue, 17 Jan 2023 16:21:49 +0100 Subject: [PATCH 111/156] Allow to set additional links to the entry description MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marek Šneberger <marek@sneberger.cz> --- .changeset/purple-feet-smile.md | 5 +++ plugins/tech-radar/src/api.ts | 12 +++++ .../src/components/RadarComponent.tsx | 1 + .../RadarDescription.test.tsx | 2 + .../RadarDescription/RadarDescription.tsx | 45 ++++++++++++++----- .../RadarLegend/RadarLegendLink.tsx | 3 ++ .../RadarLegend/RadarLegendRing.tsx | 1 + plugins/tech-radar/src/sample.ts | 8 +++- plugins/tech-radar/src/utils/types.ts | 1 + 9 files changed, 66 insertions(+), 12 deletions(-) create mode 100644 .changeset/purple-feet-smile.md diff --git a/.changeset/purple-feet-smile.md b/.changeset/purple-feet-smile.md new file mode 100644 index 0000000000..0416284edf --- /dev/null +++ b/.changeset/purple-feet-smile.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-tech-radar': patch +--- + +Allow to set additional links to the entry description. diff --git a/plugins/tech-radar/src/api.ts b/plugins/tech-radar/src/api.ts index c932ec98e2..2883758f09 100644 --- a/plugins/tech-radar/src/api.ts +++ b/plugins/tech-radar/src/api.ts @@ -89,6 +89,17 @@ export interface RadarQuadrant { name: string; } +class RadarEntryLink { + /** + * URL of the link + */ + url: string; + /** + * Display name of the link + */ + title: string; +} + /** * Single Entry in Tech Radar * @@ -127,6 +138,7 @@ export interface RadarEntry { * Description of the Entry */ description?: string; + links?: Array<RadarEntryLink>; } /** diff --git a/plugins/tech-radar/src/components/RadarComponent.tsx b/plugins/tech-radar/src/components/RadarComponent.tsx index 4ed7626d52..1f14e9d258 100644 --- a/plugins/tech-radar/src/components/RadarComponent.tsx +++ b/plugins/tech-radar/src/components/RadarComponent.tsx @@ -126,6 +126,7 @@ export function RadarComponent(props: TechRadarComponentProps) { moved: entry.timeline[0].moved, description: entry.description || entry.timeline[0].description, url: entry.url, + links: entry.links, })); }; diff --git a/plugins/tech-radar/src/components/RadarDescription/RadarDescription.test.tsx b/plugins/tech-radar/src/components/RadarDescription/RadarDescription.test.tsx index 7f2dcbe6ac..51fed918ec 100644 --- a/plugins/tech-radar/src/components/RadarDescription/RadarDescription.test.tsx +++ b/plugins/tech-radar/src/components/RadarDescription/RadarDescription.test.tsx @@ -24,6 +24,7 @@ const minProps: Props = { open: true, title: 'example-title', description: 'example-description', + links: [{ url: 'https://example.com/docs', title: 'example-link' }], onClose: () => {}, }; @@ -34,5 +35,6 @@ describe('RadarDescription', () => { const radarDescription = screen.getByTestId('radar-description'); expect(radarDescription).toBeInTheDocument(); expect(screen.getByText(String(minProps.description))).toBeInTheDocument(); + expect(screen.getByText(String('example-link'))).toBeInTheDocument(); }); }); diff --git a/plugins/tech-radar/src/components/RadarDescription/RadarDescription.tsx b/plugins/tech-radar/src/components/RadarDescription/RadarDescription.tsx index 302e77c1ac..92b15d985a 100644 --- a/plugins/tech-radar/src/components/RadarDescription/RadarDescription.tsx +++ b/plugins/tech-radar/src/components/RadarDescription/RadarDescription.tsx @@ -28,10 +28,18 @@ export type Props = { title: string; description: string; url?: string; + links?: Array<{ url: string; title: string }>; }; const RadarDescription = (props: Props): JSX.Element => { - const { open, onClose, title, description, url } = props; + function showDialogActions( + url: string | undefined, + links: Array<{ url: string; title: string }> | undefined, + ): Boolean { + return isValidUrl(url) || Boolean(links && links.length > 0); + } + + const { open, onClose, title, description, url, links } = props; return ( <Dialog data-testid="radar-description" open={open} onClose={onClose}> @@ -41,17 +49,32 @@ const RadarDescription = (props: Props): JSX.Element => { <DialogContent dividers> <MarkdownContent content={description} /> </DialogContent> - {isValidUrl(url) && ( + {showDialogActions(url, links) && ( <DialogActions> - <Button - component={Link} - to={url} - onClick={onClose} - color="primary" - startIcon={<LinkIcon />} - > - LEARN MORE - </Button> + {links?.map(link => ( + <Button + component={Link} + to={link.url} + onClick={onClose} + color="primary" + startIcon={<LinkIcon />} + key={link.url} + > + {link.title} + </Button> + ))} + {isValidUrl(url) && ( + <Button + component={Link} + to={url} + onClick={onClose} + color="primary" + startIcon={<LinkIcon />} + key={url} + > + LEARN MORE + </Button> + )} </DialogActions> )} </Dialog> diff --git a/plugins/tech-radar/src/components/RadarLegend/RadarLegendLink.tsx b/plugins/tech-radar/src/components/RadarLegend/RadarLegendLink.tsx index b0d9196e1e..7e31ddddd5 100644 --- a/plugins/tech-radar/src/components/RadarLegend/RadarLegendLink.tsx +++ b/plugins/tech-radar/src/components/RadarLegend/RadarLegendLink.tsx @@ -25,6 +25,7 @@ type RadarLegendLinkProps = { title?: string; classes: ClassNameMap<string>; active?: boolean; + links: Array<{ url: string; title: string }>; }; export const RadarLegendLink = ({ @@ -33,6 +34,7 @@ export const RadarLegendLink = ({ title, classes, active, + links, }: RadarLegendLinkProps) => { const [open, setOpen] = React.useState(false); @@ -73,6 +75,7 @@ export const RadarLegendLink = ({ title={title ? title : 'no title'} url={url} description={description} + links={links} /> )} </> diff --git a/plugins/tech-radar/src/components/RadarLegend/RadarLegendRing.tsx b/plugins/tech-radar/src/components/RadarLegend/RadarLegendRing.tsx index 09badecdcd..b78429a5eb 100644 --- a/plugins/tech-radar/src/components/RadarLegend/RadarLegendRing.tsx +++ b/plugins/tech-radar/src/components/RadarLegend/RadarLegendRing.tsx @@ -61,6 +61,7 @@ export const RadarLegendRing = ({ title={entry.title} description={entry.description} active={entry.active} + links={entry.links} /> </li> ))} diff --git a/plugins/tech-radar/src/sample.ts b/plugins/tech-radar/src/sample.ts index 174bd7750f..1c4f7a1a01 100644 --- a/plugins/tech-radar/src/sample.ts +++ b/plugins/tech-radar/src/sample.ts @@ -45,11 +45,17 @@ entries.push({ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua', }, ], - url: '#', + url: 'https://www.javascript.com/', key: 'javascript', id: 'javascript', title: 'JavaScript', quadrant: 'languages', + links: [ + { + url: 'https://www.typescriptlang.org/', + title: 'TypeScript', + }, + ], description: 'Excepteur **sint** occaecat *cupidatat* non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n\n```ts\nconst x = "3";\n```\n', }); diff --git a/plugins/tech-radar/src/utils/types.ts b/plugins/tech-radar/src/utils/types.ts index 8689b17678..047319bd9e 100644 --- a/plugins/tech-radar/src/utils/types.ts +++ b/plugins/tech-radar/src/utils/types.ts @@ -61,6 +61,7 @@ export type Entry = { title: string; // An URL to a longer description as to why this entry is where it is url?: string; + links?: Array<{ title: string; url: string }>; // How this entry has recently moved; -1 for "down", +1 for "up", 0 for not moved moved?: MovedState; // Most recent description to display in the UI From 82b0ea8605f8ba5c6368de154fcaf87fa9d16725 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20=C5=A0neberger?= <marek@sneberger.cz> Date: Tue, 17 Jan 2023 16:31:00 +0100 Subject: [PATCH 112/156] Add missing documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marek Šneberger <marek@sneberger.cz> --- plugins/tech-radar/src/api.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/tech-radar/src/api.ts b/plugins/tech-radar/src/api.ts index 2883758f09..ffbf4a337a 100644 --- a/plugins/tech-radar/src/api.ts +++ b/plugins/tech-radar/src/api.ts @@ -138,6 +138,9 @@ export interface RadarEntry { * Description of the Entry */ description?: string; + /** + * User-clickable links to provide more information about the Entry + */ links?: Array<RadarEntryLink>; } From 32e756fdf0c4d0333fbf251334567bb973d1b0e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20=C5=A0neberger?= <marek@sneberger.cz> Date: Tue, 17 Jan 2023 16:40:29 +0100 Subject: [PATCH 113/156] Set empty links when undefined MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marek Šneberger <marek@sneberger.cz> --- .../tech-radar/src/components/RadarLegend/RadarLegendRing.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tech-radar/src/components/RadarLegend/RadarLegendRing.tsx b/plugins/tech-radar/src/components/RadarLegend/RadarLegendRing.tsx index b78429a5eb..68b42373f3 100644 --- a/plugins/tech-radar/src/components/RadarLegend/RadarLegendRing.tsx +++ b/plugins/tech-radar/src/components/RadarLegend/RadarLegendRing.tsx @@ -61,7 +61,7 @@ export const RadarLegendRing = ({ title={entry.title} description={entry.description} active={entry.active} - links={entry.links} + links={entry.links ?? []} /> </li> ))} From aa572bf232346d6fc5432bcbe1ea845b1e20d5e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20=C5=A0neberger?= <marek@sneberger.cz> Date: Wed, 18 Jan 2023 10:45:09 +0100 Subject: [PATCH 114/156] Change class to exported interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marek Šneberger <marek@sneberger.cz> --- plugins/tech-radar/src/api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tech-radar/src/api.ts b/plugins/tech-radar/src/api.ts index ffbf4a337a..7c6f5b29bb 100644 --- a/plugins/tech-radar/src/api.ts +++ b/plugins/tech-radar/src/api.ts @@ -89,7 +89,7 @@ export interface RadarQuadrant { name: string; } -class RadarEntryLink { +export interface RadarEntryLink { /** * URL of the link */ From 0a07bb94466fa73fd936872f7900fd826ecbfc8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20=C5=A0neberger?= <marek@sneberger.cz> Date: Wed, 18 Jan 2023 11:12:11 +0100 Subject: [PATCH 115/156] Set RadarEntryLink as public API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marek Šneberger <marek@sneberger.cz> --- plugins/tech-radar/src/api.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plugins/tech-radar/src/api.ts b/plugins/tech-radar/src/api.ts index 7c6f5b29bb..0fbc88255a 100644 --- a/plugins/tech-radar/src/api.ts +++ b/plugins/tech-radar/src/api.ts @@ -89,6 +89,11 @@ export interface RadarQuadrant { name: string; } +/** + * Single link in {@link RadarEntry} + * + * @public + */ export interface RadarEntryLink { /** * URL of the link From b86c02c3b7a2da1a97714dc77fb30ce40fb7d32e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20=C5=A0neberger?= <marek@sneberger.cz> Date: Wed, 18 Jan 2023 11:33:12 +0100 Subject: [PATCH 116/156] Build api report MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marek Šneberger <marek@sneberger.cz> --- plugins/tech-radar/api-report.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/plugins/tech-radar/api-report.md b/plugins/tech-radar/api-report.md index 39fa19da43..e2744872d8 100644 --- a/plugins/tech-radar/api-report.md +++ b/plugins/tech-radar/api-report.md @@ -21,12 +21,19 @@ export interface RadarEntry { description?: string; id: string; key: string; + links?: Array<RadarEntryLink>; quadrant: string; timeline: Array<RadarEntrySnapshot>; title: string; url: string; } +// @public +export interface RadarEntryLink { + title: string; + url: string; +} + // @public export interface RadarEntrySnapshot { date: Date; From 86a8dfd7b09bfb96aa155966a1e560430c051948 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg <poldsberg@gmail.com> Date: Mon, 30 Jan 2023 11:17:54 +0100 Subject: [PATCH 117/156] create-app: added yarn version check Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com> --- .changeset/dry-donkeys-cheer.md | 5 +++ packages/create-app/src/lib/tasks.test.ts | 41 ++++++++++++++++++++--- packages/create-app/src/lib/tasks.ts | 14 +++++++- 3 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 .changeset/dry-donkeys-cheer.md diff --git a/.changeset/dry-donkeys-cheer.md b/.changeset/dry-donkeys-cheer.md new file mode 100644 index 0000000000..70ed45fa74 --- /dev/null +++ b/.changeset/dry-donkeys-cheer.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Added a check to ensure that Yarn v1 is used when creating new projects. diff --git a/packages/create-app/src/lib/tasks.test.ts b/packages/create-app/src/lib/tasks.test.ts index 2894f1ffe9..95ced49490 100644 --- a/packages/create-app/src/lib/tasks.test.ts +++ b/packages/create-app/src/lib/tasks.test.ts @@ -193,27 +193,58 @@ describe('tasks', () => { // requires callback implementation to support `promisify` wrapper // https://stackoverflow.com/a/60579617/10044859 mockExec.mockImplementation((_command, callback) => { - callback(null, 'standard out', 'standard error'); + if (_command === 'yarn --version') { + callback(null, { stdout: '1.22.5', stderr: 'standard error' }); + } else { + callback(null, { stdout: 'standard out', stderr: 'standard error' }); + } }); const appDir = 'projects/dir'; await expect(buildAppTask(appDir)).resolves.not.toThrow(); - expect(mockChdir).toHaveBeenCalledTimes(2); + expect(mockChdir).toHaveBeenCalledTimes(1); expect(mockChdir).toHaveBeenNthCalledWith(1, appDir); - expect(mockChdir).toHaveBeenNthCalledWith(2, appDir); - expect(mockExec).toHaveBeenCalledTimes(2); + expect(mockExec).toHaveBeenCalledTimes(3); expect(mockExec).toHaveBeenNthCalledWith( 1, - 'yarn install', + 'yarn --version', expect.any(Function), ); expect(mockExec).toHaveBeenNthCalledWith( 2, + 'yarn install', + expect.any(Function), + ); + expect(mockExec).toHaveBeenNthCalledWith( + 3, 'yarn tsc', expect.any(Function), ); }); + it('should error out on incorrect yarn version', async () => { + const mockChdir = jest.spyOn(process, 'chdir'); + + // requires callback implementation to support `promisify` wrapper + // https://stackoverflow.com/a/60579617/10044859 + mockExec.mockImplementation((_command, callback) => { + callback(null, { stdout: '3.2.1', stderr: 'standard error' }); + }); + + const appDir = 'projects/dir'; + await expect(buildAppTask(appDir)).rejects.toThrow( + /^@backstage\/create-app requires Yarn v1, found '3\.2\.1'/, + ); + expect(mockChdir).toHaveBeenCalledTimes(1); + expect(mockChdir).toHaveBeenNthCalledWith(1, appDir); + expect(mockExec).toHaveBeenCalledTimes(1); + expect(mockExec).toHaveBeenNthCalledWith( + 1, + 'yarn --version', + expect.any(Function), + ); + }); + it('should fail if project directory does not exist', async () => { const appDir = 'projects/missingProject'; await expect(buildAppTask(appDir)).rejects.toThrow( diff --git a/packages/create-app/src/lib/tasks.ts b/packages/create-app/src/lib/tasks.ts index 23017c8ec7..f158a2d1f1 100644 --- a/packages/create-app/src/lib/tasks.ts +++ b/packages/create-app/src/lib/tasks.ts @@ -199,9 +199,21 @@ export async function createTemporaryAppFolderTask(tempDir: string) { * @param appDir - location of application to build */ export async function buildAppTask(appDir: string) { + process.chdir(appDir); + + await Task.forItem('determining', 'yarn version', async () => { + const result = await exec('yarn --version'); + const yarnVersion = result.stdout?.trim(); + + if (yarnVersion && !yarnVersion.startsWith('1.')) { + throw new Error( + `@backstage/create-app requires Yarn v1, found '${yarnVersion}'. You can migrate the project to Yarn 3 after creation using https://backstage.io/docs/tutorials/yarn-migration`, + ); + } + }); + const runCmd = async (cmd: string) => { await Task.forItem('executing', cmd, async () => { - process.chdir(appDir); await exec(cmd).catch(error => { process.stdout.write(error.stderr); process.stdout.write(error.stdout); From d0254bb02f7b53b69ca9b07d9c22e9d88f4784a2 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Mon, 30 Jan 2023 06:25:31 -0600 Subject: [PATCH 118/156] Updated to use inherit variant Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- .../home/src/homePageComponents/WelcomeTitle/WelcomeTitle.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/home/src/homePageComponents/WelcomeTitle/WelcomeTitle.tsx b/plugins/home/src/homePageComponents/WelcomeTitle/WelcomeTitle.tsx index d788561551..49ae38d90c 100644 --- a/plugins/home/src/homePageComponents/WelcomeTitle/WelcomeTitle.tsx +++ b/plugins/home/src/homePageComponents/WelcomeTitle/WelcomeTitle.tsx @@ -43,7 +43,7 @@ export const WelcomeTitle = () => { return ( <Tooltip title={greeting.language}> - <Typography variant="h3">{`${greeting.greeting}${ + <Typography component="span" variant="inherit">{`${greeting.greeting}${ profile?.displayName ? `, ${profile?.displayName}` : '' }!`}</Typography> </Tooltip> From dff4d8ddb191242c37c6e19da998f55bd757c5ce Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg <poldsberg@gmail.com> Date: Mon, 30 Jan 2023 13:51:25 +0100 Subject: [PATCH 119/156] core-app-api: fix to support explicit ports in app baseUrl Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com> --- .changeset/neat-zebras-run.md | 5 +++ .../core-app-api/src/app/AppManager.test.tsx | 24 ++++++++++- packages/core-app-api/src/app/AppManager.tsx | 40 +++++++------------ 3 files changed, 43 insertions(+), 26 deletions(-) create mode 100644 .changeset/neat-zebras-run.md diff --git a/.changeset/neat-zebras-run.md b/.changeset/neat-zebras-run.md new file mode 100644 index 0000000000..4ce5d5c393 --- /dev/null +++ b/.changeset/neat-zebras-run.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-app-api': patch +--- + +Fixed an issue where an explicit port the frontend base URL could break the app. diff --git a/packages/core-app-api/src/app/AppManager.test.tsx b/packages/core-app-api/src/app/AppManager.test.tsx index 1b2ac9471a..db0d3ea9af 100644 --- a/packages/core-app-api/src/app/AppManager.test.tsx +++ b/packages/core-app-api/src/app/AppManager.test.tsx @@ -634,6 +634,28 @@ describe('Integration Test', () => { }, }, ], + [ + ['http://localhost', 'http://localhost'], + { + backend: { + baseUrl: 'http://localhost:80', + }, + app: { + baseUrl: 'http://localhost:80', + }, + }, + ], + [ + ['http://localhost', 'http://localhost'], + { + backend: { + baseUrl: 'http://localhost', + }, + app: { + baseUrl: 'http://localhost', + }, + }, + ], [ ['http://localhost/backstage', 'http://localhost/backstage'], { @@ -674,7 +696,7 @@ describe('Integration Test', () => { }, ], ])( - 'should be %p when %p', + 'should be %p when %p (%#)', async ([expectedAppUrl, expectedBackendUrl], data) => { const app = new AppManager({ apis: [], diff --git a/packages/core-app-api/src/app/AppManager.tsx b/packages/core-app-api/src/app/AppManager.tsx index d5f8210185..33d43cbca6 100644 --- a/packages/core-app-api/src/app/AppManager.tsx +++ b/packages/core-app-api/src/app/AppManager.tsx @@ -82,6 +82,17 @@ type CompatiblePlugin = output(): Array<{ type: 'feature-flag'; name: string }>; }); +/** + * Creates a base URL that uses to the current document origin. + */ +function createLocalBaseUrl(fullUrl: string): string { + const url = new URL(fullUrl); + url.protocol = document.location.protocol; + url.hostname = document.location.hostname; + url.port = document.location.port; + return url.toString().replace(/\/$/, ''); +} + function useConfigLoader( configLoader: AppConfigLoader | undefined, components: AppComponents, @@ -121,27 +132,6 @@ function useConfigLoader( if (config.value?.length) { const urlConfigReader = ConfigReader.fromConfigs(config.value); - /** - * Return the origin of the given URL. - * @param url An absolute URL. - * @returns The given URL's origin. - * @throws If fullUrl is not a correctly formatted absolute URL. - */ - const getOrigin = (url: string) => new URL(url).origin; - - /** - * Resolve an absolute URL as relative to the current document. - * @param fullUrl URL to resolve. - * @returns Absolute URL with origin as the current document origin. - * @throws If fullUrl is not a correctly formatted absolute URL. - */ - const overrideOrigin = (fullUrl: string) => { - return new URL( - fullUrl.replace(getOrigin(fullUrl), ''), - document.location.origin, - ).href.replace(/\/$/, ''); - }; - /** * Test configs may not define `app.baseUrl` or `backend.baseUrl` and we * don't want to enforce here. @@ -155,18 +145,18 @@ function useConfigLoader( context: 'relative-resolver', }; if (appBaseUrl && backendBaseUrl) { - const appOrigin = getOrigin(appBaseUrl); - const backendOrigin = getOrigin(backendBaseUrl); + const appOrigin = new URL(appBaseUrl).origin; + const backendOrigin = new URL(backendBaseUrl).origin; if (appOrigin === backendOrigin) { - const newBackendBaseUrl = overrideOrigin(backendBaseUrl); + const newBackendBaseUrl = createLocalBaseUrl(backendBaseUrl); if (backendBaseUrl !== newBackendBaseUrl) { relativeResolverConfig.data.backend = { baseUrl: newBackendBaseUrl }; } } } if (appBaseUrl) { - const newAppBaseUrl = overrideOrigin(appBaseUrl); + const newAppBaseUrl = createLocalBaseUrl(appBaseUrl); if (appBaseUrl !== newAppBaseUrl) { relativeResolverConfig.data.app = { baseUrl: newAppBaseUrl }; } From d0b9d24e95f45ce5a12a3c3fbc96e593a9576495 Mon Sep 17 00:00:00 2001 From: blam <ben@blam.sh> Date: Mon, 30 Jan 2023 14:03:50 +0100 Subject: [PATCH 120/156] chore: fixing yarn.lock resolution Signed-off-by: blam <ben@blam.sh> --- yarn.lock | 78 +++++++++++++++++++++++++++---------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2a4af9a6f2..1d70296156 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3398,7 +3398,7 @@ __metadata: "@manypkg/get-packages": ^1.1.3 "@types/compression": ^1.7.0 "@types/cors": ^2.8.6 - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/fs-extra": ^9.0.3 "@types/http-errors": ^2.0.0 "@types/minimist": ^1.2.0 @@ -3452,7 +3452,7 @@ __metadata: "@types/concat-stream": ^2.0.0 "@types/cors": ^2.8.6 "@types/dockerode": ^3.3.0 - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/fs-extra": ^9.0.3 "@types/http-errors": ^2.0.0 "@types/luxon": ^3.0.0 @@ -3537,7 +3537,7 @@ __metadata: "@backstage/plugin-auth-node": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" "@backstage/types": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 express: ^4.17.1 knex: ^2.0.0 languageName: unknown @@ -3691,7 +3691,7 @@ __metadata: "@swc/helpers": ^0.4.7 "@swc/jest": ^0.2.22 "@types/diff": ^5.0.0 - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/fs-extra": ^9.0.1 "@types/http-proxy": ^1.17.4 "@types/inquirer": ^8.1.3 @@ -4201,7 +4201,7 @@ __metadata: "@backstage/backend-common": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": "*" "@types/http-proxy-middleware": ^0.19.3 "@types/supertest": ^2.0.8 express: ^4.17.1 @@ -4417,7 +4417,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/config-loader": "workspace:^" "@backstage/types": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -4453,7 +4453,7 @@ __metadata: "@google-cloud/firestore": ^6.0.0 "@types/body-parser": ^1.19.0 "@types/cookie-parser": ^1.4.2 - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/express-session": ^1.17.2 "@types/jwt-decode": ^3.1.0 "@types/passport": ^1.0.3 @@ -4509,7 +4509,7 @@ __metadata: "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": "*" express: ^4.17.1 jose: ^4.6.0 lodash: ^4.17.21 @@ -4528,7 +4528,7 @@ __metadata: "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/plugin-azure-devops-common": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 azure-devops-node-api: ^11.0.1 express: ^4.17.1 @@ -4594,7 +4594,7 @@ __metadata: "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/plugin-azure-sites-common": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -4653,7 +4653,7 @@ __metadata: "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 badge-maker: ^3.3.0 cors: ^2.8.5 @@ -4705,7 +4705,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 express: ^4.17.1 express-promise-router: ^4.1.0 knex: ^2.0.0 @@ -5017,7 +5017,7 @@ __metadata: "@backstage/plugin-catalog-node": "workspace:^" "@backstage/plugin-events-node": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/luxon": ^3.0.0 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -5120,7 +5120,7 @@ __metadata: "@backstage/types": "workspace:^" "@opentelemetry/api": ^1.3.0 "@types/core-js": ^2.5.4 - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/git-url-parse": ^9.0.0 "@types/lodash": ^4.14.151 "@types/supertest": ^2.0.8 @@ -5562,7 +5562,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/integration": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/express-xml-bodyparser": ^0.3.2 "@types/supertest": ^2.0.8 express: ^4.17.1 @@ -5872,7 +5872,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/plugin-events-backend-test-utils": "workspace:^" "@backstage/plugin-events-node": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 express: ^4.17.1 express-promise-router: ^4.1.0 supertest: ^6.1.3 @@ -5898,7 +5898,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/plugin-explore-common": "workspace:^" "@backstage/plugin-search-common": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": "*" "@types/supertest": ^2.0.8 express: ^4.18.1 express-promise-router: ^4.1.0 @@ -6364,7 +6364,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/plugin-catalog-graphql": "workspace:^" "@graphql-tools/schema": ^9.0.0 - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 apollo-server: ^3.0.0 apollo-server-express: ^3.0.0 @@ -6484,7 +6484,7 @@ __metadata: "@backstage/plugin-auth-node": "workspace:^" "@backstage/plugin-jenkins-common": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/jenkins": ^0.23.1 "@types/supertest": ^2.0.8 express: ^4.17.1 @@ -6549,7 +6549,7 @@ __metadata: "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/jest-when": ^3.5.0 "@types/lodash": ^4.14.151 express: ^4.17.1 @@ -6612,7 +6612,7 @@ __metadata: "@jest-mock/express": ^2.0.1 "@kubernetes/client-node": 0.18.1 "@types/aws4": ^1.5.1 - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/http-proxy-middleware": ^0.19.3 "@types/luxon": ^3.0.0 aws-sdk: ^2.840.0 @@ -6869,7 +6869,7 @@ __metadata: "@backstage/backend-common": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": "*" "@types/supertest": ^2.0.8 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -6924,7 +6924,7 @@ __metadata: "@backstage/plugin-auth-node": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" "@backstage/plugin-permission-node": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": "*" "@types/lodash": ^4.14.151 "@types/supertest": ^2.0.8 dataloader: ^2.0.0 @@ -6966,7 +6966,7 @@ __metadata: "@backstage/errors": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -7013,7 +7013,7 @@ __metadata: "@backstage/plugin-permission-common": "workspace:^" "@backstage/plugin-permission-node": "workspace:^" "@backstage/plugin-playlist-common": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": "*" "@types/supertest": ^2.0.8 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -7084,7 +7084,7 @@ __metadata: "@backstage/backend-common": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/http-proxy-middleware": ^0.19.3 "@types/supertest": ^2.0.8 "@types/uuid": ^8.0.0 @@ -7111,7 +7111,7 @@ __metadata: "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 camelcase-keys: ^7.0.1 compression: ^1.7.4 @@ -7270,7 +7270,7 @@ __metadata: "@gitbeaker/node": ^35.1.0 "@octokit/webhooks": ^10.0.0 "@types/command-exists": ^1.2.0 - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/fs-extra": ^9.0.1 "@types/git-url-parse": ^9.0.0 "@types/mock-fs": ^4.13.0 @@ -7529,7 +7529,7 @@ __metadata: "@backstage/plugin-search-backend-node": "workspace:^" "@backstage/plugin-search-common": "workspace:^" "@backstage/types": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 dataloader: ^2.0.0 express: ^4.17.1 @@ -7696,7 +7696,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/test-utils": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": "*" "@types/supertest": ^2.0.12 express: ^4.18.1 express-promise-router: ^4.1.0 @@ -7890,7 +7890,7 @@ __metadata: "@backstage/plugin-tech-insights-common": "workspace:^" "@backstage/plugin-tech-insights-node": "workspace:^" "@backstage/types": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/luxon": ^3.0.0 "@types/semver": ^7.3.8 "@types/supertest": ^2.0.8 @@ -8054,7 +8054,7 @@ __metadata: "@backstage/plugin-search-common": "workspace:^" "@backstage/plugin-techdocs-node": "workspace:^" "@types/dockerode": ^3.3.0 - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 dockerode: ^3.3.1 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -8122,7 +8122,7 @@ __metadata: "@backstage/plugin-search-common": "workspace:^" "@google-cloud/storage": ^6.0.0 "@trendyol-js/openstack-swift-sdk": ^0.0.5 - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/fs-extra": ^9.0.5 "@types/js-yaml": ^4.0.0 "@types/mime-types": ^2.1.0 @@ -8234,7 +8234,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/integration": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -8287,7 +8287,7 @@ __metadata: "@backstage/errors": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" "@backstage/types": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -8341,7 +8341,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@types/compression": ^1.7.2 - "@types/express": ^4.17.15 + "@types/express": "*" "@types/supertest": ^2.0.8 compression: ^1.7.4 cors: ^2.8.5 @@ -10275,7 +10275,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 "@types/uuid": ^8.0.0 express: ^4.17.1 @@ -14390,7 +14390,7 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:*, @types/express@npm:^4.17.13, @types/express@npm:^4.17.15": +"@types/express@npm:*, @types/express@npm:^4.17.13, @types/express@npm:^4.17.15, @types/express@npm:^4.17.6": version: 4.17.16 resolution: "@types/express@npm:4.17.16" dependencies: @@ -22463,7 +22463,7 @@ __metadata: "@gitbeaker/node": ^35.1.0 "@octokit/rest": ^19.0.3 "@types/dockerode": ^3.3.0 - "@types/express": ^4.17.15 + "@types/express": ^4.17.6 "@types/express-serve-static-core": ^4.17.5 "@types/luxon": ^3.0.0 azure-devops-node-api: ^11.0.1 From 9fa9b3742d9dbca378424ba3dba53275d04ac8b4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 30 Jan 2023 13:16:10 +0000 Subject: [PATCH 121/156] fix(deps): update dependency @swc/core to v1.3.30 Signed-off-by: Renovate Bot <bot@renovateapp.com> --- storybook/yarn.lock | 86 ++++++++++++++++++++++----------------------- yarn.lock | 86 ++++++++++++++++++++++----------------------- 2 files changed, 86 insertions(+), 86 deletions(-) diff --git a/storybook/yarn.lock b/storybook/yarn.lock index 6ace50cde8..7c73f5d0cc 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -2966,90 +2966,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-darwin-arm64@npm:1.3.28" +"@swc/core-darwin-arm64@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-darwin-arm64@npm:1.3.30" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-darwin-x64@npm:1.3.28" +"@swc/core-darwin-x64@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-darwin-x64@npm:1.3.30" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.28" +"@swc/core-linux-arm-gnueabihf@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.30" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.28" +"@swc/core-linux-arm64-gnu@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.30" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.28" +"@swc/core-linux-arm64-musl@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.30" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.28" +"@swc/core-linux-x64-gnu@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.30" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-linux-x64-musl@npm:1.3.28" +"@swc/core-linux-x64-musl@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-linux-x64-musl@npm:1.3.30" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.28" +"@swc/core-win32-arm64-msvc@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.30" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.28" +"@swc/core-win32-ia32-msvc@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.30" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.28" +"@swc/core-win32-x64-msvc@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.30" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.9": - version: 1.3.28 - resolution: "@swc/core@npm:1.3.28" + version: 1.3.30 + resolution: "@swc/core@npm:1.3.30" dependencies: - "@swc/core-darwin-arm64": 1.3.28 - "@swc/core-darwin-x64": 1.3.28 - "@swc/core-linux-arm-gnueabihf": 1.3.28 - "@swc/core-linux-arm64-gnu": 1.3.28 - "@swc/core-linux-arm64-musl": 1.3.28 - "@swc/core-linux-x64-gnu": 1.3.28 - "@swc/core-linux-x64-musl": 1.3.28 - "@swc/core-win32-arm64-msvc": 1.3.28 - "@swc/core-win32-ia32-msvc": 1.3.28 - "@swc/core-win32-x64-msvc": 1.3.28 + "@swc/core-darwin-arm64": 1.3.30 + "@swc/core-darwin-x64": 1.3.30 + "@swc/core-linux-arm-gnueabihf": 1.3.30 + "@swc/core-linux-arm64-gnu": 1.3.30 + "@swc/core-linux-arm64-musl": 1.3.30 + "@swc/core-linux-x64-gnu": 1.3.30 + "@swc/core-linux-x64-musl": 1.3.30 + "@swc/core-win32-arm64-msvc": 1.3.30 + "@swc/core-win32-ia32-msvc": 1.3.30 + "@swc/core-win32-x64-msvc": 1.3.30 dependenciesMeta: "@swc/core-darwin-arm64": optional: true @@ -3071,7 +3071,7 @@ __metadata: optional: true "@swc/core-win32-x64-msvc": optional: true - checksum: bc96bb6cf476bf815d2f9308b280c119f8c8ecc4e9ba459322415d884c21dcad040ae8c69646811e598e0039ab497c8f15031c331fd6d13ea5bdf848b9c9f44f + checksum: 157a8ae43ebc73fa28d53e913fd7fc879289d5479ba5ea0c5e9abad0b379ca7e292d45f4f07bfd3ec0ff1998b55f300737724dfe463f1f7b361661e083db950c languageName: node linkType: hard diff --git a/yarn.lock b/yarn.lock index f68a2d20d0..f10ec04376 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13437,90 +13437,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-darwin-arm64@npm:1.3.28" +"@swc/core-darwin-arm64@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-darwin-arm64@npm:1.3.30" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-darwin-x64@npm:1.3.28" +"@swc/core-darwin-x64@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-darwin-x64@npm:1.3.30" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.28" +"@swc/core-linux-arm-gnueabihf@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.30" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.28" +"@swc/core-linux-arm64-gnu@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.30" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.28" +"@swc/core-linux-arm64-musl@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.30" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.28" +"@swc/core-linux-x64-gnu@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.30" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-linux-x64-musl@npm:1.3.28" +"@swc/core-linux-x64-musl@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-linux-x64-musl@npm:1.3.30" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.28" +"@swc/core-win32-arm64-msvc@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.30" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.28" +"@swc/core-win32-ia32-msvc@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.30" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.28": - version: 1.3.28 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.28" +"@swc/core-win32-x64-msvc@npm:1.3.30": + version: 1.3.30 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.30" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.9": - version: 1.3.28 - resolution: "@swc/core@npm:1.3.28" + version: 1.3.30 + resolution: "@swc/core@npm:1.3.30" dependencies: - "@swc/core-darwin-arm64": 1.3.28 - "@swc/core-darwin-x64": 1.3.28 - "@swc/core-linux-arm-gnueabihf": 1.3.28 - "@swc/core-linux-arm64-gnu": 1.3.28 - "@swc/core-linux-arm64-musl": 1.3.28 - "@swc/core-linux-x64-gnu": 1.3.28 - "@swc/core-linux-x64-musl": 1.3.28 - "@swc/core-win32-arm64-msvc": 1.3.28 - "@swc/core-win32-ia32-msvc": 1.3.28 - "@swc/core-win32-x64-msvc": 1.3.28 + "@swc/core-darwin-arm64": 1.3.30 + "@swc/core-darwin-x64": 1.3.30 + "@swc/core-linux-arm-gnueabihf": 1.3.30 + "@swc/core-linux-arm64-gnu": 1.3.30 + "@swc/core-linux-arm64-musl": 1.3.30 + "@swc/core-linux-x64-gnu": 1.3.30 + "@swc/core-linux-x64-musl": 1.3.30 + "@swc/core-win32-arm64-msvc": 1.3.30 + "@swc/core-win32-ia32-msvc": 1.3.30 + "@swc/core-win32-x64-msvc": 1.3.30 dependenciesMeta: "@swc/core-darwin-arm64": optional: true @@ -13542,7 +13542,7 @@ __metadata: optional: true "@swc/core-win32-x64-msvc": optional: true - checksum: bc96bb6cf476bf815d2f9308b280c119f8c8ecc4e9ba459322415d884c21dcad040ae8c69646811e598e0039ab497c8f15031c331fd6d13ea5bdf848b9c9f44f + checksum: 157a8ae43ebc73fa28d53e913fd7fc879289d5479ba5ea0c5e9abad0b379ca7e292d45f4f07bfd3ec0ff1998b55f300737724dfe463f1f7b361661e083db950c languageName: node linkType: hard From c48006b2a67014416ffbef52f1b811716f3b43ba Mon Sep 17 00:00:00 2001 From: Ben Lambert <blam@spotify.com> Date: Mon, 30 Jan 2023 14:29:13 +0100 Subject: [PATCH 122/156] Update many-nails-joke.md Signed-off-by: blam <ben@blam.sh> --- .changeset/many-nails-joke.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/many-nails-joke.md b/.changeset/many-nails-joke.md index 8cfa79a446..2ffd97dd0b 100644 --- a/.changeset/many-nails-joke.md +++ b/.changeset/many-nails-joke.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-catalog': patch +'@backstage/plugin-catalog': minor --- -Added Markdown support in the About card description section +Added Markdown support in the `AboutCard` description section From 8f23856aa9d7fdd5636f7b2ca564baae1cd3846c Mon Sep 17 00:00:00 2001 From: Jenah Blitz <jenah.blitz@simplybusiness.com> Date: Thu, 26 Jan 2023 14:12:53 -0500 Subject: [PATCH 123/156] Export isAirbrakeAvailable function for use in EntityPage Signed-off-by: Jenah Blitz <jenah.blitz@simplybusiness.com> --- .../src/components/isAirbrakeAvailable.ts | 21 +++++++++++++++++++ plugins/airbrake/src/index.ts | 1 + 2 files changed, 22 insertions(+) create mode 100644 plugins/airbrake/src/components/isAirbrakeAvailable.ts diff --git a/plugins/airbrake/src/components/isAirbrakeAvailable.ts b/plugins/airbrake/src/components/isAirbrakeAvailable.ts new file mode 100644 index 0000000000..93c04061c2 --- /dev/null +++ b/plugins/airbrake/src/components/isAirbrakeAvailable.ts @@ -0,0 +1,21 @@ +/* + * 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 { Entity } from '@backstage/catalog-model'; +import { AIRBRAKE_PROJECT_ID_ANNOTATION } from './useProjectId'; + +export const isAirbrakeAvailable = (entity: Entity) => + Boolean(entity.metadata.annotations?.[AIRBRAKE_PROJECT_ID_ANNOTATION]); diff --git a/plugins/airbrake/src/index.ts b/plugins/airbrake/src/index.ts index 2b2406776b..717d544dc9 100644 --- a/plugins/airbrake/src/index.ts +++ b/plugins/airbrake/src/index.ts @@ -22,3 +22,4 @@ export { airbrakePlugin } from './plugin'; export { EntityAirbrakeContent } from './extensions'; +export { isAirbrakeAvailable } from './components/isAirbrakeAvailable'; From 5d9ee0ef307f5612a2e546d9d5e766a4053581bd Mon Sep 17 00:00:00 2001 From: Jenah Blitz <jenah.blitz@simplybusiness.com> Date: Thu, 26 Jan 2023 14:39:00 -0500 Subject: [PATCH 124/156] Update plugin readme Signed-off-by: Jenah Blitz <jenah.blitz@simplybusiness.com> --- plugins/airbrake/README.md | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/plugins/airbrake/README.md b/plugins/airbrake/README.md index bc30ca7896..f37ab08b75 100644 --- a/plugins/airbrake/README.md +++ b/plugins/airbrake/README.md @@ -18,14 +18,21 @@ The Airbrake plugin provides connectivity between Backstage and Airbrake (https: yarn add --cwd packages/backend @backstage/plugin-airbrake-backend ``` -3. Add the `EntityAirbrakeContent` to `packages/app/src/components/catalog/EntityPage.tsx` for all the entity pages you want Airbrake to be in: +3. Add the `EntityAirbrakeContent` and `isAirbrakeAvailable` to `packages/app/src/components/catalog/EntityPage.tsx` for all the entity pages you want Airbrake to be in: ```typescript jsx - import { EntityAirbrakeContent } from '@backstage/plugin-airbrake'; + import { + EntityAirbrakeContent, + isAirbrakeAvailable, + } from '@backstage/plugin-airbrake'; const serviceEntityPage = ( <EntityLayoutWrapper> - <EntityLayout.Route path="/airbrake" title="Airbrake"> + <EntityLayout.Route + if={isAirbrakeAvailable} + path="/airbrake" + title="Airbrake" + > <EntityAirbrakeContent /> </EntityLayout.Route> </EntityLayoutWrapper> @@ -33,7 +40,11 @@ The Airbrake plugin provides connectivity between Backstage and Airbrake (https: const websiteEntityPage = ( <EntityLayoutWrapper> - <EntityLayout.Route path="/airbrake" title="Airbrake"> + <EntityLayout.Route + if={isAirbrakeAvailable} + path="/airbrake" + title="Airbrake" + > <EntityAirbrakeContent /> </EntityLayout.Route> </EntityLayoutWrapper> @@ -41,7 +52,11 @@ The Airbrake plugin provides connectivity between Backstage and Airbrake (https: const defaultEntityPage = ( <EntityLayoutWrapper> - <EntityLayout.Route path="/airbrake" title="Airbrake"> + <EntityLayout.Route + if={isAirbrakeAvailable} + path="/airbrake" + title="Airbrake" + > <EntityAirbrakeContent /> </EntityLayout.Route> </EntityLayoutWrapper> From 41377156d00129eb4256d8440c7562bcc5118166 Mon Sep 17 00:00:00 2001 From: Jenah Blitz <jenah.blitz@simplybusiness.com> Date: Thu, 26 Jan 2023 15:24:00 -0500 Subject: [PATCH 125/156] Add changeset Signed-off-by: Jenah Blitz <jenah.blitz@simplybusiness.com> --- .changeset/tall-years-relate.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/tall-years-relate.md diff --git a/.changeset/tall-years-relate.md b/.changeset/tall-years-relate.md new file mode 100644 index 0000000000..10198992ea --- /dev/null +++ b/.changeset/tall-years-relate.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-airbrake': patch +--- + +Adds a boolean helper function to airbrake plugin for use on the EntityPage to show/hide airbrake tab depending on whether the entity's catalog-info.yml has an airbrake id set in the metadata From c5965be60c9e33b7f531f95c74bf711d6dd22409 Mon Sep 17 00:00:00 2001 From: Jenah Blitz <jenah.blitz@simplybusiness.com> Date: Thu, 26 Jan 2023 15:59:20 -0500 Subject: [PATCH 126/156] Add @public with description of it's functionality Signed-off-by: Jenah Blitz <jenah.blitz@simplybusiness.com> --- plugins/airbrake/src/components/isAirbrakeAvailable.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/airbrake/src/components/isAirbrakeAvailable.ts b/plugins/airbrake/src/components/isAirbrakeAvailable.ts index 93c04061c2..01d59668ce 100644 --- a/plugins/airbrake/src/components/isAirbrakeAvailable.ts +++ b/plugins/airbrake/src/components/isAirbrakeAvailable.ts @@ -17,5 +17,9 @@ import { Entity } from '@backstage/catalog-model'; import { AIRBRAKE_PROJECT_ID_ANNOTATION } from './useProjectId'; +/** + * Utility function to determine if the given entity has an Airbrake ID set in the repos catalog-info.yml . + * @public + */ export const isAirbrakeAvailable = (entity: Entity) => Boolean(entity.metadata.annotations?.[AIRBRAKE_PROJECT_ID_ANNOTATION]); From 10ce9d162c5f6c8d2cdedcfc0631e460bcb974ec Mon Sep 17 00:00:00 2001 From: Jenah Blitz <jenah.blitz@simplybusiness.com> Date: Thu, 26 Jan 2023 15:59:30 -0500 Subject: [PATCH 127/156] generate api-report Signed-off-by: Jenah Blitz <jenah.blitz@simplybusiness.com> --- plugins/airbrake/api-report.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/airbrake/api-report.md b/plugins/airbrake/api-report.md index e48fbf9cde..773e2a029a 100644 --- a/plugins/airbrake/api-report.md +++ b/plugins/airbrake/api-report.md @@ -6,6 +6,7 @@ /// <reference types="react" /> import { BackstagePlugin } from '@backstage/core-plugin-api'; +import { Entity } from '@backstage/catalog-model'; import { RouteRef } from '@backstage/core-plugin-api'; // @public @@ -19,4 +20,7 @@ export const airbrakePlugin: BackstagePlugin< // @public export const EntityAirbrakeContent: () => JSX.Element; + +// @public +export const isAirbrakeAvailable: (entity: Entity) => boolean; ``` From 83a0a0c2a4485bffb61dc446ab1375a90266ec56 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 30 Jan 2023 13:50:33 +0000 Subject: [PATCH 128/156] fix(deps): update dependency eslint-plugin-react to v7.32.2 Signed-off-by: Renovate Bot <bot@renovateapp.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index eee1e21a7e..739c24129d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21968,8 +21968,8 @@ __metadata: linkType: hard "eslint-plugin-react@npm:^7.28.0": - version: 7.32.1 - resolution: "eslint-plugin-react@npm:7.32.1" + version: 7.32.2 + resolution: "eslint-plugin-react@npm:7.32.2" dependencies: array-includes: ^3.1.6 array.prototype.flatmap: ^1.3.1 @@ -21988,7 +21988,7 @@ __metadata: string.prototype.matchall: ^4.0.8 peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: e20eab61161a3db6211c2bd1eb9be3e407fd14e72c06c5f39a078b6ac37427b2af6056ee70e3954249bca0a04088ae797a0c8ba909fb8802e29712de2a41262d + checksum: 2232b3b8945aa50b7773919c15cd96892acf35d2f82503667a79e2f55def90f728ed4f0e496f0f157acbe1bd4397c5615b676ae7428fe84488a544ca53feb944 languageName: node linkType: hard From 2e210c8a7d742b44c16e5eb2a7fe2b4951273202 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 30 Jan 2023 14:24:17 +0000 Subject: [PATCH 129/156] fix(deps): update dependency immer to v9.0.19 Signed-off-by: Renovate Bot <bot@renovateapp.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index b9af54a260..419f2440a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24948,9 +24948,9 @@ __metadata: linkType: hard "immer@npm:^9.0.1, immer@npm:^9.0.7": - version: 9.0.18 - resolution: "immer@npm:9.0.18" - checksum: 85b3153dd01fce73c40591d0d6d7cd95878dab49f8ec4744c044adac05e0dab847b30c26259c478a5f87f974897be6df2780ff5bf86c8a0a27578fdeb300eb10 + version: 9.0.19 + resolution: "immer@npm:9.0.19" + checksum: f02ee53989989c287cd548a3d817fccf0bfe56db919755ee94a72ea3ae78a00363fba93ee6c010fe54a664380c29c53d44ed4091c6a86cae60957ad2cfabc010 languageName: node linkType: hard From 930d41080b72f31df09bd8c01e30ec067eb0e2ed Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 30 Jan 2023 14:25:24 +0000 Subject: [PATCH 130/156] fix(deps): update dependency json-schema-library to v7.4.5 Signed-off-by: Renovate Bot <bot@renovateapp.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index b9af54a260..70cb633e77 100644 --- a/yarn.lock +++ b/yarn.lock @@ -27113,15 +27113,15 @@ __metadata: linkType: hard "json-schema-library@npm:^7.3.9": - version: 7.4.4 - resolution: "json-schema-library@npm:7.4.4" + version: 7.4.5 + resolution: "json-schema-library@npm:7.4.5" dependencies: "@sagold/json-pointer": ^5.0.0 "@sagold/json-query": ^6.0.0 deepmerge: ^4.2.2 fast-deep-equal: ^3.1.3 valid-url: ^1.0.9 - checksum: e485c7f40bcfe04b96f457e02bc4ecb5bfe6b1d91df6a788909d1048a48bd51ecc5fe6bdd8759289a95c37fa63b3347b29d6d93f1b26a47f40cff21981d331d5 + checksum: 3e7a070ab81dca119ae259c71eec01f81a9287573c5e47de366d1ee48cf85c694fc5402a7c090947e3367cc9118bdbb34d1ce131135077f9f83b7387f6a0471c languageName: node linkType: hard From bab5359789f071cc10272fd5aac8de399cb7e5b1 Mon Sep 17 00:00:00 2001 From: "Fernando.Teixeira" <fernando.Teixeira@traderev.com> Date: Mon, 30 Jan 2023 09:27:07 -0500 Subject: [PATCH 131/156] chore(tech-insights): update changeset for non-breaking packages Signed-off-by: Fernando.Teixeira <fernando.Teixeira@traderev.com> --- .changeset/four-candles-add.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.changeset/four-candles-add.md b/.changeset/four-candles-add.md index bf465181b1..fa975e0a58 100644 --- a/.changeset/four-candles-add.md +++ b/.changeset/four-candles-add.md @@ -1,8 +1,8 @@ --- -'@backstage/plugin-tech-insights-backend': minor -'@backstage/plugin-tech-insights-common': minor +'@backstage/plugin-tech-insights-backend': patch +'@backstage/plugin-tech-insights-common': patch '@backstage/plugin-tech-insights-node': minor -'@backstage/plugin-tech-insights': minor +'@backstage/plugin-tech-insights': patch --- TechInsightsApi interface now has getFactSchemas() method. From ed7c55246e7d00a645bf897237b9294fdea8f224 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 30 Jan 2023 15:47:37 +0000 Subject: [PATCH 132/156] chore(deps): update graphqlcodegenerator monorepo Signed-off-by: Renovate Bot <bot@renovateapp.com> --- yarn.lock | 109 ++++++++++++++++++------------------------------------ 1 file changed, 36 insertions(+), 73 deletions(-) diff --git a/yarn.lock b/yarn.lock index 13f09a139b..f323e223ce 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9400,13 +9400,13 @@ __metadata: linkType: hard "@graphql-codegen/cli@npm:^2.3.1": - version: 2.16.4 - resolution: "@graphql-codegen/cli@npm:2.16.4" + version: 2.16.5 + resolution: "@graphql-codegen/cli@npm:2.16.5" dependencies: "@babel/generator": ^7.18.13 "@babel/template": ^7.18.10 "@babel/types": ^7.18.13 - "@graphql-codegen/core": 2.6.8 + "@graphql-codegen/core": ^2.6.8 "@graphql-codegen/plugin-helpers": ^3.1.2 "@graphql-tools/apollo-engine-loader": ^7.3.6 "@graphql-tools/code-file-loader": ^7.3.13 @@ -9414,7 +9414,7 @@ __metadata: "@graphql-tools/github-loader": ^7.3.20 "@graphql-tools/graphql-file-loader": ^7.5.0 "@graphql-tools/json-file-loader": ^7.4.1 - "@graphql-tools/load": 7.8.0 + "@graphql-tools/load": ^7.8.0 "@graphql-tools/prisma-loader": ^7.2.49 "@graphql-tools/url-loader": ^7.13.2 "@graphql-tools/utils": ^9.0.0 @@ -9422,10 +9422,10 @@ __metadata: chalk: ^4.1.0 chokidar: ^3.5.2 cosmiconfig: ^7.0.0 - cosmiconfig-typescript-loader: 4.3.0 + cosmiconfig-typescript-loader: ^4.3.0 debounce: ^1.2.0 detect-indent: ^6.0.0 - graphql-config: 4.4.0 + graphql-config: ^4.4.0 inquirer: ^8.0.0 is-glob: ^4.0.1 json-to-pretty-yaml: ^1.2.2 @@ -9434,22 +9434,22 @@ __metadata: shell-quote: ^1.7.3 string-env-interpolation: ^1.0.1 ts-log: ^2.2.3 + ts-node: ^10.9.1 tslib: ^2.4.0 yaml: ^1.10.0 yargs: ^17.0.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - ts-node: ">=10" bin: gql-gen: cjs/bin.js graphql-code-generator: cjs/bin.js graphql-codegen: cjs/bin.js graphql-codegen-esm: esm/bin.js - checksum: 6a6d99ac0220e993d71f30858b2b819bbc51685e7b376262493eff916e19be26d031f6859e71a8050c26cc69899bd2c5c0b797de09c45ae0312fd52bca2d8e65 + checksum: d1fdc1a0e678d03995bc7e4927ccd1683b7e50686f13b81d01ad6b295e2033876d05cc71d1d489270d314ac25801a9b82e16aa79982a04e982813854990e4a53 languageName: node linkType: hard -"@graphql-codegen/core@npm:2.6.8": +"@graphql-codegen/core@npm:^2.6.8": version: 2.6.8 resolution: "@graphql-codegen/core@npm:2.6.8" dependencies: @@ -9464,18 +9464,18 @@ __metadata: linkType: hard "@graphql-codegen/graphql-modules-preset@npm:^2.3.2": - version: 2.5.11 - resolution: "@graphql-codegen/graphql-modules-preset@npm:2.5.11" + version: 2.5.12 + resolution: "@graphql-codegen/graphql-modules-preset@npm:2.5.12" dependencies: "@graphql-codegen/plugin-helpers": ^3.1.2 - "@graphql-codegen/visitor-plugin-common": 2.13.7 + "@graphql-codegen/visitor-plugin-common": 2.13.8 "@graphql-tools/utils": ^9.0.0 change-case-all: 1.0.15 parse-filepath: ^1.0.2 tslib: ~2.4.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: c77f05964ff1253ee522ee43ef19e939933b3162150da0d6c0c9fb243020f058af1146160aba307427f0ecf6dfafaa16935fc8fe57cb74f94fb784671bb31f6b + checksum: ca2354d5eb899bca7af2ddb68a1ad96fd046b53c07bb0323478d18e155e0bb988bb6bae4ed1578e37ffb9cb004900e7abb92b4a8b3826b6fe903b422501f8ef2 languageName: node linkType: hard @@ -9509,39 +9509,39 @@ __metadata: linkType: hard "@graphql-codegen/typescript-resolvers@npm:^2.4.3": - version: 2.7.12 - resolution: "@graphql-codegen/typescript-resolvers@npm:2.7.12" + version: 2.7.13 + resolution: "@graphql-codegen/typescript-resolvers@npm:2.7.13" dependencies: "@graphql-codegen/plugin-helpers": ^3.1.2 - "@graphql-codegen/typescript": ^2.8.7 - "@graphql-codegen/visitor-plugin-common": 2.13.7 + "@graphql-codegen/typescript": ^2.8.8 + "@graphql-codegen/visitor-plugin-common": 2.13.8 "@graphql-tools/utils": ^9.0.0 auto-bind: ~4.0.0 tslib: ~2.4.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: f8f60d972720f42f7407d91febfa4ae91f4e6cc2bd990babe85f8d1c77a3fa8dcc4ac85d8267ce24942703fc28ff6f38f4d8215e098f34fe1b35063aa08ef5a0 + checksum: 9ddfeb295e55055d450f30942c476edbc05722943d5265e9eaea9f89cef9eecb749be1ece9ce9247d53bdcc7688ca305100327d28096f5fe6aee387cf3f275f5 languageName: node linkType: hard -"@graphql-codegen/typescript@npm:^2.4.2, @graphql-codegen/typescript@npm:^2.8.7": - version: 2.8.7 - resolution: "@graphql-codegen/typescript@npm:2.8.7" +"@graphql-codegen/typescript@npm:^2.4.2, @graphql-codegen/typescript@npm:^2.8.8": + version: 2.8.8 + resolution: "@graphql-codegen/typescript@npm:2.8.8" dependencies: "@graphql-codegen/plugin-helpers": ^3.1.2 "@graphql-codegen/schema-ast": ^2.6.1 - "@graphql-codegen/visitor-plugin-common": 2.13.7 + "@graphql-codegen/visitor-plugin-common": 2.13.8 auto-bind: ~4.0.0 tslib: ~2.4.0 peerDependencies: graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 67cbafc0dc8695222fd3b2db26c3fcd91148a1dba7bb5dcf71eaf6425dadbaa378c5703f2844e34718954aa283aa95919d8d4650bd1d0b85b22b404ffc3436fa + checksum: ebc338bc88fd239b9ef70d900778791af2c68f7a0fa074d870cc5fcaee3ea182dfce8a1f366f53bcd5e81f95bb9e26e00e1b41e6b2ad3305cf7e6f44bf57d649 languageName: node linkType: hard -"@graphql-codegen/visitor-plugin-common@npm:2.13.7": - version: 2.13.7 - resolution: "@graphql-codegen/visitor-plugin-common@npm:2.13.7" +"@graphql-codegen/visitor-plugin-common@npm:2.13.8": + version: 2.13.8 + resolution: "@graphql-codegen/visitor-plugin-common@npm:2.13.8" dependencies: "@graphql-codegen/plugin-helpers": ^3.1.2 "@graphql-tools/optimize": ^1.3.0 @@ -9555,7 +9555,7 @@ __metadata: tslib: ~2.4.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 4218af8b1542789d9c8c614ccb4362a2b4944d5c3a4a59909844fe9f1f8672825adb28deeb1b9a4d45410e1ae94cde9bd1f5c5d888ae53469260d6668814732e + checksum: 4ca8074bfb84a7c6f88216c2b327a600b57da35eae9b659656592c48f197e44004dcc5c2ab500a5d3a94e2753f47903e5e113162c8a362de08e307e564d416a5 languageName: node linkType: hard @@ -9803,17 +9803,17 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/load@npm:7.8.0, @graphql-tools/load@npm:^7.5.5": - version: 7.8.0 - resolution: "@graphql-tools/load@npm:7.8.0" +"@graphql-tools/load@npm:^7.5.5, @graphql-tools/load@npm:^7.8.0": + version: 7.8.10 + resolution: "@graphql-tools/load@npm:7.8.10" dependencies: - "@graphql-tools/schema": 9.0.4 - "@graphql-tools/utils": 8.12.0 + "@graphql-tools/schema": 9.0.14 + "@graphql-tools/utils": 9.1.4 p-limit: 3.1.0 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 24ade442e13429d087ceac905cef4e6a14d0961e2b231adf91180a4d674de08ac6de66e6103c3e118b6ccf24065492bb69f5c99cb336e71a579ab382c8574791 + checksum: 9b1fd7041fc69072c4f7d6bc320c9de7f990e1792db567d3d913b9cc77f5c164ffee968dd90a688d89856e1e8c01beb8e1bbe9f22464fa8c563553229c3a3f28 languageName: node linkType: hard @@ -9865,18 +9865,6 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/merge@npm:8.3.6": - version: 8.3.6 - resolution: "@graphql-tools/merge@npm:8.3.6" - dependencies: - "@graphql-tools/utils": 8.12.0 - tslib: ^2.4.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 3e45ebff0dce9524e72c4af1d2b9799c16515c1236290e07cd68fb2226c4e54734e2444d89a64b387b7ba991d15c6f948fdfc20c77a74b1d24babddd865ff32a - languageName: node - linkType: hard - "@graphql-tools/mock@npm:^8.1.2": version: 8.6.8 resolution: "@graphql-tools/mock@npm:8.6.8" @@ -9986,21 +9974,7 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/schema@npm:9.0.4": - version: 9.0.4 - resolution: "@graphql-tools/schema@npm:9.0.4" - dependencies: - "@graphql-tools/merge": 8.3.6 - "@graphql-tools/utils": 8.12.0 - tslib: ^2.4.0 - value-or-promise: 1.0.11 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 0644ba225ff7fb03c6fb7f026b6a77a4ac5dd14fd10bb562ea0072bfe0258620fd4789b851b0b97007db8754d0b7d88a1061bb98bacc679b22e2eb7706e79e0e - languageName: node - linkType: hard - -"@graphql-tools/schema@npm:^9.0.0": +"@graphql-tools/schema@npm:9.0.14, @graphql-tools/schema@npm:^9.0.0": version: 9.0.14 resolution: "@graphql-tools/schema@npm:9.0.14" dependencies: @@ -10037,17 +10011,6 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/utils@npm:8.12.0": - version: 8.12.0 - resolution: "@graphql-tools/utils@npm:8.12.0" - dependencies: - tslib: ^2.4.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 24edc6ba3bcfa9a4c1d1d37117c3f96d847beed9638325083c32c6ec9674729dc89fc8cc389d317ae5d9dba22e91443bd9788f1dc8de91a1b6f1e592112bd48f - languageName: node - linkType: hard - "@graphql-tools/utils@npm:8.6.9": version: 8.6.9 resolution: "@graphql-tools/utils@npm:8.6.9" @@ -19385,7 +19348,7 @@ __metadata: languageName: node linkType: hard -"cosmiconfig-typescript-loader@npm:4.3.0": +"cosmiconfig-typescript-loader@npm:^4.3.0": version: 4.3.0 resolution: "cosmiconfig-typescript-loader@npm:4.3.0" peerDependencies: @@ -24071,7 +24034,7 @@ __metadata: languageName: node linkType: hard -"graphql-config@npm:4.4.0": +"graphql-config@npm:^4.4.0": version: 4.4.0 resolution: "graphql-config@npm:4.4.0" dependencies: From 0559549a3ec4e1c08932c75d7858296ba8455ccc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 30 Jan 2023 16:43:35 +0000 Subject: [PATCH 133/156] chore(deps): update dependency eslint-plugin-testing-library to v5.10.0 Signed-off-by: Renovate Bot <bot@renovateapp.com> --- yarn.lock | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 68 insertions(+), 5 deletions(-) diff --git a/yarn.lock b/yarn.lock index f323e223ce..4ac7e2703a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15707,6 +15707,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:5.49.0": + version: 5.49.0 + resolution: "@typescript-eslint/scope-manager@npm:5.49.0" + dependencies: + "@typescript-eslint/types": 5.49.0 + "@typescript-eslint/visitor-keys": 5.49.0 + checksum: 466047e24ff8a4195f14aadde39375f22891bdaced09e58c89f2c32af0aa4a0d87e71a5f006f6ab76858e6f30c4b764b1e0ef7bc26713bb78add30638108c45f + languageName: node + linkType: hard + "@typescript-eslint/scope-manager@npm:5.9.0": version: 5.9.0 resolution: "@typescript-eslint/scope-manager@npm:5.9.0" @@ -15741,6 +15751,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:5.49.0": + version: 5.49.0 + resolution: "@typescript-eslint/types@npm:5.49.0" + checksum: 41f72a043007fc3f3356b5a38d7bfa54871545b4a309810a062f044cff25122413a9660ce6d83d1221762f60d067351d020b0cb68f7e1279817f53e77ce8f33d + languageName: node + linkType: hard + "@typescript-eslint/types@npm:5.9.0": version: 5.9.0 resolution: "@typescript-eslint/types@npm:5.9.0" @@ -15766,6 +15783,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:5.49.0": + version: 5.49.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.49.0" + dependencies: + "@typescript-eslint/types": 5.49.0 + "@typescript-eslint/visitor-keys": 5.49.0 + debug: ^4.3.4 + globby: ^11.1.0 + is-glob: ^4.0.3 + semver: ^7.3.7 + tsutils: ^3.21.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: f331af9f0ef3ce3157c421b8cc727dec5aa0a60add305aa4c676a02c63ec07799105268af192c5ed193a682b7ed804564d29d49bdbd2019678e495d80e65e29a + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:5.9.0": version: 5.9.0 resolution: "@typescript-eslint/typescript-estree@npm:5.9.0" @@ -15784,7 +15819,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.48.1, @typescript-eslint/utils@npm:^5.10.0, @typescript-eslint/utils@npm:^5.13.0": +"@typescript-eslint/utils@npm:5.48.1": version: 5.48.1 resolution: "@typescript-eslint/utils@npm:5.48.1" dependencies: @@ -15802,6 +15837,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:^5.10.0, @typescript-eslint/utils@npm:^5.43.0": + version: 5.49.0 + resolution: "@typescript-eslint/utils@npm:5.49.0" + dependencies: + "@types/json-schema": ^7.0.9 + "@types/semver": ^7.3.12 + "@typescript-eslint/scope-manager": 5.49.0 + "@typescript-eslint/types": 5.49.0 + "@typescript-eslint/typescript-estree": 5.49.0 + eslint-scope: ^5.1.1 + eslint-utils: ^3.0.0 + semver: ^7.3.7 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 8218c566637d5104dfb2346216f8cb4c244f31c2a39e261aafe554b8abd48bd630a0d0807a0a8d776af8f9d9914c8776d86abf0a523049f3c5619c498a7e5b1e + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:5.48.1": version: 5.48.1 resolution: "@typescript-eslint/visitor-keys@npm:5.48.1" @@ -15812,6 +15865,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:5.49.0": + version: 5.49.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.49.0" + dependencies: + "@typescript-eslint/types": 5.49.0 + eslint-visitor-keys: ^3.3.0 + checksum: 46dc7bc713e8825d1fccba521fdf7c6e2f8829e491c2afd44dbe4105c6432e3c3dfe7e1ecb221401269d639264bb4af77b60a7b65521fcff9ab02cd31d8ef782 + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:5.9.0": version: 5.9.0 resolution: "@typescript-eslint/visitor-keys@npm:5.9.0" @@ -21955,13 +22018,13 @@ __metadata: linkType: hard "eslint-plugin-testing-library@npm:^5.9.1": - version: 5.9.1 - resolution: "eslint-plugin-testing-library@npm:5.9.1" + version: 5.10.0 + resolution: "eslint-plugin-testing-library@npm:5.10.0" dependencies: - "@typescript-eslint/utils": ^5.13.0 + "@typescript-eslint/utils": ^5.43.0 peerDependencies: eslint: ^7.5.0 || ^8.0.0 - checksum: d09f9486945807e9587d52b6979117bc41b750df741567381a06219671096afb318696a0e0db63e253e150fead40e77ef9653ee00f1dda83fc8920e3b3c47107 + checksum: 3278fc4683a99d24ac2b6d2ed0359db1b0509674350e4b9a958a226f57b4b90e070c02e1f4c2806da885d8025c1e8c952cb9a5e9751e69baac3d12cfe6804000 languageName: node linkType: hard From e9e1b68caf61a98ab2fee64e8782afc678b31a9d Mon Sep 17 00:00:00 2001 From: bogdannechyporenko <bogdannechiporenko@gmail.com> Date: Mon, 30 Jan 2023 19:03:02 +0100 Subject: [PATCH 134/156] Aligning buttons to the same line Signed-off-by: bogdannechyporenko <bogdannechiporenko@gmail.com> --- .../UnregisterEntityDialog.tsx | 43 ++++++++++++------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx index 48aa2f4012..6c4984129e 100644 --- a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx +++ b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx @@ -39,14 +39,19 @@ const useStyles = makeStyles({ advancedButton: { fontSize: '0.7em', }, + dialogActions: { + display: 'inline-block', + }, }); const Contents = ({ entity, onConfirm, + onClose, }: { entity: Entity; onConfirm: () => any; + onClose: () => any; }) => { const alertApi = useApi(alertApiRef); const configApi = useApi(configApiRef); @@ -92,6 +97,14 @@ const Contents = ({ [alertApi, onConfirm, state], ); + const DialogActionsPanel = () => ( + <DialogActions className={classes.dialogActions}> + <Button onClick={onClose} color="primary"> + Cancel + </Button> + </DialogActions> + ); + if (state.type === 'loading') { return <Progress />; } @@ -112,15 +125,18 @@ const Contents = ({ <Box marginTop={2}> {!showDelete && ( - <Button - variant="text" - size="small" - color="primary" - className={classes.advancedButton} - onClick={() => setShowDelete(true)} - > - Advanced Options - </Button> + <> + <Button + variant="text" + size="small" + color="primary" + className={classes.advancedButton} + onClick={() => setShowDelete(true)} + > + Advanced Options + </Button> + <DialogActionsPanel /> + </> )} {showDelete && ( @@ -140,6 +156,7 @@ const Contents = ({ > Delete Entity </Button> + <DialogActionsPanel /> </> )} </Box> @@ -162,6 +179,7 @@ const Contents = ({ > Delete Entity </Button> + <DialogActionsPanel /> </> ); } @@ -258,13 +276,8 @@ export const UnregisterEntityDialog = (props: UnregisterEntityDialogProps) => { Are you sure you want to unregister this entity? </DialogTitle> <DialogContent> - <Contents entity={entity} onConfirm={onConfirm} /> + <Contents entity={entity} onConfirm={onConfirm} onClose={onClose} /> </DialogContent> - <DialogActions> - <Button onClick={onClose} color="primary"> - Cancel - </Button> - </DialogActions> </Dialog> ); }; From fab93c2fe8ad1316215fbec4fb1d08750e8fb69f Mon Sep 17 00:00:00 2001 From: bogdannechyporenko <bogdannechiporenko@gmail.com> Date: Mon, 30 Jan 2023 19:03:59 +0100 Subject: [PATCH 135/156] Aligning buttons to the same line Signed-off-by: bogdannechyporenko <bogdannechiporenko@gmail.com> --- .changeset/twenty-islands-wonder.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/twenty-islands-wonder.md diff --git a/.changeset/twenty-islands-wonder.md b/.changeset/twenty-islands-wonder.md new file mode 100644 index 0000000000..4a18545a27 --- /dev/null +++ b/.changeset/twenty-islands-wonder.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': minor +--- + +Aligined buttons on "Unregister entity" dialog to keep them on the same line From 958d922718f09b5b56a86b0fff23a5f45b372f27 Mon Sep 17 00:00:00 2001 From: bogdannechyporenko <bogdannechiporenko@gmail.com> Date: Mon, 30 Jan 2023 19:12:49 +0100 Subject: [PATCH 136/156] Aligning buttons to the same line Signed-off-by: bogdannechyporenko <bogdannechiporenko@gmail.com> --- .changeset/twenty-islands-wonder.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/twenty-islands-wonder.md b/.changeset/twenty-islands-wonder.md index 4a18545a27..fe3c5a05c8 100644 --- a/.changeset/twenty-islands-wonder.md +++ b/.changeset/twenty-islands-wonder.md @@ -2,4 +2,4 @@ '@backstage/plugin-catalog-react': minor --- -Aligined buttons on "Unregister entity" dialog to keep them on the same line +Aligned buttons on "Unregister entity" dialog to keep them on the same line From 0f79f14716c6548e420a4e04eca9dfe96dbba932 Mon Sep 17 00:00:00 2001 From: bogdannechyporenko <bogdannechiporenko@gmail.com> Date: Mon, 30 Jan 2023 20:04:44 +0100 Subject: [PATCH 137/156] test fixed Signed-off-by: bogdannechyporenko <bogdannechiporenko@gmail.com> --- .../UnregisterEntityDialog/UnregisterEntityDialog.test.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx index 4173ca85b2..baa4b3732c 100644 --- a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx +++ b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx @@ -80,7 +80,11 @@ describe('UnregisterEntityDialog', () => { it('can cancel', async () => { const onClose = jest.fn(); - stateSpy.mockImplementation(() => ({ type: 'loading' })); + stateSpy.mockImplementation(() => ({ + type: 'bootstrap', + location: '', + deleteEntity: jest.fn(), + })); await renderInTestApp( <Wrapper> From 2a23d5054acc503ee8334d889316c8f5a808b15a Mon Sep 17 00:00:00 2001 From: blam <ben@blam.sh> Date: Mon, 30 Jan 2023 22:40:45 +0100 Subject: [PATCH 138/156] chore: adjusting the site config as now we've got a new search Signed-off-by: blam <ben@blam.sh> --- microsite/siteConfig.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/microsite/siteConfig.js b/microsite/siteConfig.js index 68226b5681..5329ebb688 100644 --- a/microsite/siteConfig.js +++ b/microsite/siteConfig.js @@ -138,8 +138,9 @@ const siteConfig = { ], algolia: { - apiKey: '8d115c9875ba0f4feaee95bab55a1645', - indexName: 'backstage', + apiKey: '10b9e6c92a4513c1cf390f50e53aad1f', + indexName: 'backstage_io', + appId: 'JCMFNHCHI8', searchParameters: {}, // Optional (if provided by Algolia) }, }; From db89d41d194ca3487f509ec81b8c1b555531bfe5 Mon Sep 17 00:00:00 2001 From: Adam Vollrath <adam.d.vollrath@gmail.com> Date: Mon, 30 Jan 2023 15:38:46 -0600 Subject: [PATCH 139/156] Uffizzi Preview Workflow Improvements * Add an explicit newline before the end of the event JSON blob. * Include conditions to skip without successful build workflow. * Upload event payload file directly from runner context. Signed-off-by: Adam Vollrath <adam.d.vollrath@gmail.com> --- .github/workflows/uffizzi-build.yml | 14 ++------------ .github/workflows/uffizzi-preview.yaml | 4 +++- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/.github/workflows/uffizzi-build.yml b/.github/workflows/uffizzi-build.yml index a23216a9cb..5c8e179958 100644 --- a/.github/workflows/uffizzi-build.yml +++ b/.github/workflows/uffizzi-build.yml @@ -89,16 +89,11 @@ jobs: name: preview-spec path: docker-compose.rendered.yml retention-days: 2 - - name: Serialize PR Event to File - run: | - cat << EOF > event.json - ${{ toJSON(github.event) }} - EOF - name: Upload PR Event as Artifact uses: actions/upload-artifact@v3 with: name: preview-spec - path: event.json + path: ${{ github.event_path }} retention-days: 2 delete-preview: @@ -107,14 +102,9 @@ jobs: if: ${{ github.event.action == 'closed' }} steps: # If this PR is closing, we will not render a compose file nor pass it to the next workflow. - - name: Serialize PR Event to File - run: | - cat << EOF > event.json - ${{ toJSON(github.event) }} - EOF - name: Upload PR Event as Artifact uses: actions/upload-artifact@v3 with: name: preview-spec - path: event.json + path: ${{ github.event_path }} retention-days: 2 diff --git a/.github/workflows/uffizzi-preview.yaml b/.github/workflows/uffizzi-preview.yaml index 3c344f5a78..6390671bbd 100644 --- a/.github/workflows/uffizzi-preview.yaml +++ b/.github/workflows/uffizzi-preview.yaml @@ -11,6 +11,7 @@ jobs: cache-compose-file: name: Cache Compose File runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' }} outputs: compose-file-cache-key: ${{ env.COMPOSE_FILE_HASH }} pr-number: ${{ env.PR_NUMBER }} @@ -47,7 +48,7 @@ jobs: run: | echo 'EVENT_JSON<<EOF' >> $GITHUB_ENV cat event.json >> $GITHUB_ENV - echo 'EOF' >> $GITHUB_ENV + echo -e '\nEOF' >> $GITHUB_ENV - name: Hash Rendered Compose File id: hash @@ -77,6 +78,7 @@ jobs: name: Use Remote Workflow to Preview on Uffizzi needs: - cache-compose-file + if: ${{ github.event.workflow_run.conclusion == 'success' }} uses: UffizziCloud/preview-action/.github/workflows/reusable.yaml@v2 with: # If this workflow was triggered by a PR close event, cache-key will be an empty string From 838bd8cf5d16956e11a7f34e32bbe3f11ffa9f5c Mon Sep 17 00:00:00 2001 From: Kurt King <kurtaking@gmail.com> Date: Mon, 30 Jan 2023 19:15:49 -0700 Subject: [PATCH 140/156] add public remark Signed-off-by: Kurt King <kurtaking@gmail.com> --- .../core-components/src/components/LinkButton/LinkButton.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/core-components/src/components/LinkButton/LinkButton.tsx b/packages/core-components/src/components/LinkButton/LinkButton.tsx index bef4c96497..a6ba4d67a7 100644 --- a/packages/core-components/src/components/LinkButton/LinkButton.tsx +++ b/packages/core-components/src/components/LinkButton/LinkButton.tsx @@ -49,11 +49,13 @@ export const LinkButton = React.forwardRef<any, ButtonProps>((props, ref) => ( )) as (props: ButtonProps) => JSX.Element; /** + * @public * @deprecated use LinkButton instead */ export const Button = LinkButton; /** + * @public * @deprecated use LinkButtonProps instead */ export type ButtonProps = LinkButtonProps; From b061c006a41c1d9b57749eeb26a0b0a226b3eeeb Mon Sep 17 00:00:00 2001 From: Kurt King <kurtaking@gmail.com> Date: Mon, 30 Jan 2023 19:30:09 -0700 Subject: [PATCH 141/156] create new api-report Signed-off-by: Kurt King <kurtaking@gmail.com> --- packages/core-components/api-report.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/core-components/api-report.md b/packages/core-components/api-report.md index fb5442216d..363de692cb 100644 --- a/packages/core-components/api-report.md +++ b/packages/core-components/api-report.md @@ -129,13 +129,9 @@ export type BreadcrumbsStyledBoxClassKey = 'root'; // @public export function BrokenImageIcon(props: IconComponentProps): JSX.Element; -// Warning: (ae-missing-release-tag) "Button" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export const Button: (props: ButtonProps) => JSX.Element; -// Warning: (ae-missing-release-tag) "ButtonProps" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public @deprecated (undocumented) export type ButtonProps = LinkButtonProps; From ef6dc0a617ff30139db5b08d76d3a93b246d11e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= <freben@gmail.com> Date: Tue, 31 Jan 2023 09:52:09 +0100 Subject: [PATCH 142/156] some small docs tweaks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw <freben@gmail.com> --- .../architecture-building-blocks.drawio.svg | 174 ++++++++++++++---- docs/backend-system/architecture/01-index.md | 24 +-- docs/backend-system/index.md | 4 +- 3 files changed, 155 insertions(+), 47 deletions(-) diff --git a/docs/assets/backend-system/architecture-building-blocks.drawio.svg b/docs/assets/backend-system/architecture-building-blocks.drawio.svg index 0244d461c6..6c0860be98 100644 --- a/docs/assets/backend-system/architecture-building-blocks.drawio.svg +++ b/docs/assets/backend-system/architecture-building-blocks.drawio.svg @@ -1,15 +1,11 @@ -<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="522px" height="282px" viewBox="-0.5 -0.5 522 282" content="<mxfile scale="1.5" border="20"><diagram id="gKBvn7eBFHudv9VMIRD-" name="Page-1">3VhBc6IwGP01XDtAAPW4tbZ76Ywz7sx2jylEyBgTJwTF/fUbSJBErKtsq654kPfyhYT3Mg+CA8bL8oXDVfbKEkQc301KBzw5vu95wJd/FbNVTDgaKCLlONFFLTHDv5EmXc0WOEG5VSgYIwKvbDJmlKJYWBzknG3ssjkj9qgrmKIOMYsh6bI/cSIyxYLAbfnvCKdZM/JQN7zDeJFyVlA9nOODeX2o5iVsLqXr8wwmbGNQYOKAMWdMqLNlOUakkrZRTfV7/qB1N22OqDilg3YlF9vmzlEihdCQMir/HjOxJBJ58hTR5Fslr4TvhMWLHxmmin7GxCjSjgYS5QJyYeBaHVSN70rUnXBjN+Qp0lSgqGpqRo2+oxfElkjwrSzgiECB17aHUC+FdFe36zplWI7qu3rZhtqUrQ2bC+Ss4DHSfVpN5YkxiZaqlT6s+vBc1Uss3irBHoaDUONfRttTqdWswdYAU8SxnBjiDXcx/5RaivK7lkaXsRSMbE8HX+apvsc1JIWe7KPMAillx2tbwE2GBZqtYK3VRqapbf1c2jJmhPG6L5hE1a92hbMFMlqi+qh6MCoMXh3HnFojLlB51IWm1RazgRsjIZtgy4x0DNyPbbMUPyIv6Mg7Q3yNY/mQuCN9weHVagg8/CJ9Rz0jyTPiyH0IjwfSVcIn6IZP+Nnhc6rKnt87+a3gd/+is5zWmwkMdyrYdqvRzfkDruVP0EmZKSlSTO8qZPZCHFwuZMKOvJNSIJpjRiVdP4XvSmlwPakbl89PmpsP9OiWAh30DnS/R6B7/0OgH/DnaoEedRLnlSUFuau3xv1960Vj5uz3xs9ekgnMsxp4GkyhkPtdWjO+6+003lt8fTat4B9X7eE9qheNHkLLwRO/PHSutL8S9ne76l567HYlbL9JqfL2ux+Y/AE=</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"> +<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="642px" height="327px" viewBox="-0.5 -0.5 642 327" content="<mxfile scale="1.5" border="20"><diagram id="gKBvn7eBFHudv9VMIRD-" name="Page-1">5Vldb5swFP01PDYCTNLy2CZpt4dplTJp7aMLDlg1ODJOQvrrZ7ABg7MkQjRZMypV3OvPe865105igWmSPzG4in/QEBHLtcPcAjPLde98V/wvHDvp8G1bOiKGQ+lyGscCfyDlrLqtcYiyVkdOKeF41XYGNE1RwFs+yBjdtrstKWmvuoIRMhyLABLT+xuHPJZe4NmN/xvCUVytfKca3mDwHjG6TtVylguW5SObE1hNpfpnMQzpVnOBuQWmjFIu35J8ikiBbIWaHPf4l9Z62wyl/JQBiqYNJGsV+YOIAInty+3xXYVIGRQqhtkWeNjGmKPFCgZF61ZIQPhinhBhOeJ1iQmZUkJZORbMJ8Wf8Gec0XektUzKpxhBU6755SP8ZkAqxg1iHOWaSwX4hGiCONuJLqr1BiiwlRZvKvC3DbNepc9YY7ViGyoxRfXUDaLiRYG6H2BgALxAbIMDIe7rQdjpIHxrAnz3Sfj6Br7PjG5E8TDgRaHIcGWmNEVtPFGO+Yv2/lrQMBora5YrVkpjVxlpeF/UGmG+ERq8/4pxKt2PmNQTp1V580p6IOOa3ea8oEg1+oeYyeiaBSosT1VHyCKkeo2lqwj4IHsMEcjxpl3y9pGhhj5TLDbSdKHLZSbW7LJVr3ASgY5ZgmZoVVYg+2fak0V7dDvWiTxCo9jsi25o5BdmM6y0Po3+IuGwOIPuCY7ETLMEhyEpI6QMfwhtwDr7hxEK+EpC8cxMJ+sIp9dUSLtHVV1Yz1BJxwa+85yjNMNUZKFdUnpNUHfPrHNCXd1yNaynsOjRr9h9tSNrcoYj62QqzAvaEMeP2+P4cS58/AxE5eCHyqlUTgwmxcfSNbmqm7b4IH2xqlXvtgH4e7KibM+xcGqa2L6v5Ykzsr0Tb2pNdrzqbf/8Ta0I5xkxLMBHTE22N1+OZp5rZp53rttb0ydvy6tSZVducuNq0IF5nO5EdmciGa4xUY/r5J6vPnqq+SpEKQPoZKN7OBs/U8uTi2kZdC6GfbXsHsmJAaVs3mHUlyD/s5b1G5hzUMghzOJyZWdIBYPLKbhTRYE9uvW1Zzzup+juvMNJWpjNd96ye/OzApj/AQ==</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"> <defs/> <g> - <path d="M 79.5 79.5 L 79.5 190.32" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 79.5 197.82 L 77 190.32 L 82 190.32 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 439.5 79.5 L 439.5 190.32" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 439.5 197.82 L 437 190.32 L 442 190.32 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/> - <rect x="19.5" y="19.5" width="480" height="60" fill="#e6e6e6" stroke="#666666" stroke-width="1.5" pointer-events="all"/> + <rect x="19.5" y="19.5" width="600" height="60" fill="#e6e6e6" stroke="#666666" stroke-width="1.5" pointer-events="all"/> <g transform="translate(-0.5 -0.5)scale(1.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 318px; height: 1px; padding-top: 33px; margin-left: 14px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 33px; margin-left: 14px;"> <div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> Backend @@ -17,16 +13,16 @@ </div> </div> </foreignObject> - <text x="173" y="37" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="213" y="37" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle"> Backend </text> </switch> </g> - <rect x="199.5" y="109.5" width="120" height="60" fill="#e6e6e6" stroke="#666666" stroke-width="1.5" pointer-events="all"/> + <rect x="259.5" y="154.5" width="120" height="60" fill="#e6e6e6" stroke="#666666" stroke-width="1.5" pointer-events="all"/> <g transform="translate(-0.5 -0.5)scale(1.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 93px; margin-left: 134px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 123px; margin-left: 174px;"> <div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> Services @@ -34,20 +30,52 @@ </div> </div> </foreignObject> - <text x="173" y="97" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="213" y="127" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle"> Services </text> </switch> </g> - <path d="M 139.5 229.5 L 190.32 229.5" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 197.82 229.5 L 190.32 232 L 190.32 227 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 109.5 199.5 L 191.86 144.59" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 198.1 140.43 L 193.25 146.67 L 190.48 142.51 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/> - <rect x="19.5" y="199.5" width="120" height="60" fill="#e6e6e6" stroke="#666666" stroke-width="1.5" pointer-events="all"/> + <path d="M 139.5 274.5 L 250.32 274.5" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 257.82 274.5 L 250.32 277 L 250.32 272 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)scale(1.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 153px; margin-left: 14px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 183px; margin-left: 133px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Provide + </div> + </div> + </div> + </foreignObject> + <text x="133" y="186" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle"> + Provide + </text> + </switch> + </g> + <path d="M 109.5 244.5 L 250.98 187.91" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 257.94 185.12 L 251.91 190.23 L 250.05 185.59 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)scale(1.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 143px; margin-left: 123px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Depend On + </div> + </div> + </div> + </foreignObject> + <text x="123" y="146" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle"> + Depend On + </text> + </switch> + </g> + <rect x="19.5" y="244.5" width="120" height="60" fill="#e6e6e6" stroke="#666666" stroke-width="1.5" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)scale(1.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 183px; margin-left: 14px;"> <div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> Plugins @@ -55,16 +83,16 @@ </div> </div> </foreignObject> - <text x="53" y="157" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="53" y="187" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle"> Plugins </text> </switch> </g> - <rect x="199.5" y="199.5" width="120" height="60" fill="#e6e6e6" stroke="#666666" stroke-width="1.5" pointer-events="all"/> + <rect x="259.5" y="244.5" width="120" height="60" fill="#e6e6e6" stroke="#666666" stroke-width="1.5" pointer-events="all"/> <g transform="translate(-0.5 -0.5)scale(1.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 153px; margin-left: 134px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 183px; margin-left: 174px;"> <div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> Extension Points @@ -72,20 +100,52 @@ </div> </div> </foreignObject> - <text x="173" y="157" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="213" y="187" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle"> Extension Poi... </text> </switch> </g> - <path d="M 379.5 229.5 L 328.68 229.5" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 321.18 229.5 L 328.68 227 L 328.68 232 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 409.5 199.5 L 327.14 144.59" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 320.9 140.43 L 328.52 142.51 L 325.75 146.67 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/> - <rect x="379.5" y="199.5" width="120" height="60" fill="#e6e6e6" stroke="#666666" stroke-width="1.5" pointer-events="all"/> + <path d="M 499.5 274.5 L 388.68 274.5" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 381.18 274.5 L 388.68 272 L 388.68 277 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)scale(1.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 153px; margin-left: 254px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 183px; margin-left: 293px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Call + </div> + </div> + </div> + </foreignObject> + <text x="293" y="186" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle"> + Call + </text> + </switch> + </g> + <path d="M 529.5 244.5 L 388.02 187.91" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 381.06 185.12 L 388.95 185.59 L 387.09 190.23 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)scale(1.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 143px; margin-left: 303px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Depend On + </div> + </div> + </div> + </foreignObject> + <text x="303" y="146" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle"> + Depend On + </text> + </switch> + </g> + <rect x="499.5" y="244.5" width="120" height="60" fill="#e6e6e6" stroke="#666666" stroke-width="1.5" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)scale(1.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 183px; margin-left: 334px;"> <div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> Modules @@ -93,19 +153,71 @@ </div> </div> </foreignObject> - <text x="293" y="157" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="373" y="187" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle"> Modules </text> </switch> </g> - <path d="M 259.5 79.5 L 259.5 100.32" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" stroke-dasharray="1.5 1.5" pointer-events="stroke"/> - <path d="M 259.5 107.82 L 257 100.32 L 262 100.32 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 78.9 81.9 L 79.47 235.32" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 79.49 242.82 L 76.97 235.33 L 81.97 235.31 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)scale(1.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 109px; margin-left: 53px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Imports + </div> + </div> + </div> + </foreignObject> + <text x="53" y="112" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle"> + Imports + </text> + </switch> + </g> + <path d="M 559.5 80.7 L 559.5 235.32" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 559.5 242.82 L 557 235.32 L 562 235.32 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)scale(1.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 109px; margin-left: 373px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Imports + </div> + </div> + </div> + </foreignObject> + <text x="373" y="111" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle"> + Imports + </text> + </switch> + </g> + <path d="M 319.5 79.5 L 319.5 145.32" fill="none" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" stroke-dasharray="4.5 4.5" pointer-events="stroke"/> + <path d="M 319.5 152.82 L 317 145.32 L 322 145.32 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)scale(1.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 78px; margin-left: 213px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Provides + </div> + </div> + </div> + </foreignObject> + <text x="213" y="81" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle"> + Provides + </text> + </switch> + </g> </g> <switch> <g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/> <a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"> <text text-anchor="middle" font-size="10px" x="50%" y="100%"> - Viewer does not support full SVG 1.1 + Text is not SVG - cannot display </text> </a> </switch> diff --git a/docs/backend-system/architecture/01-index.md b/docs/backend-system/architecture/01-index.md index e3354112fb..88ba3262df 100644 --- a/docs/backend-system/architecture/01-index.md +++ b/docs/backend-system/architecture/01-index.md @@ -6,16 +6,14 @@ sidebar_label: System Architecture description: The structure and architecture of the new Backend System and its component parts --- -# Overview +## Building Blocks This section introduces the high-level building blocks upon which this new system is built. These are all concepts that exist in our current system in one way or another, but they have all been lifted up to be first class concerns in -the new system. - -## Building Blocks - -This section introduces the high-level building blocks upon which this new system is built. Regardless of whether you are setting up your own backstage instance, developing plugins, or extending plugins with new features, it is important to understand these concepts. +the new system. Regardless of whether you are setting up your own backstage +instance, developing plugins, or extending plugins with new features, it is +important to understand these concepts. The diagram below provides an overview of the different building blocks, and the other blocks that each of them interact with. @@ -37,7 +35,7 @@ Plugins provide the actual features, just like in our existing system. They oper Services provide utilities to help make it simpler to implement plugins, so that each plugin doesn't need to implement everything from scratch. There are both many built-in services, like the ones for logging, database access, and reading configuration, but you can also import third-party services, or create your own. -Services are also a customization point for individual backend installations. You can both override services with your own implementations, as well as make smaller customizations to existing services. +Services are also a customization point for individual backend installations. You can override services with your own implementations, as well as make smaller customizations to existing services. ### Extension Points @@ -45,7 +43,7 @@ Many plugins have ways in which you can extend them, for example entity provider Extension Points look a little bit like services, since you depended on them just like you would a service. A key difference is that extension points are registered and provided by plugins themselves, based on what customizations each individual plugin wants to expose. -Extension Points are also exported separately from the plugin instance itself, and a single plugin can also expose multiple different extension points at once. This makes it easier to evolve and deprecated individual Extension Points over time, rather than dealing with a single large API surface. +Extension Points are also exported separately from the plugin instance itself, and a single plugin can also expose multiple different extension points at once. This makes it easier to evolve and deprecate individual Extension Points over time, rather than dealing with a single large API surface. ### Modules @@ -53,22 +51,20 @@ Modules use the plugin Extension Points to add new features for plugins. They mi Each module may only extend a single plugin, and the module must be deployed together with that plugin in the same backend instance. Modules may however only communicate with their plugin through its registered extension points. -Just like plugins, modules also have access to services and can depend on their own service implementations. They will however share services with the plugin that they extend, there are no module-specific service implementations. +Just like plugins, modules also have access to services and can depend on their own service implementations. They will however share services with the plugin that they extend - there are no module-specific service implementations. ## Package structure A detailed explanation of the package architecture can be found in the [Backstage Architecture Overview](../../overview/architecture-overview.md#package-architecture). The -most important packages to consider for this system are `backend`, -`plugin-<pluginId>-backend`, `plugin-<pluginId>-node`, and -`plugin-<pluginId>-backend-module-<moduleId>`. +most important packages to consider for this system are the following: - `plugin-<pluginId>-backend` houses the implementation of the backend plugins themselves. -- `plugin-<pluginId>-node` houses the extension points and any other utilities +- `plugin-<pluginId>-node` houses the backend plugin's extension points and any other utilities that modules or other plugins might need. - `plugin-<pluginId>-backend-module-<moduleId>` houses the modules that extend - the plugins via the extension points. + the plugin via its extension points. - `backend` is the backend itself that wires everything together to something that you can deploy. diff --git a/docs/backend-system/index.md b/docs/backend-system/index.md index ca13bc188c..de598167ae 100644 --- a/docs/backend-system/index.md +++ b/docs/backend-system/index.md @@ -3,7 +3,7 @@ id: index title: The Backend System sidebar_label: Overview # prettier-ignore -description: The backend system +description: The Backend System --- > **DISCLAIMER: The new backend system is under active development and is not considered stable** @@ -12,4 +12,4 @@ description: The backend system The new backend system is under active development, and only a small number of plugins have been migrated so far. It is possible to try it out, but it is not recommended to use this new system in production yet. -You can find an example backend setup in [the backend-next package](https://github.com/backstage/backstage/tree/master/packages/backend-next). +You can find an example backend setup in [the `backend-next` package](https://github.com/backstage/backstage/tree/master/packages/backend-next). From 345e953f9c17093aa6583dbe7a49bd0dd891bbe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= <freben@gmail.com> Date: Tue, 31 Jan 2023 10:01:20 +0100 Subject: [PATCH 143/156] better arrow wording MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw <freben@gmail.com> --- .../architecture-building-blocks.drawio.svg | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/assets/backend-system/architecture-building-blocks.drawio.svg b/docs/assets/backend-system/architecture-building-blocks.drawio.svg index 6c0860be98..7a65f3a725 100644 --- a/docs/assets/backend-system/architecture-building-blocks.drawio.svg +++ b/docs/assets/backend-system/architecture-building-blocks.drawio.svg @@ -1,4 +1,4 @@ -<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="642px" height="327px" viewBox="-0.5 -0.5 642 327" content="<mxfile scale="1.5" border="20"><diagram id="gKBvn7eBFHudv9VMIRD-" name="Page-1">5Vldb5swFP01PDYCTNLy2CZpt4dplTJp7aMLDlg1ODJOQvrrZ7ABg7MkQjRZMypV3OvPe865105igWmSPzG4in/QEBHLtcPcAjPLde98V/wvHDvp8G1bOiKGQ+lyGscCfyDlrLqtcYiyVkdOKeF41XYGNE1RwFs+yBjdtrstKWmvuoIRMhyLABLT+xuHPJZe4NmN/xvCUVytfKca3mDwHjG6TtVylguW5SObE1hNpfpnMQzpVnOBuQWmjFIu35J8ikiBbIWaHPf4l9Z62wyl/JQBiqYNJGsV+YOIAInty+3xXYVIGRQqhtkWeNjGmKPFCgZF61ZIQPhinhBhOeJ1iQmZUkJZORbMJ8Wf8Gec0XektUzKpxhBU6755SP8ZkAqxg1iHOWaSwX4hGiCONuJLqr1BiiwlRZvKvC3DbNepc9YY7ViGyoxRfXUDaLiRYG6H2BgALxAbIMDIe7rQdjpIHxrAnz3Sfj6Br7PjG5E8TDgRaHIcGWmNEVtPFGO+Yv2/lrQMBora5YrVkpjVxlpeF/UGmG+ERq8/4pxKt2PmNQTp1V580p6IOOa3ea8oEg1+oeYyeiaBSosT1VHyCKkeo2lqwj4IHsMEcjxpl3y9pGhhj5TLDbSdKHLZSbW7LJVr3ASgY5ZgmZoVVYg+2fak0V7dDvWiTxCo9jsi25o5BdmM6y0Po3+IuGwOIPuCY7ETLMEhyEpI6QMfwhtwDr7hxEK+EpC8cxMJ+sIp9dUSLtHVV1Yz1BJxwa+85yjNMNUZKFdUnpNUHfPrHNCXd1yNaynsOjRr9h9tSNrcoYj62QqzAvaEMeP2+P4cS58/AxE5eCHyqlUTgwmxcfSNbmqm7b4IH2xqlXvtgH4e7KibM+xcGqa2L6v5Ykzsr0Tb2pNdrzqbf/8Ta0I5xkxLMBHTE22N1+OZp5rZp53rttb0ydvy6tSZVducuNq0IF5nO5EdmciGa4xUY/r5J6vPnqq+SpEKQPoZKN7OBs/U8uTi2kZdC6GfbXsHsmJAaVs3mHUlyD/s5b1G5hzUMghzOJyZWdIBYPLKbhTRYE9uvW1Zzzup+juvMNJWpjNd96ye/OzApj/AQ==</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"> +<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="642px" height="327px" viewBox="-0.5 -0.5 642 327" content="<mxfile scale="1.5" border="20"><diagram id="gKBvn7eBFHudv9VMIRD-" name="Page-1">3VnbTuMwEP2aPFLl1tsjlMLuw0pI3dXCo0ncxMK1K8dtU75+7dhJnBhKFMJlGySUGV/nnDNjE5xgsclvGdimv2gMseO7ce4E147vz1xX/JaOo3JMZ9qRMBQrl1c7VugZamfZbYdimDU6ckoxR9umM6KEwIg3fIAxemh2W1PcXHULEmg5VhHAtvcvinmqvEHo1v4fECVpuXIZ3iOInhJGd0Qv5/jBunhU8waUU+n+WQpiejBcwdIJFoxSrt42+QJiiWyJmhp380prtW0GCe8ywFcD9gDvdORXIgJI4kzvjx9LSIqooBznOsHVIUUcrrYgkq0HoQHhS/kGC8sTr2uE8YJiyoqxwXIif4Q/44w+QaNlUjxyBCXc8KtH+O2IdJB7yDjMDZeO8BbSDeTsKLro1otAo63FeFGif6ipDUvFpgatJd1Aqymppq4hFS8a1ZcRDiyEV5DtUQTPCWGvhfDUBnj2QfjOLXzvGN2L6mHBC2OR4toklMAmnjBH/N54f5A0jMbaus41K4VxLA0SX8piI8xHTKOn3ykiyn2DcDUxKetbWNADGDfsJueSIt04P8VMRncs0mGFujwClkDda6xcMuCT7DGIAUf7Zs17iQw99I4isZG6C12vM7Fmm61qhU4EenYN+pP1Zc8dTccmgW/QJzZ5bxoG6dKshxXWh9EuEw2Jw+cSo0TMdL1BcYyLCClDz0IToMr6YQQSdBSITm935Lr+TI35FpoJ7aTHuwSRc6qp7VOrqrGfUFTHFr7LnEOSIUqEu6D0nKBuH1+fCXV54zWwXgDZo1/9+99Or8knnF6dqbDvau85ifweJ5H3xSfRQBR2PV8Gp3BiMSj+NN3hs7ps+/Ovq1bVbmuAfxIhqf4Fa+TO50aeeCM37Hhpq7PjwWz79pc2Gc4dZEiAD5merFOi+XaihUMnWudbW90nb8qrVGVbbioSPejEPF57Irc1kYrfmqjHNfKFzx891XwWolQBtLLRP52NA2p58n20HLQuhH217L+REwNK2b679PwOckZSNi9g3kkdxyBLi5W9dwh48FvPOwTcKqKBO5rOjWc87ifo9rzDKVqY9Wdv1b3+z0Kw/Ac=</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"> <defs/> <g> <rect x="19.5" y="19.5" width="600" height="60" fill="#e6e6e6" stroke="#666666" stroke-width="1.5" pointer-events="all"/> @@ -8,13 +8,13 @@ <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 33px; margin-left: 14px;"> <div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - Backend + Backends </div> </div> </div> </foreignObject> <text x="213" y="37" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Backend + Backends </text> </switch> </g> @@ -61,13 +61,13 @@ <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 143px; margin-left: 123px;"> <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> - Depend On + Use </div> </div> </div> </foreignObject> <text x="123" y="146" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle"> - Depend On + Use </text> </switch> </g> @@ -131,13 +131,13 @@ <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 143px; margin-left: 303px;"> <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> - Depend On + Use </div> </div> </div> </foreignObject> <text x="303" y="146" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle"> - Depend On + Use </text> </switch> </g> @@ -166,13 +166,13 @@ <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 109px; margin-left: 53px;"> <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> - Imports + Install </div> </div> </div> </foreignObject> <text x="53" y="112" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle"> - Imports + Install </text> </switch> </g> @@ -181,16 +181,16 @@ <g transform="translate(-0.5 -0.5)scale(1.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 109px; margin-left: 373px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 108px; margin-left: 373px;"> <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> - Imports + Install </div> </div> </div> </foreignObject> <text x="373" y="111" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle"> - Imports + Install </text> </switch> </g> @@ -202,13 +202,13 @@ <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 78px; margin-left: 213px;"> <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> - Provides + Provide </div> </div> </div> </foreignObject> <text x="213" y="81" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle"> - Provides + Provide </text> </switch> </g> From f4f93a57ee373f1563213d7ee439c806ca3980d5 Mon Sep 17 00:00:00 2001 From: blam <ben@blam.sh> Date: Mon, 30 Jan 2023 15:11:06 +0100 Subject: [PATCH 144/156] chore: bump the rjsf deps Signed-off-by: blam <ben@blam.sh> --- plugins/scaffolder-react/package.json | 8 ++--- plugins/scaffolder/package.json | 2 +- yarn.lock | 42 +++++++++++++-------------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json index dbd64d1f2d..2cf87fee14 100644 --- a/plugins/scaffolder-react/package.json +++ b/plugins/scaffolder-react/package.json @@ -47,11 +47,11 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", "@rjsf/core": "^3.2.1", - "@rjsf/core-v5": "npm:@rjsf/core@5.0.0-beta.18", + "@rjsf/core-v5": "npm:@rjsf/core@5.0.0-beta.20", "@rjsf/material-ui": "^3.2.1", - "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@5.0.0-beta.18", - "@rjsf/utils": "5.0.0-beta.18", - "@rjsf/validator-ajv8": "5.0.0-beta.18", + "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@5.0.0-beta.20", + "@rjsf/utils": "5.0.0-beta.20", + "@rjsf/validator-ajv8": "5.0.0-beta.20", "@types/json-schema": "^7.0.9", "classnames": "^2.2.6", "json-schema": "^0.4.0", diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 1967349922..d95ce9b70b 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -57,7 +57,7 @@ "@react-hookz/web": "^20.0.0", "@rjsf/core": "^3.2.1", "@rjsf/material-ui": "^3.2.1", - "@rjsf/utils": "5.0.0-beta.18", + "@rjsf/utils": "5.0.0-beta.20", "@uiw/react-codemirror": "^4.9.3", "classnames": "^2.2.6", "git-url-parse": "^13.0.0", diff --git a/yarn.lock b/yarn.lock index 4ac7e2703a..6e8835b398 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7349,11 +7349,11 @@ __metadata: "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 "@rjsf/core": ^3.2.1 - "@rjsf/core-v5": "npm:@rjsf/core@5.0.0-beta.18" + "@rjsf/core-v5": "npm:@rjsf/core@5.0.0-beta.20" "@rjsf/material-ui": ^3.2.1 - "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@5.0.0-beta.18" - "@rjsf/utils": 5.0.0-beta.18 - "@rjsf/validator-ajv8": 5.0.0-beta.18 + "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@5.0.0-beta.20" + "@rjsf/utils": 5.0.0-beta.20 + "@rjsf/validator-ajv8": 5.0.0-beta.20 "@testing-library/jest-dom": ^5.10.1 "@testing-library/react": ^12.1.3 "@testing-library/react-hooks": ^8.0.0 @@ -7408,7 +7408,7 @@ __metadata: "@react-hookz/web": ^20.0.0 "@rjsf/core": ^3.2.1 "@rjsf/material-ui": ^3.2.1 - "@rjsf/utils": 5.0.0-beta.18 + "@rjsf/utils": 5.0.0-beta.20 "@testing-library/jest-dom": ^5.10.1 "@testing-library/react": ^12.1.3 "@testing-library/react-hooks": ^8.0.0 @@ -12708,9 +12708,9 @@ __metadata: languageName: node linkType: hard -"@rjsf/core-v5@npm:@rjsf/core@5.0.0-beta.18": - version: 5.0.0-beta.18 - resolution: "@rjsf/core@npm:5.0.0-beta.18" +"@rjsf/core-v5@npm:@rjsf/core@5.0.0-beta.20": + version: 5.0.0-beta.20 + resolution: "@rjsf/core@npm:5.0.0-beta.20" dependencies: lodash: ^4.17.15 lodash-es: ^4.17.15 @@ -12719,7 +12719,7 @@ __metadata: peerDependencies: "@rjsf/utils": ^5.0.0-beta.1 react: ^16.14.0 || >=17 - checksum: 1a2f2d43929790c20b6aeaa99b56bb02fc523edfa47eeffa29437dd80e337f9af5b4e4b274a637ac83e33b91799fda2a459e84903efe709def05018820f0fa83 + checksum: b7c5b518cac8290b452e08c3b03e8dfe2a09714625135513ef8a5d8d2b9701a1b508aac32391ebeb0f6eb0e1d165e926f3e4913085364e38aaee4330a5157579 languageName: node linkType: hard @@ -12742,16 +12742,16 @@ __metadata: languageName: node linkType: hard -"@rjsf/material-ui-v5@npm:@rjsf/material-ui@5.0.0-beta.18": - version: 5.0.0-beta.18 - resolution: "@rjsf/material-ui@npm:5.0.0-beta.18" +"@rjsf/material-ui-v5@npm:@rjsf/material-ui@5.0.0-beta.20": + version: 5.0.0-beta.20 + resolution: "@rjsf/material-ui@npm:5.0.0-beta.20" peerDependencies: "@material-ui/core": ^4.12.3 "@material-ui/icons": ^4.11.2 "@rjsf/core": ^5.0.0-beta.1 "@rjsf/utils": ^5.0.0-beta.1 react: ^16.14.0 || >=17 - checksum: b40a86d4aaeb863c1e7ce7fc0256adc0e4a8cfce510c6957fdc3385d0eac3292349501c1364b640fafbdce78e214ebb927199a2a5bdeb3d7814a7680bb8d8d44 + checksum: 5fee2d022b3acb1b611fc13caca36e4ea76889e95a7745266506e6d7eac68426980f8362644aa8a5985eb136fef004032b44a6b901e55ffa6d86788f8a183572 languageName: node linkType: hard @@ -12767,9 +12767,9 @@ __metadata: languageName: node linkType: hard -"@rjsf/utils@npm:5.0.0-beta.18": - version: 5.0.0-beta.18 - resolution: "@rjsf/utils@npm:5.0.0-beta.18" +"@rjsf/utils@npm:5.0.0-beta.20": + version: 5.0.0-beta.20 + resolution: "@rjsf/utils@npm:5.0.0-beta.20" dependencies: json-schema-merge-allof: ^0.8.1 jsonpointer: ^5.0.1 @@ -12778,13 +12778,13 @@ __metadata: react-is: ^18.2.0 peerDependencies: react: ^16.14.0 || >=17 - checksum: ac71ec2a96449e70bb7aa8af901804e3152a94908607ee8b0be90249bf5ff571c69f63b55abc6f95f3f1ec12d9a0bf467013c08b9f4276ff31ce44a36ee72633 + checksum: 77f3322ed4402c15f4b0f0bb9001965964443967dce3112fcca2664a6e10e242f8bd446dbfb9b8f01366e6061ec38e3f6ec03c10d355781d81e9792ed3420af9 languageName: node linkType: hard -"@rjsf/validator-ajv8@npm:5.0.0-beta.18": - version: 5.0.0-beta.18 - resolution: "@rjsf/validator-ajv8@npm:5.0.0-beta.18" +"@rjsf/validator-ajv8@npm:5.0.0-beta.20": + version: 5.0.0-beta.20 + resolution: "@rjsf/validator-ajv8@npm:5.0.0-beta.20" dependencies: ajv: ^8.11.0 ajv-formats: ^2.1.1 @@ -12792,7 +12792,7 @@ __metadata: lodash-es: ^4.17.15 peerDependencies: "@rjsf/utils": ^5.0.0-beta.16 - checksum: eb4ca8b40a21bbca4f7dd67900aa4423aaaf3fa1e4d893c8a5d00e869b7fc44514e0f262b240556f22b4dc9363ce6e554046bb8c42d599c92d191fa5bee84d0d + checksum: f38691defba02d7b57d06be6e00df40985e74f044937ee8ec566c039aff8039199c1b07f870f14abb50deffc79c4faaf1cb6eec76d19450f99ce177e6d299a0f languageName: node linkType: hard From 04f717a8e1242c81d88fee2b2400dee715bab2cb Mon Sep 17 00:00:00 2001 From: blam <ben@blam.sh> Date: Mon, 30 Jan 2023 15:12:06 +0100 Subject: [PATCH 145/156] chore: changeset Signed-off-by: blam <ben@blam.sh> --- .changeset/brave-cougars-burn.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/brave-cougars-burn.md diff --git a/.changeset/brave-cougars-burn.md b/.changeset/brave-cougars-burn.md new file mode 100644 index 0000000000..8cee59b089 --- /dev/null +++ b/.changeset/brave-cougars-burn.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder': patch +--- + +`scaffolder/next`: bump `react-jsonschema-form` libraries to `beta.20` From f2212009f00939721975d7b6a868260541e59aa1 Mon Sep 17 00:00:00 2001 From: blam <ben@blam.sh> Date: Tue, 31 Jan 2023 10:42:18 +0100 Subject: [PATCH 146/156] chore: bump to v5-stable instead Signed-off-by: blam <ben@blam.sh> --- plugins/scaffolder-react/package.json | 8 ++--- plugins/scaffolder/package.json | 2 +- yarn.lock | 50 +++++++++++++-------------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json index 2cf87fee14..4667216af7 100644 --- a/plugins/scaffolder-react/package.json +++ b/plugins/scaffolder-react/package.json @@ -47,11 +47,11 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", "@rjsf/core": "^3.2.1", - "@rjsf/core-v5": "npm:@rjsf/core@5.0.0-beta.20", + "@rjsf/core-v5": "npm:@rjsf/core@5.0.1", "@rjsf/material-ui": "^3.2.1", - "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@5.0.0-beta.20", - "@rjsf/utils": "5.0.0-beta.20", - "@rjsf/validator-ajv8": "5.0.0-beta.20", + "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@5.0.1", + "@rjsf/utils": "5.0.1", + "@rjsf/validator-ajv8": "5.0.1", "@types/json-schema": "^7.0.9", "classnames": "^2.2.6", "json-schema": "^0.4.0", diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index d95ce9b70b..ae79a35f7c 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -57,7 +57,7 @@ "@react-hookz/web": "^20.0.0", "@rjsf/core": "^3.2.1", "@rjsf/material-ui": "^3.2.1", - "@rjsf/utils": "5.0.0-beta.20", + "@rjsf/utils": "5.0.1", "@uiw/react-codemirror": "^4.9.3", "classnames": "^2.2.6", "git-url-parse": "^13.0.0", diff --git a/yarn.lock b/yarn.lock index 6e8835b398..7f38e10b62 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7349,11 +7349,11 @@ __metadata: "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 "@rjsf/core": ^3.2.1 - "@rjsf/core-v5": "npm:@rjsf/core@5.0.0-beta.20" + "@rjsf/core-v5": "npm:@rjsf/core@5.0.1" "@rjsf/material-ui": ^3.2.1 - "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@5.0.0-beta.20" - "@rjsf/utils": 5.0.0-beta.20 - "@rjsf/validator-ajv8": 5.0.0-beta.20 + "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@5.0.1" + "@rjsf/utils": 5.0.1 + "@rjsf/validator-ajv8": 5.0.1 "@testing-library/jest-dom": ^5.10.1 "@testing-library/react": ^12.1.3 "@testing-library/react-hooks": ^8.0.0 @@ -7408,7 +7408,7 @@ __metadata: "@react-hookz/web": ^20.0.0 "@rjsf/core": ^3.2.1 "@rjsf/material-ui": ^3.2.1 - "@rjsf/utils": 5.0.0-beta.20 + "@rjsf/utils": 5.0.1 "@testing-library/jest-dom": ^5.10.1 "@testing-library/react": ^12.1.3 "@testing-library/react-hooks": ^8.0.0 @@ -12708,18 +12708,18 @@ __metadata: languageName: node linkType: hard -"@rjsf/core-v5@npm:@rjsf/core@5.0.0-beta.20": - version: 5.0.0-beta.20 - resolution: "@rjsf/core@npm:5.0.0-beta.20" +"@rjsf/core-v5@npm:@rjsf/core@5.0.1": + version: 5.0.1 + resolution: "@rjsf/core@npm:5.0.1" dependencies: lodash: ^4.17.15 lodash-es: ^4.17.15 nanoid: ^3.3.4 prop-types: ^15.7.2 peerDependencies: - "@rjsf/utils": ^5.0.0-beta.1 + "@rjsf/utils": ^5.0.0 react: ^16.14.0 || >=17 - checksum: b7c5b518cac8290b452e08c3b03e8dfe2a09714625135513ef8a5d8d2b9701a1b508aac32391ebeb0f6eb0e1d165e926f3e4913085364e38aaee4330a5157579 + checksum: befd0b39aab7462f23ed926ca17314a049f338e81cdda8233e35c45febb34e3d1ff550ca8db7e64570342be281e3556a4cb045b52af86a0a551041d5ee22472b languageName: node linkType: hard @@ -12742,16 +12742,16 @@ __metadata: languageName: node linkType: hard -"@rjsf/material-ui-v5@npm:@rjsf/material-ui@5.0.0-beta.20": - version: 5.0.0-beta.20 - resolution: "@rjsf/material-ui@npm:5.0.0-beta.20" +"@rjsf/material-ui-v5@npm:@rjsf/material-ui@5.0.1": + version: 5.0.1 + resolution: "@rjsf/material-ui@npm:5.0.1" peerDependencies: "@material-ui/core": ^4.12.3 "@material-ui/icons": ^4.11.2 - "@rjsf/core": ^5.0.0-beta.1 - "@rjsf/utils": ^5.0.0-beta.1 + "@rjsf/core": ^5.0.0 + "@rjsf/utils": ^5.0.0 react: ^16.14.0 || >=17 - checksum: 5fee2d022b3acb1b611fc13caca36e4ea76889e95a7745266506e6d7eac68426980f8362644aa8a5985eb136fef004032b44a6b901e55ffa6d86788f8a183572 + checksum: 041f21caef8fd8e594c3b517eea15344c97017d03de5e608b1aead3e94cca474dc874930b64f59b506c1e578889664718d07e1e580fcffc78611dad3d33099fc languageName: node linkType: hard @@ -12767,9 +12767,9 @@ __metadata: languageName: node linkType: hard -"@rjsf/utils@npm:5.0.0-beta.20": - version: 5.0.0-beta.20 - resolution: "@rjsf/utils@npm:5.0.0-beta.20" +"@rjsf/utils@npm:5.0.1": + version: 5.0.1 + resolution: "@rjsf/utils@npm:5.0.1" dependencies: json-schema-merge-allof: ^0.8.1 jsonpointer: ^5.0.1 @@ -12778,21 +12778,21 @@ __metadata: react-is: ^18.2.0 peerDependencies: react: ^16.14.0 || >=17 - checksum: 77f3322ed4402c15f4b0f0bb9001965964443967dce3112fcca2664a6e10e242f8bd446dbfb9b8f01366e6061ec38e3f6ec03c10d355781d81e9792ed3420af9 + checksum: 7bf76106eced48cfdf3072a26306ff00d0792774dfe501b061db110e9dd2e17bead77bc9b335c85adf27926ab860c39ee4f676007f8f07e74a438f3a31004692 languageName: node linkType: hard -"@rjsf/validator-ajv8@npm:5.0.0-beta.20": - version: 5.0.0-beta.20 - resolution: "@rjsf/validator-ajv8@npm:5.0.0-beta.20" +"@rjsf/validator-ajv8@npm:5.0.1": + version: 5.0.1 + resolution: "@rjsf/validator-ajv8@npm:5.0.1" dependencies: ajv: ^8.11.0 ajv-formats: ^2.1.1 lodash: ^4.17.15 lodash-es: ^4.17.15 peerDependencies: - "@rjsf/utils": ^5.0.0-beta.16 - checksum: f38691defba02d7b57d06be6e00df40985e74f044937ee8ec566c039aff8039199c1b07f870f14abb50deffc79c4faaf1cb6eec76d19450f99ce177e6d299a0f + "@rjsf/utils": ^5.0.0 + checksum: 7d36dac876fd3536dda26af5726e847af02a9880fac9feb2683809e8c1f3743e4f5ff8399e961a79f5383e28fdb5a1e9695d89ebf7dffaa22dd76948be830c54 languageName: node linkType: hard From 9cb8aacc9a71a6d4a275a43b34b9da43b8d575e9 Mon Sep 17 00:00:00 2001 From: blam <ben@blam.sh> Date: Tue, 31 Jan 2023 10:43:41 +0100 Subject: [PATCH 147/156] chore: update changeset Signed-off-by: blam <ben@blam.sh> --- .changeset/brave-cougars-burn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/brave-cougars-burn.md b/.changeset/brave-cougars-burn.md index 8cee59b089..419378d25d 100644 --- a/.changeset/brave-cougars-burn.md +++ b/.changeset/brave-cougars-burn.md @@ -3,4 +3,4 @@ '@backstage/plugin-scaffolder': patch --- -`scaffolder/next`: bump `react-jsonschema-form` libraries to `beta.20` +`scaffolder/next`: bump `react-jsonschema-form` libraries to `v5-stable` From d950d3e21797e9c8503761794db49d8d44dd0aea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= <freben@gmail.com> Date: Tue, 31 Jan 2023 12:29:41 +0100 Subject: [PATCH 148/156] unify on a single mui core dependency version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw <freben@gmail.com> --- .changeset/hip-pugs-teach.md | 12 +++++++++++ .../techdocs-cli-embedded-app/package.json | 2 +- plugins/apollo-explorer/package.json | 2 +- plugins/cicd-statistics/package.json | 2 +- plugins/codescene/package.json | 2 +- plugins/dynatrace/package.json | 2 +- plugins/org-react/package.json | 2 +- plugins/playlist/package.json | 2 +- .../techdocs-addons-test-utils/package.json | 2 +- .../package.json | 2 +- yarn.lock | 20 +++++++++---------- 11 files changed, 31 insertions(+), 19 deletions(-) create mode 100644 .changeset/hip-pugs-teach.md diff --git a/.changeset/hip-pugs-teach.md b/.changeset/hip-pugs-teach.md new file mode 100644 index 0000000000..4a3820cecc --- /dev/null +++ b/.changeset/hip-pugs-teach.md @@ -0,0 +1,12 @@ +--- +'@backstage/plugin-techdocs-module-addons-contrib': patch +'@backstage/plugin-techdocs-addons-test-utils': patch +'@backstage/plugin-apollo-explorer': patch +'@backstage/plugin-cicd-statistics': patch +'@backstage/plugin-codescene': patch +'@backstage/plugin-dynatrace': patch +'@backstage/plugin-org-react': patch +'@backstage/plugin-playlist': patch +--- + +Depend on `@material-ui/core` version `^4.12.2` like all other in-repo packages diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index 8c3a970cc2..83b188a90a 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -20,7 +20,7 @@ "@backstage/plugin-techdocs-react": "workspace:^", "@backstage/test-utils": "workspace:^", "@backstage/theme": "workspace:^", - "@material-ui/core": "^4.11.0", + "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "history": "^5.0.0", "react": "^17.0.2", diff --git a/plugins/apollo-explorer/package.json b/plugins/apollo-explorer/package.json index 60fbb7fa7b..af22c04a06 100644 --- a/plugins/apollo-explorer/package.json +++ b/plugins/apollo-explorer/package.json @@ -26,7 +26,7 @@ "@backstage/core-components": "workspace:^", "@backstage/core-plugin-api": "workspace:^", "@backstage/theme": "workspace:^", - "@material-ui/core": "^4.9.13", + "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "^4.0.0-alpha.57", "react-use": "^17.2.4", diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index d660c758ff..aedbbf9d20 100644 --- a/plugins/cicd-statistics/package.json +++ b/plugins/cicd-statistics/package.json @@ -41,7 +41,7 @@ "@backstage/core-plugin-api": "workspace:^", "@backstage/plugin-catalog-react": "workspace:^", "@date-io/luxon": "^1.3.13", - "@material-ui/core": "^4.9.13", + "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", "@material-ui/pickers": "^3.3.10", diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json index 8d2e91b0fd..fff2547c0f 100644 --- a/plugins/codescene/package.json +++ b/plugins/codescene/package.json @@ -27,7 +27,7 @@ "@backstage/core-plugin-api": "workspace:^", "@backstage/errors": "workspace:^", "@backstage/theme": "workspace:^", - "@material-ui/core": "^4.9.10", + "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "^4.0.0-alpha.57", "rc-progress": "3.4.1", diff --git a/plugins/dynatrace/package.json b/plugins/dynatrace/package.json index 0a2006f1ad..27216312f9 100644 --- a/plugins/dynatrace/package.json +++ b/plugins/dynatrace/package.json @@ -31,7 +31,7 @@ "@backstage/core-components": "workspace:^", "@backstage/core-plugin-api": "workspace:^", "@backstage/theme": "workspace:^", - "@material-ui/core": "^4.9.13", + "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", "react-use": "^17.2.4" diff --git a/plugins/org-react/package.json b/plugins/org-react/package.json index 9752cacd32..d3ea16a5ee 100644 --- a/plugins/org-react/package.json +++ b/plugins/org-react/package.json @@ -36,7 +36,7 @@ "@backstage/core-plugin-api": "workspace:^", "@backstage/plugin-catalog-react": "workspace:^", "@backstage/theme": "workspace:^", - "@material-ui/core": "^4.9.13", + "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "^4.0.0-alpha.57", "react-use": "^17.2.4" diff --git a/plugins/playlist/package.json b/plugins/playlist/package.json index 2df8e5932d..2ace4a0176 100644 --- a/plugins/playlist/package.json +++ b/plugins/playlist/package.json @@ -38,7 +38,7 @@ "@backstage/plugin-playlist-common": "workspace:^", "@backstage/plugin-search-react": "workspace:^", "@backstage/theme": "workspace:^", - "@material-ui/core": "^4.9.13", + "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "^4.0.0-alpha.57", "lodash": "^4.17.21", diff --git a/plugins/techdocs-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json index baff541f54..e0ff4e7261 100644 --- a/plugins/techdocs-addons-test-utils/package.json +++ b/plugins/techdocs-addons-test-utils/package.json @@ -42,7 +42,7 @@ "@backstage/plugin-techdocs-react": "workspace:^", "@backstage/test-utils": "workspace:^", "@backstage/theme": "workspace:^", - "@material-ui/core": "^4.9.13", + "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", "@testing-library/react": "^12.1.3", diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json index ae5d263268..cd03c9f0d5 100644 --- a/plugins/techdocs-module-addons-contrib/package.json +++ b/plugins/techdocs-module-addons-contrib/package.json @@ -39,7 +39,7 @@ "@backstage/integration-react": "workspace:^", "@backstage/plugin-techdocs-react": "workspace:^", "@backstage/theme": "workspace:^", - "@material-ui/core": "^4.9.13", + "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", "@react-hookz/web": "^20.0.0", diff --git a/yarn.lock b/yarn.lock index 7f38e10b62..25a5c9e58b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4390,7 +4390,7 @@ __metadata: "@backstage/dev-utils": "workspace:^" "@backstage/test-utils": "workspace:^" "@backstage/theme": "workspace:^" - "@material-ui/core": ^4.9.13 + "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": ^4.0.0-alpha.57 "@testing-library/jest-dom": ^5.10.1 @@ -5438,7 +5438,7 @@ __metadata: "@backstage/core-plugin-api": "workspace:^" "@backstage/plugin-catalog-react": "workspace:^" "@date-io/luxon": ^1.3.13 - "@material-ui/core": ^4.9.13 + "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 "@material-ui/pickers": ^3.3.10 @@ -5629,7 +5629,7 @@ __metadata: "@backstage/errors": "workspace:^" "@backstage/test-utils": "workspace:^" "@backstage/theme": "workspace:^" - "@material-ui/core": ^4.9.10 + "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": ^4.0.0-alpha.57 "@testing-library/jest-dom": ^5.10.1 @@ -5743,7 +5743,7 @@ __metadata: "@backstage/dev-utils": "workspace:^" "@backstage/test-utils": "workspace:^" "@backstage/theme": "workspace:^" - "@material-ui/core": ^4.9.13 + "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 "@testing-library/jest-dom": ^5.10.1 @@ -6781,7 +6781,7 @@ __metadata: "@backstage/plugin-catalog-react": "workspace:^" "@backstage/test-utils": "workspace:^" "@backstage/theme": "workspace:^" - "@material-ui/core": ^4.9.13 + "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": ^4.0.0-alpha.57 "@testing-library/jest-dom": ^5.10.1 @@ -7056,7 +7056,7 @@ __metadata: "@backstage/plugin-search-react": "workspace:^" "@backstage/test-utils": "workspace:^" "@backstage/theme": "workspace:^" - "@material-ui/core": ^4.9.13 + "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": ^4.0.0-alpha.57 "@testing-library/jest-dom": ^5.10.1 @@ -8004,7 +8004,7 @@ __metadata: "@backstage/plugin-techdocs-react": "workspace:^" "@backstage/test-utils": "workspace:^" "@backstage/theme": "workspace:^" - "@material-ui/core": ^4.9.13 + "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 "@testing-library/jest-dom": ^5.10.1 @@ -8071,7 +8071,7 @@ __metadata: "@backstage/plugin-techdocs-react": "workspace:^" "@backstage/test-utils": "workspace:^" "@backstage/theme": "workspace:^" - "@material-ui/core": ^4.9.13 + "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 "@react-hookz/web": ^20.0.0 @@ -11289,7 +11289,7 @@ __metadata: languageName: node linkType: hard -"@material-ui/core@npm:^4.11.0, @material-ui/core@npm:^4.11.3, @material-ui/core@npm:^4.12.1, @material-ui/core@npm:^4.12.2, @material-ui/core@npm:^4.12.4, @material-ui/core@npm:^4.9.10, @material-ui/core@npm:^4.9.13": +"@material-ui/core@npm:^4.11.0, @material-ui/core@npm:^4.11.3, @material-ui/core@npm:^4.12.1, @material-ui/core@npm:^4.12.2, @material-ui/core@npm:^4.12.4": version: 4.12.4 resolution: "@material-ui/core@npm:4.12.4" dependencies: @@ -36610,7 +36610,7 @@ __metadata: "@backstage/plugin-techdocs-react": "workspace:^" "@backstage/test-utils": "workspace:^" "@backstage/theme": "workspace:^" - "@material-ui/core": ^4.11.0 + "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@testing-library/jest-dom": ^5.10.1 "@testing-library/react": ^12.1.3 From cb72a9cc5e8597c80f01cc8d8adcb464a89d02b0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg <poldsberg@gmail.com> Date: Tue, 31 Jan 2023 13:44:16 +0100 Subject: [PATCH 149/156] STYLE.md: document method for testing with private constructors Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com> --- STYLE.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/STYLE.md b/STYLE.md index 87e0644759..e38354ae1d 100644 --- a/STYLE.md +++ b/STYLE.md @@ -94,6 +94,13 @@ This section describes guidelines for designing public APIs. It can also be appl /* ... */ } + // In order to make a private constructor available for testing you can use a + // static factory marked as `@internal`, which will not show up in the public API. + /** @internal */ + static forTesting(internalOptions?: { ... }) { + return new DefaultImageLoader(internalOptions); + } + private constructor(/* ... */) { /* ... */ } From 78d168f405d41da1313570fd38079bb01b4eb4ae Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino <vincenzos@spotify.com> Date: Tue, 31 Jan 2023 11:30:23 +0100 Subject: [PATCH 150/156] Revert "ci: skip publishing upgrade-helper diff for next releases" This reverts commit a948b6af07d45b304eb39af6e81582a5f965e848. Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com> --- .github/workflows/sync_release-manifest.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/sync_release-manifest.yml b/.github/workflows/sync_release-manifest.yml index c6d00ecd28..8cf6991aaf 100644 --- a/.github/workflows/sync_release-manifest.yml +++ b/.github/workflows/sync_release-manifest.yml @@ -53,10 +53,6 @@ jobs: github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} # TODO(Rugvip): Remove the create-app dispatch once we've been on the release version for a while script: | - const releaseVersion = require('./backstage/package.json').version; - if(releaseVersion.includes('next')) { - return; - } console.log('Dispatching upgrade helper sync'); await github.rest.actions.createWorkflowDispatch({ owner: 'backstage', @@ -65,6 +61,6 @@ jobs: ref: 'master', inputs: { version: require('./backstage/packages/create-app/package.json').version, - releaseVersion + releaseVersion: require('./backstage/package.json').version }, }); From 81f6542b7427247b0f0c2987e1024ceee5db689a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= <freben@gmail.com> Date: Tue, 31 Jan 2023 14:58:26 +0100 Subject: [PATCH 151/156] await expect instead of expect await MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw <freben@gmail.com> --- .../apis/StarredEntitiesApi/migration.test.ts | 4 ++-- .../CatalogPage/DefaultCatalogPage.test.tsx | 24 +++++++++++-------- .../CatalogTable/CatalogTable.test.tsx | 8 +++---- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/plugins/catalog/src/apis/StarredEntitiesApi/migration.test.ts b/plugins/catalog/src/apis/StarredEntitiesApi/migration.test.ts index b3bc5400d5..7e5ad3f2f7 100644 --- a/plugins/catalog/src/apis/StarredEntitiesApi/migration.test.ts +++ b/plugins/catalog/src/apis/StarredEntitiesApi/migration.test.ts @@ -46,7 +46,7 @@ describe('performMigrationToTheNewBucket', () => { await performMigrationToTheNewBucket({ storageApi: mockStorage }); // read NEW bucket - expect(await newBucket.snapshot('entityRefs').value).toEqual([ + await expect(newBucket.snapshot('entityRefs').value).resolves.toEqual([ 'component:default/c', 'component:default/a', 'template:custom/b', @@ -72,7 +72,7 @@ describe('performMigrationToTheNewBucket', () => { await performMigrationToTheNewBucket({ storageApi: mockStorage }); // read NEW bucket - expect(await newBucket.snapshot('entityRefs').value).toEqual([ + await expect(newBucket.snapshot('entityRefs').value).resolves.toEqual([ 'component:default/a', ]); diff --git a/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx index a2b26b87e1..10f06ca09e 100644 --- a/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx +++ b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.test.tsx @@ -198,10 +198,12 @@ describe('DefaultCatalogPage', () => { it('should render the default actions of an item in the grid', async () => { await renderWrapped(<DefaultCatalogPage />); fireEvent.click(screen.getByTestId('user-picker-owned')); - expect(await screen.findByText(/Owned \(1\)/)).toBeInTheDocument(); - expect(await screen.findByTitle(/View/)).toBeInTheDocument(); - expect(await screen.findByTitle(/Edit/)).toBeInTheDocument(); - expect(await screen.findByTitle(/Add to favorites/)).toBeInTheDocument(); + await expect(screen.findByText(/Owned \(1\)/)).resolves.toBeInTheDocument(); + await expect(screen.findByTitle(/View/)).resolves.toBeInTheDocument(); + await expect(screen.findByTitle(/Edit/)).resolves.toBeInTheDocument(); + await expect( + screen.findByTitle(/Add to favorites/), + ).resolves.toBeInTheDocument(); }, 20_000); it('should render the custom actions of an item passed as prop', async () => { @@ -226,10 +228,12 @@ describe('DefaultCatalogPage', () => { await renderWrapped(<DefaultCatalogPage actions={actions} />); fireEvent.click(screen.getByTestId('user-picker-owned')); - expect(await screen.findByText(/Owned \(1\)/)).toBeInTheDocument(); - expect(await screen.findByTitle(/Foo Action/)).toBeInTheDocument(); - expect(await screen.findByTitle(/Bar Action/)).toBeInTheDocument(); - expect((await screen.findByTitle(/Bar Action/)).firstChild).toBeDisabled(); + await expect(screen.findByText(/Owned \(1\)/)).resolves.toBeInTheDocument(); + await expect(screen.findByTitle(/Foo Action/)).resolves.toBeInTheDocument(); + await expect(screen.findByTitle(/Bar Action/)).resolves.toBeInTheDocument(); + await expect( + screen.findByTitle(/Bar Action/).then(e => e.firstChild), + ).resolves.toBeDisabled(); }, 20_000); // this test right now causes some red lines in the log output when running tests @@ -256,7 +260,7 @@ describe('DefaultCatalogPage', () => { await expect(screen.findByText(/Owned \(1\)/)).resolves.toBeInTheDocument(); // The "Starred" menu option should initially be disabled, since there // aren't any starred entities. - await expect(screen.getByTestId('user-picker-starred')).toHaveAttribute( + expect(screen.getByTestId('user-picker-starred')).toHaveAttribute( 'aria-disabled', 'true', ); @@ -269,7 +273,7 @@ describe('DefaultCatalogPage', () => { // Now that we've starred an entity, the "Starred" menu option should be // enabled. - await expect(screen.getByTestId('user-picker-starred')).not.toHaveAttribute( + expect(screen.getByTestId('user-picker-starred')).not.toHaveAttribute( 'aria-disabled', 'true', ); diff --git a/plugins/catalog/src/components/CatalogTable/CatalogTable.test.tsx b/plugins/catalog/src/components/CatalogTable/CatalogTable.test.tsx index 652c9f3873..f8a655413e 100644 --- a/plugins/catalog/src/components/CatalogTable/CatalogTable.test.tsx +++ b/plugins/catalog/src/components/CatalogTable/CatalogTable.test.tsx @@ -78,10 +78,9 @@ describe('CatalogTable component', () => { }, }, ); - const errorMessage = await screen.findByText( - /Could not fetch catalog entities./, - ); - expect(errorMessage).toBeInTheDocument(); + await expect( + screen.findByText(/Could not fetch catalog entities./), + ).resolves.toBeInTheDocument(); }); it('should display entity names when loading has finished and no error occurred', async () => { @@ -306,6 +305,7 @@ describe('CatalogTable component', () => { }, 20_000, ); + it('should render the subtitle when it is specified', async () => { const entity = { apiVersion: 'backstage.io/v1alpha1', From bd735f6fd497cab50b76a48915b3c32528862ca2 Mon Sep 17 00:00:00 2001 From: Matt Benson <gudnabrsam@gmail.com> Date: Tue, 31 Jan 2023 08:09:45 -0600 Subject: [PATCH 152/156] Preserve template property order in review. Signed-off-by: Matt Benson <gudnabrsam@gmail.com> --- .../MultistepJsonForm/ReviewStep.tsx | 54 ++++++++++--------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/plugins/scaffolder/src/components/MultistepJsonForm/ReviewStep.tsx b/plugins/scaffolder/src/components/MultistepJsonForm/ReviewStep.tsx index 1bcf06eee7..112b96bdf1 100644 --- a/plugins/scaffolder/src/components/MultistepJsonForm/ReviewStep.tsx +++ b/plugins/scaffolder/src/components/MultistepJsonForm/ReviewStep.tsx @@ -25,36 +25,38 @@ export function getReviewData( uiSchemas: UiSchema[], ) { const reviewData: Record<string, any> = {}; - for (const key in formData) { - if (formData.hasOwnProperty(key)) { - const uiSchema = uiSchemas.find(us => us.name === key); + const orderedReviewProperties = new Set( + uiSchemas.map(us => us.name).concat(Object.getOwnPropertyNames(formData)), + ); - if (!uiSchema) { - reviewData[key] = formData[key]; - continue; - } + for (const key of orderedReviewProperties) { + const uiSchema = uiSchemas.find(us => us.name === key); - if (uiSchema['ui:widget'] === 'password') { - reviewData[key] = '******'; - continue; - } - - if (!uiSchema['ui:backstage'] || !uiSchema['ui:backstage'].review) { - reviewData[key] = formData[key]; - continue; - } - - const review = uiSchema['ui:backstage'].review as JsonObject; - if (review.mask) { - reviewData[key] = review.mask; - continue; - } - - if (!review.show) { - continue; - } + if (!uiSchema) { reviewData[key] = formData[key]; + continue; } + + if (uiSchema['ui:widget'] === 'password') { + reviewData[key] = '******'; + continue; + } + + if (!uiSchema['ui:backstage'] || !uiSchema['ui:backstage'].review) { + reviewData[key] = formData[key]; + continue; + } + + const review = uiSchema['ui:backstage'].review as JsonObject; + if (review.mask) { + reviewData[key] = review.mask; + continue; + } + + if (!review.show) { + continue; + } + reviewData[key] = formData[key]; } return reviewData; From c65e6da1e0e0633619aebabab3b594b99f0af32e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= <freben@gmail.com> Date: Tue, 31 Jan 2023 15:11:26 +0100 Subject: [PATCH 153/156] no promises made MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw <freben@gmail.com> --- plugins/catalog/src/apis/StarredEntitiesApi/migration.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/catalog/src/apis/StarredEntitiesApi/migration.test.ts b/plugins/catalog/src/apis/StarredEntitiesApi/migration.test.ts index 7e5ad3f2f7..c9083969ee 100644 --- a/plugins/catalog/src/apis/StarredEntitiesApi/migration.test.ts +++ b/plugins/catalog/src/apis/StarredEntitiesApi/migration.test.ts @@ -46,7 +46,7 @@ describe('performMigrationToTheNewBucket', () => { await performMigrationToTheNewBucket({ storageApi: mockStorage }); // read NEW bucket - await expect(newBucket.snapshot('entityRefs').value).resolves.toEqual([ + expect(newBucket.snapshot('entityRefs').value).toEqual([ 'component:default/c', 'component:default/a', 'template:custom/b', @@ -72,7 +72,7 @@ describe('performMigrationToTheNewBucket', () => { await performMigrationToTheNewBucket({ storageApi: mockStorage }); // read NEW bucket - await expect(newBucket.snapshot('entityRefs').value).resolves.toEqual([ + expect(newBucket.snapshot('entityRefs').value).toEqual([ 'component:default/a', ]); From 61f71d7e88030cdbf5605200b2c0948376e32d0b Mon Sep 17 00:00:00 2001 From: blam <ben@blam.sh> Date: Tue, 31 Jan 2023 15:13:20 +0100 Subject: [PATCH 154/156] chore: fix these versions in the changelog Signed-off-by: blam <ben@blam.sh> --- .changeset/nasty-beans-accept.md | 2 +- .changeset/poor-moons-confess.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.changeset/nasty-beans-accept.md b/.changeset/nasty-beans-accept.md index 05ccb64c33..51b3e88e49 100644 --- a/.changeset/nasty-beans-accept.md +++ b/.changeset/nasty-beans-accept.md @@ -1,5 +1,5 @@ --- -'@backstage/create-app': minor +'@backstage/create-app': patch --- Update `SearchPage` template to use `SearchResult` extensions. diff --git a/.changeset/poor-moons-confess.md b/.changeset/poor-moons-confess.md index 7fbdc292ed..7489a3c9f1 100644 --- a/.changeset/poor-moons-confess.md +++ b/.changeset/poor-moons-confess.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-catalog-backend-module-incremental-ingestion': minor +'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch --- -Return EventSubscriber from addIncrementalEntityProvider to hook up to EventsBackend +Return `EventSubscriber` from `addIncrementalEntityProvider` to hook up to `EventsBackend` From 0f0da2f25643fd878e9306eb41087811656e0d0b Mon Sep 17 00:00:00 2001 From: Matt Benson <gudnabrsam@gmail.com> Date: Mon, 30 Jan 2023 16:25:50 -0600 Subject: [PATCH 155/156] add changeset for review property order fix Signed-off-by: Matt Benson <gudnabrsam@gmail.com> --- .changeset/soft-snails-notice.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/soft-snails-notice.md diff --git a/.changeset/soft-snails-notice.md b/.changeset/soft-snails-notice.md new file mode 100644 index 0000000000..ed39ee9591 --- /dev/null +++ b/.changeset/soft-snails-notice.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +Prefer schema ordering of template properties during review content generation. From 675324ed194d0922aad7e4909f1d213cdb500df8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <github-actions[bot]@users.noreply.github.com> Date: Tue, 31 Jan 2023 14:45:37 +0000 Subject: [PATCH 156/156] Version Packages (next) --- .changeset/pre.json | 43 + docs/releases/v1.11.0-next.1-changelog.md | 2164 +++++++++++++++++ package.json | 2 +- packages/app-defaults/CHANGELOG.md | 11 + packages/app-defaults/package.json | 2 +- packages/app/CHANGELOG.md | 64 + packages/app/package.json | 2 +- packages/backend-app-api/CHANGELOG.md | 16 + packages/backend-app-api/package.json | 2 +- packages/backend-common/CHANGELOG.md | 15 + packages/backend-common/package.json | 2 +- packages/backend-defaults/CHANGELOG.md | 8 + packages/backend-defaults/package.json | 2 +- packages/backend-next/CHANGELOG.md | 10 + packages/backend-next/package.json | 2 +- packages/backend-plugin-api/CHANGELOG.md | 17 + packages/backend-plugin-api/package.json | 2 +- packages/backend-tasks/CHANGELOG.md | 10 + packages/backend-tasks/package.json | 2 +- packages/backend-test-utils/CHANGELOG.md | 13 + packages/backend-test-utils/package.json | 2 +- packages/backend/CHANGELOG.md | 48 + packages/backend/package.json | 2 +- packages/cli/CHANGELOG.md | 16 + packages/cli/package.json | 2 +- packages/core-app-api/CHANGELOG.md | 11 + packages/core-app-api/package.json | 2 +- packages/core-components/CHANGELOG.md | 14 + packages/core-components/package.json | 2 +- packages/create-app/CHANGELOG.md | 9 + packages/create-app/package.json | 2 +- packages/dev-utils/CHANGELOG.md | 15 + packages/dev-utils/package.json | 2 +- packages/integration-react/CHANGELOG.md | 11 + packages/integration-react/package.json | 2 +- .../techdocs-cli-embedded-app/CHANGELOG.md | 19 + .../techdocs-cli-embedded-app/package.json | 2 +- packages/techdocs-cli/CHANGELOG.md | 11 + packages/techdocs-cli/package.json | 2 +- packages/test-utils/CHANGELOG.md | 13 + packages/test-utils/package.json | 2 +- plugins/adr-backend/CHANGELOG.md | 14 + plugins/adr-backend/package.json | 2 +- plugins/adr/CHANGELOG.md | 15 + plugins/adr/package.json | 2 +- plugins/airbrake-backend/CHANGELOG.md | 8 + plugins/airbrake-backend/package.json | 2 +- plugins/airbrake/CHANGELOG.md | 14 + plugins/airbrake/package.json | 2 +- plugins/allure/CHANGELOG.md | 11 + plugins/allure/package.json | 2 +- plugins/analytics-module-ga/CHANGELOG.md | 10 + plugins/analytics-module-ga/package.json | 2 +- plugins/apache-airflow/CHANGELOG.md | 9 + plugins/apache-airflow/package.json | 2 +- plugins/api-docs/CHANGELOG.md | 12 + plugins/api-docs/package.json | 2 +- plugins/apollo-explorer/CHANGELOG.md | 10 + plugins/apollo-explorer/package.json | 2 +- plugins/app-backend/CHANGELOG.md | 11 + plugins/app-backend/package.json | 2 +- plugins/auth-backend/CHANGELOG.md | 13 + plugins/auth-backend/package.json | 2 +- plugins/auth-node/CHANGELOG.md | 9 + plugins/auth-node/package.json | 2 +- plugins/azure-devops-backend/CHANGELOG.md | 11 + plugins/azure-devops-backend/package.json | 2 +- plugins/azure-devops/CHANGELOG.md | 13 + plugins/azure-devops/package.json | 2 +- plugins/azure-sites-backend/CHANGELOG.md | 9 + plugins/azure-sites-backend/package.json | 2 +- plugins/azure-sites/CHANGELOG.md | 12 + plugins/azure-sites/package.json | 2 +- plugins/badges-backend/CHANGELOG.md | 11 + plugins/badges-backend/package.json | 2 +- plugins/badges/CHANGELOG.md | 12 + plugins/badges/package.json | 2 +- plugins/bazaar-backend/CHANGELOG.md | 11 + plugins/bazaar-backend/package.json | 2 +- plugins/bazaar/CHANGELOG.md | 15 + plugins/bazaar/package.json | 2 +- plugins/bitrise/CHANGELOG.md | 12 + plugins/bitrise/package.json | 2 +- .../catalog-backend-module-aws/CHANGELOG.md | 16 + .../catalog-backend-module-aws/package.json | 2 +- .../catalog-backend-module-azure/CHANGELOG.md | 44 + .../catalog-backend-module-azure/package.json | 2 +- .../CHANGELOG.md | 18 + .../package.json | 2 +- .../CHANGELOG.md | 15 + .../package.json | 2 +- .../CHANGELOG.md | 15 + .../package.json | 2 +- .../CHANGELOG.md | 15 + .../package.json | 2 +- .../CHANGELOG.md | 21 + .../package.json | 2 +- .../CHANGELOG.md | 18 + .../package.json | 2 +- .../CHANGELOG.md | 18 + .../package.json | 2 +- .../catalog-backend-module-ldap/CHANGELOG.md | 12 + .../catalog-backend-module-ldap/package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- plugins/catalog-backend/CHANGELOG.md | 23 + plugins/catalog-backend/package.json | 2 +- plugins/catalog-customized/CHANGELOG.md | 8 + plugins/catalog-customized/package.json | 2 +- plugins/catalog-graph/CHANGELOG.md | 12 + plugins/catalog-graph/package.json | 2 +- plugins/catalog-import/CHANGELOG.md | 16 + plugins/catalog-import/package.json | 2 +- plugins/catalog-node/CHANGELOG.md | 12 + plugins/catalog-node/package.json | 2 +- plugins/catalog-react/CHANGELOG.md | 22 + plugins/catalog-react/package.json | 2 +- plugins/catalog/CHANGELOG.md | 23 + plugins/catalog/package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- plugins/cicd-statistics/CHANGELOG.md | 10 + plugins/cicd-statistics/package.json | 2 +- plugins/circleci/CHANGELOG.md | 12 + plugins/circleci/package.json | 2 +- plugins/cloudbuild/CHANGELOG.md | 11 + plugins/cloudbuild/package.json | 2 +- plugins/code-climate/CHANGELOG.md | 11 + plugins/code-climate/package.json | 2 +- plugins/code-coverage-backend/CHANGELOG.md | 12 + plugins/code-coverage-backend/package.json | 2 +- plugins/code-coverage/CHANGELOG.md | 13 + plugins/code-coverage/package.json | 2 +- plugins/codescene/CHANGELOG.md | 12 + plugins/codescene/package.json | 2 +- plugins/config-schema/CHANGELOG.md | 12 + plugins/config-schema/package.json | 2 +- plugins/cost-insights/CHANGELOG.md | 13 + plugins/cost-insights/package.json | 2 +- plugins/dynatrace/CHANGELOG.md | 12 + plugins/dynatrace/package.json | 2 +- .../CHANGELOG.md | 12 + .../package.json | 2 +- .../events-backend-module-azure/CHANGELOG.md | 8 + .../events-backend-module-azure/package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../events-backend-module-gerrit/CHANGELOG.md | 8 + .../events-backend-module-gerrit/package.json | 2 +- .../events-backend-module-github/CHANGELOG.md | 9 + .../events-backend-module-github/package.json | 2 +- .../events-backend-module-gitlab/CHANGELOG.md | 9 + .../events-backend-module-gitlab/package.json | 2 +- .../events-backend-test-utils/CHANGELOG.md | 7 + .../events-backend-test-utils/package.json | 2 +- plugins/events-backend/CHANGELOG.md | 10 + plugins/events-backend/package.json | 2 +- plugins/events-node/CHANGELOG.md | 7 + plugins/events-node/package.json | 2 +- .../example-todo-list-backend/CHANGELOG.md | 10 + .../example-todo-list-backend/package.json | 2 +- plugins/example-todo-list/CHANGELOG.md | 9 + plugins/example-todo-list/package.json | 2 +- plugins/explore-backend/CHANGELOG.md | 10 + plugins/explore-backend/package.json | 2 +- plugins/explore/CHANGELOG.md | 20 + plugins/explore/package.json | 2 +- plugins/firehydrant/CHANGELOG.md | 10 + plugins/firehydrant/package.json | 2 +- plugins/fossa/CHANGELOG.md | 12 + plugins/fossa/package.json | 2 +- plugins/gcalendar/CHANGELOG.md | 10 + plugins/gcalendar/package.json | 2 +- plugins/gcp-projects/CHANGELOG.md | 9 + plugins/gcp-projects/package.json | 2 +- plugins/git-release-manager/CHANGELOG.md | 11 + plugins/git-release-manager/package.json | 2 +- plugins/github-actions/CHANGELOG.md | 12 + plugins/github-actions/package.json | 2 +- plugins/github-deployments/CHANGELOG.md | 14 + plugins/github-deployments/package.json | 2 +- plugins/github-issues/CHANGELOG.md | 13 + plugins/github-issues/package.json | 2 +- .../github-pull-requests-board/CHANGELOG.md | 12 + .../github-pull-requests-board/package.json | 2 +- plugins/gitops-profiles/CHANGELOG.md | 9 + plugins/gitops-profiles/package.json | 2 +- plugins/gocd/CHANGELOG.md | 12 + plugins/gocd/package.json | 2 +- plugins/graphiql/CHANGELOG.md | 9 + plugins/graphiql/package.json | 2 +- plugins/graphql-backend/CHANGELOG.md | 9 + plugins/graphql-backend/package.json | 2 +- plugins/home/CHANGELOG.md | 14 + plugins/home/package.json | 2 +- plugins/ilert/CHANGELOG.md | 12 + plugins/ilert/package.json | 2 +- plugins/jenkins-backend/CHANGELOG.md | 14 + plugins/jenkins-backend/package.json | 2 +- plugins/jenkins/CHANGELOG.md | 13 + plugins/jenkins/package.json | 2 +- plugins/kafka-backend/CHANGELOG.md | 10 + plugins/kafka-backend/package.json | 2 +- plugins/kafka/CHANGELOG.md | 12 + plugins/kafka/package.json | 2 +- plugins/kubernetes-backend/CHANGELOG.md | 15 + plugins/kubernetes-backend/package.json | 2 +- plugins/kubernetes-common/CHANGELOG.md | 8 + plugins/kubernetes-common/package.json | 2 +- plugins/kubernetes/CHANGELOG.md | 15 + plugins/kubernetes/package.json | 2 +- plugins/lighthouse/CHANGELOG.md | 12 + plugins/lighthouse/package.json | 2 +- plugins/newrelic-dashboard/CHANGELOG.md | 11 + plugins/newrelic-dashboard/package.json | 2 +- plugins/newrelic/CHANGELOG.md | 9 + plugins/newrelic/package.json | 2 +- plugins/org-react/CHANGELOG.md | 13 + plugins/org-react/package.json | 2 +- plugins/org/CHANGELOG.md | 11 + plugins/org/package.json | 2 +- plugins/pagerduty/CHANGELOG.md | 12 + plugins/pagerduty/package.json | 2 +- plugins/periskop-backend/CHANGELOG.md | 8 + plugins/periskop-backend/package.json | 2 +- plugins/periskop/CHANGELOG.md | 12 + plugins/periskop/package.json | 2 +- plugins/permission-backend/CHANGELOG.md | 12 + plugins/permission-backend/package.json | 2 +- plugins/permission-node/CHANGELOG.md | 11 + plugins/permission-node/package.json | 2 +- plugins/playlist-backend/CHANGELOG.md | 17 + plugins/playlist-backend/package.json | 2 +- plugins/playlist/CHANGELOG.md | 18 + plugins/playlist/package.json | 2 +- plugins/proxy-backend/CHANGELOG.md | 8 + plugins/proxy-backend/package.json | 2 +- plugins/rollbar-backend/CHANGELOG.md | 8 + plugins/rollbar-backend/package.json | 2 +- plugins/rollbar/CHANGELOG.md | 11 + plugins/rollbar/package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- plugins/scaffolder-backend/CHANGELOG.md | 25 + plugins/scaffolder-backend/package.json | 2 +- plugins/scaffolder-node/CHANGELOG.md | 10 + plugins/scaffolder-node/package.json | 2 +- plugins/scaffolder-react/CHANGELOG.md | 18 + plugins/scaffolder-react/package.json | 2 +- plugins/scaffolder/CHANGELOG.md | 25 + plugins/scaffolder/package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- plugins/search-backend-module-pg/CHANGELOG.md | 10 + plugins/search-backend-module-pg/package.json | 2 +- plugins/search-backend-node/CHANGELOG.md | 12 + plugins/search-backend-node/package.json | 2 +- plugins/search-backend/CHANGELOG.md | 15 + plugins/search-backend/package.json | 2 +- plugins/search-react/CHANGELOG.md | 17 + plugins/search-react/package.json | 2 +- plugins/search/CHANGELOG.md | 21 + plugins/search/package.json | 2 +- plugins/sentry/CHANGELOG.md | 12 + plugins/sentry/package.json | 2 +- plugins/shortcuts/CHANGELOG.md | 10 + plugins/shortcuts/package.json | 2 +- plugins/sonarqube-backend/CHANGELOG.md | 9 + plugins/sonarqube-backend/package.json | 2 +- plugins/sonarqube/CHANGELOG.md | 13 + plugins/sonarqube/package.json | 2 +- plugins/splunk-on-call/CHANGELOG.md | 11 + plugins/splunk-on-call/package.json | 2 +- plugins/stack-overflow-backend/CHANGELOG.md | 9 + plugins/stack-overflow-backend/package.json | 2 +- plugins/stack-overflow/CHANGELOG.md | 13 + plugins/stack-overflow/package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- plugins/tech-insights-backend/CHANGELOG.md | 27 + plugins/tech-insights-backend/package.json | 2 +- plugins/tech-insights-common/CHANGELOG.md | 19 + plugins/tech-insights-common/package.json | 2 +- plugins/tech-insights-node/CHANGELOG.md | 25 + plugins/tech-insights-node/package.json | 2 +- plugins/tech-insights/CHANGELOG.md | 26 + plugins/tech-insights/package.json | 2 +- plugins/tech-radar/CHANGELOG.md | 10 + plugins/tech-radar/package.json | 2 +- .../techdocs-addons-test-utils/CHANGELOG.md | 17 + .../techdocs-addons-test-utils/package.json | 2 +- plugins/techdocs-backend/CHANGELOG.md | 16 + plugins/techdocs-backend/package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- plugins/techdocs-node/CHANGELOG.md | 13 + plugins/techdocs-node/package.json | 2 +- plugins/techdocs-react/CHANGELOG.md | 11 + plugins/techdocs-react/package.json | 2 +- plugins/techdocs/CHANGELOG.md | 23 + plugins/techdocs/package.json | 2 +- plugins/todo-backend/CHANGELOG.md | 12 + plugins/todo-backend/package.json | 2 +- plugins/todo/CHANGELOG.md | 12 + plugins/todo/package.json | 2 +- plugins/user-settings-backend/CHANGELOG.md | 11 + plugins/user-settings-backend/package.json | 2 +- plugins/user-settings/CHANGELOG.md | 13 + plugins/user-settings/package.json | 2 +- plugins/vault-backend/CHANGELOG.md | 11 + plugins/vault-backend/package.json | 2 +- plugins/vault/CHANGELOG.md | 12 + plugins/vault/package.json | 2 +- plugins/xcmetrics/CHANGELOG.md | 10 + plugins/xcmetrics/package.json | 2 +- yarn.lock | 99 +- 324 files changed, 4630 insertions(+), 164 deletions(-) create mode 100644 docs/releases/v1.11.0-next.1-changelog.md diff --git a/.changeset/pre.json b/.changeset/pre.json index 0d150702fb..8d412f53b5 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -198,36 +198,79 @@ "@backstage/plugin-scaffolder-node": "0.0.0" }, "changesets": [ + "afraid-foxes-provide", + "brave-cougars-burn", "bright-eagles-love", "brown-islands-own", "calm-avocados-exercise", + "chatty-owls-care", + "clean-queens-judge", "cold-cycles-switch", "create-app-1674561612", + "cuddly-boxes-agree", "cyan-deers-walk", + "dry-donkeys-cheer", + "dull-gorillas-sing", "eight-falcons-explode", + "eight-hotels-sparkle", "flat-cups-itch", + "four-candles-add", + "four-rivers-enjoy", "friendly-scissors-shop", + "gold-bulldogs-talk", "gold-lemons-eat", "gold-masks-sleep", + "grumpy-bottles-stare", + "happy-cows-moo", + "hip-pugs-teach", + "hot-lions-cover", + "hungry-news-fix", "itchy-goats-melt", "khaki-toes-care", + "late-rice-crash", "lazy-badgers-rule", "lazy-badgers-try", "lemon-tables-train", "lovely-ladybugs-taste", + "many-nails-joke", + "modern-cats-worry", + "nasty-beans-accept", + "neat-zebras-run", "nervous-apricots-whisper", "nervous-mangos-rhyme", + "nine-glasses-invent", + "nine-guests-compete", + "ninety-hats-serve", + "old-knives-wonder", "perfect-cheetahs-serve", "pink-falcons-serve", + "poor-moons-confess", + "popular-dancers-join", + "pretty-ladybugs-taste", + "purple-feet-smile", "quick-ladybugs-reply", "rare-melons-battle", + "renovate-0b349f9", + "renovate-0c3644c", + "rich-snakes-rest", "rotten-mayflies-love", + "sharp-lobsters-build", "shiny-years-tap", + "shy-steaks-invite", "silly-turkeys-hang", + "smart-dingos-raise", + "soft-boxes-buy", + "soft-snails-notice", "spotty-coats-clean", "stale-dots-smile", + "stupid-ladybugs-brake", "swift-fishes-smash", + "tall-years-relate", + "thick-clocks-pump", + "twenty-islands-wonder", "twenty-parents-relate", + "two-melons-lie", + "witty-moose-itch", "young-singers-learn" ] } diff --git a/docs/releases/v1.11.0-next.1-changelog.md b/docs/releases/v1.11.0-next.1-changelog.md new file mode 100644 index 0000000000..aa9c447149 --- /dev/null +++ b/docs/releases/v1.11.0-next.1-changelog.md @@ -0,0 +1,2164 @@ +# Release v1.11.0-next.1 + +## @backstage/plugin-catalog@1.8.0-next.1 + +### Minor Changes + +- 0c1fc3986c: Added Markdown support in the `AboutCard` description section +- 0eaa579f89: The `CatalogSearchResultListItem` component is now a search result extension. This means that when rendered as a child of components that render search extensions, the `result`, `rank`, and `highlight` properties are optional. See the [documentation](https://backstage.io/docs/features/search/how-to-guides#how-to-render-search-results-using-extensions) for more details. + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-search-common@1.2.1 + +## @backstage/plugin-catalog-react@1.3.0-next.1 + +### Minor Changes + +- fab93c2fe8: Aligned buttons on "Unregister entity" dialog to keep them on the same line + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.3 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-permission-react@0.4.9 + +## @backstage/plugin-explore@0.4.0-next.1 + +### Minor Changes + +- 0eaa579f89: The `ToolSearchResultListItem` component is now a search result extension. This means that when rendered as a child of components that render search extensions, the `result`, `rank`, and `highlight` properties are optional. See the [documentation](https://backstage.io/docs/features/search/how-to-guides#how-to-render-search-results-using-extensions) for more details. + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/plugin-explore-common@0.0.1 + - @backstage/plugin-explore-react@0.0.25 + - @backstage/plugin-search-common@1.2.1 + +## @backstage/plugin-scaffolder-backend@1.11.0-next.1 + +### Minor Changes + +- 127154930f: Renamed the export `scaffolderCatalogModule` to `catalogModuleTemplateKind` in order to follow the new recommended naming patterns of backend system items. This is technically a breaking change but in an alpha export, so take care to change your imports if you have already migrated to the new backend system. + +### Patch Changes + +- 66cf22fdc4: Updated dependency `esbuild` to `^0.17.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-catalog-node@1.3.3-next.1 + - @backstage/plugin-scaffolder-common@1.2.5-next.0 + - @backstage/plugin-scaffolder-node@0.1.0-next.1 + +## @backstage/plugin-search@1.1.0-next.1 + +### Minor Changes + +- 0eaa579f89: Update `SearchModal` component to use `SearchResult` extensions. + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.3 + - @backstage/plugin-search-common@1.2.1 + +## @backstage/plugin-search-react@1.5.0-next.0 + +### Minor Changes + +- 0eaa579f89: - Create the search results extensions, for more details see the documentation [here](https://backstage.io/docs/features/search/how-to-guides#how-to-render-search-results-using-extensions); + - Update the `SearchResult`, `SearchResultList` and `SearchResultGroup` components to use extensions and default their props to optionally accept a query, when the query is not passed, the component tries to get it from the search context. + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.3 + - @backstage/plugin-search-common@1.2.1 + +## @backstage/plugin-tech-insights-node@0.4.0-next.1 + +### Minor Changes + +- 4024b37449: TechInsightsApi interface now has getFactSchemas() method. + TechInsightsClient now implements method getFactSchemas(). + + **BREAKING** FactSchema type moved from @backstage/plugin-tech-insights-node into @backstage/plugin-tech-insights-common + + These changes are **required** if you were importing this type directly. + + ```diff + - import { FactSchema } from '@backstage/plugin-tech-insights-node'; + + import { FactSchema } from '@backstage/plugin-tech-insights-common'; + ``` + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-tech-insights-common@0.2.10-next.0 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/config@1.0.6 + - @backstage/types@1.0.2 + +## @backstage/plugin-techdocs@1.5.0-next.1 + +### Minor Changes + +- 20840b36b4: Update DocsTable and EntityListDocsTable to accept overrides for Material Table options. +- 0eaa579f89: The `TechDocsSearchResultListItem` component is now a search result extension. This means that when rendered as a child of components that render search extensions, the `result`, `rank`, and `highlight` properties are optional. See the [documentation](https://backstage.io/docs/features/search/how-to-guides#how-to-render-search-results-using-extensions) for more details. + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-search-common@1.2.1 + - @backstage/plugin-techdocs-react@1.1.3-next.1 + +## @backstage/app-defaults@1.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.4.1-next.0 + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-permission-react@0.4.9 + +## @backstage/backend-app-api@0.3.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/cli-common@0.1.11 + - @backstage/config@1.0.6 + - @backstage/config-loader@1.1.8 + - @backstage/errors@1.1.4 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-permission-node@0.7.5-next.1 + +## @backstage/backend-common@0.18.2-next.1 + +### Patch Changes + +- 628e2bd89a: Updated dependency `@kubernetes/client-node` to `0.18.1`. +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-app-api@0.3.2-next.1 + - @backstage/cli-common@0.1.11 + - @backstage/config@1.0.6 + - @backstage/config-loader@1.1.8 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + +## @backstage/backend-defaults@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-app-api@0.3.2-next.1 + +## @backstage/backend-plugin-api@0.3.2-next.1 + +### Patch Changes + +- ae88f61e00: The `register` methods passed to `createBackendPlugin` and `createBackendModule` + now have dedicated `BackendPluginRegistrationPoints` and + `BackendModuleRegistrationPoints` arguments, respectively. This lets us make it + clear on a type level that it's not possible to pass in extension points as + dependencies to plugins (should only ever be done for modules). This has no + practical effect on code that was already well behaved. +- Updated dependencies + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/config@1.0.6 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-permission-common@0.7.3 + +## @backstage/backend-tasks@0.4.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/types@1.0.2 + +## @backstage/backend-test-utils@0.1.34-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.22.2-next.0 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-app-api@0.3.2-next.1 + - @backstage/config@1.0.6 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.11-next.1 + +## @backstage/cli@0.22.2-next.0 + +### Patch Changes + +- 561df21ea3: The `backstage-cli repo test` command now sets a default Jest `--workerIdleMemoryLimit` of 1GB. If needed to ensure that tests are not run in band, `--maxWorkers=2` is set as well. This is the recommended workaround for dealing with Jest workers leaking memory and eventually hitting the heap limit. +- 2815981057: Show module name causing error during build +- 66cf22fdc4: Updated dependency `esbuild` to `^0.17.0`. +- 6d3abfded1: Switch to inline source maps for test transpilation, simplifying editor setups. +- Updated dependencies + - @backstage/cli-common@0.1.11 + - @backstage/config@1.0.6 + - @backstage/config-loader@1.1.8 + - @backstage/errors@1.1.4 + - @backstage/release-manifests@0.0.8 + - @backstage/types@1.0.2 + +## @backstage/core-app-api@1.4.1-next.0 + +### Patch Changes + +- dff4d8ddb1: Fixed an issue where an explicit port the frontend base URL could break the app. +- Updated dependencies + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.3 + +## @backstage/core-components@0.12.4-next.0 + +### Patch Changes + +- 910015f5b7: The Button component has been deprecated in favor of the LinkButton component +- 20840b36b4: Adds new type, TableOptions, extending Material Table Options. +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/version-bridge@1.0.3 + +## @backstage/create-app@0.4.37-next.1 + +### Patch Changes + +- 86a8dfd7b0: Added a check to ensure that Yarn v1 is used when creating new projects. +- 0eaa579f89: Update `SearchPage` template to use `SearchResult` extensions. +- Updated dependencies + - @backstage/cli-common@0.1.11 + +## @backstage/dev-utils@1.0.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.4.1-next.0 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/app-defaults@1.1.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/test-utils@1.2.5-next.0 + - @backstage/theme@0.2.16 + +## @backstage/integration-react@1.1.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration@1.4.2 + - @backstage/theme@0.2.16 + +## @techdocs/cli@1.3.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/cli-common@0.1.11 + - @backstage/config@1.0.6 + - @backstage/plugin-techdocs-node@1.4.6-next.1 + +## @backstage/test-utils@1.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.4.1-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-permission-react@0.4.9 + +## @backstage/plugin-adr@0.3.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-adr-common@0.2.6-next.0 + - @backstage/plugin-search-common@1.2.1 + +## @backstage/plugin-adr-backend@0.2.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/plugin-adr-common@0.2.6-next.0 + - @backstage/plugin-search-common@1.2.1 + +## @backstage/plugin-airbrake@0.3.15-next.1 + +### Patch Changes + +- 41377156d0: Adds a boolean helper function to airbrake plugin for use on the EntityPage to show/hide airbrake tab depending on whether the entity's catalog-info.yml has an airbrake id set in the metadata +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/dev-utils@1.0.12-next.1 + - @backstage/test-utils@1.2.5-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-airbrake-backend@0.2.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + +## @backstage/plugin-allure@0.1.31-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-analytics-module-ga@0.1.26-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-apache-airflow@0.2.8-next.0 + +### Patch Changes + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + +## @backstage/plugin-api-docs@0.8.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog@1.8.0-next.1 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-apollo-explorer@0.1.8-next.0 + +### Patch Changes + +- d950d3e217: Depend on `@material-ui/core` version `^4.12.2` like all other in-repo packages +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-app-backend@0.3.42-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/config@1.0.6 + - @backstage/config-loader@1.1.8 + - @backstage/types@1.0.2 + +## @backstage/plugin-auth-backend@0.17.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.11-next.1 + +## @backstage/plugin-auth-node@0.2.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + +## @backstage/plugin-azure-devops@0.2.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/plugin-azure-devops-common@0.3.0 + +## @backstage/plugin-azure-devops-backend@0.3.21-next.1 + +### Patch Changes + +- cc926a59bd: Fixed a bug where the azure devops host in URLs on the readme card was being URL encoded, breaking hosts with ports. +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-azure-devops-common@0.3.0 + +## @backstage/plugin-azure-sites@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-azure-sites-common@0.1.0 + +## @backstage/plugin-azure-sites-backend@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-azure-sites-common@0.1.0 + +## @backstage/plugin-badges@0.2.39-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-badges-backend@0.1.36-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + +## @backstage/plugin-bazaar@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.22.2-next.0 + - @backstage/plugin-catalog@1.8.0-next.1 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-bazaar-backend@0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-test-utils@0.1.34-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-auth-node@0.2.11-next.1 + +## @backstage/plugin-bitrise@0.1.42-next.1 + +### Patch Changes + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-catalog-backend@1.7.2-next.1 + +### Patch Changes + +- 2380506364: The process of adding or modifying fields in the software-catalog search index has been simplified. For more details, see [how to customize fields in the Software Catalog index](https://backstage.io/docs/features/search/how-to-guides#how-to-customize-fields-in-the-software-catalog-index). +- 9573651919: The previous migration that adds the `search.original_value` column may leave some of the entities not updated. Add a migration script to trigger a reprocessing of the entities. +- fc73f6aae5: Switched the order of reprocessing statements retroactively in migrations. This only improves the experience for those who at a later time perform a large upgrade of an old Backstage installation. +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-catalog-node@1.3.3-next.1 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-permission-node@0.7.5-next.1 + - @backstage/plugin-scaffolder-common@1.2.5-next.0 + - @backstage/plugin-search-common@1.2.1 + +## @backstage/plugin-catalog-backend-module-aws@0.1.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.3-next.1 + +## @backstage/plugin-catalog-backend-module-azure@0.1.13-next.1 + +### Patch Changes + +- 2890f47517: This will add the ability to use Azure DevOps with multi project with a single value which is a new feature as previously this had to be done manually for each project that you wanted to add. + + Right now you would have to fill in multiple values in the config to use multiple projects: + + yourFirstProviderId: # identifies your dataset / provider independent of config changes + organization: myorg + project: 'firstProject' # this will match the firstProject project + repository: '*' # this will match all repos + path: /catalog-info.yaml + yourSecondProviderId: # identifies your dataset / provider independent of config changes + organization: myorg + project: 'secondProject' # this will match the secondProject project + repository: '*' # this will match all repos + path: /catalog-info.yaml + + With this change you can actually have all projects available where your PAT determines which you have access to, so that includes multiple projects: + + yourFirstProviderId: # identifies your dataset / provider independent of config changes + organization: myorg + project: '*' # this will match all projects where your PAT has access to + repository: '*' # this will match all repos + path: /catalog-info.yaml + +- 85b04f659a: Internal refactor to not use deprecated `substr` + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.3-next.1 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.9-next.1 + +### Patch Changes + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-bitbucket-cloud-common@0.2.3 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/integration@1.4.2 + - @backstage/plugin-bitbucket-cloud-common@0.2.3 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-catalog-node@1.3.3-next.1 + - @backstage/plugin-events-node@0.2.3-next.1 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/plugin-catalog-node@1.3.3-next.1 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/plugin-catalog-node@1.3.3-next.1 + +## @backstage/plugin-catalog-backend-module-github@0.2.5-next.1 + +### Patch Changes + +- 66158754b4: Add support for filtering out forks +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-catalog-node@1.3.3-next.1 + - @backstage/plugin-events-node@0.2.3-next.1 + +## @backstage/plugin-catalog-backend-module-gitlab@0.1.13-next.1 + +### Patch Changes + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- 52c5685ceb: Implement Group and User Catalog Provider +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.3-next.1 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.2.0-next.1 + +### Patch Changes + +- b7e36660d5: Return `EventSubscriber` from `addIncrementalEntityProvider` to hook up to `EventsBackend` +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/backend-test-utils@0.1.34-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-catalog-node@1.3.3-next.1 + - @backstage/plugin-events-node@0.2.3-next.1 + - @backstage/plugin-permission-common@0.7.3 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/types@1.0.2 + +## @backstage/plugin-catalog-backend-module-msgraph@0.4.8-next.1 + +### Patch Changes + +- 4c86436fdf: Fix MS Graph provider to use target URL for fetching access token +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/plugin-catalog-node@1.3.3-next.1 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.3-next.1 + +## @backstage/plugin-catalog-graph@0.2.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-catalog-import@0.9.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/plugin-catalog-common@1.0.11-next.0 + +## @backstage/plugin-catalog-node@1.3.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/errors@1.1.4 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.11-next.0 + +## @backstage/plugin-cicd-statistics@0.1.17-next.1 + +### Patch Changes + +- d950d3e217: Depend on `@material-ui/core` version `^4.12.2` like all other in-repo packages +- Updated dependencies + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-cicd-statistics@0.1.17-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + +## @backstage/plugin-circleci@0.3.15-next.1 + +### Patch Changes + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-cloudbuild@0.3.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-code-climate@0.1.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-code-coverage@0.2.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-code-coverage-backend@0.2.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + +## @backstage/plugin-codescene@0.1.10-next.0 + +### Patch Changes + +- d950d3e217: Depend on `@material-ui/core` version `^4.12.2` like all other in-repo packages +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-config-schema@0.1.38-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + +## @backstage/plugin-cost-insights@0.12.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-cost-insights-common@0.1.1 + +## @backstage/plugin-dynatrace@2.0.0-next.1 + +### Patch Changes + +- d950d3e217: Depend on `@material-ui/core` version `^4.12.2` like all other in-repo packages +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-events-backend@0.2.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-events-node@0.2.3-next.1 + +## @backstage/plugin-events-backend-module-aws-sqs@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/config@1.0.6 + - @backstage/types@1.0.2 + - @backstage/plugin-events-node@0.2.3-next.1 + +## @backstage/plugin-events-backend-module-azure@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/plugin-events-node@0.2.3-next.1 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/plugin-events-node@0.2.3-next.1 + +## @backstage/plugin-events-backend-module-gerrit@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/plugin-events-node@0.2.3-next.1 + +## @backstage/plugin-events-backend-module-github@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-events-node@0.2.3-next.1 + +## @backstage/plugin-events-backend-module-gitlab@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-events-node@0.2.3-next.1 + +## @backstage/plugin-events-backend-test-utils@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.3-next.1 + +## @backstage/plugin-events-node@0.2.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + +## @backstage/plugin-explore-backend@0.0.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-explore-common@0.0.1 + - @backstage/plugin-search-common@1.2.1 + +## @backstage/plugin-firehydrant@0.1.32-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-fossa@0.2.47-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gcalendar@0.3.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gcp-projects@0.3.34-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-git-release-manager@0.3.28-next.0 + +### Patch Changes + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration@1.4.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-actions@0.5.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration@1.4.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-deployments@0.1.46-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-issues@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-github-pull-requests-board@0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration@1.4.2 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gitops-profiles@0.3.33-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-gocd@0.1.21-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-graphiql@0.2.47-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-graphql-backend@0.1.32-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-catalog-graphql@0.3.18-next.0 + +## @backstage/plugin-home@0.4.31-next.1 + +### Patch Changes + +- 3d1d867d42: Fixed regression that caused the `WelcomeTitle` to not be the right size when passed to the `title` property of the `<Header>` component. A Storybook entry was also added for the `WelcomeTitle` +- c553a625d2: remove unused plugin-stack-overflow dependency +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-ilert@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-jenkins@0.7.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/plugin-jenkins-common@0.1.13-next.0 + +## @backstage/plugin-jenkins-backend@0.1.32-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-jenkins-common@0.1.13-next.0 + - @backstage/plugin-permission-common@0.7.3 + +## @backstage/plugin-kafka@0.3.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-kafka-backend@0.2.35-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + +## @backstage/plugin-kubernetes@0.7.8-next.1 + +### Patch Changes + +- 145a79a15b: Condenses kubernetes ui plugin to fit more onscreen and increase visibility +- 628e2bd89a: Updated dependency `@kubernetes/client-node` to `0.18.1`. +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-kubernetes-common@0.6.0-next.1 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-kubernetes-backend@0.9.3-next.1 + +### Patch Changes + +- 628e2bd89a: Updated dependency `@kubernetes/client-node` to `0.18.1`. +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/plugin-kubernetes-common@0.6.0-next.1 + - @backstage/backend-test-utils@0.1.34-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-auth-node@0.2.11-next.1 + +## @backstage/plugin-kubernetes-common@0.6.0-next.1 + +### Patch Changes + +- 628e2bd89a: Updated dependency `@kubernetes/client-node` to `0.18.1`. +- Updated dependencies + - @backstage/catalog-model@1.1.6-next.0 + +## @backstage/plugin-lighthouse@0.3.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-newrelic@0.3.33-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-newrelic-dashboard@0.2.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + +## @backstage/plugin-org@0.6.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-org-react@0.1.4-next.1 + +### Patch Changes + +- d950d3e217: Depend on `@material-ui/core` version `^4.12.2` like all other in-repo packages +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-pagerduty@0.5.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-periskop@0.1.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-periskop-backend@0.1.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + +## @backstage/plugin-permission-backend@0.5.17-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-permission-node@0.7.5-next.1 + +## @backstage/plugin-permission-node@0.7.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-permission-common@0.7.3 + +## @backstage/plugin-playlist@0.1.6-next.1 + +### Patch Changes + +- d950d3e217: Depend on `@material-ui/core` version `^4.12.2` like all other in-repo packages +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-permission-react@0.4.9 + - @backstage/plugin-playlist-common@0.1.4 + +## @backstage/plugin-playlist-backend@0.2.5-next.1 + +### Patch Changes + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-test-utils@0.1.34-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-permission-node@0.7.5-next.1 + - @backstage/plugin-playlist-common@0.1.4 + +## @backstage/plugin-proxy-backend@0.2.36-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + +## @backstage/plugin-rollbar@0.4.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-rollbar-backend@0.1.39-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + +## @backstage/plugin-scaffolder@1.11.0-next.1 + +### Patch Changes + +- 04f717a8e1: `scaffolder/next`: bump `react-jsonschema-form` libraries to `v5-stable` +- 346d6b6630: Upgrade `@rjsf` version 5 dependencies to `beta.18` +- 0f0da2f256: Prefer schema ordering of template properties during review content generation. +- 38992bdbaf: Fixed bug in review step refactor that caused schema-based display settings for individual property values to be discarded. +- Updated dependencies + - @backstage/plugin-scaffolder-react@1.1.0-next.1 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-permission-react@0.4.9 + - @backstage/plugin-scaffolder-common@1.2.5-next.0 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.17-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/plugin-scaffolder-backend@1.11.0-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-scaffolder-node@0.1.0-next.1 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/plugin-scaffolder-backend@1.11.0-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-scaffolder-node@0.1.0-next.1 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.1.2-next.1 + +### Patch Changes + +- da418c89e4: Fix broken module exports and dependencies to match a backend module, rather than a frontend plugin. +- Updated dependencies + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-scaffolder-node@0.1.0-next.1 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.6 + - @backstage/types@1.0.2 + - @backstage/plugin-scaffolder-node@0.1.0-next.1 + +## @backstage/plugin-scaffolder-node@0.1.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-scaffolder-common@1.2.5-next.0 + +## @backstage/plugin-scaffolder-react@1.1.0-next.1 + +### Patch Changes + +- 04f717a8e1: `scaffolder/next`: bump `react-jsonschema-form` libraries to `v5-stable` +- 346d6b6630: Upgrade `@rjsf` version 5 dependencies to `beta.18` +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.3 + - @backstage/plugin-scaffolder-common@1.2.5-next.0 + +## @backstage/plugin-search-backend@1.2.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-permission-node@0.7.5-next.1 + - @backstage/plugin-search-backend-node@1.1.3-next.1 + - @backstage/plugin-search-common@1.2.1 + +## @backstage/plugin-search-backend-module-elasticsearch@1.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.6 + - @backstage/plugin-search-backend-node@1.1.3-next.1 + - @backstage/plugin-search-common@1.2.1 + +## @backstage/plugin-search-backend-module-pg@0.5.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-search-backend-node@1.1.3-next.1 + - @backstage/plugin-search-common@1.2.1 + +## @backstage/plugin-search-backend-node@1.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-search-common@1.2.1 + +## @backstage/plugin-sentry@0.4.8-next.1 + +### Patch Changes + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-shortcuts@0.3.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + +## @backstage/plugin-sonarqube@0.6.3-next.1 + +### Patch Changes + +- 6310eacc11: Additional export added in order to bind SonarQubeClient to its apiref +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-sonarqube-react@0.1.2-next.0 + +## @backstage/plugin-sonarqube-backend@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + +## @backstage/plugin-splunk-on-call@0.4.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-stack-overflow@0.1.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-home@0.4.31-next.1 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-search-common@1.2.1 + +## @backstage/plugin-stack-overflow-backend@0.1.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-search-common@1.2.1 + +## @backstage/plugin-tech-insights@0.3.7-next.1 + +### Patch Changes + +- 4024b37449: TechInsightsApi interface now has getFactSchemas() method. + TechInsightsClient now implements method getFactSchemas(). + + **BREAKING** FactSchema type moved from @backstage/plugin-tech-insights-node into @backstage/plugin-tech-insights-common + + These changes are **required** if you were importing this type directly. + + ```diff + - import { FactSchema } from '@backstage/plugin-tech-insights-node'; + + import { FactSchema } from '@backstage/plugin-tech-insights-common'; + ``` + +- Updated dependencies + - @backstage/plugin-tech-insights-common@0.2.10-next.0 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + +## @backstage/plugin-tech-insights-backend@0.5.8-next.1 + +### Patch Changes + +- 4024b37449: TechInsightsApi interface now has getFactSchemas() method. + TechInsightsClient now implements method getFactSchemas(). + + **BREAKING** FactSchema type moved from @backstage/plugin-tech-insights-node into @backstage/plugin-tech-insights-common + + These changes are **required** if you were importing this type directly. + + ```diff + - import { FactSchema } from '@backstage/plugin-tech-insights-node'; + + import { FactSchema } from '@backstage/plugin-tech-insights-common'; + ``` + +- Updated dependencies + - @backstage/plugin-tech-insights-common@0.2.10-next.0 + - @backstage/plugin-tech-insights-node@0.4.0-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/types@1.0.2 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.26-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-tech-insights-common@0.2.10-next.0 + - @backstage/plugin-tech-insights-node@0.4.0-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + +## @backstage/plugin-tech-insights-common@0.2.10-next.0 + +### Patch Changes + +- 4024b37449: TechInsightsApi interface now has getFactSchemas() method. + TechInsightsClient now implements method getFactSchemas(). + + **BREAKING** FactSchema type moved from @backstage/plugin-tech-insights-node into @backstage/plugin-tech-insights-common + + These changes are **required** if you were importing this type directly. + + ```diff + - import { FactSchema } from '@backstage/plugin-tech-insights-node'; + + import { FactSchema } from '@backstage/plugin-tech-insights-common'; + ``` + +- Updated dependencies + - @backstage/types@1.0.2 + +## @backstage/plugin-tech-radar@0.6.1-next.0 + +### Patch Changes + +- 18024a231c: Allow to set additional links to the entry description. +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.10-next.1 + +### Patch Changes + +- d950d3e217: Depend on `@material-ui/core` version `^4.12.2` like all other in-repo packages +- Updated dependencies + - @backstage/plugin-techdocs@1.5.0-next.1 + - @backstage/plugin-catalog@1.8.0-next.1 + - @backstage/core-app-api@1.4.1-next.0 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/test-utils@1.2.5-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-techdocs-react@1.1.3-next.1 + +## @backstage/plugin-techdocs-backend@1.5.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-search-common@1.2.1 + - @backstage/plugin-techdocs-node@1.4.6-next.1 + +## @backstage/plugin-techdocs-module-addons-contrib@1.0.10-next.1 + +### Patch Changes + +- d950d3e217: Depend on `@material-ui/core` version `^4.12.2` like all other in-repo packages +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration@1.4.2 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-techdocs-react@1.1.3-next.1 + +## @backstage/plugin-techdocs-node@1.4.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/integration-aws-node@0.1.1 + - @backstage/plugin-search-common@1.2.1 + +## @backstage/plugin-techdocs-react@1.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/version-bridge@1.0.3 + +## @backstage/plugin-todo@0.2.17-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-todo-backend@0.1.39-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + +## @backstage/plugin-user-settings@0.6.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.4.1-next.0 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + +## @backstage/plugin-user-settings-backend@0.1.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/errors@1.1.4 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.11-next.1 + +## @backstage/plugin-vault@0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + +## @backstage/plugin-vault-backend@0.2.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/backend-test-utils@0.1.34-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + +## @backstage/plugin-xcmetrics@0.2.35-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + +## example-app@0.2.80-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-react@1.1.0-next.1 + - @backstage/plugin-scaffolder@1.11.0-next.1 + - @backstage/cli@0.22.2-next.0 + - @backstage/plugin-techdocs@1.5.0-next.1 + - @backstage/plugin-tech-insights@0.3.7-next.1 + - @backstage/plugin-search@1.1.0-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.10-next.1 + - @backstage/plugin-dynatrace@2.0.0-next.1 + - @backstage/plugin-playlist@0.1.6-next.1 + - @backstage/plugin-home@0.4.31-next.1 + - @backstage/core-app-api@1.4.1-next.0 + - @backstage/plugin-kubernetes@0.7.8-next.1 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-tech-radar@0.6.1-next.0 + - @backstage/plugin-explore@0.4.0-next.1 + - @backstage/plugin-apache-airflow@0.2.8-next.0 + - @backstage/plugin-circleci@0.3.15-next.1 + - @backstage/plugin-sentry@0.4.8-next.1 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/plugin-airbrake@0.3.15-next.1 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/app-defaults@1.1.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-api-docs@0.8.15-next.1 + - @backstage/plugin-azure-devops@0.2.6-next.1 + - @backstage/plugin-azure-sites@0.1.4-next.1 + - @backstage/plugin-badges@0.2.39-next.1 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-catalog-graph@0.2.27-next.1 + - @backstage/plugin-catalog-import@0.9.5-next.1 + - @backstage/plugin-cloudbuild@0.3.15-next.1 + - @backstage/plugin-code-coverage@0.2.8-next.1 + - @backstage/plugin-cost-insights@0.12.4-next.1 + - @backstage/plugin-gcalendar@0.3.11-next.0 + - @backstage/plugin-gcp-projects@0.3.34-next.0 + - @backstage/plugin-github-actions@0.5.15-next.1 + - @backstage/plugin-gocd@0.1.21-next.1 + - @backstage/plugin-graphiql@0.2.47-next.0 + - @backstage/plugin-jenkins@0.7.14-next.1 + - @backstage/plugin-kafka@0.3.15-next.1 + - @backstage/plugin-lighthouse@0.3.15-next.1 + - @backstage/plugin-newrelic@0.3.33-next.0 + - @backstage/plugin-newrelic-dashboard@0.2.8-next.1 + - @backstage/plugin-org@0.6.5-next.1 + - @backstage/plugin-pagerduty@0.5.8-next.1 + - @backstage/plugin-permission-react@0.4.9 + - @backstage/plugin-rollbar@0.4.15-next.1 + - @backstage/plugin-search-common@1.2.1 + - @backstage/plugin-shortcuts@0.3.7-next.0 + - @backstage/plugin-stack-overflow@0.1.11-next.1 + - @backstage/plugin-techdocs-react@1.1.3-next.1 + - @backstage/plugin-todo@0.2.17-next.1 + - @backstage/plugin-user-settings@0.6.3-next.1 + - @internal/plugin-catalog-customized@0.0.7-next.1 + +## example-backend@0.2.80-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/plugin-tech-insights-backend@0.5.8-next.1 + - @backstage/plugin-tech-insights-node@0.4.0-next.1 + - @backstage/plugin-azure-devops-backend@0.3.21-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/plugin-kubernetes-backend@0.9.3-next.1 + - @backstage/plugin-scaffolder-backend@1.11.0-next.1 + - @backstage/plugin-playlist-backend@0.2.5-next.1 + - example-app@0.2.80-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/integration@1.4.2 + - @backstage/plugin-adr-backend@0.2.7-next.1 + - @backstage/plugin-app-backend@0.3.42-next.1 + - @backstage/plugin-auth-backend@0.17.5-next.1 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-azure-sites-backend@0.1.4-next.1 + - @backstage/plugin-badges-backend@0.1.36-next.1 + - @backstage/plugin-catalog-node@1.3.3-next.1 + - @backstage/plugin-code-coverage-backend@0.2.8-next.1 + - @backstage/plugin-events-backend@0.2.3-next.1 + - @backstage/plugin-events-node@0.2.3-next.1 + - @backstage/plugin-explore-backend@0.0.4-next.1 + - @backstage/plugin-graphql-backend@0.1.32-next.1 + - @backstage/plugin-jenkins-backend@0.1.32-next.1 + - @backstage/plugin-kafka-backend@0.2.35-next.1 + - @backstage/plugin-permission-backend@0.5.17-next.1 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-permission-node@0.7.5-next.1 + - @backstage/plugin-proxy-backend@0.2.36-next.1 + - @backstage/plugin-rollbar-backend@0.1.39-next.1 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.10-next.1 + - @backstage/plugin-search-backend@1.2.3-next.1 + - @backstage/plugin-search-backend-module-elasticsearch@1.1.3-next.1 + - @backstage/plugin-search-backend-module-pg@0.5.3-next.1 + - @backstage/plugin-search-backend-node@1.1.3-next.1 + - @backstage/plugin-search-common@1.2.1 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.26-next.1 + - @backstage/plugin-techdocs-backend@1.5.3-next.1 + - @backstage/plugin-todo-backend@0.1.39-next.1 + +## example-backend-next@0.0.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/plugin-scaffolder-backend@1.11.0-next.1 + - @backstage/backend-defaults@0.1.7-next.1 + - @backstage/plugin-app-backend@0.3.42-next.1 + +## techdocs-cli-embedded-app@0.2.79-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.22.2-next.0 + - @backstage/plugin-techdocs@1.5.0-next.1 + - @backstage/plugin-catalog@1.8.0-next.1 + - @backstage/core-app-api@1.4.1-next.0 + - @backstage/core-components@0.12.4-next.0 + - @backstage/app-defaults@1.1.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/test-utils@1.2.5-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-techdocs-react@1.1.3-next.1 + +## @internal/plugin-catalog-customized@0.0.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog@1.8.0-next.1 + - @backstage/plugin-catalog-react@1.3.0-next.1 + +## @internal/plugin-todo-list@1.0.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + +## @internal/plugin-todo-list-backend@1.0.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-auth-node@0.2.11-next.1 diff --git a/package.json b/package.json index d458fadb9d..912dd53b8a 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "@types/react": "^17", "@types/react-dom": "^17" }, - "version": "1.11.0-next.0", + "version": "1.11.0-next.1", "dependencies": { "@backstage/errors": "workspace:^", "@manypkg/get-packages": "^1.1.3" diff --git a/packages/app-defaults/CHANGELOG.md b/packages/app-defaults/CHANGELOG.md index 9a492ecaf7..ecd6c448d5 100644 --- a/packages/app-defaults/CHANGELOG.md +++ b/packages/app-defaults/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/app-defaults +## 1.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.4.1-next.0 + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-permission-react@0.4.9 + ## 1.1.0 ### Minor Changes diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index edfad83e78..793baff253 100644 --- a/packages/app-defaults/package.json +++ b/packages/app-defaults/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/app-defaults", "description": "Provides the default wiring of a Backstage App", - "version": "1.1.0", + "version": "1.1.1-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index 308dca26c5..a541927bf4 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,69 @@ # example-app +## 0.2.80-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-react@1.1.0-next.1 + - @backstage/plugin-scaffolder@1.11.0-next.1 + - @backstage/cli@0.22.2-next.0 + - @backstage/plugin-techdocs@1.5.0-next.1 + - @backstage/plugin-tech-insights@0.3.7-next.1 + - @backstage/plugin-search@1.1.0-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.10-next.1 + - @backstage/plugin-dynatrace@2.0.0-next.1 + - @backstage/plugin-playlist@0.1.6-next.1 + - @backstage/plugin-home@0.4.31-next.1 + - @backstage/core-app-api@1.4.1-next.0 + - @backstage/plugin-kubernetes@0.7.8-next.1 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-tech-radar@0.6.1-next.0 + - @backstage/plugin-explore@0.4.0-next.1 + - @backstage/plugin-apache-airflow@0.2.8-next.0 + - @backstage/plugin-circleci@0.3.15-next.1 + - @backstage/plugin-sentry@0.4.8-next.1 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/plugin-airbrake@0.3.15-next.1 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/app-defaults@1.1.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-api-docs@0.8.15-next.1 + - @backstage/plugin-azure-devops@0.2.6-next.1 + - @backstage/plugin-azure-sites@0.1.4-next.1 + - @backstage/plugin-badges@0.2.39-next.1 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-catalog-graph@0.2.27-next.1 + - @backstage/plugin-catalog-import@0.9.5-next.1 + - @backstage/plugin-cloudbuild@0.3.15-next.1 + - @backstage/plugin-code-coverage@0.2.8-next.1 + - @backstage/plugin-cost-insights@0.12.4-next.1 + - @backstage/plugin-gcalendar@0.3.11-next.0 + - @backstage/plugin-gcp-projects@0.3.34-next.0 + - @backstage/plugin-github-actions@0.5.15-next.1 + - @backstage/plugin-gocd@0.1.21-next.1 + - @backstage/plugin-graphiql@0.2.47-next.0 + - @backstage/plugin-jenkins@0.7.14-next.1 + - @backstage/plugin-kafka@0.3.15-next.1 + - @backstage/plugin-lighthouse@0.3.15-next.1 + - @backstage/plugin-newrelic@0.3.33-next.0 + - @backstage/plugin-newrelic-dashboard@0.2.8-next.1 + - @backstage/plugin-org@0.6.5-next.1 + - @backstage/plugin-pagerduty@0.5.8-next.1 + - @backstage/plugin-permission-react@0.4.9 + - @backstage/plugin-rollbar@0.4.15-next.1 + - @backstage/plugin-search-common@1.2.1 + - @backstage/plugin-shortcuts@0.3.7-next.0 + - @backstage/plugin-stack-overflow@0.1.11-next.1 + - @backstage/plugin-techdocs-react@1.1.3-next.1 + - @backstage/plugin-todo@0.2.17-next.1 + - @backstage/plugin-user-settings@0.6.3-next.1 + - @internal/plugin-catalog-customized@0.0.7-next.1 + ## 0.2.80-next.0 ### Patch Changes diff --git a/packages/app/package.json b/packages/app/package.json index f1edc7ee0e..f6631ed05b 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "example-app", - "version": "0.2.80-next.0", + "version": "0.2.80-next.1", "private": true, "backstage": { "role": "frontend" diff --git a/packages/backend-app-api/CHANGELOG.md b/packages/backend-app-api/CHANGELOG.md index 29ad23e886..6e7dcbfde5 100644 --- a/packages/backend-app-api/CHANGELOG.md +++ b/packages/backend-app-api/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/backend-app-api +## 0.3.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/cli-common@0.1.11 + - @backstage/config@1.0.6 + - @backstage/config-loader@1.1.8 + - @backstage/errors@1.1.4 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-permission-node@0.7.5-next.1 + ## 0.3.2-next.0 ### Patch Changes diff --git a/packages/backend-app-api/package.json b/packages/backend-app-api/package.json index ef34fbdb25..0bd4eab227 100644 --- a/packages/backend-app-api/package.json +++ b/packages/backend-app-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-app-api", "description": "Core API used by Backstage backend apps", - "version": "0.3.2-next.0", + "version": "0.3.2-next.1", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-common/CHANGELOG.md b/packages/backend-common/CHANGELOG.md index d9bbd21600..f8090ae971 100644 --- a/packages/backend-common/CHANGELOG.md +++ b/packages/backend-common/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/backend-common +## 0.18.2-next.1 + +### Patch Changes + +- 628e2bd89a: Updated dependency `@kubernetes/client-node` to `0.18.1`. +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-app-api@0.3.2-next.1 + - @backstage/cli-common@0.1.11 + - @backstage/config@1.0.6 + - @backstage/config-loader@1.1.8 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + ## 0.18.2-next.0 ### Patch Changes diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 69f48c0a82..c950950680 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-common", "description": "Common functionality library for Backstage backends", - "version": "0.18.2-next.0", + "version": "0.18.2-next.1", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-defaults/CHANGELOG.md b/packages/backend-defaults/CHANGELOG.md index e91a1dede3..0824ee5655 100644 --- a/packages/backend-defaults/CHANGELOG.md +++ b/packages/backend-defaults/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/backend-defaults +## 0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-app-api@0.3.2-next.1 + ## 0.1.7-next.0 ### Patch Changes diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index 1d9e7823e5..6b1b173205 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-defaults", "description": "Backend defaults used by Backstage backend apps", - "version": "0.1.7-next.0", + "version": "0.1.7-next.1", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-next/CHANGELOG.md b/packages/backend-next/CHANGELOG.md index db0f44fcb2..914835b1c4 100644 --- a/packages/backend-next/CHANGELOG.md +++ b/packages/backend-next/CHANGELOG.md @@ -1,5 +1,15 @@ # example-backend-next +## 0.0.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/plugin-scaffolder-backend@1.11.0-next.1 + - @backstage/backend-defaults@0.1.7-next.1 + - @backstage/plugin-app-backend@0.3.42-next.1 + ## 0.0.8-next.0 ### Patch Changes diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index 29aad2b6b3..cc537ef514 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -1,6 +1,6 @@ { "name": "example-backend-next", - "version": "0.0.8-next.0", + "version": "0.0.8-next.1", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/backend-plugin-api/CHANGELOG.md b/packages/backend-plugin-api/CHANGELOG.md index cbdd69cd40..3ad0715538 100644 --- a/packages/backend-plugin-api/CHANGELOG.md +++ b/packages/backend-plugin-api/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/backend-plugin-api +## 0.3.2-next.1 + +### Patch Changes + +- ae88f61e00: The `register` methods passed to `createBackendPlugin` and `createBackendModule` + now have dedicated `BackendPluginRegistrationPoints` and + `BackendModuleRegistrationPoints` arguments, respectively. This lets us make it + clear on a type level that it's not possible to pass in extension points as + dependencies to plugins (should only ever be done for modules). This has no + practical effect on code that was already well behaved. +- Updated dependencies + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/config@1.0.6 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-permission-common@0.7.3 + ## 0.3.2-next.0 ### Patch Changes diff --git a/packages/backend-plugin-api/package.json b/packages/backend-plugin-api/package.json index 41164e7870..954112bc2d 100644 --- a/packages/backend-plugin-api/package.json +++ b/packages/backend-plugin-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-plugin-api", "description": "Core API used by Backstage backend plugins", - "version": "0.3.2-next.0", + "version": "0.3.2-next.1", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-tasks/CHANGELOG.md b/packages/backend-tasks/CHANGELOG.md index a6a8b85616..04ce4e9c3b 100644 --- a/packages/backend-tasks/CHANGELOG.md +++ b/packages/backend-tasks/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/backend-tasks +## 0.4.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/types@1.0.2 + ## 0.4.3-next.0 ### Patch Changes diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json index e63077c1e6..574f3dc812 100644 --- a/packages/backend-tasks/package.json +++ b/packages/backend-tasks/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-tasks", "description": "Common distributed task management library for Backstage backends", - "version": "0.4.3-next.0", + "version": "0.4.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-test-utils/CHANGELOG.md b/packages/backend-test-utils/CHANGELOG.md index 47d6023d62..f532e08d81 100644 --- a/packages/backend-test-utils/CHANGELOG.md +++ b/packages/backend-test-utils/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/backend-test-utils +## 0.1.34-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.22.2-next.0 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-app-api@0.3.2-next.1 + - @backstage/config@1.0.6 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.11-next.1 + ## 0.1.34-next.0 ### Patch Changes diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index 949cf9d299..a01dbaf0fa 100644 --- a/packages/backend-test-utils/package.json +++ b/packages/backend-test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-test-utils", "description": "Test helpers library for Backstage backends", - "version": "0.1.34-next.0", + "version": "0.1.34-next.1", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md index bcff085d0b..24b00f192c 100644 --- a/packages/backend/CHANGELOG.md +++ b/packages/backend/CHANGELOG.md @@ -1,5 +1,53 @@ # example-backend +## 0.2.80-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/plugin-tech-insights-backend@0.5.8-next.1 + - @backstage/plugin-tech-insights-node@0.4.0-next.1 + - @backstage/plugin-azure-devops-backend@0.3.21-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/plugin-kubernetes-backend@0.9.3-next.1 + - @backstage/plugin-scaffolder-backend@1.11.0-next.1 + - @backstage/plugin-playlist-backend@0.2.5-next.1 + - example-app@0.2.80-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/integration@1.4.2 + - @backstage/plugin-adr-backend@0.2.7-next.1 + - @backstage/plugin-app-backend@0.3.42-next.1 + - @backstage/plugin-auth-backend@0.17.5-next.1 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-azure-sites-backend@0.1.4-next.1 + - @backstage/plugin-badges-backend@0.1.36-next.1 + - @backstage/plugin-catalog-node@1.3.3-next.1 + - @backstage/plugin-code-coverage-backend@0.2.8-next.1 + - @backstage/plugin-events-backend@0.2.3-next.1 + - @backstage/plugin-events-node@0.2.3-next.1 + - @backstage/plugin-explore-backend@0.0.4-next.1 + - @backstage/plugin-graphql-backend@0.1.32-next.1 + - @backstage/plugin-jenkins-backend@0.1.32-next.1 + - @backstage/plugin-kafka-backend@0.2.35-next.1 + - @backstage/plugin-permission-backend@0.5.17-next.1 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-permission-node@0.7.5-next.1 + - @backstage/plugin-proxy-backend@0.2.36-next.1 + - @backstage/plugin-rollbar-backend@0.1.39-next.1 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.10-next.1 + - @backstage/plugin-search-backend@1.2.3-next.1 + - @backstage/plugin-search-backend-module-elasticsearch@1.1.3-next.1 + - @backstage/plugin-search-backend-module-pg@0.5.3-next.1 + - @backstage/plugin-search-backend-node@1.1.3-next.1 + - @backstage/plugin-search-common@1.2.1 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.26-next.1 + - @backstage/plugin-techdocs-backend@1.5.3-next.1 + - @backstage/plugin-todo-backend@0.1.39-next.1 + ## 0.2.80-next.0 ### Patch Changes diff --git a/packages/backend/package.json b/packages/backend/package.json index 27c7a60419..76a538560f 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -1,6 +1,6 @@ { "name": "example-backend", - "version": "0.2.80-next.0", + "version": "0.2.80-next.1", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 25a0704f56..caf890a14f 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/cli +## 0.22.2-next.0 + +### Patch Changes + +- 561df21ea3: The `backstage-cli repo test` command now sets a default Jest `--workerIdleMemoryLimit` of 1GB. If needed to ensure that tests are not run in band, `--maxWorkers=2` is set as well. This is the recommended workaround for dealing with Jest workers leaking memory and eventually hitting the heap limit. +- 2815981057: Show module name causing error during build +- 66cf22fdc4: Updated dependency `esbuild` to `^0.17.0`. +- 6d3abfded1: Switch to inline source maps for test transpilation, simplifying editor setups. +- Updated dependencies + - @backstage/cli-common@0.1.11 + - @backstage/config@1.0.6 + - @backstage/config-loader@1.1.8 + - @backstage/errors@1.1.4 + - @backstage/release-manifests@0.0.8 + - @backstage/types@1.0.2 + ## 0.22.1 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 59bb880ffb..909ac8460c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/cli", "description": "CLI for developing Backstage plugins and apps", - "version": "0.22.1", + "version": "0.22.2-next.0", "publishConfig": { "access": "public" }, diff --git a/packages/core-app-api/CHANGELOG.md b/packages/core-app-api/CHANGELOG.md index 0d059f7b46..1d682dbc4a 100644 --- a/packages/core-app-api/CHANGELOG.md +++ b/packages/core-app-api/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/core-app-api +## 1.4.1-next.0 + +### Patch Changes + +- dff4d8ddb1: Fixed an issue where an explicit port the frontend base URL could break the app. +- Updated dependencies + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.3 + ## 1.4.0 ### Minor Changes diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json index 330405d853..391771bd5c 100644 --- a/packages/core-app-api/package.json +++ b/packages/core-app-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core-app-api", "description": "Core app API used by Backstage apps", - "version": "1.4.0", + "version": "1.4.1-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/core-components/CHANGELOG.md b/packages/core-components/CHANGELOG.md index a46acb0897..efded8f3c1 100644 --- a/packages/core-components/CHANGELOG.md +++ b/packages/core-components/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/core-components +## 0.12.4-next.0 + +### Patch Changes + +- 910015f5b7: The Button component has been deprecated in favor of the LinkButton component +- 20840b36b4: Adds new type, TableOptions, extending Material Table Options. +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/version-bridge@1.0.3 + ## 0.12.3 ### Patch Changes diff --git a/packages/core-components/package.json b/packages/core-components/package.json index 72f8b069bf..dc65108d4a 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core-components", "description": "Core components used by Backstage plugins and apps", - "version": "0.12.3", + "version": "0.12.4-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md index 6eab052028..4b757a47c9 100644 --- a/packages/create-app/CHANGELOG.md +++ b/packages/create-app/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/create-app +## 0.4.37-next.1 + +### Patch Changes + +- 86a8dfd7b0: Added a check to ensure that Yarn v1 is used when creating new projects. +- 0eaa579f89: Update `SearchPage` template to use `SearchResult` extensions. +- Updated dependencies + - @backstage/cli-common@0.1.11 + ## 0.4.37-next.0 ### Patch Changes diff --git a/packages/create-app/package.json b/packages/create-app/package.json index 05674c9673..e87dc7b0ac 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/create-app", "description": "A CLI that helps you create your own Backstage app", - "version": "0.4.37-next.0", + "version": "0.4.37-next.1", "publishConfig": { "access": "public" }, diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 225f8984f4..0b66dd3019 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/dev-utils +## 1.0.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.4.1-next.0 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/app-defaults@1.1.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/test-utils@1.2.5-next.0 + - @backstage/theme@0.2.16 + ## 1.0.12-next.0 ### Patch Changes diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index c8bcae4365..b00f5e58a2 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/dev-utils", "description": "Utilities for developing Backstage plugins.", - "version": "1.0.12-next.0", + "version": "1.0.12-next.1", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/integration-react/CHANGELOG.md b/packages/integration-react/CHANGELOG.md index 27ee4dd712..5e880265f8 100644 --- a/packages/integration-react/CHANGELOG.md +++ b/packages/integration-react/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/integration-react +## 1.1.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration@1.4.2 + - @backstage/theme@0.2.16 + ## 1.1.9 ### Patch Changes diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index d0eb4e8620..8fdc8d4841 100644 --- a/packages/integration-react/package.json +++ b/packages/integration-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/integration-react", "description": "Frontend package for managing integrations towards external systems", - "version": "1.1.9", + "version": "1.1.10-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/techdocs-cli-embedded-app/CHANGELOG.md b/packages/techdocs-cli-embedded-app/CHANGELOG.md index 3f00a6a03d..f82207ff06 100644 --- a/packages/techdocs-cli-embedded-app/CHANGELOG.md +++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md @@ -1,5 +1,24 @@ # techdocs-cli-embedded-app +## 0.2.79-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.22.2-next.0 + - @backstage/plugin-techdocs@1.5.0-next.1 + - @backstage/plugin-catalog@1.8.0-next.1 + - @backstage/core-app-api@1.4.1-next.0 + - @backstage/core-components@0.12.4-next.0 + - @backstage/app-defaults@1.1.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/test-utils@1.2.5-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-techdocs-react@1.1.3-next.1 + ## 0.2.79-next.0 ### Patch Changes diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index 83b188a90a..68d443db99 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -1,6 +1,6 @@ { "name": "techdocs-cli-embedded-app", - "version": "0.2.79-next.0", + "version": "0.2.79-next.1", "private": true, "backstage": { "role": "frontend" diff --git a/packages/techdocs-cli/CHANGELOG.md b/packages/techdocs-cli/CHANGELOG.md index 4b2566e6e2..8e0bc02dca 100644 --- a/packages/techdocs-cli/CHANGELOG.md +++ b/packages/techdocs-cli/CHANGELOG.md @@ -1,5 +1,16 @@ # @techdocs/cli +## 1.3.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/cli-common@0.1.11 + - @backstage/config@1.0.6 + - @backstage/plugin-techdocs-node@1.4.6-next.1 + ## 1.3.2-next.0 ### Patch Changes diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index f60a95840c..4e6bde27c2 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -1,7 +1,7 @@ { "name": "@techdocs/cli", "description": "Utility CLI for managing TechDocs sites in Backstage.", - "version": "1.3.2-next.0", + "version": "1.3.2-next.1", "publishConfig": { "access": "public" }, diff --git a/packages/test-utils/CHANGELOG.md b/packages/test-utils/CHANGELOG.md index 5738586f5c..72ef042554 100644 --- a/packages/test-utils/CHANGELOG.md +++ b/packages/test-utils/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/test-utils +## 1.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.4.1-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-permission-react@0.4.9 + ## 1.2.4 ### Patch Changes diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index c3f9349390..396bbcc4ed 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/test-utils", "description": "Utilities to test Backstage plugins and apps.", - "version": "1.2.4", + "version": "1.2.5-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/plugins/adr-backend/CHANGELOG.md b/plugins/adr-backend/CHANGELOG.md index c03478eb10..c791947589 100644 --- a/plugins/adr-backend/CHANGELOG.md +++ b/plugins/adr-backend/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-adr-backend +## 0.2.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/plugin-adr-common@0.2.6-next.0 + - @backstage/plugin-search-common@1.2.1 + ## 0.2.7-next.0 ### Patch Changes diff --git a/plugins/adr-backend/package.json b/plugins/adr-backend/package.json index 17b91e62ef..0c74df5cf2 100644 --- a/plugins/adr-backend/package.json +++ b/plugins/adr-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-adr-backend", - "version": "0.2.7-next.0", + "version": "0.2.7-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/adr/CHANGELOG.md b/plugins/adr/CHANGELOG.md index a1a9592ace..6f9a6b4be6 100644 --- a/plugins/adr/CHANGELOG.md +++ b/plugins/adr/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-adr +## 0.3.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-adr-common@0.2.6-next.0 + - @backstage/plugin-search-common@1.2.1 + ## 0.3.1-next.0 ### Patch Changes diff --git a/plugins/adr/package.json b/plugins/adr/package.json index e8e7de06e6..9d915b7af7 100644 --- a/plugins/adr/package.json +++ b/plugins/adr/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-adr", - "version": "0.3.1-next.0", + "version": "0.3.1-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/airbrake-backend/CHANGELOG.md b/plugins/airbrake-backend/CHANGELOG.md index 3bc712aed4..81a9eb4ae1 100644 --- a/plugins/airbrake-backend/CHANGELOG.md +++ b/plugins/airbrake-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-airbrake-backend +## 0.2.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + ## 0.2.15-next.0 ### Patch Changes diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index f4edd43590..9d56c6defa 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake-backend", - "version": "0.2.15-next.0", + "version": "0.2.15-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/airbrake/CHANGELOG.md b/plugins/airbrake/CHANGELOG.md index dde141d741..4132257d2e 100644 --- a/plugins/airbrake/CHANGELOG.md +++ b/plugins/airbrake/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-airbrake +## 0.3.15-next.1 + +### Patch Changes + +- 41377156d0: Adds a boolean helper function to airbrake plugin for use on the EntityPage to show/hide airbrake tab depending on whether the entity's catalog-info.yml has an airbrake id set in the metadata +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/dev-utils@1.0.12-next.1 + - @backstage/test-utils@1.2.5-next.0 + - @backstage/theme@0.2.16 + ## 0.3.15-next.0 ### Patch Changes diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 6ff67eb3b2..d87b734674 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake", - "version": "0.3.15-next.0", + "version": "0.3.15-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/allure/CHANGELOG.md b/plugins/allure/CHANGELOG.md index 9936e8c727..4bc73ee469 100644 --- a/plugins/allure/CHANGELOG.md +++ b/plugins/allure/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-allure +## 0.1.31-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.1.31-next.0 ### Patch Changes diff --git a/plugins/allure/package.json b/plugins/allure/package.json index 7398ac2f54..a36762e5ac 100644 --- a/plugins/allure/package.json +++ b/plugins/allure/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-allure", "description": "A Backstage plugin that integrates with Allure", - "version": "0.1.31-next.0", + "version": "0.1.31-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/analytics-module-ga/CHANGELOG.md b/plugins/analytics-module-ga/CHANGELOG.md index d5e21c3b19..0114443617 100644 --- a/plugins/analytics-module-ga/CHANGELOG.md +++ b/plugins/analytics-module-ga/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-analytics-module-ga +## 0.1.26-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.1.25 ### Patch Changes diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index 01d9e78cfa..17ee33eea9 100644 --- a/plugins/analytics-module-ga/package.json +++ b/plugins/analytics-module-ga/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-analytics-module-ga", - "version": "0.1.25", + "version": "0.1.26-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/apache-airflow/CHANGELOG.md b/plugins/apache-airflow/CHANGELOG.md index 0b4287a4fb..e597c164a0 100644 --- a/plugins/apache-airflow/CHANGELOG.md +++ b/plugins/apache-airflow/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-apache-airflow +## 0.2.8-next.0 + +### Patch Changes + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + ## 0.2.7 ### Patch Changes diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index b22e44e7e6..c589a58557 100644 --- a/plugins/apache-airflow/package.json +++ b/plugins/apache-airflow/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-apache-airflow", - "version": "0.2.7", + "version": "0.2.8-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/api-docs/CHANGELOG.md b/plugins/api-docs/CHANGELOG.md index ac424c63cb..b002e4c373 100644 --- a/plugins/api-docs/CHANGELOG.md +++ b/plugins/api-docs/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-api-docs +## 0.8.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog@1.8.0-next.1 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.8.15-next.0 ### Patch Changes diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index a7ad050db1..e6dd3d6e1f 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-api-docs", "description": "A Backstage plugin that helps represent API entities in the frontend", - "version": "0.8.15-next.0", + "version": "0.8.15-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/apollo-explorer/CHANGELOG.md b/plugins/apollo-explorer/CHANGELOG.md index a123d9c7ed..df9c9d8270 100644 --- a/plugins/apollo-explorer/CHANGELOG.md +++ b/plugins/apollo-explorer/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-apollo-explorer +## 0.1.8-next.0 + +### Patch Changes + +- d950d3e217: Depend on `@material-ui/core` version `^4.12.2` like all other in-repo packages +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.1.7 ### Patch Changes diff --git a/plugins/apollo-explorer/package.json b/plugins/apollo-explorer/package.json index af22c04a06..713ad945ad 100644 --- a/plugins/apollo-explorer/package.json +++ b/plugins/apollo-explorer/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-apollo-explorer", - "version": "0.1.7", + "version": "0.1.8-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/app-backend/CHANGELOG.md b/plugins/app-backend/CHANGELOG.md index 92b5e137fd..a8a9ca7edf 100644 --- a/plugins/app-backend/CHANGELOG.md +++ b/plugins/app-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-app-backend +## 0.3.42-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/config@1.0.6 + - @backstage/config-loader@1.1.8 + - @backstage/types@1.0.2 + ## 0.3.42-next.0 ### Patch Changes diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index a2c631be3c..d434749619 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-app-backend", "description": "A Backstage backend plugin that serves the Backstage frontend app", - "version": "0.3.42-next.0", + "version": "0.3.42-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend/CHANGELOG.md b/plugins/auth-backend/CHANGELOG.md index cd39dba0f5..a1bee43423 100644 --- a/plugins/auth-backend/CHANGELOG.md +++ b/plugins/auth-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-auth-backend +## 0.17.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.11-next.1 + ## 0.17.5-next.0 ### Patch Changes diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 1b47bd6ba5..a95465dbad 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend", "description": "A Backstage backend plugin that handles authentication", - "version": "0.17.5-next.0", + "version": "0.17.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-node/CHANGELOG.md b/plugins/auth-node/CHANGELOG.md index c675d75b0f..d569650cd5 100644 --- a/plugins/auth-node/CHANGELOG.md +++ b/plugins/auth-node/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-auth-node +## 0.2.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + ## 0.2.11-next.0 ### Patch Changes diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json index 5b1c29c7d7..5d0748cdee 100644 --- a/plugins/auth-node/package.json +++ b/plugins/auth-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-node", - "version": "0.2.11-next.0", + "version": "0.2.11-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-devops-backend/CHANGELOG.md b/plugins/azure-devops-backend/CHANGELOG.md index 7cfd680a24..2c7f39f8b3 100644 --- a/plugins/azure-devops-backend/CHANGELOG.md +++ b/plugins/azure-devops-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-azure-devops-backend +## 0.3.21-next.1 + +### Patch Changes + +- cc926a59bd: Fixed a bug where the azure devops host in URLs on the readme card was being URL encoded, breaking hosts with ports. +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-azure-devops-common@0.3.0 + ## 0.3.21-next.0 ### Patch Changes diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index 4960d8e56a..c62602a8f5 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-devops-backend", - "version": "0.3.21-next.0", + "version": "0.3.21-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-devops/CHANGELOG.md b/plugins/azure-devops/CHANGELOG.md index 1a0d559ab1..e6ab23c37c 100644 --- a/plugins/azure-devops/CHANGELOG.md +++ b/plugins/azure-devops/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-azure-devops +## 0.2.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/plugin-azure-devops-common@0.3.0 + ## 0.2.6-next.0 ### Patch Changes diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index 87c9521443..71ff024078 100644 --- a/plugins/azure-devops/package.json +++ b/plugins/azure-devops/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-devops", - "version": "0.2.6-next.0", + "version": "0.2.6-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-sites-backend/CHANGELOG.md b/plugins/azure-sites-backend/CHANGELOG.md index be020f508b..30e29db0ae 100644 --- a/plugins/azure-sites-backend/CHANGELOG.md +++ b/plugins/azure-sites-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-azure-sites-backend +## 0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-azure-sites-common@0.1.0 + ## 0.1.4-next.0 ### Patch Changes diff --git a/plugins/azure-sites-backend/package.json b/plugins/azure-sites-backend/package.json index 829ed89f6a..fbc98b0d5e 100644 --- a/plugins/azure-sites-backend/package.json +++ b/plugins/azure-sites-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-sites-backend", - "version": "0.1.4-next.0", + "version": "0.1.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-sites/CHANGELOG.md b/plugins/azure-sites/CHANGELOG.md index 0b7ea2a680..32c55b424c 100644 --- a/plugins/azure-sites/CHANGELOG.md +++ b/plugins/azure-sites/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-azure-sites +## 0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-azure-sites-common@0.1.0 + ## 0.1.4-next.0 ### Patch Changes diff --git a/plugins/azure-sites/package.json b/plugins/azure-sites/package.json index b636065426..a2032f9292 100644 --- a/plugins/azure-sites/package.json +++ b/plugins/azure-sites/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-sites", - "version": "0.1.4-next.0", + "version": "0.1.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/badges-backend/CHANGELOG.md b/plugins/badges-backend/CHANGELOG.md index 1a703ba72f..c3ed18ac63 100644 --- a/plugins/badges-backend/CHANGELOG.md +++ b/plugins/badges-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-badges-backend +## 0.1.36-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + ## 0.1.36-next.0 ### Patch Changes diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index bcc39f4c96..33e945bfd0 100644 --- a/plugins/badges-backend/package.json +++ b/plugins/badges-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-badges-backend", "description": "A Backstage backend plugin that generates README badges for your entities", - "version": "0.1.36-next.0", + "version": "0.1.36-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/badges/CHANGELOG.md b/plugins/badges/CHANGELOG.md index 0ee582ecea..c58757b38d 100644 --- a/plugins/badges/CHANGELOG.md +++ b/plugins/badges/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-badges +## 0.2.39-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + ## 0.2.39-next.0 ### Patch Changes diff --git a/plugins/badges/package.json b/plugins/badges/package.json index 717224216d..8e6eb3c88d 100644 --- a/plugins/badges/package.json +++ b/plugins/badges/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-badges", "description": "A Backstage plugin that generates README badges for your entities", - "version": "0.2.39-next.0", + "version": "0.2.39-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bazaar-backend/CHANGELOG.md b/plugins/bazaar-backend/CHANGELOG.md index 6c98a2125d..6fc165aebc 100644 --- a/plugins/bazaar-backend/CHANGELOG.md +++ b/plugins/bazaar-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-bazaar-backend +## 0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-test-utils@0.1.34-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-auth-node@0.2.11-next.1 + ## 0.2.5-next.0 ### Patch Changes diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json index fe9893dbbb..166aca7c44 100644 --- a/plugins/bazaar-backend/package.json +++ b/plugins/bazaar-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar-backend", - "version": "0.2.5-next.0", + "version": "0.2.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bazaar/CHANGELOG.md b/plugins/bazaar/CHANGELOG.md index aab91930cb..a24a4164ce 100644 --- a/plugins/bazaar/CHANGELOG.md +++ b/plugins/bazaar/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-bazaar +## 0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.22.2-next.0 + - @backstage/plugin-catalog@1.8.0-next.1 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + ## 0.2.4-next.0 ### Patch Changes diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index c949415d13..d4d88176d8 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar", - "version": "0.2.4-next.0", + "version": "0.2.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bitrise/CHANGELOG.md b/plugins/bitrise/CHANGELOG.md index a41c9ed630..be81c9f7af 100644 --- a/plugins/bitrise/CHANGELOG.md +++ b/plugins/bitrise/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-bitrise +## 0.1.42-next.1 + +### Patch Changes + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.1.42-next.0 ### Patch Changes diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index cf3515aa89..3f064430cc 100644 --- a/plugins/bitrise/package.json +++ b/plugins/bitrise/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-bitrise", "description": "A Backstage plugin that integrates towards Bitrise", - "version": "0.1.42-next.0", + "version": "0.1.42-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-aws/CHANGELOG.md b/plugins/catalog-backend-module-aws/CHANGELOG.md index 39c217fc58..bea397e7b5 100644 --- a/plugins/catalog-backend-module-aws/CHANGELOG.md +++ b/plugins/catalog-backend-module-aws/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-catalog-backend-module-aws +## 0.1.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.3-next.1 + ## 0.1.15-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json index 4ccc463937..083ed52fab 100644 --- a/plugins/catalog-backend-module-aws/package.json +++ b/plugins/catalog-backend-module-aws/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-aws", "description": "A Backstage catalog backend module that helps integrate towards AWS", - "version": "0.1.15-next.0", + "version": "0.1.15-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-azure/CHANGELOG.md b/plugins/catalog-backend-module-azure/CHANGELOG.md index 33d4ea499c..c71b691a7a 100644 --- a/plugins/catalog-backend-module-azure/CHANGELOG.md +++ b/plugins/catalog-backend-module-azure/CHANGELOG.md @@ -1,5 +1,49 @@ # @backstage/plugin-catalog-backend-module-azure +## 0.1.13-next.1 + +### Patch Changes + +- 2890f47517: This will add the ability to use Azure DevOps with multi project with a single value which is a new feature as previously this had to be done manually for each project that you wanted to add. + + Right now you would have to fill in multiple values in the config to use multiple projects: + + ``` + yourFirstProviderId: # identifies your dataset / provider independent of config changes + organization: myorg + project: 'firstProject' # this will match the firstProject project + repository: '*' # this will match all repos + path: /catalog-info.yaml + yourSecondProviderId: # identifies your dataset / provider independent of config changes + organization: myorg + project: 'secondProject' # this will match the secondProject project + repository: '*' # this will match all repos + path: /catalog-info.yaml + ``` + + With this change you can actually have all projects available where your PAT determines which you have access to, so that includes multiple projects: + + ``` + yourFirstProviderId: # identifies your dataset / provider independent of config changes + organization: myorg + project: '*' # this will match all projects where your PAT has access to + repository: '*' # this will match all repos + path: /catalog-info.yaml + ``` + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.3-next.1 + ## 0.1.13-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json index 366a4e05ee..da7d1f5aa3 100644 --- a/plugins/catalog-backend-module-azure/package.json +++ b/plugins/catalog-backend-module-azure/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-azure", "description": "A Backstage catalog backend module that helps integrate towards Azure", - "version": "0.1.13-next.0", + "version": "0.1.13-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md index 71a876e98a..4cd4b6565c 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-catalog-backend-module-bitbucket-cloud +## 0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/integration@1.4.2 + - @backstage/plugin-bitbucket-cloud-common@0.2.3 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-catalog-node@1.3.3-next.1 + - @backstage/plugin-events-node@0.2.3-next.1 + ## 0.1.9-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket-cloud/package.json b/plugins/catalog-backend-module-bitbucket-cloud/package.json index 9b1c18ddb2..1e1f94ac38 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/package.json +++ b/plugins/catalog-backend-module-bitbucket-cloud/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket-cloud", "description": "A Backstage catalog backend module that helps integrate towards Bitbucket Cloud", - "version": "0.1.9-next.0", + "version": "0.1.9-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md index 1290c701b6..ef7755cf0d 100644 --- a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-catalog-backend-module-bitbucket-server +## 0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/plugin-catalog-node@1.3.3-next.1 + ## 0.1.7-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json index b9b1eff3d4..eba6a276ad 100644 --- a/plugins/catalog-backend-module-bitbucket-server/package.json +++ b/plugins/catalog-backend-module-bitbucket-server/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket-server", - "version": "0.1.7-next.0", + "version": "0.1.7-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md index 390601b255..455abd3f2b 100644 --- a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-catalog-backend-module-bitbucket +## 0.2.9-next.1 + +### Patch Changes + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-bitbucket-cloud-common@0.2.3 + ## 0.2.9-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket/package.json b/plugins/catalog-backend-module-bitbucket/package.json index e5bb59e93d..646f9af81e 100644 --- a/plugins/catalog-backend-module-bitbucket/package.json +++ b/plugins/catalog-backend-module-bitbucket/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket", "description": "A Backstage catalog backend module that helps integrate towards Bitbucket", - "version": "0.2.9-next.0", + "version": "0.2.9-next.1", "deprecated": true, "main": "src/index.ts", "types": "src/index.ts", diff --git a/plugins/catalog-backend-module-gerrit/CHANGELOG.md b/plugins/catalog-backend-module-gerrit/CHANGELOG.md index 80723a0f97..f048780bb7 100644 --- a/plugins/catalog-backend-module-gerrit/CHANGELOG.md +++ b/plugins/catalog-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-catalog-backend-module-gerrit +## 0.1.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/plugin-catalog-node@1.3.3-next.1 + ## 0.1.10-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json index 0ab3e69749..f2327ed216 100644 --- a/plugins/catalog-backend-module-gerrit/package.json +++ b/plugins/catalog-backend-module-gerrit/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-gerrit", - "version": "0.1.10-next.0", + "version": "0.1.10-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-github/CHANGELOG.md b/plugins/catalog-backend-module-github/CHANGELOG.md index d8d457c0c4..430615eabd 100644 --- a/plugins/catalog-backend-module-github/CHANGELOG.md +++ b/plugins/catalog-backend-module-github/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-catalog-backend-module-github +## 0.2.5-next.1 + +### Patch Changes + +- 66158754b4: Add support for filtering out forks +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-catalog-node@1.3.3-next.1 + - @backstage/plugin-events-node@0.2.3-next.1 + ## 0.2.5-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index ae485f101f..d72d520f6a 100644 --- a/plugins/catalog-backend-module-github/package.json +++ b/plugins/catalog-backend-module-github/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-github", "description": "A Backstage catalog backend module that helps integrate towards GitHub", - "version": "0.2.5-next.0", + "version": "0.2.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-gitlab/CHANGELOG.md b/plugins/catalog-backend-module-gitlab/CHANGELOG.md index 36696fc777..9da2c77fdf 100644 --- a/plugins/catalog-backend-module-gitlab/CHANGELOG.md +++ b/plugins/catalog-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-catalog-backend-module-gitlab +## 0.1.13-next.1 + +### Patch Changes + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- 52c5685ceb: Implement Group and User Catalog Provider +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.3-next.1 + ## 0.1.13-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json index dc9f7c9d3a..44aadec29b 100644 --- a/plugins/catalog-backend-module-gitlab/package.json +++ b/plugins/catalog-backend-module-gitlab/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-gitlab", "description": "A Backstage catalog backend module that helps integrate towards GitLab", - "version": "0.1.13-next.0", + "version": "0.1.13-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md index 1380f51750..b52760e185 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md +++ b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-catalog-backend-module-incremental-ingestion +## 0.2.0-next.1 + +### Patch Changes + +- b7e36660d5: Return `EventSubscriber` from `addIncrementalEntityProvider` to hook up to `EventsBackend` +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/backend-test-utils@0.1.34-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-catalog-node@1.3.3-next.1 + - @backstage/plugin-events-node@0.2.3-next.1 + - @backstage/plugin-permission-common@0.7.3 + ## 0.2.0-next.0 ### Minor Changes diff --git a/plugins/catalog-backend-module-incremental-ingestion/package.json b/plugins/catalog-backend-module-incremental-ingestion/package.json index c7bb13425a..ec50c44311 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/package.json +++ b/plugins/catalog-backend-module-incremental-ingestion/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-incremental-ingestion", "description": "An entity provider for streaming large asset sources into the catalog", - "version": "0.2.0-next.0", + "version": "0.2.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-ldap/CHANGELOG.md b/plugins/catalog-backend-module-ldap/CHANGELOG.md index 2ae5a8c2b4..f64a4460ea 100644 --- a/plugins/catalog-backend-module-ldap/CHANGELOG.md +++ b/plugins/catalog-backend-module-ldap/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-backend-module-ldap +## 0.5.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/types@1.0.2 + ## 0.5.9-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json index 6553080d2c..aed68ebdf9 100644 --- a/plugins/catalog-backend-module-ldap/package.json +++ b/plugins/catalog-backend-module-ldap/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-ldap", "description": "A Backstage catalog backend module that helps integrate towards LDAP", - "version": "0.5.9-next.0", + "version": "0.5.9-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-msgraph/CHANGELOG.md b/plugins/catalog-backend-module-msgraph/CHANGELOG.md index 6a93a81c5b..e53d159d1d 100644 --- a/plugins/catalog-backend-module-msgraph/CHANGELOG.md +++ b/plugins/catalog-backend-module-msgraph/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-msgraph +## 0.4.8-next.1 + +### Patch Changes + +- 4c86436fdf: Fix MS Graph provider to use target URL for fetching access token +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/plugin-catalog-node@1.3.3-next.1 + ## 0.4.8-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index 615dfc366f..7be2678bc6 100644 --- a/plugins/catalog-backend-module-msgraph/package.json +++ b/plugins/catalog-backend-module-msgraph/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-msgraph", "description": "A Backstage catalog backend module that helps integrate towards Microsoft Graph", - "version": "0.4.8-next.0", + "version": "0.4.8-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-openapi/CHANGELOG.md b/plugins/catalog-backend-module-openapi/CHANGELOG.md index 0f9b04f997..5dd91ecd63 100644 --- a/plugins/catalog-backend-module-openapi/CHANGELOG.md +++ b/plugins/catalog-backend-module-openapi/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-catalog-backend-module-openapi +## 0.1.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.3-next.1 + ## 0.1.8-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-openapi/package.json b/plugins/catalog-backend-module-openapi/package.json index 798a6d9008..6ccc4971b0 100644 --- a/plugins/catalog-backend-module-openapi/package.json +++ b/plugins/catalog-backend-module-openapi/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-openapi", "description": "A Backstage catalog backend module that helps with OpenAPI specifications", - "version": "0.1.8-next.0", + "version": "0.1.8-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md index 06583f2e9b..1ee436c075 100644 --- a/plugins/catalog-backend/CHANGELOG.md +++ b/plugins/catalog-backend/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-catalog-backend +## 1.7.2-next.1 + +### Patch Changes + +- 2380506364: The process of adding or modifying fields in the software-catalog search index has been simplified. For more details, see [how to customize fields in the Software Catalog index](https://backstage.io/docs/features/search/how-to-guides#how-to-customize-fields-in-the-software-catalog-index). +- 9573651919: The previous migration that adds the `search.original_value` column may leave some of the entities not updated. Add a migration script to trigger a reprocessing of the entities. +- fc73f6aae5: Switched the order of reprocessing statements retroactively in migrations. This only improves the experience for those who at a later time perform a large upgrade of an old Backstage installation. +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-catalog-node@1.3.3-next.1 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-permission-node@0.7.5-next.1 + - @backstage/plugin-scaffolder-common@1.2.5-next.0 + - @backstage/plugin-search-common@1.2.1 + ## 1.7.2-next.0 ### Patch Changes diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index 45628825c4..2bf0429932 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend", "description": "The Backstage backend plugin that provides the Backstage catalog", - "version": "1.7.2-next.0", + "version": "1.7.2-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-customized/CHANGELOG.md b/plugins/catalog-customized/CHANGELOG.md index 6f03f91b9f..13b1364d66 100644 --- a/plugins/catalog-customized/CHANGELOG.md +++ b/plugins/catalog-customized/CHANGELOG.md @@ -1,5 +1,13 @@ # @internal/plugin-catalog-customized +## 0.0.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog@1.8.0-next.1 + - @backstage/plugin-catalog-react@1.3.0-next.1 + ## 0.0.7-next.0 ### Patch Changes diff --git a/plugins/catalog-customized/package.json b/plugins/catalog-customized/package.json index 27cf26f3f2..e72331539d 100644 --- a/plugins/catalog-customized/package.json +++ b/plugins/catalog-customized/package.json @@ -1,7 +1,7 @@ { "name": "@internal/plugin-catalog-customized", "description": "The internal Backstage Customizable plugin for browsing the Backstage catalog", - "version": "0.0.7-next.0", + "version": "0.0.7-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-graph/CHANGELOG.md b/plugins/catalog-graph/CHANGELOG.md index 417fe6ae95..dcdbe96b91 100644 --- a/plugins/catalog-graph/CHANGELOG.md +++ b/plugins/catalog-graph/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-graph +## 0.2.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.2.27-next.0 ### Patch Changes diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index 61d517c1dd..9ff0c8e92a 100644 --- a/plugins/catalog-graph/package.json +++ b/plugins/catalog-graph/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-graph", - "version": "0.2.27-next.0", + "version": "0.2.27-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-import/CHANGELOG.md b/plugins/catalog-import/CHANGELOG.md index 51c8ccd448..3f0711c721 100644 --- a/plugins/catalog-import/CHANGELOG.md +++ b/plugins/catalog-import/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-catalog-import +## 0.9.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/plugin-catalog-common@1.0.11-next.0 + ## 0.9.5-next.0 ### Patch Changes diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index 7fb456a311..36351746e5 100644 --- a/plugins/catalog-import/package.json +++ b/plugins/catalog-import/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-import", "description": "A Backstage plugin the helps you import entities into your catalog", - "version": "0.9.5-next.0", + "version": "0.9.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-node/CHANGELOG.md b/plugins/catalog-node/CHANGELOG.md index 7c133e34c2..b01d88ae26 100644 --- a/plugins/catalog-node/CHANGELOG.md +++ b/plugins/catalog-node/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-node +## 1.3.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/errors@1.1.4 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.11-next.0 + ## 1.3.3-next.0 ### Patch Changes diff --git a/plugins/catalog-node/package.json b/plugins/catalog-node/package.json index ead9801888..7874e36072 100644 --- a/plugins/catalog-node/package.json +++ b/plugins/catalog-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-node", "description": "The plugin-catalog-node module for @backstage/plugin-catalog-backend", - "version": "1.3.3-next.0", + "version": "1.3.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-react/CHANGELOG.md b/plugins/catalog-react/CHANGELOG.md index d1a878b434..7f657f418f 100644 --- a/plugins/catalog-react/CHANGELOG.md +++ b/plugins/catalog-react/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-catalog-react +## 1.3.0-next.1 + +### Minor Changes + +- fab93c2fe8: Aligned buttons on "Unregister entity" dialog to keep them on the same line + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.3 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-permission-react@0.4.9 + ## 1.3.0-next.0 ### Minor Changes diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index 871107e104..705c1b544a 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-react", "description": "A frontend library that helps other Backstage plugins interact with the catalog", - "version": "1.3.0-next.0", + "version": "1.3.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog/CHANGELOG.md b/plugins/catalog/CHANGELOG.md index 4c79fb57a4..588bfd40cd 100644 --- a/plugins/catalog/CHANGELOG.md +++ b/plugins/catalog/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-catalog +## 1.8.0-next.1 + +### Minor Changes + +- 0c1fc3986c: Added Markdown support in the `AboutCard` description section +- 0eaa579f89: The `CatalogSearchResultListItem` component is now a search result extension. This means that when rendered as a child of components that render search extensions, the `result`, `rank`, and `highlight` properties are optional. See the [documentation](https://backstage.io/docs/features/search/how-to-guides#how-to-render-search-results-using-extensions) for more details. + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-search-common@1.2.1 + ## 1.7.3-next.0 ### Patch Changes diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index 11231894a3..333d621d40 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog", "description": "The Backstage plugin for browsing the Backstage catalog", - "version": "1.7.3-next.0", + "version": "1.8.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md index 3d1dbae39d..811df4adcb 100644 --- a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md +++ b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-cicd-statistics-module-gitlab +## 0.1.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-cicd-statistics@0.1.17-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + ## 0.1.11-next.0 ### Patch Changes diff --git a/plugins/cicd-statistics-module-gitlab/package.json b/plugins/cicd-statistics-module-gitlab/package.json index e3ffb0aa15..32c33e207a 100644 --- a/plugins/cicd-statistics-module-gitlab/package.json +++ b/plugins/cicd-statistics-module-gitlab/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cicd-statistics-module-gitlab", "description": "CI/CD Statistics plugin module; Gitlab CICD", - "version": "0.1.11-next.0", + "version": "0.1.11-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cicd-statistics/CHANGELOG.md b/plugins/cicd-statistics/CHANGELOG.md index 09a9d200d2..a09c2b3339 100644 --- a/plugins/cicd-statistics/CHANGELOG.md +++ b/plugins/cicd-statistics/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-cicd-statistics +## 0.1.17-next.1 + +### Patch Changes + +- d950d3e217: Depend on `@material-ui/core` version `^4.12.2` like all other in-repo packages +- Updated dependencies + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + ## 0.1.17-next.0 ### Patch Changes diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index aedbbf9d20..09ff03a4c7 100644 --- a/plugins/cicd-statistics/package.json +++ b/plugins/cicd-statistics/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cicd-statistics", "description": "A frontend plugin visualizing CI/CD pipeline statistics (build time)", - "version": "0.1.17-next.0", + "version": "0.1.17-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/circleci/CHANGELOG.md b/plugins/circleci/CHANGELOG.md index 0221219b27..c3b50931e8 100644 --- a/plugins/circleci/CHANGELOG.md +++ b/plugins/circleci/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-circleci +## 0.3.15-next.1 + +### Patch Changes + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.3.15-next.0 ### Patch Changes diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 7a8c82c7ad..6e370c5def 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-circleci", "description": "A Backstage plugin that integrates towards Circle CI", - "version": "0.3.15-next.0", + "version": "0.3.15-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cloudbuild/CHANGELOG.md b/plugins/cloudbuild/CHANGELOG.md index 23c6373e43..e69f59d9bf 100644 --- a/plugins/cloudbuild/CHANGELOG.md +++ b/plugins/cloudbuild/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-cloudbuild +## 0.3.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.3.15-next.0 ### Patch Changes diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index 3be78201a9..f80944b683 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cloudbuild", "description": "A Backstage plugin that integrates towards Google Cloud Build", - "version": "0.3.15-next.0", + "version": "0.3.15-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/code-climate/CHANGELOG.md b/plugins/code-climate/CHANGELOG.md index b6eae04858..84c51e3f43 100644 --- a/plugins/code-climate/CHANGELOG.md +++ b/plugins/code-climate/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-code-climate +## 0.1.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.1.15-next.0 ### Patch Changes diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json index 9bf655af53..9783ee7583 100644 --- a/plugins/code-climate/package.json +++ b/plugins/code-climate/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-code-climate", - "version": "0.1.15-next.0", + "version": "0.1.15-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/code-coverage-backend/CHANGELOG.md b/plugins/code-coverage-backend/CHANGELOG.md index cff23e1e44..4d6a69c494 100644 --- a/plugins/code-coverage-backend/CHANGELOG.md +++ b/plugins/code-coverage-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-code-coverage-backend +## 0.2.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + ## 0.2.8-next.0 ### Patch Changes diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json index d9966078c9..1d3ae89cc3 100644 --- a/plugins/code-coverage-backend/package.json +++ b/plugins/code-coverage-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-code-coverage-backend", "description": "A Backstage backend plugin that helps you keep track of your code coverage", - "version": "0.2.8-next.0", + "version": "0.2.8-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/code-coverage/CHANGELOG.md b/plugins/code-coverage/CHANGELOG.md index 70831e5842..f787ac85aa 100644 --- a/plugins/code-coverage/CHANGELOG.md +++ b/plugins/code-coverage/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-code-coverage +## 0.2.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + ## 0.2.8-next.0 ### Patch Changes diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index b5a0bc93d3..d336d9324f 100644 --- a/plugins/code-coverage/package.json +++ b/plugins/code-coverage/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-code-coverage", "description": "A Backstage plugin that helps you keep track of your code coverage", - "version": "0.2.8-next.0", + "version": "0.2.8-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/codescene/CHANGELOG.md b/plugins/codescene/CHANGELOG.md index deb3feb593..a89f49dc62 100644 --- a/plugins/codescene/CHANGELOG.md +++ b/plugins/codescene/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-codescene +## 0.1.10-next.0 + +### Patch Changes + +- d950d3e217: Depend on `@material-ui/core` version `^4.12.2` like all other in-repo packages +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + ## 0.1.9 ### Patch Changes diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json index fff2547c0f..6f763d529c 100644 --- a/plugins/codescene/package.json +++ b/plugins/codescene/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-codescene", - "version": "0.1.9", + "version": "0.1.10-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/config-schema/CHANGELOG.md b/plugins/config-schema/CHANGELOG.md index 0c9889e2ae..a8b4640584 100644 --- a/plugins/config-schema/CHANGELOG.md +++ b/plugins/config-schema/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-config-schema +## 0.1.38-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + ## 0.1.37 ### Patch Changes diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index 436a2c8ca5..f7bb416f22 100644 --- a/plugins/config-schema/package.json +++ b/plugins/config-schema/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-config-schema", "description": "A Backstage plugin that lets you browse the configuration schema of your app", - "version": "0.1.37", + "version": "0.1.38-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cost-insights/CHANGELOG.md b/plugins/cost-insights/CHANGELOG.md index 0828647aac..7c69958dde 100644 --- a/plugins/cost-insights/CHANGELOG.md +++ b/plugins/cost-insights/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-cost-insights +## 0.12.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-cost-insights-common@0.1.1 + ## 0.12.4-next.0 ### Patch Changes diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index 449338c32d..6e2bb01ef9 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cost-insights", "description": "A Backstage plugin that helps you keep track of your cloud spend", - "version": "0.12.4-next.0", + "version": "0.12.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/dynatrace/CHANGELOG.md b/plugins/dynatrace/CHANGELOG.md index a201886305..60be881c47 100644 --- a/plugins/dynatrace/CHANGELOG.md +++ b/plugins/dynatrace/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-dynatrace +## 2.0.0-next.1 + +### Patch Changes + +- d950d3e217: Depend on `@material-ui/core` version `^4.12.2` like all other in-repo packages +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 2.0.0-next.0 ### Patch Changes diff --git a/plugins/dynatrace/package.json b/plugins/dynatrace/package.json index 27216312f9..c7656c52de 100644 --- a/plugins/dynatrace/package.json +++ b/plugins/dynatrace/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-dynatrace", - "version": "2.0.0-next.0", + "version": "2.0.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-aws-sqs/CHANGELOG.md b/plugins/events-backend-module-aws-sqs/CHANGELOG.md index 4086a1f7a2..b3431b3510 100644 --- a/plugins/events-backend-module-aws-sqs/CHANGELOG.md +++ b/plugins/events-backend-module-aws-sqs/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-events-backend-module-aws-sqs +## 0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/config@1.0.6 + - @backstage/types@1.0.2 + - @backstage/plugin-events-node@0.2.3-next.1 + ## 0.1.4-next.0 ### Patch Changes diff --git a/plugins/events-backend-module-aws-sqs/package.json b/plugins/events-backend-module-aws-sqs/package.json index e76e71ecfe..1925781020 100644 --- a/plugins/events-backend-module-aws-sqs/package.json +++ b/plugins/events-backend-module-aws-sqs/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-aws-sqs", - "version": "0.1.4-next.0", + "version": "0.1.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-azure/CHANGELOG.md b/plugins/events-backend-module-azure/CHANGELOG.md index 6b76965e00..12bc4a0798 100644 --- a/plugins/events-backend-module-azure/CHANGELOG.md +++ b/plugins/events-backend-module-azure/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-events-backend-module-azure +## 0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/plugin-events-node@0.2.3-next.1 + ## 0.1.4-next.0 ### Patch Changes diff --git a/plugins/events-backend-module-azure/package.json b/plugins/events-backend-module-azure/package.json index 68d3b0a2ad..6520ed83ca 100644 --- a/plugins/events-backend-module-azure/package.json +++ b/plugins/events-backend-module-azure/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-azure", - "version": "0.1.4-next.0", + "version": "0.1.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md index 2141562a13..182d5633ed 100644 --- a/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-events-backend-module-bitbucket-cloud +## 0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/plugin-events-node@0.2.3-next.1 + ## 0.1.4-next.0 ### Patch Changes diff --git a/plugins/events-backend-module-bitbucket-cloud/package.json b/plugins/events-backend-module-bitbucket-cloud/package.json index 7a2b599885..6a18b548e8 100644 --- a/plugins/events-backend-module-bitbucket-cloud/package.json +++ b/plugins/events-backend-module-bitbucket-cloud/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-bitbucket-cloud", - "version": "0.1.4-next.0", + "version": "0.1.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-gerrit/CHANGELOG.md b/plugins/events-backend-module-gerrit/CHANGELOG.md index 11b37dd443..4d1857f4d6 100644 --- a/plugins/events-backend-module-gerrit/CHANGELOG.md +++ b/plugins/events-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-events-backend-module-gerrit +## 0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/plugin-events-node@0.2.3-next.1 + ## 0.1.4-next.0 ### Patch Changes diff --git a/plugins/events-backend-module-gerrit/package.json b/plugins/events-backend-module-gerrit/package.json index 199077d990..8765f7777d 100644 --- a/plugins/events-backend-module-gerrit/package.json +++ b/plugins/events-backend-module-gerrit/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-gerrit", - "version": "0.1.4-next.0", + "version": "0.1.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-github/CHANGELOG.md b/plugins/events-backend-module-github/CHANGELOG.md index 3ece4590aa..d15c3c82ce 100644 --- a/plugins/events-backend-module-github/CHANGELOG.md +++ b/plugins/events-backend-module-github/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-events-backend-module-github +## 0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-events-node@0.2.3-next.1 + ## 0.1.4-next.0 ### Patch Changes diff --git a/plugins/events-backend-module-github/package.json b/plugins/events-backend-module-github/package.json index 9975107d17..aa2f6b26fb 100644 --- a/plugins/events-backend-module-github/package.json +++ b/plugins/events-backend-module-github/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-github", - "version": "0.1.4-next.0", + "version": "0.1.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-gitlab/CHANGELOG.md b/plugins/events-backend-module-gitlab/CHANGELOG.md index 87e478b56a..4e7598b084 100644 --- a/plugins/events-backend-module-gitlab/CHANGELOG.md +++ b/plugins/events-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-events-backend-module-gitlab +## 0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-events-node@0.2.3-next.1 + ## 0.1.4-next.0 ### Patch Changes diff --git a/plugins/events-backend-module-gitlab/package.json b/plugins/events-backend-module-gitlab/package.json index a09577ae0e..bfca24f6bc 100644 --- a/plugins/events-backend-module-gitlab/package.json +++ b/plugins/events-backend-module-gitlab/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-gitlab", - "version": "0.1.4-next.0", + "version": "0.1.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-test-utils/CHANGELOG.md b/plugins/events-backend-test-utils/CHANGELOG.md index c786d4540e..d495725662 100644 --- a/plugins/events-backend-test-utils/CHANGELOG.md +++ b/plugins/events-backend-test-utils/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-events-backend-test-utils +## 0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.3-next.1 + ## 0.1.4-next.0 ### Patch Changes diff --git a/plugins/events-backend-test-utils/package.json b/plugins/events-backend-test-utils/package.json index fa99c54da1..8032c98031 100644 --- a/plugins/events-backend-test-utils/package.json +++ b/plugins/events-backend-test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-events-backend-test-utils", "description": "The plugin-events-backend-test-utils for @backstage/plugin-events-node", - "version": "0.1.4-next.0", + "version": "0.1.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend/CHANGELOG.md b/plugins/events-backend/CHANGELOG.md index ea8e4a2c47..1d5927c387 100644 --- a/plugins/events-backend/CHANGELOG.md +++ b/plugins/events-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-events-backend +## 0.2.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-events-node@0.2.3-next.1 + ## 0.2.3-next.0 ### Patch Changes diff --git a/plugins/events-backend/package.json b/plugins/events-backend/package.json index 375fdd9034..d120ae892b 100644 --- a/plugins/events-backend/package.json +++ b/plugins/events-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend", - "version": "0.2.3-next.0", + "version": "0.2.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-node/CHANGELOG.md b/plugins/events-node/CHANGELOG.md index 61e19f995b..ef0d97ad18 100644 --- a/plugins/events-node/CHANGELOG.md +++ b/plugins/events-node/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-events-node +## 0.2.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + ## 0.2.3-next.0 ### Patch Changes diff --git a/plugins/events-node/package.json b/plugins/events-node/package.json index 9be7706e1e..2cfff749e3 100644 --- a/plugins/events-node/package.json +++ b/plugins/events-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-events-node", "description": "The plugin-events-node module for @backstage/plugin-events-backend", - "version": "0.2.3-next.0", + "version": "0.2.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/example-todo-list-backend/CHANGELOG.md b/plugins/example-todo-list-backend/CHANGELOG.md index b3db395424..e3379a0082 100644 --- a/plugins/example-todo-list-backend/CHANGELOG.md +++ b/plugins/example-todo-list-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @internal/plugin-todo-list-backend +## 1.0.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-auth-node@0.2.11-next.1 + ## 1.0.10-next.0 ### Patch Changes diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json index 123f2c78ad..eec3b47b67 100644 --- a/plugins/example-todo-list-backend/package.json +++ b/plugins/example-todo-list-backend/package.json @@ -1,6 +1,6 @@ { "name": "@internal/plugin-todo-list-backend", - "version": "1.0.10-next.0", + "version": "1.0.10-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/example-todo-list/CHANGELOG.md b/plugins/example-todo-list/CHANGELOG.md index 66c920d08b..17c56cc5d1 100644 --- a/plugins/example-todo-list/CHANGELOG.md +++ b/plugins/example-todo-list/CHANGELOG.md @@ -1,5 +1,14 @@ # @internal/plugin-todo-list +## 1.0.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 1.0.9 ### Patch Changes diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json index ce8197bc6e..fe4ac8d1c3 100644 --- a/plugins/example-todo-list/package.json +++ b/plugins/example-todo-list/package.json @@ -1,6 +1,6 @@ { "name": "@internal/plugin-todo-list", - "version": "1.0.9", + "version": "1.0.10-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/explore-backend/CHANGELOG.md b/plugins/explore-backend/CHANGELOG.md index b2465ea308..e9a25933de 100644 --- a/plugins/explore-backend/CHANGELOG.md +++ b/plugins/explore-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-explore-backend +## 0.0.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-explore-common@0.0.1 + - @backstage/plugin-search-common@1.2.1 + ## 0.0.4-next.0 ### Patch Changes diff --git a/plugins/explore-backend/package.json b/plugins/explore-backend/package.json index 399f4df018..8356240641 100644 --- a/plugins/explore-backend/package.json +++ b/plugins/explore-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-explore-backend", - "version": "0.0.4-next.0", + "version": "0.0.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/explore/CHANGELOG.md b/plugins/explore/CHANGELOG.md index e6d5dd2ecc..dfa262e63d 100644 --- a/plugins/explore/CHANGELOG.md +++ b/plugins/explore/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-explore +## 0.4.0-next.1 + +### Minor Changes + +- 0eaa579f89: The `ToolSearchResultListItem` component is now a search result extension. This means that when rendered as a child of components that render search extensions, the `result`, `rank`, and `highlight` properties are optional. See the [documentation](https://backstage.io/docs/features/search/how-to-guides#how-to-render-search-results-using-extensions) for more details. + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/plugin-explore-common@0.0.1 + - @backstage/plugin-explore-react@0.0.25 + - @backstage/plugin-search-common@1.2.1 + ## 0.3.46-next.0 ### Patch Changes diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 6700ba09e8..8a6b856262 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-explore", "description": "A Backstage plugin for building an exploration page of your software ecosystem", - "version": "0.3.46-next.0", + "version": "0.4.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/firehydrant/CHANGELOG.md b/plugins/firehydrant/CHANGELOG.md index 60d4bad35f..73f7de642f 100644 --- a/plugins/firehydrant/CHANGELOG.md +++ b/plugins/firehydrant/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-firehydrant +## 0.1.32-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.1.32-next.0 ### Patch Changes diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index bd1536d76f..4b40c86c3c 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-firehydrant", "description": "A Backstage plugin that integrates towards FireHydrant", - "version": "0.1.32-next.0", + "version": "0.1.32-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/fossa/CHANGELOG.md b/plugins/fossa/CHANGELOG.md index d91bd1e0b2..c0987cd461 100644 --- a/plugins/fossa/CHANGELOG.md +++ b/plugins/fossa/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-fossa +## 0.2.47-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + ## 0.2.47-next.0 ### Patch Changes diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index 131ea2f747..444471315c 100644 --- a/plugins/fossa/package.json +++ b/plugins/fossa/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-fossa", "description": "A Backstage plugin that integrates towards FOSSA", - "version": "0.2.47-next.0", + "version": "0.2.47-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gcalendar/CHANGELOG.md b/plugins/gcalendar/CHANGELOG.md index 8155123f67..a1f2b5a0c7 100644 --- a/plugins/gcalendar/CHANGELOG.md +++ b/plugins/gcalendar/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-gcalendar +## 0.3.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + ## 0.3.10 ### Patch Changes diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json index dd6c804f98..48e78f175a 100644 --- a/plugins/gcalendar/package.json +++ b/plugins/gcalendar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-gcalendar", - "version": "0.3.10", + "version": "0.3.11-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gcp-projects/CHANGELOG.md b/plugins/gcp-projects/CHANGELOG.md index 67ac992174..0a8693a233 100644 --- a/plugins/gcp-projects/CHANGELOG.md +++ b/plugins/gcp-projects/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-gcp-projects +## 0.3.34-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.3.33 ### Patch Changes diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 193ab0af28..a3894760cf 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gcp-projects", "description": "A Backstage plugin that helps you manage projects in GCP", - "version": "0.3.33", + "version": "0.3.34-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/git-release-manager/CHANGELOG.md b/plugins/git-release-manager/CHANGELOG.md index 6d59cae145..707f7be510 100644 --- a/plugins/git-release-manager/CHANGELOG.md +++ b/plugins/git-release-manager/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-git-release-manager +## 0.3.28-next.0 + +### Patch Changes + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration@1.4.2 + - @backstage/theme@0.2.16 + ## 0.3.27 ### Patch Changes diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index d3273e686d..7ec7d5806c 100644 --- a/plugins/git-release-manager/package.json +++ b/plugins/git-release-manager/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-git-release-manager", "description": "A Backstage plugin that helps you manage releases in git", - "version": "0.3.27", + "version": "0.3.28-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-actions/CHANGELOG.md b/plugins/github-actions/CHANGELOG.md index 4f291714f6..160a0f8a22 100644 --- a/plugins/github-actions/CHANGELOG.md +++ b/plugins/github-actions/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-github-actions +## 0.5.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration@1.4.2 + - @backstage/theme@0.2.16 + ## 0.5.15-next.0 ### Patch Changes diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 2fd5234847..509255d343 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-actions", "description": "A Backstage plugin that integrates towards GitHub Actions", - "version": "0.5.15-next.0", + "version": "0.5.15-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-deployments/CHANGELOG.md b/plugins/github-deployments/CHANGELOG.md index f76d88bda7..68156abda2 100644 --- a/plugins/github-deployments/CHANGELOG.md +++ b/plugins/github-deployments/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-github-deployments +## 0.1.46-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/theme@0.2.16 + ## 0.1.46-next.0 ### Patch Changes diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index c673adc712..ec596194c7 100644 --- a/plugins/github-deployments/package.json +++ b/plugins/github-deployments/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-deployments", "description": "A Backstage plugin that integrates towards GitHub Deployments", - "version": "0.1.46-next.0", + "version": "0.1.46-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-issues/CHANGELOG.md b/plugins/github-issues/CHANGELOG.md index f87eef712c..38c0387429 100644 --- a/plugins/github-issues/CHANGELOG.md +++ b/plugins/github-issues/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-github-issues +## 0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/theme@0.2.16 + ## 0.2.4-next.0 ### Patch Changes diff --git a/plugins/github-issues/package.json b/plugins/github-issues/package.json index 8a12fd2153..284518bad3 100644 --- a/plugins/github-issues/package.json +++ b/plugins/github-issues/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-github-issues", - "version": "0.2.4-next.0", + "version": "0.2.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-pull-requests-board/CHANGELOG.md b/plugins/github-pull-requests-board/CHANGELOG.md index 5c71016753..fa4123887b 100644 --- a/plugins/github-pull-requests-board/CHANGELOG.md +++ b/plugins/github-pull-requests-board/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-github-pull-requests-board +## 0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration@1.4.2 + - @backstage/theme@0.2.16 + ## 0.1.9-next.0 ### Patch Changes diff --git a/plugins/github-pull-requests-board/package.json b/plugins/github-pull-requests-board/package.json index 7558d60649..e947557825 100644 --- a/plugins/github-pull-requests-board/package.json +++ b/plugins/github-pull-requests-board/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-pull-requests-board", "description": "A Backstage plugin that allows you to see all open Pull Requests for all the repositories owned by your team", - "version": "0.1.9-next.0", + "version": "0.1.9-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gitops-profiles/CHANGELOG.md b/plugins/gitops-profiles/CHANGELOG.md index c7e895315a..fa835e2131 100644 --- a/plugins/gitops-profiles/CHANGELOG.md +++ b/plugins/gitops-profiles/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-gitops-profiles +## 0.3.33-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.3.32 ### Patch Changes diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index b485aea867..3f0f3614cd 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gitops-profiles", "description": "A Backstage plugin that helps you manage GitOps profiles", - "version": "0.3.32", + "version": "0.3.33-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gocd/CHANGELOG.md b/plugins/gocd/CHANGELOG.md index a030870317..adecc5b5f1 100644 --- a/plugins/gocd/CHANGELOG.md +++ b/plugins/gocd/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-gocd +## 0.1.21-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + ## 0.1.21-next.0 ### Patch Changes diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index 8988f26b93..f659fe4525 100644 --- a/plugins/gocd/package.json +++ b/plugins/gocd/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gocd", "description": "A Backstage plugin that integrates towards GoCD", - "version": "0.1.21-next.0", + "version": "0.1.21-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/graphiql/CHANGELOG.md b/plugins/graphiql/CHANGELOG.md index f14c0602d0..1be4fe30b5 100644 --- a/plugins/graphiql/CHANGELOG.md +++ b/plugins/graphiql/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-graphiql +## 0.2.47-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.2.46 ### Patch Changes diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index 92c89dda60..b5c868d86d 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphiql", "description": "Backstage plugin for browsing GraphQL APIs", - "version": "0.2.46", + "version": "0.2.47-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/plugins/graphql-backend/CHANGELOG.md b/plugins/graphql-backend/CHANGELOG.md index 7467f7a0bf..4686d4b103 100644 --- a/plugins/graphql-backend/CHANGELOG.md +++ b/plugins/graphql-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-graphql-backend +## 0.1.32-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-catalog-graphql@0.3.18-next.0 + ## 0.1.32-next.0 ### Patch Changes diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json index 7e351e5db0..d3b4fc8707 100644 --- a/plugins/graphql-backend/package.json +++ b/plugins/graphql-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphql-backend", "description": "An experimental Backstage backend plugin for GraphQL", - "version": "0.1.32-next.0", + "version": "0.1.32-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/home/CHANGELOG.md b/plugins/home/CHANGELOG.md index b06d9b7a5c..e9698a5cde 100644 --- a/plugins/home/CHANGELOG.md +++ b/plugins/home/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-home +## 0.4.31-next.1 + +### Patch Changes + +- 3d1d867d42: Fixed regression that caused the `WelcomeTitle` to not be the right size when passed to the `title` property of the `<Header>` component. A Storybook entry was also added for the `WelcomeTitle` +- c553a625d2: remove unused plugin-stack-overflow dependency +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.4.31-next.0 ### Patch Changes diff --git a/plugins/home/package.json b/plugins/home/package.json index 39d9b68aaf..8f6a4f755f 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-home", "description": "A Backstage plugin that helps you build a home page", - "version": "0.4.31-next.0", + "version": "0.4.31-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/ilert/CHANGELOG.md b/plugins/ilert/CHANGELOG.md index ec39edeca1..d0edef70c6 100644 --- a/plugins/ilert/CHANGELOG.md +++ b/plugins/ilert/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-ilert +## 0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + ## 0.2.4-next.0 ### Patch Changes diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index 53ab674dc4..459f823255 100644 --- a/plugins/ilert/package.json +++ b/plugins/ilert/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-ilert", "description": "A Backstage plugin that integrates towards iLert", - "version": "0.2.4-next.0", + "version": "0.2.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/jenkins-backend/CHANGELOG.md b/plugins/jenkins-backend/CHANGELOG.md index e35e69b2d5..9cbcc43f5f 100644 --- a/plugins/jenkins-backend/CHANGELOG.md +++ b/plugins/jenkins-backend/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-jenkins-backend +## 0.1.32-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-jenkins-common@0.1.13-next.0 + - @backstage/plugin-permission-common@0.7.3 + ## 0.1.32-next.0 ### Patch Changes diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index 7880f391e0..43614edea2 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-jenkins-backend", "description": "A Backstage backend plugin that integrates towards Jenkins", - "version": "0.1.32-next.0", + "version": "0.1.32-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/jenkins/CHANGELOG.md b/plugins/jenkins/CHANGELOG.md index 086f7b354a..045236e8aa 100644 --- a/plugins/jenkins/CHANGELOG.md +++ b/plugins/jenkins/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-jenkins +## 0.7.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/plugin-jenkins-common@0.1.13-next.0 + ## 0.7.14-next.0 ### Patch Changes diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index da7b46af08..2fc0ed67ca 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-jenkins", "description": "A Backstage plugin that integrates towards Jenkins", - "version": "0.7.14-next.0", + "version": "0.7.14-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kafka-backend/CHANGELOG.md b/plugins/kafka-backend/CHANGELOG.md index fe39a7f219..a07fb79fae 100644 --- a/plugins/kafka-backend/CHANGELOG.md +++ b/plugins/kafka-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-kafka-backend +## 0.2.35-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + ## 0.2.35-next.0 ### Patch Changes diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index 172b4b70d8..93377dd9eb 100644 --- a/plugins/kafka-backend/package.json +++ b/plugins/kafka-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kafka-backend", "description": "A Backstage backend plugin that integrates towards Kafka", - "version": "0.2.35-next.0", + "version": "0.2.35-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kafka/CHANGELOG.md b/plugins/kafka/CHANGELOG.md index f5833782df..573a28a957 100644 --- a/plugins/kafka/CHANGELOG.md +++ b/plugins/kafka/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-kafka +## 0.3.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.3.15-next.0 ### Patch Changes diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index 40b9d5a8d0..7583fd06b5 100644 --- a/plugins/kafka/package.json +++ b/plugins/kafka/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kafka", "description": "A Backstage plugin that integrates towards Kafka", - "version": "0.3.15-next.0", + "version": "0.3.15-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes-backend/CHANGELOG.md b/plugins/kubernetes-backend/CHANGELOG.md index 8fefe5f133..fe00c7f8a1 100644 --- a/plugins/kubernetes-backend/CHANGELOG.md +++ b/plugins/kubernetes-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-kubernetes-backend +## 0.9.3-next.1 + +### Patch Changes + +- 628e2bd89a: Updated dependency `@kubernetes/client-node` to `0.18.1`. +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/plugin-kubernetes-common@0.6.0-next.1 + - @backstage/backend-test-utils@0.1.34-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-auth-node@0.2.11-next.1 + ## 0.9.3-next.0 ### Patch Changes diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index 0049aa6256..68225c489a 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-backend", "description": "A Backstage backend plugin that integrates towards Kubernetes", - "version": "0.9.3-next.0", + "version": "0.9.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes-common/CHANGELOG.md b/plugins/kubernetes-common/CHANGELOG.md index ec5b17df99..4f369bf289 100644 --- a/plugins/kubernetes-common/CHANGELOG.md +++ b/plugins/kubernetes-common/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-kubernetes-common +## 0.6.0-next.1 + +### Patch Changes + +- 628e2bd89a: Updated dependency `@kubernetes/client-node` to `0.18.1`. +- Updated dependencies + - @backstage/catalog-model@1.1.6-next.0 + ## 0.6.0-next.0 ### Minor Changes diff --git a/plugins/kubernetes-common/package.json b/plugins/kubernetes-common/package.json index 23dd9eeae5..21f6480aa1 100644 --- a/plugins/kubernetes-common/package.json +++ b/plugins/kubernetes-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-common", "description": "Common functionalities for kubernetes, to be shared between kubernetes and kubernetes-backend plugin", - "version": "0.6.0-next.0", + "version": "0.6.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes/CHANGELOG.md b/plugins/kubernetes/CHANGELOG.md index b5d62408ad..2c375b8d0a 100644 --- a/plugins/kubernetes/CHANGELOG.md +++ b/plugins/kubernetes/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-kubernetes +## 0.7.8-next.1 + +### Patch Changes + +- 145a79a15b: Condenses kubernetes ui plugin to fit more onscreen and increase visibility +- 628e2bd89a: Updated dependency `@kubernetes/client-node` to `0.18.1`. +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-kubernetes-common@0.6.0-next.1 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.7.8-next.0 ### Patch Changes diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index 96a369dccf..6c9c56db09 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes", "description": "A Backstage plugin that integrates towards Kubernetes", - "version": "0.7.8-next.0", + "version": "0.7.8-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/lighthouse/CHANGELOG.md b/plugins/lighthouse/CHANGELOG.md index 8e21a89a8d..1c54959f18 100644 --- a/plugins/lighthouse/CHANGELOG.md +++ b/plugins/lighthouse/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-lighthouse +## 0.3.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.3.15-next.0 ### Patch Changes diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 242ca4b773..e754a0e23c 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-lighthouse", "description": "A Backstage plugin that integrates towards Lighthouse", - "version": "0.3.15-next.0", + "version": "0.3.15-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/newrelic-dashboard/CHANGELOG.md b/plugins/newrelic-dashboard/CHANGELOG.md index 6d3c0c4e0e..3f9352d0d2 100644 --- a/plugins/newrelic-dashboard/CHANGELOG.md +++ b/plugins/newrelic-dashboard/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-newrelic-dashboard +## 0.2.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + ## 0.2.8-next.0 ### Patch Changes diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index 4c4957d400..09d4afcd93 100644 --- a/plugins/newrelic-dashboard/package.json +++ b/plugins/newrelic-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-newrelic-dashboard", - "version": "0.2.8-next.0", + "version": "0.2.8-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/newrelic/CHANGELOG.md b/plugins/newrelic/CHANGELOG.md index 8332f157af..10a7d6131b 100644 --- a/plugins/newrelic/CHANGELOG.md +++ b/plugins/newrelic/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-newrelic +## 0.3.33-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.3.32 ### Patch Changes diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index 022eda45bd..60f6019ccf 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-newrelic", "description": "A Backstage plugin that integrates towards New Relic", - "version": "0.3.32", + "version": "0.3.33-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/org-react/CHANGELOG.md b/plugins/org-react/CHANGELOG.md index c01567643b..6400654730 100644 --- a/plugins/org-react/CHANGELOG.md +++ b/plugins/org-react/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-org-react +## 0.1.4-next.1 + +### Patch Changes + +- d950d3e217: Depend on `@material-ui/core` version `^4.12.2` like all other in-repo packages +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.1.4-next.0 ### Patch Changes diff --git a/plugins/org-react/package.json b/plugins/org-react/package.json index d3ea16a5ee..bf3fbe4050 100644 --- a/plugins/org-react/package.json +++ b/plugins/org-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-org-react", - "version": "0.1.4-next.0", + "version": "0.1.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/org/CHANGELOG.md b/plugins/org/CHANGELOG.md index 6612957bdb..c4cd46928b 100644 --- a/plugins/org/CHANGELOG.md +++ b/plugins/org/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-org +## 0.6.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.6.5-next.0 ### Patch Changes diff --git a/plugins/org/package.json b/plugins/org/package.json index 8a2364729c..ef9106808b 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-org", "description": "A Backstage plugin that helps you create entity pages for your organization", - "version": "0.6.5-next.0", + "version": "0.6.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/pagerduty/CHANGELOG.md b/plugins/pagerduty/CHANGELOG.md index ef3dc0c0ab..c10c36ee38 100644 --- a/plugins/pagerduty/CHANGELOG.md +++ b/plugins/pagerduty/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-pagerduty +## 0.5.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + ## 0.5.8-next.0 ### Patch Changes diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 721ff91a53..a26ac1137f 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-pagerduty", "description": "A Backstage plugin that integrates towards PagerDuty", - "version": "0.5.8-next.0", + "version": "0.5.8-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/periskop-backend/CHANGELOG.md b/plugins/periskop-backend/CHANGELOG.md index d7fd30baab..afeec402d4 100644 --- a/plugins/periskop-backend/CHANGELOG.md +++ b/plugins/periskop-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-periskop-backend +## 0.1.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + ## 0.1.13-next.0 ### Patch Changes diff --git a/plugins/periskop-backend/package.json b/plugins/periskop-backend/package.json index cee8af1556..aa6d8daec3 100644 --- a/plugins/periskop-backend/package.json +++ b/plugins/periskop-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-periskop-backend", - "version": "0.1.13-next.0", + "version": "0.1.13-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/periskop/CHANGELOG.md b/plugins/periskop/CHANGELOG.md index 6fa77d51d0..5d093e566f 100644 --- a/plugins/periskop/CHANGELOG.md +++ b/plugins/periskop/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-periskop +## 0.1.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + ## 0.1.13-next.0 ### Patch Changes diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json index 2048df912f..a35c7332b2 100644 --- a/plugins/periskop/package.json +++ b/plugins/periskop/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-periskop", - "version": "0.1.13-next.0", + "version": "0.1.13-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/permission-backend/CHANGELOG.md b/plugins/permission-backend/CHANGELOG.md index 0a5e07716b..475ec1fa67 100644 --- a/plugins/permission-backend/CHANGELOG.md +++ b/plugins/permission-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-permission-backend +## 0.5.17-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-permission-node@0.7.5-next.1 + ## 0.5.17-next.0 ### Patch Changes diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index 66796cb82c..ef319d2e4b 100644 --- a/plugins/permission-backend/package.json +++ b/plugins/permission-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-permission-backend", - "version": "0.5.17-next.0", + "version": "0.5.17-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/permission-node/CHANGELOG.md b/plugins/permission-node/CHANGELOG.md index 2f97a29a70..2c56e28584 100644 --- a/plugins/permission-node/CHANGELOG.md +++ b/plugins/permission-node/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-permission-node +## 0.7.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-permission-common@0.7.3 + ## 0.7.5-next.0 ### Patch Changes diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json index cc9d98f8fb..e2de41927f 100644 --- a/plugins/permission-node/package.json +++ b/plugins/permission-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-permission-node", "description": "Common permission and authorization utilities for backend plugins", - "version": "0.7.5-next.0", + "version": "0.7.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/playlist-backend/CHANGELOG.md b/plugins/playlist-backend/CHANGELOG.md index 2ad29e5120..ee9c9940b1 100644 --- a/plugins/playlist-backend/CHANGELOG.md +++ b/plugins/playlist-backend/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-playlist-backend +## 0.2.5-next.1 + +### Patch Changes + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-test-utils@0.1.34-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-permission-node@0.7.5-next.1 + - @backstage/plugin-playlist-common@0.1.4 + ## 0.2.5-next.0 ### Patch Changes diff --git a/plugins/playlist-backend/package.json b/plugins/playlist-backend/package.json index 73ef52c5cd..211ef7f3c9 100644 --- a/plugins/playlist-backend/package.json +++ b/plugins/playlist-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-playlist-backend", - "version": "0.2.5-next.0", + "version": "0.2.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/playlist/CHANGELOG.md b/plugins/playlist/CHANGELOG.md index 9a4c780b1e..8651137680 100644 --- a/plugins/playlist/CHANGELOG.md +++ b/plugins/playlist/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-playlist +## 0.1.6-next.1 + +### Patch Changes + +- d950d3e217: Depend on `@material-ui/core` version `^4.12.2` like all other in-repo packages +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-permission-react@0.4.9 + - @backstage/plugin-playlist-common@0.1.4 + ## 0.1.6-next.0 ### Patch Changes diff --git a/plugins/playlist/package.json b/plugins/playlist/package.json index 2ace4a0176..9954d9b45c 100644 --- a/plugins/playlist/package.json +++ b/plugins/playlist/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-playlist", - "version": "0.1.6-next.0", + "version": "0.1.6-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/proxy-backend/CHANGELOG.md b/plugins/proxy-backend/CHANGELOG.md index a0452dff3f..1ccb8ba717 100644 --- a/plugins/proxy-backend/CHANGELOG.md +++ b/plugins/proxy-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-proxy-backend +## 0.2.36-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + ## 0.2.36-next.0 ### Patch Changes diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index de45524f25..d145d91454 100644 --- a/plugins/proxy-backend/package.json +++ b/plugins/proxy-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-proxy-backend", "description": "A Backstage backend plugin that helps you set up proxy endpoints in the backend", - "version": "0.2.36-next.0", + "version": "0.2.36-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/rollbar-backend/CHANGELOG.md b/plugins/rollbar-backend/CHANGELOG.md index a9df1c2eea..0995c42725 100644 --- a/plugins/rollbar-backend/CHANGELOG.md +++ b/plugins/rollbar-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-rollbar-backend +## 0.1.39-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + ## 0.1.39-next.0 ### Patch Changes diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index d481ad0217..8aadcde236 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-rollbar-backend", "description": "A Backstage backend plugin that integrates towards Rollbar", - "version": "0.1.39-next.0", + "version": "0.1.39-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/rollbar/CHANGELOG.md b/plugins/rollbar/CHANGELOG.md index 629fc36e26..8fab9cd0c6 100644 --- a/plugins/rollbar/CHANGELOG.md +++ b/plugins/rollbar/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-rollbar +## 0.4.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.4.15-next.0 ### Patch Changes diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index bea1cab9ee..e33ed45d20 100644 --- a/plugins/rollbar/package.json +++ b/plugins/rollbar/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-rollbar", "description": "A Backstage plugin that integrates towards Rollbar", - "version": "0.4.15-next.0", + "version": "0.4.15-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md index 60628eb84d..2ca4243b25 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-scaffolder-backend-module-cookiecutter +## 0.2.17-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/plugin-scaffolder-backend@1.11.0-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-scaffolder-node@0.1.0-next.1 + ## 0.2.17-next.0 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json index f1024a1fa9..6f2868d2f6 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/package.json +++ b/plugins/scaffolder-backend-module-cookiecutter/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-cookiecutter", "description": "A module for the scaffolder backend that lets you template projects using cookiecutter", - "version": "0.2.17-next.0", + "version": "0.2.17-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-rails/CHANGELOG.md b/plugins/scaffolder-backend-module-rails/CHANGELOG.md index b705593493..8fc899ef79 100644 --- a/plugins/scaffolder-backend-module-rails/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-rails/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-scaffolder-backend-module-rails +## 0.4.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/plugin-scaffolder-backend@1.11.0-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-scaffolder-node@0.1.0-next.1 + ## 0.4.10-next.0 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index f096eeb379..21e9c1f31c 100644 --- a/plugins/scaffolder-backend-module-rails/package.json +++ b/plugins/scaffolder-backend-module-rails/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-rails", "description": "A module for the scaffolder backend that lets you template projects using Rails", - "version": "0.4.10-next.0", + "version": "0.4.10-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md index 84140cd106..7ad3b35da6 100644 --- a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-scaffolder-backend-module-sentry +## 0.1.2-next.1 + +### Patch Changes + +- da418c89e4: Fix broken module exports and dependencies to match a backend module, rather than a frontend plugin. +- Updated dependencies + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-scaffolder-node@0.1.0-next.1 + ## 0.1.2-next.0 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-sentry/package.json b/plugins/scaffolder-backend-module-sentry/package.json index 95a89371c8..2136a9055e 100644 --- a/plugins/scaffolder-backend-module-sentry/package.json +++ b/plugins/scaffolder-backend-module-sentry/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-sentry", - "version": "0.1.2-next.0", + "version": "0.1.2-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md index ebc657b508..d736daf17e 100644 --- a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-scaffolder-backend-module-yeoman +## 0.2.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.6 + - @backstage/types@1.0.2 + - @backstage/plugin-scaffolder-node@0.1.0-next.1 + ## 0.2.15-next.0 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json index 993a80c304..eb8598ac8f 100644 --- a/plugins/scaffolder-backend-module-yeoman/package.json +++ b/plugins/scaffolder-backend-module-yeoman/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-yeoman", - "version": "0.2.15-next.0", + "version": "0.2.15-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend/CHANGELOG.md b/plugins/scaffolder-backend/CHANGELOG.md index 9bc5fc1e34..b43edb7c73 100644 --- a/plugins/scaffolder-backend/CHANGELOG.md +++ b/plugins/scaffolder-backend/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-scaffolder-backend +## 1.11.0-next.1 + +### Minor Changes + +- 127154930f: Renamed the export `scaffolderCatalogModule` to `catalogModuleTemplateKind` in order to follow the new recommended naming patterns of backend system items. This is technically a breaking change but in an alpha export, so take care to change your imports if you have already migrated to the new backend system. + +### Patch Changes + +- 66cf22fdc4: Updated dependency `esbuild` to `^0.17.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-catalog-node@1.3.3-next.1 + - @backstage/plugin-scaffolder-common@1.2.5-next.0 + - @backstage/plugin-scaffolder-node@0.1.0-next.1 + ## 1.11.0-next.0 ### Minor Changes diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 6098fdc537..e50ebba1b8 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend", "description": "The Backstage backend plugin that helps you create new things", - "version": "1.11.0-next.0", + "version": "1.11.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-node/CHANGELOG.md b/plugins/scaffolder-node/CHANGELOG.md index a447f09770..19e00ac8b4 100644 --- a/plugins/scaffolder-node/CHANGELOG.md +++ b/plugins/scaffolder-node/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-scaffolder-node +## 0.1.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-scaffolder-common@1.2.5-next.0 + ## 0.1.0-next.0 ### Minor Changes diff --git a/plugins/scaffolder-node/package.json b/plugins/scaffolder-node/package.json index f67fe89623..dc93306107 100644 --- a/plugins/scaffolder-node/package.json +++ b/plugins/scaffolder-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-node", "description": "The plugin-scaffolder-node module for @backstage/plugin-scaffolder-backend", - "version": "0.1.0-next.0", + "version": "0.1.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-react/CHANGELOG.md b/plugins/scaffolder-react/CHANGELOG.md index c57b102949..384680c672 100644 --- a/plugins/scaffolder-react/CHANGELOG.md +++ b/plugins/scaffolder-react/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-scaffolder-react +## 1.1.0-next.1 + +### Patch Changes + +- 04f717a8e1: `scaffolder/next`: bump `react-jsonschema-form` libraries to `v5-stable` +- 346d6b6630: Upgrade `@rjsf` version 5 dependencies to `beta.18` +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.3 + - @backstage/plugin-scaffolder-common@1.2.5-next.0 + ## 1.1.0-next.0 ### Minor Changes diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json index 4667216af7..e7acbdce05 100644 --- a/plugins/scaffolder-react/package.json +++ b/plugins/scaffolder-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-react", "description": "A frontend library that helps other Backstage plugins interact with the Scaffolder", - "version": "1.1.0-next.0", + "version": "1.1.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md index d343d4e224..9fc78b0416 100644 --- a/plugins/scaffolder/CHANGELOG.md +++ b/plugins/scaffolder/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-scaffolder +## 1.11.0-next.1 + +### Patch Changes + +- 04f717a8e1: `scaffolder/next`: bump `react-jsonschema-form` libraries to `v5-stable` +- 346d6b6630: Upgrade `@rjsf` version 5 dependencies to `beta.18` +- 0f0da2f256: Prefer schema ordering of template properties during review content generation. +- 38992bdbaf: Fixed bug in review step refactor that caused schema-based display settings for individual property values to be discarded. +- Updated dependencies + - @backstage/plugin-scaffolder-react@1.1.0-next.1 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-permission-react@0.4.9 + - @backstage/plugin-scaffolder-common@1.2.5-next.0 + ## 1.11.0-next.0 ### Minor Changes diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index ae79a35f7c..1b0beb09d9 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder", "description": "The Backstage plugin that helps you create new things", - "version": "1.11.0-next.0", + "version": "1.11.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-elasticsearch/CHANGELOG.md b/plugins/search-backend-module-elasticsearch/CHANGELOG.md index 5b3f82a37b..dddb776afc 100644 --- a/plugins/search-backend-module-elasticsearch/CHANGELOG.md +++ b/plugins/search-backend-module-elasticsearch/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-search-backend-module-elasticsearch +## 1.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.6 + - @backstage/plugin-search-backend-node@1.1.3-next.1 + - @backstage/plugin-search-common@1.2.1 + ## 1.1.3-next.0 ### Patch Changes diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json index 856f9b5e55..05395fbdb2 100644 --- a/plugins/search-backend-module-elasticsearch/package.json +++ b/plugins/search-backend-module-elasticsearch/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-elasticsearch", "description": "A module for the search backend that implements search using ElasticSearch", - "version": "1.1.3-next.0", + "version": "1.1.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-pg/CHANGELOG.md b/plugins/search-backend-module-pg/CHANGELOG.md index 09082b4cd3..907235f958 100644 --- a/plugins/search-backend-module-pg/CHANGELOG.md +++ b/plugins/search-backend-module-pg/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-search-backend-module-pg +## 0.5.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-search-backend-node@1.1.3-next.1 + - @backstage/plugin-search-common@1.2.1 + ## 0.5.3-next.0 ### Patch Changes diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json index 832a5528f9..299c66a0bd 100644 --- a/plugins/search-backend-module-pg/package.json +++ b/plugins/search-backend-module-pg/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-pg", "description": "A module for the search backend that implements search using PostgreSQL", - "version": "0.5.3-next.0", + "version": "0.5.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-node/CHANGELOG.md b/plugins/search-backend-node/CHANGELOG.md index 57ec19a2c4..9a5b76131d 100644 --- a/plugins/search-backend-node/CHANGELOG.md +++ b/plugins/search-backend-node/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-search-backend-node +## 1.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-search-common@1.2.1 + ## 1.1.3-next.0 ### Patch Changes diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index 18496a1c39..9c4f3842ed 100644 --- a/plugins/search-backend-node/package.json +++ b/plugins/search-backend-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-node", "description": "A library for Backstage backend plugins that want to interact with the search backend plugin", - "version": "1.1.3-next.0", + "version": "1.1.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend/CHANGELOG.md b/plugins/search-backend/CHANGELOG.md index 0dcdec3ed5..33fa09cb39 100644 --- a/plugins/search-backend/CHANGELOG.md +++ b/plugins/search-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-search-backend +## 1.2.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.11-next.1 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-permission-node@0.7.5-next.1 + - @backstage/plugin-search-backend-node@1.1.3-next.1 + - @backstage/plugin-search-common@1.2.1 + ## 1.2.3-next.0 ### Patch Changes diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json index 72cfadf821..cc903a5b8d 100644 --- a/plugins/search-backend/package.json +++ b/plugins/search-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend", "description": "The Backstage backend plugin that provides your backstage app with search", - "version": "1.2.3-next.0", + "version": "1.2.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-react/CHANGELOG.md b/plugins/search-react/CHANGELOG.md index 37214bdb82..f5074bee18 100644 --- a/plugins/search-react/CHANGELOG.md +++ b/plugins/search-react/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-search-react +## 1.5.0-next.0 + +### Minor Changes + +- 0eaa579f89: - Create the search results extensions, for more details see the documentation [here](https://backstage.io/docs/features/search/how-to-guides#how-to-render-search-results-using-extensions); + - Update the `SearchResult`, `SearchResultList` and `SearchResultGroup` components to use extensions and default their props to optionally accept a query, when the query is not passed, the component tries to get it from the search context. + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.3 + - @backstage/plugin-search-common@1.2.1 + ## 1.4.0 ### Minor Changes diff --git a/plugins/search-react/package.json b/plugins/search-react/package.json index e69ec2e7ae..4e9dd292ba 100644 --- a/plugins/search-react/package.json +++ b/plugins/search-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-search-react", - "version": "1.4.0", + "version": "1.5.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search/CHANGELOG.md b/plugins/search/CHANGELOG.md index 32eebe7fae..4e4d5de406 100644 --- a/plugins/search/CHANGELOG.md +++ b/plugins/search/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-search +## 1.1.0-next.1 + +### Minor Changes + +- 0eaa579f89: Update `SearchModal` component to use `SearchResult` extensions. + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.3 + - @backstage/plugin-search-common@1.2.1 + ## 1.0.8-next.0 ### Patch Changes diff --git a/plugins/search/package.json b/plugins/search/package.json index 7aa8b5a123..6acb85af9b 100644 --- a/plugins/search/package.json +++ b/plugins/search/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search", "description": "The Backstage plugin that provides your backstage app with search", - "version": "1.0.8-next.0", + "version": "1.1.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sentry/CHANGELOG.md b/plugins/sentry/CHANGELOG.md index 49be1fc880..b19a4b29d9 100644 --- a/plugins/sentry/CHANGELOG.md +++ b/plugins/sentry/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-sentry +## 0.4.8-next.1 + +### Patch Changes + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.4.8-next.0 ### Patch Changes diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index 72e9fbdc50..f9b5dad4b8 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-sentry", "description": "A Backstage plugin that integrates towards Sentry", - "version": "0.4.8-next.0", + "version": "0.4.8-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/shortcuts/CHANGELOG.md b/plugins/shortcuts/CHANGELOG.md index f301ff2692..224ad0a78d 100644 --- a/plugins/shortcuts/CHANGELOG.md +++ b/plugins/shortcuts/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-shortcuts +## 0.3.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + ## 0.3.6 ### Patch Changes diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index 22e5abe6ad..3a955b95e0 100644 --- a/plugins/shortcuts/package.json +++ b/plugins/shortcuts/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-shortcuts", "description": "A Backstage plugin that provides a shortcuts feature to the sidebar", - "version": "0.3.6", + "version": "0.3.7-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sonarqube-backend/CHANGELOG.md b/plugins/sonarqube-backend/CHANGELOG.md index 0475073584..4f568d7442 100644 --- a/plugins/sonarqube-backend/CHANGELOG.md +++ b/plugins/sonarqube-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-sonarqube-backend +## 0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + ## 0.1.7-next.0 ### Patch Changes diff --git a/plugins/sonarqube-backend/package.json b/plugins/sonarqube-backend/package.json index 5aa8367434..785911f6c0 100644 --- a/plugins/sonarqube-backend/package.json +++ b/plugins/sonarqube-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-sonarqube-backend", - "version": "0.1.7-next.0", + "version": "0.1.7-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sonarqube/CHANGELOG.md b/plugins/sonarqube/CHANGELOG.md index 0d71fd4f9a..a419f321e3 100644 --- a/plugins/sonarqube/CHANGELOG.md +++ b/plugins/sonarqube/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-sonarqube +## 0.6.3-next.1 + +### Patch Changes + +- 6310eacc11: Additional export added in order to bind SonarQubeClient to its apiref +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-sonarqube-react@0.1.2-next.0 + ## 0.6.3-next.0 ### Patch Changes diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index ae37737b94..8c5d706db2 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-sonarqube", "description": "", - "version": "0.6.3-next.0", + "version": "0.6.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/splunk-on-call/CHANGELOG.md b/plugins/splunk-on-call/CHANGELOG.md index e92f250fad..401f927bd9 100644 --- a/plugins/splunk-on-call/CHANGELOG.md +++ b/plugins/splunk-on-call/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-splunk-on-call +## 0.4.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.4.4-next.0 ### Patch Changes diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index 8e2b7f278c..0700dacf92 100644 --- a/plugins/splunk-on-call/package.json +++ b/plugins/splunk-on-call/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-splunk-on-call", "description": "A Backstage plugin that integrates towards Splunk On-Call", - "version": "0.4.4-next.0", + "version": "0.4.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/stack-overflow-backend/CHANGELOG.md b/plugins/stack-overflow-backend/CHANGELOG.md index 7a2535eae5..5a8f26be5f 100644 --- a/plugins/stack-overflow-backend/CHANGELOG.md +++ b/plugins/stack-overflow-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-stack-overflow-backend +## 0.1.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/plugin-search-common@1.2.1 + ## 0.1.11-next.0 ### Patch Changes diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json index 4d5009bee1..ca8e4a2a55 100644 --- a/plugins/stack-overflow-backend/package.json +++ b/plugins/stack-overflow-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-stack-overflow-backend", - "version": "0.1.11-next.0", + "version": "0.1.11-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/stack-overflow/CHANGELOG.md b/plugins/stack-overflow/CHANGELOG.md index e9ad1d9958..00ed8a363c 100644 --- a/plugins/stack-overflow/CHANGELOG.md +++ b/plugins/stack-overflow/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-stack-overflow +## 0.1.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-home@0.4.31-next.1 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-search-common@1.2.1 + ## 0.1.11-next.0 ### Patch Changes diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index 62a15a30c1..d073d519c1 100644 --- a/plugins/stack-overflow/package.json +++ b/plugins/stack-overflow/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-stack-overflow", - "version": "0.1.11-next.0", + "version": "0.1.11-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md index 96e65d116b..64ceb662d2 100644 --- a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md +++ b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-tech-insights-backend-module-jsonfc +## 0.1.26-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-tech-insights-common@0.2.10-next.0 + - @backstage/plugin-tech-insights-node@0.4.0-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + ## 0.1.26-next.0 ### Patch Changes diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json index 1a6d87ec6f..f7c1b6563b 100644 --- a/plugins/tech-insights-backend-module-jsonfc/package.json +++ b/plugins/tech-insights-backend-module-jsonfc/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-backend-module-jsonfc", - "version": "0.1.26-next.0", + "version": "0.1.26-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights-backend/CHANGELOG.md b/plugins/tech-insights-backend/CHANGELOG.md index 89753667a1..42e4c273a0 100644 --- a/plugins/tech-insights-backend/CHANGELOG.md +++ b/plugins/tech-insights-backend/CHANGELOG.md @@ -1,5 +1,32 @@ # @backstage/plugin-tech-insights-backend +## 0.5.8-next.1 + +### Patch Changes + +- 4024b37449: TechInsightsApi interface now has getFactSchemas() method. + TechInsightsClient now implements method getFactSchemas(). + + **BREAKING** FactSchema type moved from @backstage/plugin-tech-insights-node into @backstage/plugin-tech-insights-common + + These changes are **required** if you were importing this type directly. + + ```diff + - import { FactSchema } from '@backstage/plugin-tech-insights-node'; + + import { FactSchema } from '@backstage/plugin-tech-insights-common'; + ``` + +- Updated dependencies + - @backstage/plugin-tech-insights-common@0.2.10-next.0 + - @backstage/plugin-tech-insights-node@0.4.0-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/types@1.0.2 + ## 0.5.8-next.0 ### Patch Changes diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index edb94c5784..c04ce8f483 100644 --- a/plugins/tech-insights-backend/package.json +++ b/plugins/tech-insights-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-backend", - "version": "0.5.8-next.0", + "version": "0.5.8-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights-common/CHANGELOG.md b/plugins/tech-insights-common/CHANGELOG.md index 555a77689f..347a4387d0 100644 --- a/plugins/tech-insights-common/CHANGELOG.md +++ b/plugins/tech-insights-common/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-tech-insights-common +## 0.2.10-next.0 + +### Patch Changes + +- 4024b37449: TechInsightsApi interface now has getFactSchemas() method. + TechInsightsClient now implements method getFactSchemas(). + + **BREAKING** FactSchema type moved from @backstage/plugin-tech-insights-node into @backstage/plugin-tech-insights-common + + These changes are **required** if you were importing this type directly. + + ```diff + - import { FactSchema } from '@backstage/plugin-tech-insights-node'; + + import { FactSchema } from '@backstage/plugin-tech-insights-common'; + ``` + +- Updated dependencies + - @backstage/types@1.0.2 + ## 0.2.9 ### Patch Changes diff --git a/plugins/tech-insights-common/package.json b/plugins/tech-insights-common/package.json index f238785e54..d7534b2834 100644 --- a/plugins/tech-insights-common/package.json +++ b/plugins/tech-insights-common/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-common", - "version": "0.2.9", + "version": "0.2.10-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights-node/CHANGELOG.md b/plugins/tech-insights-node/CHANGELOG.md index d7986767ae..867a242826 100644 --- a/plugins/tech-insights-node/CHANGELOG.md +++ b/plugins/tech-insights-node/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-tech-insights-node +## 0.4.0-next.1 + +### Minor Changes + +- 4024b37449: TechInsightsApi interface now has getFactSchemas() method. + TechInsightsClient now implements method getFactSchemas(). + + **BREAKING** FactSchema type moved from @backstage/plugin-tech-insights-node into @backstage/plugin-tech-insights-common + + These changes are **required** if you were importing this type directly. + + ```diff + - import { FactSchema } from '@backstage/plugin-tech-insights-node'; + + import { FactSchema } from '@backstage/plugin-tech-insights-common'; + ``` + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-tech-insights-common@0.2.10-next.0 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/config@1.0.6 + - @backstage/types@1.0.2 + ## 0.3.10-next.0 ### Patch Changes diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index 2981b652a5..79f8846f51 100644 --- a/plugins/tech-insights-node/package.json +++ b/plugins/tech-insights-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-node", - "version": "0.3.10-next.0", + "version": "0.4.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights/CHANGELOG.md b/plugins/tech-insights/CHANGELOG.md index 247c9605f4..907fc50495 100644 --- a/plugins/tech-insights/CHANGELOG.md +++ b/plugins/tech-insights/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-tech-insights +## 0.3.7-next.1 + +### Patch Changes + +- 4024b37449: TechInsightsApi interface now has getFactSchemas() method. + TechInsightsClient now implements method getFactSchemas(). + + **BREAKING** FactSchema type moved from @backstage/plugin-tech-insights-node into @backstage/plugin-tech-insights-common + + These changes are **required** if you were importing this type directly. + + ```diff + - import { FactSchema } from '@backstage/plugin-tech-insights-node'; + + import { FactSchema } from '@backstage/plugin-tech-insights-common'; + ``` + +- Updated dependencies + - @backstage/plugin-tech-insights-common@0.2.10-next.0 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + ## 0.3.7-next.0 ### Patch Changes diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index fe815a044d..f4515d94b0 100644 --- a/plugins/tech-insights/package.json +++ b/plugins/tech-insights/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights", - "version": "0.3.7-next.0", + "version": "0.3.7-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-radar/CHANGELOG.md b/plugins/tech-radar/CHANGELOG.md index 085aa42aa9..f6983f4875 100644 --- a/plugins/tech-radar/CHANGELOG.md +++ b/plugins/tech-radar/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-tech-radar +## 0.6.1-next.0 + +### Patch Changes + +- 18024a231c: Allow to set additional links to the entry description. +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/theme@0.2.16 + ## 0.6.0 ### Minor Changes diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index a7ce33c427..78b0afd963 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-tech-radar", "description": "A Backstage plugin that lets you display a Tech Radar for your organization", - "version": "0.6.0", + "version": "0.6.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-addons-test-utils/CHANGELOG.md b/plugins/techdocs-addons-test-utils/CHANGELOG.md index a27d587f36..bba46a23c2 100644 --- a/plugins/techdocs-addons-test-utils/CHANGELOG.md +++ b/plugins/techdocs-addons-test-utils/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-techdocs-addons-test-utils +## 1.0.10-next.1 + +### Patch Changes + +- d950d3e217: Depend on `@material-ui/core` version `^4.12.2` like all other in-repo packages +- Updated dependencies + - @backstage/plugin-techdocs@1.5.0-next.1 + - @backstage/plugin-catalog@1.8.0-next.1 + - @backstage/core-app-api@1.4.1-next.0 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/test-utils@1.2.5-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-techdocs-react@1.1.3-next.1 + ## 1.0.10-next.0 ### Patch Changes diff --git a/plugins/techdocs-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json index e0ff4e7261..82d5913a2e 100644 --- a/plugins/techdocs-addons-test-utils/package.json +++ b/plugins/techdocs-addons-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-techdocs-addons-test-utils", - "version": "1.0.10-next.0", + "version": "1.0.10-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-backend/CHANGELOG.md b/plugins/techdocs-backend/CHANGELOG.md index f669d1924b..04c7a54f20 100644 --- a/plugins/techdocs-backend/CHANGELOG.md +++ b/plugins/techdocs-backend/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-techdocs-backend +## 1.5.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/plugin-catalog-common@1.0.11-next.0 + - @backstage/plugin-permission-common@0.7.3 + - @backstage/plugin-search-common@1.2.1 + - @backstage/plugin-techdocs-node@1.4.6-next.1 + ## 1.5.3-next.0 ### Patch Changes diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index 396aba2fca..dd16050e5d 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-backend", "description": "The Backstage backend plugin that renders technical documentation for your components", - "version": "1.5.3-next.0", + "version": "1.5.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-module-addons-contrib/CHANGELOG.md b/plugins/techdocs-module-addons-contrib/CHANGELOG.md index 0f0c2999bd..aab943c78f 100644 --- a/plugins/techdocs-module-addons-contrib/CHANGELOG.md +++ b/plugins/techdocs-module-addons-contrib/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-techdocs-module-addons-contrib +## 1.0.10-next.1 + +### Patch Changes + +- d950d3e217: Depend on `@material-ui/core` version `^4.12.2` like all other in-repo packages +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/integration@1.4.2 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-techdocs-react@1.1.3-next.1 + ## 1.0.10-next.0 ### Patch Changes diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json index cd03c9f0d5..1b92e15c16 100644 --- a/plugins/techdocs-module-addons-contrib/package.json +++ b/plugins/techdocs-module-addons-contrib/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-module-addons-contrib", "description": "Plugin module for contributed TechDocs Addons", - "version": "1.0.10-next.0", + "version": "1.0.10-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-node/CHANGELOG.md b/plugins/techdocs-node/CHANGELOG.md index 7aca6e0041..6547d5db59 100644 --- a/plugins/techdocs-node/CHANGELOG.md +++ b/plugins/techdocs-node/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-techdocs-node +## 1.4.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/integration-aws-node@0.1.1 + - @backstage/plugin-search-common@1.2.1 + ## 1.4.6-next.0 ### Patch Changes diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json index fa2587953c..d9b7b72d91 100644 --- a/plugins/techdocs-node/package.json +++ b/plugins/techdocs-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-node", "description": "Common node.js functionalities for TechDocs, to be shared between techdocs-backend plugin and techdocs-cli", - "version": "1.4.6-next.0", + "version": "1.4.6-next.1", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/plugins/techdocs-react/CHANGELOG.md b/plugins/techdocs-react/CHANGELOG.md index 4f9744158d..0403406407 100644 --- a/plugins/techdocs-react/CHANGELOG.md +++ b/plugins/techdocs-react/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-techdocs-react +## 1.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/version-bridge@1.0.3 + ## 1.1.3-next.0 ### Patch Changes diff --git a/plugins/techdocs-react/package.json b/plugins/techdocs-react/package.json index 781ba74c94..01bf2ceec4 100644 --- a/plugins/techdocs-react/package.json +++ b/plugins/techdocs-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-react", "description": "Shared frontend utilities for TechDocs and Addons", - "version": "1.1.3-next.0", + "version": "1.1.3-next.1", "publishConfig": { "access": "public", "alphaTypes": "dist/index.alpha.d.ts", diff --git a/plugins/techdocs/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md index 22d52c02e8..01ad074f1c 100644 --- a/plugins/techdocs/CHANGELOG.md +++ b/plugins/techdocs/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-techdocs +## 1.5.0-next.1 + +### Minor Changes + +- 20840b36b4: Update DocsTable and EntityListDocsTable to accept overrides for Material Table options. +- 0eaa579f89: The `TechDocsSearchResultListItem` component is now a search result extension. This means that when rendered as a child of components that render search extensions, the `result`, `rank`, and `highlight` properties are optional. See the [documentation](https://backstage.io/docs/features/search/how-to-guides#how-to-render-search-results-using-extensions) for more details. + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-search-react@1.5.0-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/integration-react@1.1.10-next.0 + - @backstage/theme@0.2.16 + - @backstage/plugin-search-common@1.2.1 + - @backstage/plugin-techdocs-react@1.1.3-next.1 + ## 1.4.4-next.0 ### Patch Changes diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index d04115188b..788b82cfa5 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs", "description": "The Backstage plugin that renders technical documentation for your components", - "version": "1.4.4-next.0", + "version": "1.5.0-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/todo-backend/CHANGELOG.md b/plugins/todo-backend/CHANGELOG.md index ae9ec851f0..5009bb66b1 100644 --- a/plugins/todo-backend/CHANGELOG.md +++ b/plugins/todo-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-todo-backend +## 0.1.39-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-client@1.3.1-next.0 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + ## 0.1.39-next.0 ### Patch Changes diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 3fbc52bb70..b7eae2bf52 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-todo-backend", "description": "A Backstage backend plugin that lets you browse TODO comments in your source code", - "version": "0.1.39-next.0", + "version": "0.1.39-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/todo/CHANGELOG.md b/plugins/todo/CHANGELOG.md index fa5fb5064b..c5ef6bddfa 100644 --- a/plugins/todo/CHANGELOG.md +++ b/plugins/todo/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-todo +## 0.2.17-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + ## 0.2.17-next.0 ### Patch Changes diff --git a/plugins/todo/package.json b/plugins/todo/package.json index 00ea5873d6..a6ed7e591e 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-todo", "description": "A Backstage plugin that lets you browse TODO comments in your source code", - "version": "0.2.17-next.0", + "version": "0.2.17-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/user-settings-backend/CHANGELOG.md b/plugins/user-settings-backend/CHANGELOG.md index 90069ca40c..25d3b6b935 100644 --- a/plugins/user-settings-backend/CHANGELOG.md +++ b/plugins/user-settings-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-user-settings-backend +## 0.1.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/errors@1.1.4 + - @backstage/types@1.0.2 + - @backstage/plugin-auth-node@0.2.11-next.1 + ## 0.1.6-next.0 ### Patch Changes diff --git a/plugins/user-settings-backend/package.json b/plugins/user-settings-backend/package.json index f69f13bcee..8197078d74 100644 --- a/plugins/user-settings-backend/package.json +++ b/plugins/user-settings-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-user-settings-backend", "description": "The Backstage backend plugin to manage user settings", - "version": "0.1.6-next.0", + "version": "0.1.6-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/user-settings/CHANGELOG.md b/plugins/user-settings/CHANGELOG.md index aa64c91086..51de164e53 100644 --- a/plugins/user-settings/CHANGELOG.md +++ b/plugins/user-settings/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-user-settings +## 0.6.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.4.1-next.0 + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + - @backstage/types@1.0.2 + ## 0.6.3-next.0 ### Patch Changes diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index 64f1cdd8d3..ad046124c4 100644 --- a/plugins/user-settings/package.json +++ b/plugins/user-settings/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-user-settings", "description": "A Backstage plugin that provides a settings page", - "version": "0.6.3-next.0", + "version": "0.6.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/vault-backend/CHANGELOG.md b/plugins/vault-backend/CHANGELOG.md index e81269ec17..d81f582d2c 100644 --- a/plugins/vault-backend/CHANGELOG.md +++ b/plugins/vault-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-vault-backend +## 0.2.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/backend-test-utils@0.1.34-next.1 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + ## 0.2.8-next.0 ### Patch Changes diff --git a/plugins/vault-backend/package.json b/plugins/vault-backend/package.json index 507c2c5713..58a16853e6 100644 --- a/plugins/vault-backend/package.json +++ b/plugins/vault-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-vault-backend", "description": "A Backstage backend plugin that integrates towards Vault", - "version": "0.2.8-next.0", + "version": "0.2.8-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/vault/CHANGELOG.md b/plugins/vault/CHANGELOG.md index 5ea984e2ef..7e661f0a8a 100644 --- a/plugins/vault/CHANGELOG.md +++ b/plugins/vault/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-vault +## 0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/plugin-catalog-react@1.3.0-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + ## 0.1.9-next.0 ### Patch Changes diff --git a/plugins/vault/package.json b/plugins/vault/package.json index 26376c18d5..9d59cba50a 100644 --- a/plugins/vault/package.json +++ b/plugins/vault/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-vault", "description": "A Backstage plugin that integrates towards Vault", - "version": "0.1.9-next.0", + "version": "0.1.9-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/xcmetrics/CHANGELOG.md b/plugins/xcmetrics/CHANGELOG.md index 4d80489e99..e73dbc7e64 100644 --- a/plugins/xcmetrics/CHANGELOG.md +++ b/plugins/xcmetrics/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-xcmetrics +## 0.2.35-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.4-next.0 + - @backstage/core-plugin-api@1.3.0 + - @backstage/errors@1.1.4 + - @backstage/theme@0.2.16 + ## 0.2.34 ### Patch Changes diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index f4144693ae..fc85d7b050 100644 --- a/plugins/xcmetrics/package.json +++ b/plugins/xcmetrics/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-xcmetrics", "description": "A Backstage plugin that shows XCode build metrics for your components", - "version": "0.2.34", + "version": "0.2.35-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/yarn.lock b/yarn.lock index 2cf88bbd8b..7f3a0d4361 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3887,7 +3887,57 @@ __metadata: languageName: unknown linkType: soft -"@backstage/core-components@^0.12.0, @backstage/core-components@^0.12.3, @backstage/core-components@workspace:^, @backstage/core-components@workspace:packages/core-components": +"@backstage/core-components@npm:^0.12.0, @backstage/core-components@npm:^0.12.3": + version: 0.12.3 + resolution: "@backstage/core-components@npm:0.12.3" + dependencies: + "@backstage/config": ^1.0.6 + "@backstage/core-plugin-api": ^1.3.0 + "@backstage/errors": ^1.1.4 + "@backstage/theme": ^0.2.16 + "@backstage/version-bridge": ^1.0.3 + "@material-table/core": ^3.1.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.57 + "@react-hookz/web": ^20.0.0 + "@types/react-sparklines": ^1.7.0 + "@types/react-text-truncate": ^0.14.0 + ansi-regex: ^6.0.1 + classnames: ^2.2.6 + d3-selection: ^3.0.0 + d3-shape: ^3.0.0 + d3-zoom: ^3.0.0 + dagre: ^0.8.5 + history: ^5.0.0 + immer: ^9.0.1 + lodash: ^4.17.21 + pluralize: ^8.0.0 + prop-types: ^15.7.2 + qs: ^6.9.4 + rc-progress: 3.4.1 + react-helmet: 6.1.0 + react-hook-form: ^7.12.2 + react-markdown: ^8.0.0 + react-sparklines: ^1.7.0 + react-syntax-highlighter: ^15.4.5 + react-text-truncate: ^0.19.0 + react-use: ^17.3.2 + react-virtualized-auto-sizer: ^1.0.6 + react-window: ^1.8.6 + remark-gfm: ^3.0.1 + zen-observable: ^0.10.0 + zod: ~3.18.0 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: f9c242af07b500f0de738591848776ad3864fb52e30f1979e547d6d607a0eb96df5c1464c8dadb4f5c1d7dd6c10ae74e4c2f60eba5380b704f4b01ac6711131c + languageName: node + linkType: hard + +"@backstage/core-components@workspace:^, @backstage/core-components@workspace:packages/core-components": version: 0.0.0-use.local resolution: "@backstage/core-components@workspace:packages/core-components" dependencies: @@ -4073,7 +4123,26 @@ __metadata: languageName: unknown linkType: soft -"@backstage/integration-react@^1.1.9, @backstage/integration-react@workspace:^, @backstage/integration-react@workspace:packages/integration-react": +"@backstage/integration-react@npm:^1.1.9": + version: 1.1.9 + resolution: "@backstage/integration-react@npm:1.1.9" + dependencies: + "@backstage/config": ^1.0.6 + "@backstage/core-components": ^0.12.3 + "@backstage/core-plugin-api": ^1.3.0 + "@backstage/integration": ^1.4.2 + "@backstage/theme": ^0.2.16 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.57 + react-use: ^17.2.4 + peerDependencies: + react: ^16.13.1 || ^17.0.0 + checksum: 28d94f05e65944308ac6b0709e22336e6e745fe6143f7c3851ccf200725066fc73f53d238e559599d003818c764a86645e3d3f3178e2e5fd0d7cc968d7cc6375 + languageName: node + linkType: hard + +"@backstage/integration-react@workspace:^, @backstage/integration-react@workspace:packages/integration-react": version: 0.0.0-use.local resolution: "@backstage/integration-react@workspace:packages/integration-react" dependencies: @@ -7540,7 +7609,31 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-search-react@^1.4.0, @backstage/plugin-search-react@workspace:^, @backstage/plugin-search-react@workspace:plugins/search-react": +"@backstage/plugin-search-react@npm:^1.4.0": + version: 1.4.0 + resolution: "@backstage/plugin-search-react@npm:1.4.0" + dependencies: + "@backstage/core-components": ^0.12.3 + "@backstage/core-plugin-api": ^1.3.0 + "@backstage/plugin-search-common": ^1.2.1 + "@backstage/theme": ^0.2.16 + "@backstage/types": ^1.0.2 + "@backstage/version-bridge": ^1.0.3 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.57 + lodash: ^4.17.21 + qs: ^6.9.4 + react-use: ^17.3.2 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 + react: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: 0fe18ee991bea12ba4b525b1ed4934f53a2cb2172851762c67d844405206ef8ed335ce8ad6412b4c4f133ae2b1f654b5086cf9997521e2e2cb2ef9cad6891e0a + languageName: node + linkType: hard + +"@backstage/plugin-search-react@workspace:^, @backstage/plugin-search-react@workspace:plugins/search-react": version: 0.0.0-use.local resolution: "@backstage/plugin-search-react@workspace:plugins/search-react" dependencies: