From ebfc845b999751a6b63cefc49defb769ecd2ba6d Mon Sep 17 00:00:00 2001 From: Andrew Thal Date: Tue, 23 Feb 2021 12:07:48 -0500 Subject: [PATCH 001/315] Update Pagerduty setup instructions Signed-off-by: GitHub --- plugins/pagerduty/README.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/plugins/pagerduty/README.md b/plugins/pagerduty/README.md index 0e5d75d41c..db34908050 100644 --- a/plugins/pagerduty/README.md +++ b/plugins/pagerduty/README.md @@ -28,12 +28,12 @@ Add it to the app in `plugins.ts`: export { plugin as Pagerduty } from '@backstage/plugin-pagerduty'; ``` -Add it to the `EntityPage.ts`: +Add it to the `EntityPage.tsx`: ```ts import { isPluginApplicableToEntity as isPagerDutyAvailable, - PagerDutyCard, + EntityPagerDutyCard, } from '@backstage/plugin-pagerduty'; // add to code { @@ -45,6 +45,18 @@ import { } ``` +Add the proxy configuration in `app-config.yaml` + +```yaml +proxy: + ... + '/pagerduty': + target: https://api.pagerduty.com + headers: + Authorization: + $env: PAGERDUTY_TOKEN +``` + ## Client configuration If you want to override the default URL for events, you can add it to `app-config.yaml`. From 8ab12ecd8784afc65185fa96c2c913b4c4d22e5c Mon Sep 17 00:00:00 2001 From: Andrew Thal Date: Wed, 3 Mar 2021 09:27:58 -0500 Subject: [PATCH 002/315] Update README.md Signed-off-by: Andrew Thal --- plugins/pagerduty/README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/plugins/pagerduty/README.md b/plugins/pagerduty/README.md index db34908050..55fc793a19 100644 --- a/plugins/pagerduty/README.md +++ b/plugins/pagerduty/README.md @@ -45,18 +45,6 @@ import { } ``` -Add the proxy configuration in `app-config.yaml` - -```yaml -proxy: - ... - '/pagerduty': - target: https://api.pagerduty.com - headers: - Authorization: - $env: PAGERDUTY_TOKEN -``` - ## Client configuration If you want to override the default URL for events, you can add it to `app-config.yaml`. @@ -72,6 +60,18 @@ pagerduty: In order for the client to make requests to the [PagerDuty API](https://developer.pagerduty.com/docs/rest-api-v2/rest-api/) it needs an [API Token](https://support.pagerduty.com/docs/generating-api-keys#generating-a-general-access-rest-api-key). + +Add the proxy configuration in `app-config.yaml` + +```yaml +proxy: + ... + '/pagerduty': + target: https://api.pagerduty.com + headers: + Authorization: Token token=${PAGERDUTY_TOKEN} +``` + Then start the backend passing the token as an environment variable: ```bash From 8af610e8c4079409f6ad0a1f46945faf54e48370 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 9 Mar 2021 08:37:48 +0100 Subject: [PATCH 003/315] docs: change recommended actions folder name Signed-off-by: blam --- docs/features/software-templates/writing-custom-actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/software-templates/writing-custom-actions.md b/docs/features/software-templates/writing-custom-actions.md index 2a48a014d6..5f8609151a 100644 --- a/docs/features/software-templates/writing-custom-actions.md +++ b/docs/features/software-templates/writing-custom-actions.md @@ -16,7 +16,7 @@ alongside your `backend` package in `packages/backend`. Let's create a simple action that adds a new file and some contents that are passed as `input` to the function. -In `packages/backend/src/actions/custom.ts` we can create a new action. +In `packages/backend/src/plugins/scaffolder/actions/custom.ts` we can create a new action. ```ts import { createTemplateAction } from '@backstage/plugin-scaffolder-backend'; From 52dac1fda9b573e9ce6adc8072e620c1ea5c3e39 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 9 Mar 2021 11:20:21 +0100 Subject: [PATCH 004/315] chore: run prettier Signed-off-by: blam --- docs/features/software-templates/writing-custom-actions.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/features/software-templates/writing-custom-actions.md b/docs/features/software-templates/writing-custom-actions.md index 5f8609151a..d638644e54 100644 --- a/docs/features/software-templates/writing-custom-actions.md +++ b/docs/features/software-templates/writing-custom-actions.md @@ -16,7 +16,8 @@ alongside your `backend` package in `packages/backend`. Let's create a simple action that adds a new file and some contents that are passed as `input` to the function. -In `packages/backend/src/plugins/scaffolder/actions/custom.ts` we can create a new action. +In `packages/backend/src/plugins/scaffolder/actions/custom.ts` we can create a +new action. ```ts import { createTemplateAction } from '@backstage/plugin-scaffolder-backend'; From 633a31fecfee13bc094d5912f6bfff75c9e7df4f Mon Sep 17 00:00:00 2001 From: Ioannis Georgoulas Date: Tue, 9 Mar 2021 10:33:54 +0000 Subject: [PATCH 005/315] catalog: make initially selected filter configurable Signed-off-by: Ioannis Georgoulas --- .changeset/catalog-chocolate-cake.md | 12 ++++++++++++ .../src/components/CatalogPage/CatalogPage.tsx | 14 ++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 .changeset/catalog-chocolate-cake.md diff --git a/.changeset/catalog-chocolate-cake.md b/.changeset/catalog-chocolate-cake.md new file mode 100644 index 0000000000..3e400bf5bb --- /dev/null +++ b/.changeset/catalog-chocolate-cake.md @@ -0,0 +1,12 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Add the ability to change the initially selected filter, if not set it still defaults to `owned`. + +```js +} +/> +``` diff --git a/plugins/catalog/src/components/CatalogPage/CatalogPage.tsx b/plugins/catalog/src/components/CatalogPage/CatalogPage.tsx index 0ec5dd31af..cf402d6225 100644 --- a/plugins/catalog/src/components/CatalogPage/CatalogPage.tsx +++ b/plugins/catalog/src/components/CatalogPage/CatalogPage.tsx @@ -59,7 +59,11 @@ const useStyles = makeStyles(theme => ({ }, })); -const CatalogPageContents = () => { +export type CatalogPageOpts = { + initiallySelectedFilter?: string; +}; + +const CatalogPageContents = (opt: CatalogPageOpts) => { const styles = useStyles(); const { loading, @@ -79,6 +83,8 @@ const CatalogPageContents = () => { setSelectedSidebarItem, ] = useState(); const orgName = configApi.getOptionalString('organization.name') ?? 'Company'; + const initiallySelectedFilter = + selectedSidebarItem?.id ?? opt.initiallySelectedFilter ?? 'owned'; const createComponentLink = useRouteRef(createComponentRouteRef); const addMockData = useCallback(async () => { try { @@ -197,7 +203,7 @@ const CatalogPageContents = () => { onChange={({ label, id }) => setSelectedSidebarItem({ label, id }) } - initiallySelected={selectedSidebarItem?.id ?? 'owned'} + initiallySelected={initiallySelectedFilter} /> @@ -213,8 +219,8 @@ const CatalogPageContents = () => { ); }; -export const CatalogPage = () => ( +export const CatalogPage = (opt: CatalogPageOpts) => ( - + ); From 2ea6751e8c55f5a7fe081a71ebfbd170dd2b718f Mon Sep 17 00:00:00 2001 From: Ioannis Georgoulas Date: Tue, 9 Mar 2021 12:14:34 +0000 Subject: [PATCH 006/315] Rename to props Signed-off-by: Ioannis Georgoulas --- .../catalog/src/components/CatalogPage/CatalogPage.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/catalog/src/components/CatalogPage/CatalogPage.tsx b/plugins/catalog/src/components/CatalogPage/CatalogPage.tsx index cf402d6225..efab2ac7fc 100644 --- a/plugins/catalog/src/components/CatalogPage/CatalogPage.tsx +++ b/plugins/catalog/src/components/CatalogPage/CatalogPage.tsx @@ -59,11 +59,11 @@ const useStyles = makeStyles(theme => ({ }, })); -export type CatalogPageOpts = { +export type CatalogPageProps = { initiallySelectedFilter?: string; }; -const CatalogPageContents = (opt: CatalogPageOpts) => { +const CatalogPageContents = (props: CatalogPageProps) => { const styles = useStyles(); const { loading, @@ -84,7 +84,7 @@ const CatalogPageContents = (opt: CatalogPageOpts) => { ] = useState(); const orgName = configApi.getOptionalString('organization.name') ?? 'Company'; const initiallySelectedFilter = - selectedSidebarItem?.id ?? opt.initiallySelectedFilter ?? 'owned'; + selectedSidebarItem?.id ?? props.initiallySelectedFilter ?? 'owned'; const createComponentLink = useRouteRef(createComponentRouteRef); const addMockData = useCallback(async () => { try { @@ -219,8 +219,8 @@ const CatalogPageContents = (opt: CatalogPageOpts) => { ); }; -export const CatalogPage = (opt: CatalogPageOpts) => ( +export const CatalogPage = (props: CatalogPageProps) => ( - + ); From 24b353dd2004620d2631457fbd064d4e0db02a5f Mon Sep 17 00:00:00 2001 From: Ioannis Georgoulas Date: Tue, 9 Mar 2021 12:46:42 +0000 Subject: [PATCH 007/315] Add test case for filter Signed-off-by: Ioannis Georgoulas --- .../catalog/src/components/CatalogPage/CatalogPage.test.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugins/catalog/src/components/CatalogPage/CatalogPage.test.tsx b/plugins/catalog/src/components/CatalogPage/CatalogPage.test.tsx index accfe6eda4..03f211a7bb 100644 --- a/plugins/catalog/src/components/CatalogPage/CatalogPage.test.tsx +++ b/plugins/catalog/src/components/CatalogPage/CatalogPage.test.tsx @@ -134,6 +134,12 @@ describe('CatalogPage', () => { fireEvent.click(getByText(/All/)); expect(await findByText(/All \(2\)/)).toBeInTheDocument(); }); + it('should set initial filter correctly', async () => { + const { findByText } = renderWrapped( + , + ); + expect(await findByText(/All \(2\)/)).toBeInTheDocument(); + }); // this test is for fixing the bug after favoriting an entity, the matching entities defaulting // to "owned" filter and not based on the selected filter it('should render the correct entities filtered on the selectedfilter', async () => { From d44777a802fe0ef1005d08f6ba3ed0018d30e488 Mon Sep 17 00:00:00 2001 From: Gowind Date: Tue, 9 Mar 2021 18:30:20 +0100 Subject: [PATCH 008/315] Expose `verifyNonce` and `readState` publicly Signed-off-by: Gowind --- plugins/auth-backend/src/lib/oauth/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/auth-backend/src/lib/oauth/index.ts b/plugins/auth-backend/src/lib/oauth/index.ts index bf3e0658e4..6bbe017eb3 100644 --- a/plugins/auth-backend/src/lib/oauth/index.ts +++ b/plugins/auth-backend/src/lib/oauth/index.ts @@ -16,7 +16,7 @@ export { OAuthEnvironmentHandler } from './OAuthEnvironmentHandler'; export { OAuthAdapter } from './OAuthAdapter'; -export { encodeState } from './helpers'; +export { encodeState, verifyNonce, readState } from './helpers'; export type { OAuthHandlers, OAuthProviderInfo, From 8b5e5975011961d4ecbb3b52767b440e4ef88c6d Mon Sep 17 00:00:00 2001 From: Gowind Date: Tue, 9 Mar 2021 18:36:45 +0100 Subject: [PATCH 009/315] add changeset for exposed functions Signed-off-by: Gowind --- .changeset/violet-bobcats-sin.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/violet-bobcats-sin.md diff --git a/.changeset/violet-bobcats-sin.md b/.changeset/violet-bobcats-sin.md new file mode 100644 index 0000000000..577ecab8fc --- /dev/null +++ b/.changeset/violet-bobcats-sin.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +expose verifyNonce and readState publicly from auth-backend From b56815b401af0337074d9eebb6c84f7e57cada97 Mon Sep 17 00:00:00 2001 From: Niall McCullagh Date: Tue, 9 Mar 2021 23:20:28 +0000 Subject: [PATCH 010/315] Fix issue where radar entry dialog with external url If an entry has both a radar description and an external url, when a user clicks on the blip the description dialog would briefly appear before they are redirected to the specified url. Expected behaviour is not to automatically redirect the user so that they can read the dialog and choose to follow the link for more details. Signed-off-by: Niall McCullagh Signed-off-by: Niall McCullagh --- .changeset/cyan-rings-live.md | 5 +++++ .../components/RadarEntry/RadarEntry.test.tsx | 16 ++++++++++++++++ .../src/components/RadarEntry/RadarEntry.tsx | 3 ++- plugins/tech-radar/src/sampleData.ts | 4 +++- 4 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 .changeset/cyan-rings-live.md diff --git a/.changeset/cyan-rings-live.md b/.changeset/cyan-rings-live.md new file mode 100644 index 0000000000..3b6d2b6d9b --- /dev/null +++ b/.changeset/cyan-rings-live.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-tech-radar': patch +--- + +Fixes issue where radar description dialog is not shown when the entry has an url external to the radar page diff --git a/plugins/tech-radar/src/components/RadarEntry/RadarEntry.test.tsx b/plugins/tech-radar/src/components/RadarEntry/RadarEntry.test.tsx index 0424624007..8cadd33da4 100644 --- a/plugins/tech-radar/src/components/RadarEntry/RadarEntry.test.tsx +++ b/plugins/tech-radar/src/components/RadarEntry/RadarEntry.test.tsx @@ -79,4 +79,20 @@ describe('RadarEntry', () => { expect(radarDescription).toBeInTheDocument(); expect(screen.getByText(String(minProps.value))).toBeInTheDocument(); }); + + it('should render blip with url equal to # if description present', () => { + const withUrl = { + ...optionalProps, + url: 'http://backstage.io', + }; + render( + + + + + , + ); + + expect(screen.getByRole('button')).toHaveAttribute('href', '#'); + }); }); diff --git a/plugins/tech-radar/src/components/RadarEntry/RadarEntry.tsx b/plugins/tech-radar/src/components/RadarEntry/RadarEntry.tsx index fb47a75c71..c3500a8c2d 100644 --- a/plugins/tech-radar/src/components/RadarEntry/RadarEntry.tsx +++ b/plugins/tech-radar/src/components/RadarEntry/RadarEntry.tsx @@ -111,11 +111,12 @@ const RadarEntry = (props: Props): JSX.Element => { /> )} {description ? ( + // eslint-disable-next-line jsx-a11y/anchor-is-valid diff --git a/plugins/tech-radar/src/sampleData.ts b/plugins/tech-radar/src/sampleData.ts index 613e7b3cdc..309c3f6b88 100644 --- a/plugins/tech-radar/src/sampleData.ts +++ b/plugins/tech-radar/src/sampleData.ts @@ -72,9 +72,11 @@ entries.push({ moved: 1, ringId: 'use', date: new Date('2020-08-06'), + description: + 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur', }, ], - url: '#', + url: 'https://webpack.js.org/', key: 'webpack', id: 'webpack', title: 'Webpack', From 82938ef0909b777f79a05d26b505984b82f2c001 Mon Sep 17 00:00:00 2001 From: GregoireW <24318548+GregoireW@users.noreply.github.com> Date: Wed, 10 Mar 2021 15:41:03 +0100 Subject: [PATCH 011/315] Bitrise getter should be paginated Signed-off-by: GregoireW <24318548+GregoireW@users.noreply.github.com> --- .../bitrise/src/api/bitriseApi.client.test.ts | 36 +++++++++++++++++++ plugins/bitrise/src/api/bitriseApi.client.ts | 14 ++++++-- .../BitriseBuildsComponent.tsx | 3 ++ .../BitriseBuildsComponent/index.ts | 1 + plugins/bitrise/src/index.ts | 1 + 5 files changed, 53 insertions(+), 2 deletions(-) diff --git a/plugins/bitrise/src/api/bitriseApi.client.test.ts b/plugins/bitrise/src/api/bitriseApi.client.test.ts index 9e125d8d06..bc62491c34 100644 --- a/plugins/bitrise/src/api/bitriseApi.client.test.ts +++ b/plugins/bitrise/src/api/bitriseApi.client.test.ts @@ -80,6 +80,42 @@ describe('BitriseClientApi', () => { }); describe('getApp()', () => { + it('should get all apps', async () => { + server.use( + rest.get( + `${mockBaseUrl}/bitrise/apps?next=slug-2-1`, + (_req, res, ctx) => { + const next = _req.url.searchParams.get('next'); + if (next === 'slug-2-1') { + return res( + ctx.json({ + data: [{ title: 'app21', slug: 'slug-2-1' }], + }), + ); + } + return res( + ctx.json({ + data: [ + { title: 'app11', slug: 'slug-1-1' }, + { title: 'app12', slug: 'slug-1-2' }, + ], + paging: { + next: 'slug-2-1', + page_item_limit: 0, + total_item_count: 0, + }, + }), + ); + }, + ), + ); + + const apps = await client.getApps(); + + expect(apps).toBeDefined(); + expect(apps.length).toBe(3); + }); + it('should get the app', async () => { server.use( rest.get(`${mockBaseUrl}/*`, (_req, res, ctx) => { diff --git a/plugins/bitrise/src/api/bitriseApi.client.ts b/plugins/bitrise/src/api/bitriseApi.client.ts index 4fc66c55a1..e7af5259ab 100644 --- a/plugins/bitrise/src/api/bitriseApi.client.ts +++ b/plugins/bitrise/src/api/bitriseApi.client.ts @@ -61,15 +61,25 @@ export class BitriseClientApi implements BitriseApi { return data.data; } - async getApps(): Promise { + async getAppsPaginated(from: string): Promise { const baseUrl = await this.discoveryApi.getBaseUrl('proxy'); - const appsResponse = await fetch(`${baseUrl}/bitrise/apps`); + const appsResponse = await fetch(`${baseUrl}/bitrise/apps?next=${from}`); const appsData = await appsResponse.json(); + if (appsData.paging?.next) { + return appsData.data.concat( + await this.getAppsPaginated(appsData.paging.next), + ); + } + return appsData.data; } + async getApps(): Promise { + return await this.getAppsPaginated(''); + } + async getApp(appName: string): Promise { const apps = await this.getApps(); diff --git a/plugins/bitrise/src/components/BitriseBuildsComponent/BitriseBuildsComponent.tsx b/plugins/bitrise/src/components/BitriseBuildsComponent/BitriseBuildsComponent.tsx index 0e4bd3e5db..eeabaf0b08 100644 --- a/plugins/bitrise/src/components/BitriseBuildsComponent/BitriseBuildsComponent.tsx +++ b/plugins/bitrise/src/components/BitriseBuildsComponent/BitriseBuildsComponent.tsx @@ -34,6 +34,9 @@ export type Props = { export const BITRISE_APP_ANNOTATION = 'bitrise.io/app'; +export const isBitriseAvailable = (entity: Entity) => + Boolean(entity.metadata.annotations?.[BITRISE_APP_ANNOTATION]); + export const BitriseBuildsComponent = () => { const { entity } = useEntity(); const appName = entity.metadata.annotations?.[ diff --git a/plugins/bitrise/src/components/BitriseBuildsComponent/index.ts b/plugins/bitrise/src/components/BitriseBuildsComponent/index.ts index 8bb1b7e13f..aaf235251d 100644 --- a/plugins/bitrise/src/components/BitriseBuildsComponent/index.ts +++ b/plugins/bitrise/src/components/BitriseBuildsComponent/index.ts @@ -16,5 +16,6 @@ export { BitriseBuildsComponent, + isBitriseAvailable, BITRISE_APP_ANNOTATION, } from './BitriseBuildsComponent'; diff --git a/plugins/bitrise/src/index.ts b/plugins/bitrise/src/index.ts index 83dad176c7..acec26825a 100644 --- a/plugins/bitrise/src/index.ts +++ b/plugins/bitrise/src/index.ts @@ -16,3 +16,4 @@ export { bitrisePlugin } from './plugin'; export { EntityBitriseContent } from './extensions'; +export { isBitriseAvailable } from './components/BitriseBuildsComponent'; From 68f024fa84bf94ed0c071d93aace2cae460cef69 Mon Sep 17 00:00:00 2001 From: GregoireW <24318548+GregoireW@users.noreply.github.com> Date: Wed, 10 Mar 2021 17:14:13 +0100 Subject: [PATCH 012/315] Add changeset Signed-off-by: GregoireW <24318548+GregoireW@users.noreply.github.com> --- .changeset/heavy-spiders-accept.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/heavy-spiders-accept.md diff --git a/.changeset/heavy-spiders-accept.md b/.changeset/heavy-spiders-accept.md new file mode 100644 index 0000000000..c5527ea06d --- /dev/null +++ b/.changeset/heavy-spiders-accept.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-bitrise': patch +--- + +The apps lookup from bitrise is now getting all apps by fetching every page of the app list From b564b7b38540be389e74315bbd828f267001aaee Mon Sep 17 00:00:00 2001 From: GregoireW <24318548+GregoireW@users.noreply.github.com> Date: Wed, 10 Mar 2021 17:21:15 +0100 Subject: [PATCH 013/315] Add changeset Signed-off-by: GregoireW <24318548+GregoireW@users.noreply.github.com> --- .changeset/heavy-spiders-accept.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/heavy-spiders-accept.md b/.changeset/heavy-spiders-accept.md index c5527ea06d..57080a7ada 100644 --- a/.changeset/heavy-spiders-accept.md +++ b/.changeset/heavy-spiders-accept.md @@ -2,4 +2,4 @@ '@backstage/plugin-bitrise': patch --- -The apps lookup from bitrise is now getting all apps by fetching every page of the app list +The apps lookup from 'bitrise' is now getting all apps by fetching every page of the app list From 9d246a3e89b30c8be9b7f4f3bd0a2678348fa146 Mon Sep 17 00:00:00 2001 From: GregoireW <24318548+GregoireW@users.noreply.github.com> Date: Wed, 10 Mar 2021 17:30:38 +0100 Subject: [PATCH 014/315] Add changeset Signed-off-by: GregoireW <24318548+GregoireW@users.noreply.github.com> --- .changeset/heavy-spiders-accept.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/heavy-spiders-accept.md b/.changeset/heavy-spiders-accept.md index 57080a7ada..5560071e99 100644 --- a/.changeset/heavy-spiders-accept.md +++ b/.changeset/heavy-spiders-accept.md @@ -2,4 +2,4 @@ '@backstage/plugin-bitrise': patch --- -The apps lookup from 'bitrise' is now getting all apps by fetching every page of the app list +The apps lookup is now getting all apps by fetching every page of the app list From 386e7aa007f4360224428071a44ad5f5f83f4b74 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 8 Mar 2021 15:55:39 +0100 Subject: [PATCH 015/315] core-api: refactor global singleton access to get/set/getOrCreate Co-authored-by: Juan Lulkin Signed-off-by: Patrik Oldsberg --- .../core-api/src/extensions/componentData.tsx | 4 +- .../core-api/src/lib/globalObject.test.ts | 58 +++++++++++++++++-- packages/core-api/src/lib/globalObject.ts | 37 +++++++++++- packages/core-api/src/routing/types.ts | 4 +- 4 files changed, 91 insertions(+), 12 deletions(-) diff --git a/packages/core-api/src/extensions/componentData.tsx b/packages/core-api/src/extensions/componentData.tsx index 8b46d34705..fc8594039c 100644 --- a/packages/core-api/src/extensions/componentData.tsx +++ b/packages/core-api/src/extensions/componentData.tsx @@ -15,7 +15,7 @@ */ import { ComponentType, ReactNode } from 'react'; -import { getGlobalSingleton } from '../lib/globalObject'; +import { getOrCreateGlobalSingleton } from '../lib/globalObject'; // TODO(Rugvip): Access via symbol is deprecated, remove once on 0.3.x const DATA_KEY = Symbol('backstage-component-data'); @@ -33,7 +33,7 @@ type MaybeComponentNode = ReactNode & { }; // The store is bridged across versions using the global object -const store = getGlobalSingleton( +const store = getOrCreateGlobalSingleton( 'component-data-store', () => new WeakMap, DataContainer>(), ); diff --git a/packages/core-api/src/lib/globalObject.test.ts b/packages/core-api/src/lib/globalObject.test.ts index f539483a83..e72f027b46 100644 --- a/packages/core-api/src/lib/globalObject.test.ts +++ b/packages/core-api/src/lib/globalObject.test.ts @@ -14,7 +14,11 @@ * limitations under the License. */ -import { getGlobalSingleton } from './globalObject'; +import { + getGlobalSingleton, + getOrCreateGlobalSingleton, + setGlobalSingleton, +} from './globalObject'; const anyGlobal = global as any; @@ -23,20 +27,64 @@ describe('getGlobalSingleton', () => { delete anyGlobal['__@backstage/my-thing__']; }); + it('should return an existing value', () => { + const myThing = {}; + const myOtherThing = {}; + + anyGlobal['__@backstage/my-thing__'] = myThing; + expect(getGlobalSingleton('my-thing')).toBe(myThing); + expect(getGlobalSingleton('my-thing')).toBe(myThing); + anyGlobal['__@backstage/my-thing__'] = myOtherThing; + expect(getGlobalSingleton('my-thing')).toBe(myOtherThing); + }); + + it('should throw if the value is not set', () => { + expect(() => getGlobalSingleton('my-thing')).toThrow( + 'Global my-thing is not set', + ); + }); +}); + +describe('getOrCreateGlobalSingleton', () => { + beforeEach(() => { + delete anyGlobal['__@backstage/my-thing__']; + }); + it('should return an existing value', () => { const myThing = {}; anyGlobal['__@backstage/my-thing__'] = myThing; - expect(getGlobalSingleton('my-thing', () => ({}))).toBe(myThing); - expect(getGlobalSingleton('my-thing', () => ({}))).toBe(myThing); + expect(getOrCreateGlobalSingleton('my-thing', () => ({}))).toBe(myThing); + expect(getOrCreateGlobalSingleton('my-thing', () => ({}))).toBe(myThing); }); it('should should create a new value', () => { const myNewThing = {}; expect(anyGlobal['__@backstage/my-thing__']).toBe(undefined); - expect(getGlobalSingleton('my-thing', () => myNewThing)).toBe(myNewThing); + expect(getOrCreateGlobalSingleton('my-thing', () => myNewThing)).toBe( + myNewThing, + ); expect(anyGlobal['__@backstage/my-thing__']).toBe(myNewThing); - expect(getGlobalSingleton('my-thing', () => ({}))).toBe(myNewThing); + expect(getOrCreateGlobalSingleton('my-thing', () => ({}))).toBe(myNewThing); + }); +}); + +describe('setGlobalSingleton', () => { + beforeEach(() => { + delete anyGlobal['__@backstage/my-thing__']; + }); + + it('should set a global value', () => { + setGlobalSingleton('my-thing', 'global value'); + + expect(anyGlobal['__@backstage/my-thing__']).toBe('global value'); + }); + + it('should throw if global value is set', () => { + anyGlobal['__@backstage/my-thing__'] = 'already defined'; + expect(() => setGlobalSingleton('my-thing', () => 'global value')).toThrow( + 'Global my-thing is already se', + ); }); }); diff --git a/packages/core-api/src/lib/globalObject.ts b/packages/core-api/src/lib/globalObject.ts index c7f9f98882..87be58499d 100644 --- a/packages/core-api/src/lib/globalObject.ts +++ b/packages/core-api/src/lib/globalObject.ts @@ -26,10 +26,41 @@ function getGlobalObject() { return Function('return this')(); } -export const globalObject = getGlobalObject(); +const globalObject = getGlobalObject(); -export function getGlobalSingleton(id: string, supplier: () => T): T { - const key = `__@backstage/${id}__`; +const makeKey = (id: string) => `__@backstage/${id}__`; + +/** + * Used to provide a global singleton value, failing if it is already set. + */ +export function setGlobalSingleton(id: string, value: unknown): void { + const key = makeKey(id); + if (key in globalObject) { + throw new Error(`Global ${id} is already set`); // TODO some sort of special build err + } + globalObject[key] = value; +} + +/** + * Used to access a global singleton value, failing if it is not already set. + */ +export function getGlobalSingleton(id: string): T { + const key = makeKey(id); + if (!(key in globalObject)) { + throw new Error(`Global ${id} is not set`); // TODO some sort of special build err + } + + return globalObject[key]; +} + +/** + * Serializes access to a global singleton value, with the first caller creating the value. + */ +export function getOrCreateGlobalSingleton( + id: string, + supplier: () => T, +): T { + const key = makeKey(id); let value = globalObject[key]; if (value) { diff --git a/packages/core-api/src/routing/types.ts b/packages/core-api/src/routing/types.ts index 56b991f3af..1fabd39cc4 100644 --- a/packages/core-api/src/routing/types.ts +++ b/packages/core-api/src/routing/types.ts @@ -15,7 +15,7 @@ */ import { IconComponent } from '../icons'; -import { getGlobalSingleton } from '../lib/globalObject'; +import { getOrCreateGlobalSingleton } from '../lib/globalObject'; export type AnyParams = { [param in string]: string } | undefined; export type ParamKeys = keyof Params extends never @@ -34,7 +34,7 @@ export type RouteFunc = ( ...[params]: Params extends undefined ? readonly [] : readonly [Params] ) => string; -export const routeRefType: unique symbol = getGlobalSingleton( +export const routeRefType: unique symbol = getOrCreateGlobalSingleton( 'route-ref-type', () => Symbol('route-ref-type'), ); From 1f3321fbfcfe7deb9669ca430cbd9cae7f1d08ee Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 8 Mar 2021 17:21:38 +0100 Subject: [PATCH 016/315] core-api: add versioned value types and helpers Co-authored-by: Juan Lulkin Signed-off-by: Patrik Oldsberg --- .../core-api/src/lib/versionedValues.test.ts | 40 +++++++++++++++++++ packages/core-api/src/lib/versionedValues.ts | 40 +++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 packages/core-api/src/lib/versionedValues.test.ts create mode 100644 packages/core-api/src/lib/versionedValues.ts diff --git a/packages/core-api/src/lib/versionedValues.test.ts b/packages/core-api/src/lib/versionedValues.test.ts new file mode 100644 index 0000000000..6ba7db4970 --- /dev/null +++ b/packages/core-api/src/lib/versionedValues.test.ts @@ -0,0 +1,40 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { createVersionedValueMap } from './versionedValues'; + +describe('createVersionedValueMap', () => { + it('should be empty', () => { + const map = createVersionedValueMap({}); + + // @ts-expect-error + expect(map.atVersion(1 as any)).toBe(undefined); + }); + + it('should access values by version', () => { + const map = createVersionedValueMap({ 1: 'v1', 2: 'v2' }); + + expect(map.atVersion(1)).toBe('v1'); + expect(map.atVersion(2)).toBe('v2'); + + // @ts-expect-error + expect(map.atVersion(0)).toBe(undefined); + // @ts-expect-error + expect(map.atVersion(NaN)).toBe(undefined); + // @ts-expect-error + expect(map.atVersion(Infinity)).toBe(undefined); + }); +}); diff --git a/packages/core-api/src/lib/versionedValues.ts b/packages/core-api/src/lib/versionedValues.ts new file mode 100644 index 0000000000..88e4e90084 --- /dev/null +++ b/packages/core-api/src/lib/versionedValues.ts @@ -0,0 +1,40 @@ +/* + * Copyright 2021 Spotify AB + * + * 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. + */ + +/** + * The versioned value interface is a container for a set of values that + * can be looked up by version. It is intended to be used as a container + * for values that can be versioned independently of package versions. + */ +export type VersionedValue = { + atVersion( + version: Version, + ): Versions[Version] | undefined; +}; + +/** + * Creates a container for a map of versioned values that implements VersionedValue. + */ +export function createVersionedValueMap< + Versions extends { [version: number]: any } +>(versions: Versions): VersionedValue { + Object.freeze(versions); + return { + atVersion(version) { + return versions[version]; + }, + }; +} From d5c8bc8a01bf50d4e937ce54fe4cf914ae54a6f5 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 8 Mar 2021 18:10:40 +0100 Subject: [PATCH 017/315] core-api: migrate ApiContext to use version bridge Co-authored-by: Juan Lulkin Signed-off-by: Patrik Oldsberg --- .../src/apis/system/ApiProvider.test.tsx | 37 ++++++++++++++++++- .../core-api/src/apis/system/ApiProvider.tsx | 37 ++++++++++++++----- 2 files changed, 63 insertions(+), 11 deletions(-) diff --git a/packages/core-api/src/apis/system/ApiProvider.test.tsx b/packages/core-api/src/apis/system/ApiProvider.test.tsx index 71269697c2..4c0b3f5683 100644 --- a/packages/core-api/src/apis/system/ApiProvider.test.tsx +++ b/packages/core-api/src/apis/system/ApiProvider.test.tsx @@ -14,12 +14,15 @@ * limitations under the License. */ -import React from 'react'; +import React, { Context, useContext } from 'react'; import { ApiProvider, useApi, withApis } from './ApiProvider'; import { createApiRef } from './ApiRef'; import { ApiRegistry } from './ApiRegistry'; import { render } from '@testing-library/react'; import { withLogCollector } from '@backstage/test-utils-core'; +import { getGlobalSingleton } from '../../lib/globalObject'; +import { ApiHolder, ApiRef } from './types'; +import { VersionedValue } from '../../lib/versionedValues'; describe('ApiProvider', () => { type Api = () => string; @@ -175,3 +178,35 @@ describe('ApiProvider', () => { ]); }); }); + +describe('v1 consumer', () => { + const ApiContext = getGlobalSingleton< + Context> + >('api-context'); + + function useMockApiV1(apiRef: ApiRef): T { + const impl = useContext(ApiContext)?.atVersion(1)?.get(apiRef); + if (!impl) { + throw new Error('no impl'); + } + return impl; + } + + type Api = () => string; + const apiRef = createApiRef({ id: 'x', description: '' }); + const registry = ApiRegistry.from([[apiRef, () => 'hello']]); + + const MyHookConsumerV1 = () => { + const api = useMockApiV1(apiRef); + return

hook message: {api()}

; + }; + + it('should provide apis', () => { + const renderedHook = render( + + + , + ); + renderedHook.getByText('hook message: hello'); + }); +}); diff --git a/packages/core-api/src/apis/system/ApiProvider.tsx b/packages/core-api/src/apis/system/ApiProvider.tsx index d41730cb59..6740746ce2 100644 --- a/packages/core-api/src/apis/system/ApiProvider.tsx +++ b/packages/core-api/src/apis/system/ApiProvider.tsx @@ -19,10 +19,16 @@ import React, { useContext, ReactNode, PropsWithChildren, + Context, } from 'react'; import PropTypes from 'prop-types'; import { ApiRef, ApiHolder, TypesToApiRefs } from './types'; import { ApiAggregator } from './ApiAggregator'; +import { getGlobalSingleton, setGlobalSingleton } from '../../lib/globalObject'; +import { + VersionedValue, + createVersionedValueMap, +} from '../../lib/versionedValues'; const missingHolderMessage = 'No ApiProvider available in react context. ' + @@ -35,16 +41,24 @@ type ApiProviderProps = { children: ReactNode; }; -const Context = createContext(undefined); +type ApiContextType = VersionedValue<{ 1: ApiHolder }> | undefined; +const ApiContext = createContext(undefined); + +setGlobalSingleton('api-context', ApiContext); export const ApiProvider = ({ apis, children, }: PropsWithChildren) => { - const parentHolder = useContext(Context); + const parentHolder = useContext(ApiContext)?.atVersion(1); const holder = parentHolder ? new ApiAggregator(apis, parentHolder) : apis; - return ; + return ( + + ); }; ApiProvider.propTypes = { @@ -53,12 +67,19 @@ ApiProvider.propTypes = { }; export function useApiHolder(): ApiHolder { - const apiHolder = useContext(Context); + const versionedHolder = useContext( + getGlobalSingleton>('api-context'), + ); - if (!apiHolder) { + if (!versionedHolder) { throw new Error(missingHolderMessage); } + const apiHolder = versionedHolder.atVersion(1); + if (!apiHolder) { + throw new Error('ApiContext v1 not available'); + } + return apiHolder; } @@ -77,11 +98,7 @@ export function withApis(apis: TypesToApiRefs) { WrappedComponent: React.ComponentType

, ) { const Hoc = (props: PropsWithChildren>) => { - const apiHolder = useContext(Context); - - if (!apiHolder) { - throw new Error(missingHolderMessage); - } + const apiHolder = useApiHolder(); const impls = {} as T; From 00958737363f80d957a73ae3533bd260f0172597 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 9 Mar 2021 11:16:10 +0100 Subject: [PATCH 018/315] core-api: migrate AppContext to use version bridge Co-authored-by: Juan Lulkin Signed-off-by: Patrik Oldsberg --- packages/core-api/package.json | 1 + packages/core-api/src/app/AppContext.test.tsx | 79 +++++++++++++++++++ packages/core-api/src/app/AppContext.tsx | 41 +++++++--- 3 files changed, 111 insertions(+), 10 deletions(-) create mode 100644 packages/core-api/src/app/AppContext.test.tsx diff --git a/packages/core-api/package.json b/packages/core-api/package.json index cdc21264d3..dbeb2021df 100644 --- a/packages/core-api/package.json +++ b/packages/core-api/package.json @@ -47,6 +47,7 @@ "@backstage/test-utils-core": "^0.1.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", + "@testing-library/react-hooks": "^3.3.0", "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", diff --git a/packages/core-api/src/app/AppContext.test.tsx b/packages/core-api/src/app/AppContext.test.tsx new file mode 100644 index 0000000000..55d98c18c0 --- /dev/null +++ b/packages/core-api/src/app/AppContext.test.tsx @@ -0,0 +1,79 @@ +/* + * Copyright 2020 Spotify AB + * + * 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, { useContext, Context } from 'react'; +import { renderHook } from '@testing-library/react-hooks'; +import { VersionedValue } from '../lib/versionedValues'; +import { getGlobalSingleton } from '../lib/globalObject'; +import { AppContext as AppContextV1 } from './types'; +import { AppContextProvider } from './AppContext'; + +describe('v1 consumer', () => { + const AppContext = getGlobalSingleton< + Context> + >('app-context'); + + function useMockAppV1(): AppContextV1 { + const impl = useContext(AppContext)?.atVersion(1); + if (!impl) { + throw new Error('no impl'); + } + return impl; + } + + it('should provide an app context', () => { + const mockContext: AppContextV1 = { + getComponents: jest.fn(), + getSystemIcon: jest.fn(), + getPlugins: jest.fn(), + getProvider: jest.fn(), + getRouter: jest.fn(), + getRoutes: jest.fn(), + }; + + const renderedHook = renderHook(() => useMockAppV1(), { + wrapper: ({ children }) => ( + + ), + }); + const result = renderedHook.result.current; + + expect(mockContext.getComponents).toHaveBeenCalledTimes(0); + result.getComponents(); + expect(mockContext.getComponents).toHaveBeenCalledTimes(1); + + expect(mockContext.getSystemIcon).toHaveBeenCalledTimes(0); + result.getSystemIcon('icon'); + expect(mockContext.getSystemIcon).toHaveBeenCalledTimes(1); + expect(mockContext.getSystemIcon).toHaveBeenCalledWith('icon'); + + expect(mockContext.getPlugins).toHaveBeenCalledTimes(0); + result.getPlugins(); + expect(mockContext.getPlugins).toHaveBeenCalledTimes(1); + + expect(mockContext.getProvider).toHaveBeenCalledTimes(0); + result.getProvider(); + expect(mockContext.getProvider).toHaveBeenCalledTimes(1); + + expect(mockContext.getRouter).toHaveBeenCalledTimes(0); + result.getRouter(); + expect(mockContext.getRouter).toHaveBeenCalledTimes(1); + + expect(mockContext.getRoutes).toHaveBeenCalledTimes(0); + result.getRoutes(); + expect(mockContext.getRoutes).toHaveBeenCalledTimes(1); + }); +}); diff --git a/packages/core-api/src/app/AppContext.tsx b/packages/core-api/src/app/AppContext.tsx index c7c405a959..7b73d71c6b 100644 --- a/packages/core-api/src/app/AppContext.tsx +++ b/packages/core-api/src/app/AppContext.tsx @@ -14,26 +14,47 @@ * limitations under the License. */ -import React, { createContext, PropsWithChildren, useContext } from 'react'; -import { AppContext } from './types'; +import React, { + createContext, + PropsWithChildren, + useContext, + Context, +} from 'react'; +import { + VersionedValue, + createVersionedValueMap, +} from '../lib/versionedValues'; +import { getGlobalSingleton, setGlobalSingleton } from '../lib/globalObject'; +import { AppContext as AppContextV1 } from './types'; -const Context = createContext(undefined); +type AppContextType = VersionedValue<{ 1: AppContextV1 }> | undefined; +const AppContext = createContext(undefined); + +setGlobalSingleton('app-context', AppContext); type Props = { - appContext: AppContext; + appContext: AppContextV1; }; export const AppContextProvider = ({ appContext, children, -}: PropsWithChildren) => ( - -); +}: PropsWithChildren) => { + const versionedValue = createVersionedValueMap({ 1: appContext }); -export const useApp = (): AppContext => { - const appContext = useContext(Context); - if (!appContext) { + return ; +}; + +export const useApp = (): AppContextV1 => { + const versionedContext = useContext( + getGlobalSingleton>('app-context'), + ); + if (!versionedContext) { throw new Error('No app context available'); } + const appContext = versionedContext.atVersion(1); + if (!appContext) { + throw new Error('AppContext v1 not available'); + } return appContext; }; From 7d30365c67795ac27b50d558793360ff0a176d75 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 9 Mar 2021 12:19:32 +0100 Subject: [PATCH 019/315] core-api: migrate RoutingContext to use version bridge Co-authored-by: Juan Lulkin Signed-off-by: Patrik Oldsberg --- packages/core-api/src/routing/hooks.test.tsx | 65 +++++++++++++++++++- packages/core-api/src/routing/hooks.tsx | 34 ++++++++-- 2 files changed, 91 insertions(+), 8 deletions(-) diff --git a/packages/core-api/src/routing/hooks.test.tsx b/packages/core-api/src/routing/hooks.test.tsx index 9a65286fd6..d16f9808ab 100644 --- a/packages/core-api/src/routing/hooks.test.tsx +++ b/packages/core-api/src/routing/hooks.test.tsx @@ -14,9 +14,17 @@ * limitations under the License. */ -import { render } from '@testing-library/react'; -import React, { PropsWithChildren, ReactElement } from 'react'; +import React, { + PropsWithChildren, + ReactElement, + useContext, + Context, +} from 'react'; import { MemoryRouter, Routes } from 'react-router-dom'; +import { render } from '@testing-library/react'; +import { renderHook } from '@testing-library/react-hooks'; +import { VersionedValue } from '../lib/versionedValues'; +import { getGlobalSingleton } from '../lib/globalObject'; import { createRoutableExtension } from '../extensions'; import { childDiscoverer, @@ -32,6 +40,7 @@ import { import { validateRoutes } from './validation'; import { useRouteRef, RoutingProvider } from './hooks'; import { createRouteRef, RouteRefConfig } from './RouteRef'; +import { RouteResolver } from './RouteResolver'; import { createExternalRouteRef } from './ExternalRouteRef'; import { AnyRouteRef, RouteFunc, RouteRef, ExternalRouteRef } from './types'; @@ -309,3 +318,55 @@ describe('discovery', () => { ); }); }); + +describe('v1 consumer', () => { + const RoutingContext = getGlobalSingleton< + Context> + >('routing-context'); + + function useMockRouteRefV1( + routeRef: AnyRouteRef, + location: string, + ): RouteFunc | undefined { + const resolver = useContext(RoutingContext)?.atVersion(1); + if (!resolver) { + throw new Error('no impl'); + } + return resolver.resolve(routeRef, location); + } + + it('should resolve routes', () => { + const routeRef1 = createRouteRef({ id: 'ref1' }); + const routeRef2 = createRouteRef({ id: 'ref2' }); + const routeRef3 = createRouteRef({ id: 'ref3', params: ['x'] }); + + const renderedHook = renderHook( + ({ routeRef }) => useMockRouteRefV1(routeRef, '/'), + { + initialProps: { + routeRef: routeRef1 as AnyRouteRef, + }, + wrapper: ({ children }) => ( + , string>([ + [routeRef2, '/foo'], + [routeRef3, '/bar/:x'], + ]) + } + routeParents={new Map()} + routeObjects={[]} + routeBindings={new Map()} + children={children} + /> + ), + }, + ); + + expect(renderedHook.result.current).toBe(undefined); + renderedHook.rerender({ routeRef: routeRef2 }); + expect(renderedHook.result.current?.()).toBe('/foo'); + renderedHook.rerender({ routeRef: routeRef3 }); + expect(renderedHook.result.current?.({ x: 'my-x' })).toBe('/bar/my-x'); + }); +}); diff --git a/packages/core-api/src/routing/hooks.tsx b/packages/core-api/src/routing/hooks.tsx index 2e65efaba6..b8690d867a 100644 --- a/packages/core-api/src/routing/hooks.tsx +++ b/packages/core-api/src/routing/hooks.tsx @@ -14,7 +14,13 @@ * limitations under the License. */ -import React, { createContext, ReactNode, useContext, useMemo } from 'react'; +import React, { + createContext, + ReactNode, + useContext, + useMemo, + Context, +} from 'react'; import { useLocation } from 'react-router-dom'; import { BackstageRouteObject, @@ -25,8 +31,16 @@ import { RouteFunc, } from './types'; import { RouteResolver } from './RouteResolver'; +import { + VersionedValue, + createVersionedValueMap, +} from '../lib/versionedValues'; +import { setGlobalSingleton, getGlobalSingleton } from '../lib/globalObject'; -const RoutingContext = createContext(undefined); +type RoutingContextType = VersionedValue<{ 1: RouteResolver }> | undefined; +const RoutingContext = createContext(undefined); + +setGlobalSingleton('routing-context', RoutingContext); export function useRouteRef( routeRef: ExternalRouteRef, @@ -41,14 +55,20 @@ export function useRouteRef( | ExternalRouteRef, ): RouteFunc | undefined { const sourceLocation = useLocation(); - const resolver = useContext(RoutingContext); + const versionedContext = useContext( + getGlobalSingleton>('routing-context'), + ); + const resolver = versionedContext?.atVersion(1); const routeFunc = useMemo( () => resolver && resolver.resolve(routeRef, sourceLocation), [resolver, routeRef, sourceLocation], ); - if (!routeFunc && !resolver) { - throw new Error('No route resolver found in context'); + if (!versionedContext) { + throw new Error('useRouteRef used outside of routing context'); + } + if (!resolver) { + throw new Error('RoutingContext v1 not available'); } const isOptional = 'optional' in routeRef && routeRef.optional; @@ -80,8 +100,10 @@ export const RoutingProvider = ({ routeObjects, routeBindings, ); + + const versionedValue = createVersionedValueMap({ 1: resolver }); return ( - + {children} ); From 4d68d4d87d5e9c0e11bde693fd1d2c508dfe76fb Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 9 Mar 2021 15:31:54 +0100 Subject: [PATCH 020/315] core-api: identify ApiRefs based on ID instead of reference Co-authored-by: Juan Lulkin Signed-off-by: Patrik Oldsberg --- .../apis/system/ApiFactoryRegistry.test.ts | 21 +++ .../src/apis/system/ApiFactoryRegistry.ts | 14 +- .../src/apis/system/ApiRegistry.test.ts | 11 +- .../core-api/src/apis/system/ApiRegistry.ts | 14 +- .../src/apis/system/ApiResolver.test.ts | 153 ++++++++++++++---- .../core-api/src/apis/system/ApiResolver.ts | 10 +- 6 files changed, 172 insertions(+), 51 deletions(-) diff --git a/packages/core-api/src/apis/system/ApiFactoryRegistry.test.ts b/packages/core-api/src/apis/system/ApiFactoryRegistry.test.ts index 9f44adaef3..a51ed03fea 100644 --- a/packages/core-api/src/apis/system/ApiFactoryRegistry.test.ts +++ b/packages/core-api/src/apis/system/ApiFactoryRegistry.test.ts @@ -67,4 +67,25 @@ describe('ApiFactoryRegistry', () => { expect(registry.get(cRef)).toBe(cFactory); expect(registry.getAllApis()).toEqual(new Set([aRef, bRef, cRef])); }); + + it('should identify ApiRefs by id but still return the correct factory ref when listing all apis', () => { + const ref1 = createApiRef({ id: 'a', description: 'ref1' }); + const ref2 = createApiRef({ id: 'a', description: 'ref2' }); + + const factory1 = { api: ref1, deps: {}, factory: () => 3 }; + const factory2 = { api: ref2, deps: {}, factory: () => 3 }; + + const registry = new ApiFactoryRegistry(); + expect(registry.register('default', factory1)).toBe(true); + expect(registry.register('default', factory2)).toBe(false); + expect(registry.get(ref1)).toEqual(factory1); + expect(registry.get(ref2)).toEqual(factory1); + expect(registry.getAllApis()).toEqual(new Set([ref1])); + + expect(registry.register('app', factory2)).toBe(true); + expect(registry.get(ref1)).toEqual(factory2); + expect(registry.get(ref2)).toEqual(factory2); + expect(registry.getAllApis()).toEqual(new Set([ref2])); + expect(registry.getAllApis()).not.toEqual(new Set([ref1])); + }); }); diff --git a/packages/core-api/src/apis/system/ApiFactoryRegistry.ts b/packages/core-api/src/apis/system/ApiFactoryRegistry.ts index 9d9b058eac..c5a76ee1d4 100644 --- a/packages/core-api/src/apis/system/ApiFactoryRegistry.ts +++ b/packages/core-api/src/apis/system/ApiFactoryRegistry.ts @@ -46,7 +46,7 @@ type FactoryTuple = { * higher priority scopes override ones with lower priority. */ export class ApiFactoryRegistry implements ApiFactoryHolder { - private readonly factories = new Map(); + private readonly factories = new Map(); /** * Register a new API factory. Returns true if the factory was added @@ -60,19 +60,19 @@ export class ApiFactoryRegistry implements ApiFactoryHolder { factory: ApiFactory, ) { const priority = ScopePriority[scope]; - const existing = this.factories.get(factory.api); + const existing = this.factories.get(factory.api.id); if (existing && existing.priority >= priority) { return false; } - this.factories.set(factory.api, { priority, factory }); + this.factories.set(factory.api.id, { priority, factory }); return true; } get( api: ApiRef, ): ApiFactory | undefined { - const tuple = this.factories.get(api); + const tuple = this.factories.get(api.id); if (!tuple) { return undefined; } @@ -80,6 +80,10 @@ export class ApiFactoryRegistry implements ApiFactoryHolder { } getAllApis(): Set { - return new Set(this.factories.keys()); + const refs = new Set(); + for (const { factory } of this.factories.values()) { + refs.add(factory.api); + } + return refs; } } diff --git a/packages/core-api/src/apis/system/ApiRegistry.test.ts b/packages/core-api/src/apis/system/ApiRegistry.test.ts index a859d51004..93dd6dc085 100644 --- a/packages/core-api/src/apis/system/ApiRegistry.test.ts +++ b/packages/core-api/src/apis/system/ApiRegistry.test.ts @@ -18,8 +18,9 @@ import { ApiRegistry } from './ApiRegistry'; import { createApiRef } from './ApiRef'; describe('ApiRegistry', () => { - const x1Ref = createApiRef({ id: 'x', description: '' }); - const x2Ref = createApiRef({ id: 'x', description: '' }); + const x1Ref = createApiRef({ id: 'x1', description: '' }); + const x1DuplicateRef = createApiRef({ id: 'x1', description: '' }); + const x2Ref = createApiRef({ id: 'x2', description: '' }); it('should be created', () => { const registry = ApiRegistry.from([]); @@ -32,12 +33,14 @@ describe('ApiRegistry', () => { [x2Ref, 'y'], ]); expect(registry.get(x1Ref)).toBe(3); + expect(registry.get(x1DuplicateRef)).toBe(3); expect(registry.get(x2Ref)).toBe('y'); }); it('should be built', () => { const registry = ApiRegistry.builder().build(); expect(registry.get(x1Ref)).toBe(undefined); + expect(registry.get(x1DuplicateRef)).toBe(undefined); }); it('should be built with APIs', () => { @@ -47,6 +50,7 @@ describe('ApiRegistry', () => { const registry = builder.build(); expect(registry.get(x1Ref)).toBe(3); + expect(registry.get(x1DuplicateRef)).toBe(3); expect(registry.get(x2Ref)).toBe('y'); }); @@ -55,6 +59,7 @@ describe('ApiRegistry', () => { const reg2 = reg1.with(x2Ref, 'y'); const reg3 = reg2.with(x2Ref, 'z'); const reg4 = reg3.with(x1Ref, 2); + const reg5 = reg3.with(x1DuplicateRef, 4); expect(reg1.get(x1Ref)).toBe(3); expect(reg1.get(x2Ref)).toBe(undefined); @@ -64,5 +69,7 @@ describe('ApiRegistry', () => { expect(reg3.get(x2Ref)).toBe('z'); expect(reg4.get(x1Ref)).toBe(2); expect(reg4.get(x2Ref)).toBe('z'); + expect(reg5.get(x1Ref)).toBe(4); + expect(reg5.get(x2Ref)).toBe('z'); }); }); diff --git a/packages/core-api/src/apis/system/ApiRegistry.ts b/packages/core-api/src/apis/system/ApiRegistry.ts index b105633c51..01101b2b62 100644 --- a/packages/core-api/src/apis/system/ApiRegistry.ts +++ b/packages/core-api/src/apis/system/ApiRegistry.ts @@ -19,10 +19,10 @@ import { ApiRef, ApiHolder } from './types'; type ApiImpl = readonly [ApiRef, T]; class ApiRegistryBuilder { - private apis: ApiImpl[] = []; + private apis: [string, unknown][] = []; add(api: ApiRef, impl: I): I { - this.apis.push([api, impl]); + this.apis.push([api.id, impl]); return impl; } @@ -38,7 +38,7 @@ export class ApiRegistry implements ApiHolder { } static from(apis: ApiImpl[]) { - return new ApiRegistry(new Map(apis)); + return new ApiRegistry(new Map(apis.map(([api, impl]) => [api.id, impl]))); } /** @@ -48,10 +48,10 @@ export class ApiRegistry implements ApiHolder { * @param impl Implementation of the API to add */ static with(api: ApiRef, impl: T): ApiRegistry { - return new ApiRegistry(new Map([[api, impl]])); + return new ApiRegistry(new Map([[api.id, impl]])); } - constructor(private readonly apis: Map, unknown>) {} + constructor(private readonly apis: Map) {} /** * Returns a new ApiRegistry with the provided API added to the existing ones. @@ -60,10 +60,10 @@ export class ApiRegistry implements ApiHolder { * @param impl Implementation of the API to add */ with(api: ApiRef, impl: T): ApiRegistry { - return new ApiRegistry(new Map([...this.apis, [api, impl]])); + return new ApiRegistry(new Map([...this.apis, [api.id, impl]])); } get(api: ApiRef): T | undefined { - return this.apis.get(api) as T | undefined; + return this.apis.get(api.id) as T | undefined; } } diff --git a/packages/core-api/src/apis/system/ApiResolver.test.ts b/packages/core-api/src/apis/system/ApiResolver.test.ts index 3cd40f289e..7a46d2db3b 100644 --- a/packages/core-api/src/apis/system/ApiResolver.test.ts +++ b/packages/core-api/src/apis/system/ApiResolver.test.ts @@ -19,8 +19,14 @@ import { createApiRef } from './ApiRef'; import { ApiFactoryRegistry } from './ApiFactoryRegistry'; const aRef = createApiRef({ id: 'a', description: '' }); +const otherARef = createApiRef({ id: 'a', description: 'other' }); const bRef = createApiRef({ id: 'b', description: '' }); +const otherBRef = createApiRef({ id: 'b', description: 'other' }); const cRef = createApiRef<{ x: string }>({ id: 'c', description: '' }); +const otherCRef = createApiRef<{ x: string }>({ + id: 'c', + description: 'other', +}); function createRegistry() { const registry = new ApiFactoryRegistry(); @@ -36,28 +42,18 @@ function createRegistry() { }); registry.register('default', { api: cRef, - deps: { b: bRef }, + deps: { b: otherBRef }, factory: ({ b }) => ({ x: 'x', b }), }); return registry; } -function createLongCyclicRegistry() { +function createSelfCyclicRegistry() { const registry = new ApiFactoryRegistry(); registry.register('default', { api: aRef, - deps: { b: bRef }, - factory: () => 1, - }); - registry.register('default', { - api: bRef, - deps: { c: cRef }, - factory: () => 'b', - }); - registry.register('default', { - api: cRef, deps: { a: aRef }, - factory: () => ({ x: 'x' }), + factory: () => 1, }); return registry; } @@ -66,7 +62,37 @@ function createShortCyclicRegistry() { const registry = new ApiFactoryRegistry(); registry.register('default', { api: aRef, + deps: { b: bRef }, + factory: () => 1, + }); + registry.register('default', { + api: bRef, deps: { a: aRef }, + factory: () => 'x', + }); + return registry; +} + +function createShortCyclicRegistryWithOther() { + const registry = new ApiFactoryRegistry(); + registry.register('default', { + api: aRef, + deps: { b: bRef }, + factory: () => 1, + }); + registry.register('default', { + api: otherBRef, + deps: { a: otherARef }, + factory: () => 'x', + }); + return registry; +} + +function createLongCyclicRegistry() { + const registry = new ApiFactoryRegistry(); + registry.register('default', { + api: aRef, + deps: { b: otherBRef }, factory: () => 1, }); registry.register('default', { @@ -76,7 +102,7 @@ function createShortCyclicRegistry() { }); registry.register('default', { api: cRef, - deps: { b: bRef }, + deps: { a: aRef }, factory: () => ({ x: 'x' }), }); return registry; @@ -87,15 +113,51 @@ describe('ApiResolver', () => { const resolver = new ApiResolver(new ApiFactoryRegistry()); expect(resolver.get(aRef)).toBe(undefined); expect(resolver.get(bRef)).toBe(undefined); + expect(resolver.get(otherBRef)).toBe(undefined); expect(resolver.get(cRef)).toBe(undefined); }); it('should instantiate APIs', () => { const resolver = new ApiResolver(createRegistry()); expect(resolver.get(aRef)).toBe(1); + expect(resolver.get(otherARef)).toBe(1); expect(resolver.get(bRef)).toBe('b'); + expect(resolver.get(otherBRef)).toBe('b'); expect(resolver.get(cRef)).toEqual({ x: 'x', b: 'b' }); - expect(resolver.get(cRef)).toBe(resolver.get(cRef)); + expect(resolver.get(cRef)).toBe(resolver.get(otherCRef)); + }); + + it('should detect self dependency cycles', () => { + const resolver = new ApiResolver(createSelfCyclicRegistry()); + expect(() => resolver.get(aRef)).toThrow( + 'Circular dependency of api factory for apiRef{a}', + ); + }); + + it('should detect short dependency cycles', () => { + const resolver = new ApiResolver(createShortCyclicRegistry()); + expect(() => resolver.get(aRef)).toThrow( + 'Circular dependency of api factory for apiRef{a}', + ); + expect(() => resolver.get(bRef)).toThrow( + 'Circular dependency of api factory for apiRef{b}', + ); + }); + + it('should detect short dependency cycles with other refs', () => { + const resolver = new ApiResolver(createShortCyclicRegistryWithOther()); + expect(() => resolver.get(aRef)).toThrow( + 'Circular dependency of api factory for apiRef{a}', + ); + expect(() => resolver.get(bRef)).toThrow( + 'Circular dependency of api factory for apiRef{b}', + ); + expect(() => resolver.get(otherARef)).toThrow( + 'Circular dependency of api factory for apiRef{a}', + ); + expect(() => resolver.get(otherBRef)).toThrow( + 'Circular dependency of api factory for apiRef{b}', + ); }); it('should detect long dependency cycles', () => { @@ -110,17 +172,7 @@ describe('ApiResolver', () => { expect(() => resolver.get(bRef)).toThrow( 'Circular dependency of api factory for apiRef{b}', ); - expect(() => resolver.get(cRef)).toThrow( - 'Circular dependency of api factory for apiRef{c}', - ); - }); - - it('should detect short dependency cycles', () => { - const resolver = new ApiResolver(createShortCyclicRegistry()); - expect(() => resolver.get(aRef)).toThrow( - 'Circular dependency of api factory for apiRef{a}', - ); - expect(() => resolver.get(bRef)).toThrow( + expect(() => resolver.get(otherBRef)).toThrow( 'Circular dependency of api factory for apiRef{b}', ); expect(() => resolver.get(cRef)).toThrow( @@ -130,22 +182,54 @@ describe('ApiResolver', () => { it('should validate a factory holder', () => { expect(() => { - ApiResolver.validateFactories(createRegistry(), [aRef, bRef, cRef]); + ApiResolver.validateFactories(createRegistry(), [ + aRef, + bRef, + otherBRef, + cRef, + ]); }).not.toThrow(); }); + it('should find self cycles with validation', () => { + const self = createSelfCyclicRegistry(); + expect(() => ApiResolver.validateFactories(self, [aRef])).toThrow( + 'Circular dependency of api factory for apiRef{a}', + ); + expect(() => ApiResolver.validateFactories(self, [otherARef])).toThrow( + 'Circular dependency of api factory for apiRef{a}', + ); + }); + it('should find dependency cycles with validation', () => { const short = createShortCyclicRegistry(); - expect(() => - ApiResolver.validateFactories(short, short.getAllApis()), - ).toThrow('Circular dependency of api factory for apiRef{a}'); + expect(() => ApiResolver.validateFactories(short, [aRef])).toThrow( + 'Circular dependency of api factory for apiRef{a}', + ); + expect(() => ApiResolver.validateFactories(short, [otherARef])).toThrow( + 'Circular dependency of api factory for apiRef{a}', + ); expect(() => ApiResolver.validateFactories(short, [bRef])).toThrow( 'Circular dependency of api factory for apiRef{b}', ); - expect(() => ApiResolver.validateFactories(short, [cRef])).toThrow( - 'Circular dependency of api factory for apiRef{c}', + expect(() => ApiResolver.validateFactories(short, [otherBRef])).toThrow( + 'Circular dependency of api factory for apiRef{b}', ); + const shortOther = createShortCyclicRegistryWithOther(); + expect(() => ApiResolver.validateFactories(shortOther, [aRef])).toThrow( + 'Circular dependency of api factory for apiRef{a}', + ); + expect(() => + ApiResolver.validateFactories(shortOther, [otherARef]), + ).toThrow('Circular dependency of api factory for apiRef{a}'); + expect(() => ApiResolver.validateFactories(shortOther, [bRef])).toThrow( + 'Circular dependency of api factory for apiRef{b}', + ); + expect(() => + ApiResolver.validateFactories(shortOther, [otherBRef]), + ).toThrow('Circular dependency of api factory for apiRef{b}'); + const long = createLongCyclicRegistry(); expect(() => ApiResolver.validateFactories(long, long.getAllApis()), @@ -153,6 +237,9 @@ describe('ApiResolver', () => { expect(() => ApiResolver.validateFactories(long, [bRef])).toThrow( 'Circular dependency of api factory for apiRef{b}', ); + expect(() => ApiResolver.validateFactories(long, [otherBRef])).toThrow( + 'Circular dependency of api factory for apiRef{b}', + ); expect(() => ApiResolver.validateFactories(long, [cRef])).toThrow( 'Circular dependency of api factory for apiRef{c}', ); @@ -173,5 +260,7 @@ describe('ApiResolver', () => { expect(factory).toHaveBeenCalledTimes(1); expect(resolver.get(aRef)).toBe(2); expect(factory).toHaveBeenCalledTimes(1); + expect(resolver.get(otherARef)).toBe(2); + expect(factory).toHaveBeenCalledTimes(1); }); }); diff --git a/packages/core-api/src/apis/system/ApiResolver.ts b/packages/core-api/src/apis/system/ApiResolver.ts index 0dfeaeedd0..9738e09622 100644 --- a/packages/core-api/src/apis/system/ApiResolver.ts +++ b/packages/core-api/src/apis/system/ApiResolver.ts @@ -23,8 +23,6 @@ import { } from './types'; export class ApiResolver implements ApiHolder { - private readonly apis = new Map(); - /** * Validate factories by making sure that each of the apis can be created * without hitting any circular dependencies. @@ -45,7 +43,7 @@ export class ApiResolver implements ApiHolder { } for (const dep of Object.values(factory.deps)) { - if (dep === api) { + if (dep.id === api.id) { throw new Error(`Circular dependency of api factory for ${api}`); } if (!allDeps.has(dep)) { @@ -57,6 +55,8 @@ export class ApiResolver implements ApiHolder { } } + private readonly apis = new Map(); + constructor(private readonly factories: ApiFactoryHolder) {} get(ref: ApiRef): T | undefined { @@ -64,7 +64,7 @@ export class ApiResolver implements ApiHolder { } private load(ref: ApiRef, loading: AnyApiRef[] = []): T | undefined { - const impl = this.apis.get(ref); + const impl = this.apis.get(ref.id); if (impl) { return impl as T; } @@ -80,7 +80,7 @@ export class ApiResolver implements ApiHolder { const deps = this.loadDeps(ref, factory.deps, [...loading, factory.api]); const api = factory.factory(deps); - this.apis.set(ref, api); + this.apis.set(ref.id, api); return api as T; } From 0977b7b41ba9ee6dd8b27c18232ee1bd558fe06f Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Mar 2021 11:09:27 +0100 Subject: [PATCH 021/315] core-api: make ApiRef description optional Co-authored-by: Juan Lulkin Signed-off-by: Patrik Oldsberg --- packages/core-api/src/apis/system/ApiRef.ts | 4 ++-- packages/core-api/src/apis/system/types.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/core-api/src/apis/system/ApiRef.ts b/packages/core-api/src/apis/system/ApiRef.ts index 0e1eb177c8..e61036c61c 100644 --- a/packages/core-api/src/apis/system/ApiRef.ts +++ b/packages/core-api/src/apis/system/ApiRef.ts @@ -18,7 +18,7 @@ import type { ApiRef } from './types'; export type ApiRefConfig = { id: string; - description: string; + description?: string; }; class ApiRefImpl implements ApiRef { @@ -38,7 +38,7 @@ class ApiRefImpl implements ApiRef { return this.config.id; } - get description(): string { + get description() { return this.config.description; } diff --git a/packages/core-api/src/apis/system/types.ts b/packages/core-api/src/apis/system/types.ts index 6234a55c71..a4bc95a3c3 100644 --- a/packages/core-api/src/apis/system/types.ts +++ b/packages/core-api/src/apis/system/types.ts @@ -16,7 +16,7 @@ export type ApiRef = { id: string; - description: string; + description?: string; T: T; }; From 99dad12b582f3aaa43d4a77bc7e5b7f30269f3f1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Mar 2021 17:56:34 +0100 Subject: [PATCH 022/315] core-api: get or create all bridged contexts Co-authored-by: Juan Lulkin Signed-off-by: Patrik Oldsberg --- packages/core-api/src/apis/system/ApiProvider.tsx | 11 +++++++---- packages/core-api/src/app/AppContext.tsx | 11 +++++++---- packages/core-api/src/routing/hooks.tsx | 11 +++++++---- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/packages/core-api/src/apis/system/ApiProvider.tsx b/packages/core-api/src/apis/system/ApiProvider.tsx index 6740746ce2..a99b849104 100644 --- a/packages/core-api/src/apis/system/ApiProvider.tsx +++ b/packages/core-api/src/apis/system/ApiProvider.tsx @@ -24,7 +24,10 @@ import React, { import PropTypes from 'prop-types'; import { ApiRef, ApiHolder, TypesToApiRefs } from './types'; import { ApiAggregator } from './ApiAggregator'; -import { getGlobalSingleton, setGlobalSingleton } from '../../lib/globalObject'; +import { + getGlobalSingleton, + getOrCreateGlobalSingleton, +} from '../../lib/globalObject'; import { VersionedValue, createVersionedValueMap, @@ -42,9 +45,9 @@ type ApiProviderProps = { }; type ApiContextType = VersionedValue<{ 1: ApiHolder }> | undefined; -const ApiContext = createContext(undefined); - -setGlobalSingleton('api-context', ApiContext); +const ApiContext = getOrCreateGlobalSingleton('api-context', () => + createContext(undefined), +); export const ApiProvider = ({ apis, diff --git a/packages/core-api/src/app/AppContext.tsx b/packages/core-api/src/app/AppContext.tsx index 7b73d71c6b..cfe439fca5 100644 --- a/packages/core-api/src/app/AppContext.tsx +++ b/packages/core-api/src/app/AppContext.tsx @@ -24,13 +24,16 @@ import { VersionedValue, createVersionedValueMap, } from '../lib/versionedValues'; -import { getGlobalSingleton, setGlobalSingleton } from '../lib/globalObject'; +import { + getGlobalSingleton, + getOrCreateGlobalSingleton, +} from '../lib/globalObject'; import { AppContext as AppContextV1 } from './types'; type AppContextType = VersionedValue<{ 1: AppContextV1 }> | undefined; -const AppContext = createContext(undefined); - -setGlobalSingleton('app-context', AppContext); +const AppContext = getOrCreateGlobalSingleton('app-context', () => + createContext(undefined), +); type Props = { appContext: AppContextV1; diff --git a/packages/core-api/src/routing/hooks.tsx b/packages/core-api/src/routing/hooks.tsx index b8690d867a..4c4a7a6a05 100644 --- a/packages/core-api/src/routing/hooks.tsx +++ b/packages/core-api/src/routing/hooks.tsx @@ -35,12 +35,15 @@ import { VersionedValue, createVersionedValueMap, } from '../lib/versionedValues'; -import { setGlobalSingleton, getGlobalSingleton } from '../lib/globalObject'; +import { + getGlobalSingleton, + getOrCreateGlobalSingleton, +} from '../lib/globalObject'; type RoutingContextType = VersionedValue<{ 1: RouteResolver }> | undefined; -const RoutingContext = createContext(undefined); - -setGlobalSingleton('routing-context', RoutingContext); +const RoutingContext = getOrCreateGlobalSingleton('routing-context', () => + createContext(undefined), +); export function useRouteRef( routeRef: ExternalRouteRef, From d88dd219e47a9332134c95146ce752266c85ff2c Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 11 Mar 2021 17:13:51 +0100 Subject: [PATCH 023/315] changesets: added changeset for core-api context bridging refactor Co-authored-by: Juan Lulkin Signed-off-by: Patrik Oldsberg --- .changeset/stupid-parents-smoke.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/stupid-parents-smoke.md diff --git a/.changeset/stupid-parents-smoke.md b/.changeset/stupid-parents-smoke.md new file mode 100644 index 0000000000..85a8d544be --- /dev/null +++ b/.changeset/stupid-parents-smoke.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-api': patch +--- + +Internal refactor to allow for future package splits. As part of this `ApiRef`s are now identified by their ID rather than their reference. From fbf10445af8f3ea99277484a82264ad2ab7e47b2 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 9 Mar 2021 19:50:49 +0100 Subject: [PATCH 024/315] plugins: added todo frontend and backend plugin Signed-off-by: Patrik Oldsberg --- .github/styles/vocab.txt | 1 + plugins/todo-backend/.eslintrc.js | 3 + plugins/todo-backend/README.md | 13 +++ plugins/todo-backend/package.json | 40 +++++++ plugins/todo-backend/src/index.ts | 17 +++ plugins/todo-backend/src/run.ts | 33 ++++++ .../todo-backend/src/service/router.test.ts | 45 ++++++++ plugins/todo-backend/src/service/router.ts | 40 +++++++ .../src/service/standaloneServer.ts | 62 +++++++++++ plugins/todo-backend/src/setupTests.ts | 17 +++ plugins/todo/.eslintrc.js | 3 + plugins/todo/README.md | 13 +++ plugins/todo/dev/index.tsx | 26 +++++ plugins/todo/package.json | 47 ++++++++ .../ExampleComponent.test.tsx | 44 ++++++++ .../ExampleComponent/ExampleComponent.tsx | 53 +++++++++ .../src/components/ExampleComponent/index.ts | 16 +++ .../ExampleFetchComponent.test.tsx | 40 +++++++ .../ExampleFetchComponent.tsx | 105 ++++++++++++++++++ .../components/ExampleFetchComponent/index.ts | 16 +++ plugins/todo/src/index.ts | 16 +++ plugins/todo/src/plugin.test.ts | 22 ++++ plugins/todo/src/plugin.ts | 33 ++++++ plugins/todo/src/routes.ts | 20 ++++ plugins/todo/src/setupTests.ts | 17 +++ 25 files changed, 742 insertions(+) create mode 100644 plugins/todo-backend/.eslintrc.js create mode 100644 plugins/todo-backend/README.md create mode 100644 plugins/todo-backend/package.json create mode 100644 plugins/todo-backend/src/index.ts create mode 100644 plugins/todo-backend/src/run.ts create mode 100644 plugins/todo-backend/src/service/router.test.ts create mode 100644 plugins/todo-backend/src/service/router.ts create mode 100644 plugins/todo-backend/src/service/standaloneServer.ts create mode 100644 plugins/todo-backend/src/setupTests.ts create mode 100644 plugins/todo/.eslintrc.js create mode 100644 plugins/todo/README.md create mode 100644 plugins/todo/dev/index.tsx create mode 100644 plugins/todo/package.json create mode 100644 plugins/todo/src/components/ExampleComponent/ExampleComponent.test.tsx create mode 100644 plugins/todo/src/components/ExampleComponent/ExampleComponent.tsx create mode 100644 plugins/todo/src/components/ExampleComponent/index.ts create mode 100644 plugins/todo/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx create mode 100644 plugins/todo/src/components/ExampleFetchComponent/ExampleFetchComponent.tsx create mode 100644 plugins/todo/src/components/ExampleFetchComponent/index.ts create mode 100644 plugins/todo/src/index.ts create mode 100644 plugins/todo/src/plugin.test.ts create mode 100644 plugins/todo/src/plugin.ts create mode 100644 plugins/todo/src/routes.ts create mode 100644 plugins/todo/src/setupTests.ts diff --git a/.github/styles/vocab.txt b/.github/styles/vocab.txt index 8997360782..489727ca4d 100644 --- a/.github/styles/vocab.txt +++ b/.github/styles/vocab.txt @@ -88,6 +88,7 @@ Telenor Templater Templaters Thauer +todo Tolerations Tuite Trendyol diff --git a/plugins/todo-backend/.eslintrc.js b/plugins/todo-backend/.eslintrc.js new file mode 100644 index 0000000000..16a033dbc6 --- /dev/null +++ b/plugins/todo-backend/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: [require.resolve('@backstage/cli/config/eslint.backend')], +}; diff --git a/plugins/todo-backend/README.md b/plugins/todo-backend/README.md new file mode 100644 index 0000000000..78da07c683 --- /dev/null +++ b/plugins/todo-backend/README.md @@ -0,0 +1,13 @@ +# todo + +Welcome to the todo backend plugin! + +_This plugin was created through the Backstage CLI_ + +## Getting started + +Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn start` in the root directory, and then navigating to [/todo](http://localhost:3000/todo). + +You can also serve the plugin in isolation by running `yarn start` in the plugin directory. +This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. +It is only meant for local development, and the setup for it can be found inside the [/dev](/dev) directory. diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json new file mode 100644 index 0000000000..47c0202bba --- /dev/null +++ b/plugins/todo-backend/package.json @@ -0,0 +1,40 @@ +{ + "name": "@backstage/plugin-todo-backend", + "version": "0.1.1", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "publishConfig": { + "access": "public", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts" + }, + "scripts": { + "start": "backstage-cli backend:dev", + "build": "backstage-cli backend:build", + "lint": "backstage-cli lint", + "test": "backstage-cli test", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", + "clean": "backstage-cli clean" + }, + "dependencies": { + "@backstage/backend-common": "^0.5.5", + "@backstage/config": "^0.1.3", + "@types/express": "^4.17.6", + "express": "^4.17.1", + "express-promise-router": "^3.0.3", + "winston": "^3.2.1", + "cross-fetch": "^3.0.6", + "yn": "^4.0.0" + }, + "devDependencies": { + "@backstage/cli": "^0.6.3", + "@types/supertest": "^2.0.8", + "supertest": "^4.0.2", + "msw": "^0.21.2" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/todo-backend/src/index.ts b/plugins/todo-backend/src/index.ts new file mode 100644 index 0000000000..7612c392a2 --- /dev/null +++ b/plugins/todo-backend/src/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2020 Spotify AB + * + * 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 * from './service/router'; diff --git a/plugins/todo-backend/src/run.ts b/plugins/todo-backend/src/run.ts new file mode 100644 index 0000000000..b96989e4b8 --- /dev/null +++ b/plugins/todo-backend/src/run.ts @@ -0,0 +1,33 @@ +/* + * Copyright 2020 Spotify AB + * + * 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 { getRootLogger } from '@backstage/backend-common'; +import yn from 'yn'; +import { startStandaloneServer } from './service/standaloneServer'; + +const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7000; +const enableCors = yn(process.env.PLUGIN_CORS, { default: false }); +const logger = getRootLogger(); + +startStandaloneServer({ port, enableCors, logger }).catch(err => { + logger.error(err); + process.exit(1); +}); + +process.on('SIGINT', () => { + logger.info('CTRL+C pressed; exiting.'); + process.exit(0); +}); diff --git a/plugins/todo-backend/src/service/router.test.ts b/plugins/todo-backend/src/service/router.test.ts new file mode 100644 index 0000000000..0aaeafa379 --- /dev/null +++ b/plugins/todo-backend/src/service/router.test.ts @@ -0,0 +1,45 @@ +/* + * Copyright 2020 Spotify AB + * + * 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 express from 'express'; +import request from 'supertest'; + +import { createRouter } from './router'; + +describe('createRouter', () => { + let app: express.Express; + + beforeAll(async () => { + const router = await createRouter({ + logger: getVoidLogger(), + }); + app = express().use(router); + }); + + beforeEach(() => { + jest.resetAllMocks(); + }); + + describe('GET /health', () => { + it('returns ok', async () => { + const response = await request(app).get('/health'); + + expect(response.status).toEqual(200); + expect(response.body).toEqual({ status: 'ok' }); + }); + }); +}); diff --git a/plugins/todo-backend/src/service/router.ts b/plugins/todo-backend/src/service/router.ts new file mode 100644 index 0000000000..3ea8219365 --- /dev/null +++ b/plugins/todo-backend/src/service/router.ts @@ -0,0 +1,40 @@ +/* + * Copyright 2020 Spotify AB + * + * 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 { errorHandler } from '@backstage/backend-common'; +import express from 'express'; +import Router from 'express-promise-router'; +import { Logger } from 'winston'; + +export interface RouterOptions { + logger: Logger; +} + +export async function createRouter( + options: RouterOptions, +): Promise { + const { logger } = options; + + const router = Router(); + router.use(express.json()); + + router.get('/health', (_, response) => { + logger.info('PONG!'); + response.send({ status: 'ok' }); + }); + router.use(errorHandler()); + return router; +} diff --git a/plugins/todo-backend/src/service/standaloneServer.ts b/plugins/todo-backend/src/service/standaloneServer.ts new file mode 100644 index 0000000000..4901ec1895 --- /dev/null +++ b/plugins/todo-backend/src/service/standaloneServer.ts @@ -0,0 +1,62 @@ +/* + * Copyright 2021 Spotify AB + * + * 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. + */ +/* + * Copyright 2020 Spotify AB + * + * 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 { createServiceBuilder } from '@backstage/backend-common'; +import { Server } from 'http'; +import { Logger } from 'winston'; +import { createRouter } from './router'; + +export interface ServerOptions { + port: number; + enableCors: boolean; + logger: Logger; +} + +export async function startStandaloneServer( + options: ServerOptions, +): Promise { + const logger = options.logger.child({ service: 'todo-backend' }); + logger.debug('Starting application server...'); + const router = await createRouter({ + logger, + }); + + const service = createServiceBuilder(module) + .enableCors({ origin: 'http://localhost:3000' }) + .addRouter('/todo', router); + + return await service.start().catch(err => { + logger.error(err); + process.exit(1); + }); +} + +module.hot?.accept(); diff --git a/plugins/todo-backend/src/setupTests.ts b/plugins/todo-backend/src/setupTests.ts new file mode 100644 index 0000000000..ba33cf996b --- /dev/null +++ b/plugins/todo-backend/src/setupTests.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2020 Spotify AB + * + * 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 {}; diff --git a/plugins/todo/.eslintrc.js b/plugins/todo/.eslintrc.js new file mode 100644 index 0000000000..13573efa9c --- /dev/null +++ b/plugins/todo/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: [require.resolve('@backstage/cli/config/eslint')], +}; diff --git a/plugins/todo/README.md b/plugins/todo/README.md new file mode 100644 index 0000000000..a74a5c351b --- /dev/null +++ b/plugins/todo/README.md @@ -0,0 +1,13 @@ +# todo + +Welcome to the todo plugin! + +_This plugin was created through the Backstage CLI_ + +## Getting started + +Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn start` in the root directory, and then navigating to [/todo](http://localhost:3000/todo). + +You can also serve the plugin in isolation by running `yarn start` in the plugin directory. +This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. +It is only meant for local development, and the setup for it can be found inside the [/dev](./dev) directory. diff --git a/plugins/todo/dev/index.tsx b/plugins/todo/dev/index.tsx new file mode 100644 index 0000000000..3177a51d78 --- /dev/null +++ b/plugins/todo/dev/index.tsx @@ -0,0 +1,26 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { createDevApp } from '@backstage/dev-utils'; +import { todoPlugin, TodoPage } from '../src/plugin'; + +createDevApp() + .registerPlugin(todoPlugin) + .addPage({ + element: , + title: 'Root Page', + }) + .render(); diff --git a/plugins/todo/package.json b/plugins/todo/package.json new file mode 100644 index 0000000000..c587fb6dc1 --- /dev/null +++ b/plugins/todo/package.json @@ -0,0 +1,47 @@ +{ + "name": "@backstage/plugin-todo", + "version": "0.1.1", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "publishConfig": { + "access": "public", + "main": "dist/index.esm.js", + "types": "dist/index.d.ts" + }, + "scripts": { + "build": "backstage-cli plugin:build", + "start": "backstage-cli plugin:serve", + "lint": "backstage-cli lint", + "test": "backstage-cli test", + "diff": "backstage-cli plugin:diff", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", + "clean": "backstage-cli clean" + }, + "dependencies": { + "@backstage/core": "^0.7.0", + "@backstage/theme": "^0.2.3", + "@material-ui/core": "^4.11.0", + "@material-ui/icons": "^4.9.1", + "@material-ui/lab": "4.0.0-alpha.45", + "react": "^16.13.1", + "react-dom": "^16.13.1", + "react-use": "^15.3.3" + }, + "devDependencies": { + "@backstage/cli": "^0.6.3", + "@backstage/dev-utils": "^0.1.13", + "@backstage/test-utils": "^0.1.8", + "@testing-library/jest-dom": "^5.10.1", + "@testing-library/react": "^11.2.5", + "@testing-library/user-event": "^12.0.7", + "@types/jest": "^26.0.7", + "@types/node": "^14.14.32", + "msw": "^0.21.2", + "cross-fetch": "^3.0.6" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/todo/src/components/ExampleComponent/ExampleComponent.test.tsx b/plugins/todo/src/components/ExampleComponent/ExampleComponent.test.tsx new file mode 100644 index 0000000000..555f3be75d --- /dev/null +++ b/plugins/todo/src/components/ExampleComponent/ExampleComponent.test.tsx @@ -0,0 +1,44 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { ExampleComponent } from './ExampleComponent'; +import { ThemeProvider } from '@material-ui/core'; +import { lightTheme } from '@backstage/theme'; +import { rest } from 'msw'; +import { setupServer } from 'msw/node'; +import { msw, renderInTestApp } from '@backstage/test-utils'; + +describe('ExampleComponent', () => { + const server = setupServer(); + // Enable sane handlers for network requests + msw.setupDefaultHandlers(server); + + // setup mock response + beforeEach(() => { + server.use( + rest.get('/*', (_, res, ctx) => res(ctx.status(200), ctx.json({}))), + ); + }); + + it('should render', async () => { + const rendered = await renderInTestApp( + + + , + ); + expect(rendered.getByText('Welcome to todo!')).toBeInTheDocument(); + }); +}); diff --git a/plugins/todo/src/components/ExampleComponent/ExampleComponent.tsx b/plugins/todo/src/components/ExampleComponent/ExampleComponent.tsx new file mode 100644 index 0000000000..3dc0345ee4 --- /dev/null +++ b/plugins/todo/src/components/ExampleComponent/ExampleComponent.tsx @@ -0,0 +1,53 @@ +/* + * Copyright 2021 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { Typography, Grid } from '@material-ui/core'; +import { + InfoCard, + Header, + Page, + Content, + ContentHeader, + HeaderLabel, + SupportButton, +} from '@backstage/core'; +import { ExampleFetchComponent } from '../ExampleFetchComponent'; + +export const ExampleComponent = () => ( + +

+ + +
+ + + A description of your plugin goes here. + + + + + + All content should be wrapped in a card like this. + + + + + + + + + +); diff --git a/plugins/todo/src/components/ExampleComponent/index.ts b/plugins/todo/src/components/ExampleComponent/index.ts new file mode 100644 index 0000000000..337d24d5c5 --- /dev/null +++ b/plugins/todo/src/components/ExampleComponent/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { ExampleComponent } from './ExampleComponent'; diff --git a/plugins/todo/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx b/plugins/todo/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx new file mode 100644 index 0000000000..6a5c0351d6 --- /dev/null +++ b/plugins/todo/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx @@ -0,0 +1,40 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 } from '@testing-library/react'; +import { ExampleFetchComponent } from './ExampleFetchComponent'; +import { rest } from 'msw'; +import { setupServer } from 'msw/node'; +import { msw } from '@backstage/test-utils'; + +describe('ExampleFetchComponent', () => { + const server = setupServer(); + // Enable sane handlers for network requests + msw.setupDefaultHandlers(server); + + // setup mock response + beforeEach(() => { + server.use( + rest.get('https://randomuser.me/*', (_, res, ctx) => + res(ctx.status(200), ctx.delay(2000), ctx.json({})), + ), + ); + }); + it('should render', async () => { + const rendered = render(); + expect(await rendered.findByTestId('progress')).toBeInTheDocument(); + }); +}); diff --git a/plugins/todo/src/components/ExampleFetchComponent/ExampleFetchComponent.tsx b/plugins/todo/src/components/ExampleFetchComponent/ExampleFetchComponent.tsx new file mode 100644 index 0000000000..1390c8950f --- /dev/null +++ b/plugins/todo/src/components/ExampleFetchComponent/ExampleFetchComponent.tsx @@ -0,0 +1,105 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { makeStyles } from '@material-ui/core/styles'; +import { Table, TableColumn, Progress } from '@backstage/core'; +import Alert from '@material-ui/lab/Alert'; +import { useAsync } from 'react-use'; + +const useStyles = makeStyles({ + avatar: { + height: 32, + width: 32, + borderRadius: '50%', + }, +}); + +type User = { + gender: string; // "male" + name: { + title: string; // "Mr", + first: string; // "Duane", + last: string; // "Reed" + }; + location: object; // {street: {number: 5060, name: "Hickory Creek Dr"}, city: "Albany", state: "New South Wales",…} + email: string; // "duane.reed@example.com" + login: object; // {uuid: "4b785022-9a23-4ab9-8a23-cb3fb43969a9", username: "blackdog796", password: "patch",…} + dob: object; // {date: "1983-06-22T12:30:23.016Z", age: 37} + registered: object; // {date: "2006-06-13T18:48:28.037Z", age: 14} + phone: string; // "07-2154-5651" + cell: string; // "0405-592-879" + id: { + name: string; // "TFN", + value: string; // "796260432" + }; + picture: { medium: string }; // {medium: "https://randomuser.me/api/portraits/men/95.jpg",…} + nat: string; // "AU" +}; + +type DenseTableProps = { + users: User[]; +}; + +export const DenseTable = ({ users }: DenseTableProps) => { + const classes = useStyles(); + + const columns: TableColumn[] = [ + { title: 'Avatar', field: 'avatar' }, + { title: 'Name', field: 'name' }, + { title: 'Email', field: 'email' }, + { title: 'Nationality', field: 'nationality' }, + ]; + + const data = users.map(user => { + return { + avatar: ( + {user.name.first} + ), + name: `${user.name.first} ${user.name.last}`, + email: user.email, + nationality: user.nat, + }; + }); + + return ( + + ); +}; + +export const ExampleFetchComponent = () => { + const { value, loading, error } = useAsync(async (): Promise => { + const response = await fetch('https://randomuser.me/api/?results=20'); + const data = await response.json(); + return data.results; + }, []); + + if (loading) { + return ; + } else if (error) { + return {error.message}; + } + + return ; +}; diff --git a/plugins/todo/src/components/ExampleFetchComponent/index.ts b/plugins/todo/src/components/ExampleFetchComponent/index.ts new file mode 100644 index 0000000000..e7c8364039 --- /dev/null +++ b/plugins/todo/src/components/ExampleFetchComponent/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { ExampleFetchComponent } from './ExampleFetchComponent'; diff --git a/plugins/todo/src/index.ts b/plugins/todo/src/index.ts new file mode 100644 index 0000000000..3f43b3d453 --- /dev/null +++ b/plugins/todo/src/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { todoPlugin, TodoPage } from './plugin'; diff --git a/plugins/todo/src/plugin.test.ts b/plugins/todo/src/plugin.test.ts new file mode 100644 index 0000000000..ad07c17207 --- /dev/null +++ b/plugins/todo/src/plugin.test.ts @@ -0,0 +1,22 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { todoPlugin } from './plugin'; + +describe('todo', () => { + it('should export plugin', () => { + expect(todoPlugin).toBeDefined(); + }); +}); diff --git a/plugins/todo/src/plugin.ts b/plugins/todo/src/plugin.ts new file mode 100644 index 0000000000..b991a8c929 --- /dev/null +++ b/plugins/todo/src/plugin.ts @@ -0,0 +1,33 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { createPlugin, createRoutableExtension } from '@backstage/core'; + +import { rootRouteRef } from './routes'; + +export const todoPlugin = createPlugin({ + id: 'todo', + routes: { + root: rootRouteRef, + }, +}); + +export const TodoPage = todoPlugin.provide( + createRoutableExtension({ + component: () => + import('./components/ExampleComponent').then(m => m.ExampleComponent), + mountPoint: rootRouteRef, + }), +); diff --git a/plugins/todo/src/routes.ts b/plugins/todo/src/routes.ts new file mode 100644 index 0000000000..f34eea2391 --- /dev/null +++ b/plugins/todo/src/routes.ts @@ -0,0 +1,20 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { createRouteRef } from '@backstage/core'; + +export const rootRouteRef = createRouteRef({ + title: 'todo', +}); diff --git a/plugins/todo/src/setupTests.ts b/plugins/todo/src/setupTests.ts new file mode 100644 index 0000000000..0cec5b395d --- /dev/null +++ b/plugins/todo/src/setupTests.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 '@testing-library/jest-dom'; +import 'cross-fetch/polyfill'; From 72f59d5528f435a597b2632a0cdd6bee541fa559 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 9 Mar 2021 19:58:54 +0100 Subject: [PATCH 025/315] todo: add todo api types and empty client Signed-off-by: Patrik Oldsberg --- plugins/todo/package.json | 1 + plugins/todo/src/api/TodoClient.ts | 23 ++++++++++++++ plugins/todo/src/api/index.ts | 19 ++++++++++++ plugins/todo/src/api/types.ts | 49 ++++++++++++++++++++++++++++++ 4 files changed, 92 insertions(+) create mode 100644 plugins/todo/src/api/TodoClient.ts create mode 100644 plugins/todo/src/api/index.ts create mode 100644 plugins/todo/src/api/types.ts diff --git a/plugins/todo/package.json b/plugins/todo/package.json index c587fb6dc1..59b66dabb0 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -20,6 +20,7 @@ "clean": "backstage-cli clean" }, "dependencies": { + "@backstage/catalog-model": "^0.7.3", "@backstage/core": "^0.7.0", "@backstage/theme": "^0.2.3", "@material-ui/core": "^4.11.0", diff --git a/plugins/todo/src/api/TodoClient.ts b/plugins/todo/src/api/TodoClient.ts new file mode 100644 index 0000000000..e85e49f1fa --- /dev/null +++ b/plugins/todo/src/api/TodoClient.ts @@ -0,0 +1,23 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { TodoApi, TodoListOptions, TodoListResult } from './types'; + +export class TodoClient implements TodoApi { + listTodos(_options: TodoListOptions): Promise { + throw new Error('Method not implemented.'); + } +} diff --git a/plugins/todo/src/api/index.ts b/plugins/todo/src/api/index.ts new file mode 100644 index 0000000000..813a161469 --- /dev/null +++ b/plugins/todo/src/api/index.ts @@ -0,0 +1,19 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { TodoClient } from './TodoClient'; +export { todoApiRef } from './types'; +export type { TodoApi } from './types'; diff --git a/plugins/todo/src/api/types.ts b/plugins/todo/src/api/types.ts new file mode 100644 index 0000000000..bc6a15620b --- /dev/null +++ b/plugins/todo/src/api/types.ts @@ -0,0 +1,49 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { createApiRef } from '@backstage/core'; +import { Entity } from '@backstage/catalog-model'; + +export type TodoItem = { + text: string; + author?: string; + viewUrl?: string; + editUrl?: string; +}; + +export type TodoListOptions = { + entity?: Entity; + cursor?: string; +}; + +export type TodoListResult = { + items: TodoItem[]; + totalCount: number; + cursors: { + prev: string; + self: string; + next: string; + }; +}; + +export interface TodoApi { + listTodos(options: TodoListOptions): Promise; +} + +export const todoApiRef = createApiRef({ + id: 'plugin.todo.api', + description: 'Lists TODOs', +}); From 2e680b86e7929cdda4ab2f43f6a750607023f75b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 9 Mar 2021 20:05:02 +0100 Subject: [PATCH 026/315] todo: hook up dev setup Signed-off-by: Patrik Oldsberg --- plugins/todo/dev/index.tsx | 29 ++++++++++++++++++++++++++--- plugins/todo/src/index.ts | 4 +++- plugins/todo/src/plugin.ts | 18 ++++++++++++++++-- 3 files changed, 45 insertions(+), 6 deletions(-) diff --git a/plugins/todo/dev/index.tsx b/plugins/todo/dev/index.tsx index 3177a51d78..97742341eb 100644 --- a/plugins/todo/dev/index.tsx +++ b/plugins/todo/dev/index.tsx @@ -15,12 +15,35 @@ */ import React from 'react'; import { createDevApp } from '@backstage/dev-utils'; -import { todoPlugin, TodoPage } from '../src/plugin'; +import { todoApiRef, todoPlugin, EntityTodoContent } from '../src'; createDevApp() .registerPlugin(todoPlugin) + .registerApi({ + api: todoApiRef, + deps: {}, + factory() { + return { + listTodos: async () => ({ + items: [ + { + text: 'Make sure this works', + author: 'Rugvip', + viewUrl: 'https://github.com/backstage/backstage', + }, + ], + totalCount: 15, + cursors: { + prev: 'prev', + self: 'self', + next: 'next', + }, + }), + }; + }, + }) .addPage({ - element: , - title: 'Root Page', + element: , + title: 'Entity Todo Content', }) .render(); diff --git a/plugins/todo/src/index.ts b/plugins/todo/src/index.ts index 3f43b3d453..be740259a8 100644 --- a/plugins/todo/src/index.ts +++ b/plugins/todo/src/index.ts @@ -13,4 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export { todoPlugin, TodoPage } from './plugin'; + +export { todoApiRef } from './api'; +export { todoPlugin, EntityTodoContent } from './plugin'; diff --git a/plugins/todo/src/plugin.ts b/plugins/todo/src/plugin.ts index b991a8c929..4a202390be 100644 --- a/plugins/todo/src/plugin.ts +++ b/plugins/todo/src/plugin.ts @@ -13,18 +13,32 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { createPlugin, createRoutableExtension } from '@backstage/core'; +import { + createApiFactory, + createPlugin, + createRoutableExtension, +} from '@backstage/core'; +import { todoApiRef, TodoClient } from './api'; import { rootRouteRef } from './routes'; export const todoPlugin = createPlugin({ id: 'todo', + apis: [ + createApiFactory({ + api: todoApiRef, + deps: {}, + factory() { + return new TodoClient(); + }, + }), + ], routes: { root: rootRouteRef, }, }); -export const TodoPage = todoPlugin.provide( +export const EntityTodoContent = todoPlugin.provide( createRoutableExtension({ component: () => import('./components/ExampleComponent').then(m => m.ExampleComponent), From 6ef3bc7d812feb31d1349d19514acbf058dee878 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 9 Mar 2021 20:31:14 +0100 Subject: [PATCH 027/315] todo: add entity page wrapper to dev setup Signed-off-by: Patrik Oldsberg --- plugins/todo/dev/index.tsx | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/plugins/todo/dev/index.tsx b/plugins/todo/dev/index.tsx index 97742341eb..9560c49ecb 100644 --- a/plugins/todo/dev/index.tsx +++ b/plugins/todo/dev/index.tsx @@ -13,9 +13,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import React from 'react'; +import { Entity, LOCATION_ANNOTATION } from '@backstage/catalog-model'; +import { Content, Header, HeaderLabel, Page } from '@backstage/core'; import { createDevApp } from '@backstage/dev-utils'; -import { todoApiRef, todoPlugin, EntityTodoContent } from '../src'; +import { EntityProvider } from '@backstage/plugin-catalog-react'; +import React from 'react'; +import { EntityTodoContent, todoApiRef, todoPlugin } from '../src'; + +const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: 'backstage', + annotations: { + [LOCATION_ANNOTATION]: + 'https://github.com/backstage/backstage/blob/master/catalog-info.yaml', + }, + }, + spec: { + type: 'library', + }, +}; createDevApp() .registerPlugin(todoPlugin) @@ -43,7 +61,18 @@ createDevApp() }, }) .addPage({ - element: , + element: ( + + +
+ +
+ + + +
+
+ ), title: 'Entity Todo Content', }) .render(); From c6e98956a2f089da1547fbe3056047e7363c3f2b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 9 Mar 2021 20:39:11 +0100 Subject: [PATCH 028/315] todo: replace example components with TodoList + test Signed-off-by: Patrik Oldsberg --- plugins/todo/package.json | 1 + .../ExampleComponent.test.tsx | 44 -------- .../ExampleComponent/ExampleComponent.tsx | 53 --------- .../ExampleFetchComponent.test.tsx | 40 ------- .../ExampleFetchComponent.tsx | 105 ------------------ .../components/ExampleFetchComponent/index.ts | 16 --- .../src/components/TodoList/TodoList.test.tsx | 46 ++++++++ .../todo/src/components/TodoList/TodoList.tsx | 76 +++++++++++++ .../{ExampleComponent => TodoList}/index.ts | 2 +- plugins/todo/src/plugin.ts | 3 +- 10 files changed, 125 insertions(+), 261 deletions(-) delete mode 100644 plugins/todo/src/components/ExampleComponent/ExampleComponent.test.tsx delete mode 100644 plugins/todo/src/components/ExampleComponent/ExampleComponent.tsx delete mode 100644 plugins/todo/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx delete mode 100644 plugins/todo/src/components/ExampleFetchComponent/ExampleFetchComponent.tsx delete mode 100644 plugins/todo/src/components/ExampleFetchComponent/index.ts create mode 100644 plugins/todo/src/components/TodoList/TodoList.test.tsx create mode 100644 plugins/todo/src/components/TodoList/TodoList.tsx rename plugins/todo/src/components/{ExampleComponent => TodoList}/index.ts (91%) diff --git a/plugins/todo/package.json b/plugins/todo/package.json index 59b66dabb0..de51fe2f18 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -22,6 +22,7 @@ "dependencies": { "@backstage/catalog-model": "^0.7.3", "@backstage/core": "^0.7.0", + "@backstage/plugin-catalog-react": "^0.1.1", "@backstage/theme": "^0.2.3", "@material-ui/core": "^4.11.0", "@material-ui/icons": "^4.9.1", diff --git a/plugins/todo/src/components/ExampleComponent/ExampleComponent.test.tsx b/plugins/todo/src/components/ExampleComponent/ExampleComponent.test.tsx deleted file mode 100644 index 555f3be75d..0000000000 --- a/plugins/todo/src/components/ExampleComponent/ExampleComponent.test.tsx +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2021 Spotify AB - * - * 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 { ExampleComponent } from './ExampleComponent'; -import { ThemeProvider } from '@material-ui/core'; -import { lightTheme } from '@backstage/theme'; -import { rest } from 'msw'; -import { setupServer } from 'msw/node'; -import { msw, renderInTestApp } from '@backstage/test-utils'; - -describe('ExampleComponent', () => { - const server = setupServer(); - // Enable sane handlers for network requests - msw.setupDefaultHandlers(server); - - // setup mock response - beforeEach(() => { - server.use( - rest.get('/*', (_, res, ctx) => res(ctx.status(200), ctx.json({}))), - ); - }); - - it('should render', async () => { - const rendered = await renderInTestApp( - - - , - ); - expect(rendered.getByText('Welcome to todo!')).toBeInTheDocument(); - }); -}); diff --git a/plugins/todo/src/components/ExampleComponent/ExampleComponent.tsx b/plugins/todo/src/components/ExampleComponent/ExampleComponent.tsx deleted file mode 100644 index 3dc0345ee4..0000000000 --- a/plugins/todo/src/components/ExampleComponent/ExampleComponent.tsx +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2021 Spotify AB - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import React from 'react'; -import { Typography, Grid } from '@material-ui/core'; -import { - InfoCard, - Header, - Page, - Content, - ContentHeader, - HeaderLabel, - SupportButton, -} from '@backstage/core'; -import { ExampleFetchComponent } from '../ExampleFetchComponent'; - -export const ExampleComponent = () => ( - -
- - -
- - - A description of your plugin goes here. - - - - - - All content should be wrapped in a card like this. - - - - - - - - -
-); diff --git a/plugins/todo/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx b/plugins/todo/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx deleted file mode 100644 index 6a5c0351d6..0000000000 --- a/plugins/todo/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2021 Spotify AB - * - * 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 } from '@testing-library/react'; -import { ExampleFetchComponent } from './ExampleFetchComponent'; -import { rest } from 'msw'; -import { setupServer } from 'msw/node'; -import { msw } from '@backstage/test-utils'; - -describe('ExampleFetchComponent', () => { - const server = setupServer(); - // Enable sane handlers for network requests - msw.setupDefaultHandlers(server); - - // setup mock response - beforeEach(() => { - server.use( - rest.get('https://randomuser.me/*', (_, res, ctx) => - res(ctx.status(200), ctx.delay(2000), ctx.json({})), - ), - ); - }); - it('should render', async () => { - const rendered = render(); - expect(await rendered.findByTestId('progress')).toBeInTheDocument(); - }); -}); diff --git a/plugins/todo/src/components/ExampleFetchComponent/ExampleFetchComponent.tsx b/plugins/todo/src/components/ExampleFetchComponent/ExampleFetchComponent.tsx deleted file mode 100644 index 1390c8950f..0000000000 --- a/plugins/todo/src/components/ExampleFetchComponent/ExampleFetchComponent.tsx +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2021 Spotify AB - * - * 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 { makeStyles } from '@material-ui/core/styles'; -import { Table, TableColumn, Progress } from '@backstage/core'; -import Alert from '@material-ui/lab/Alert'; -import { useAsync } from 'react-use'; - -const useStyles = makeStyles({ - avatar: { - height: 32, - width: 32, - borderRadius: '50%', - }, -}); - -type User = { - gender: string; // "male" - name: { - title: string; // "Mr", - first: string; // "Duane", - last: string; // "Reed" - }; - location: object; // {street: {number: 5060, name: "Hickory Creek Dr"}, city: "Albany", state: "New South Wales",…} - email: string; // "duane.reed@example.com" - login: object; // {uuid: "4b785022-9a23-4ab9-8a23-cb3fb43969a9", username: "blackdog796", password: "patch",…} - dob: object; // {date: "1983-06-22T12:30:23.016Z", age: 37} - registered: object; // {date: "2006-06-13T18:48:28.037Z", age: 14} - phone: string; // "07-2154-5651" - cell: string; // "0405-592-879" - id: { - name: string; // "TFN", - value: string; // "796260432" - }; - picture: { medium: string }; // {medium: "https://randomuser.me/api/portraits/men/95.jpg",…} - nat: string; // "AU" -}; - -type DenseTableProps = { - users: User[]; -}; - -export const DenseTable = ({ users }: DenseTableProps) => { - const classes = useStyles(); - - const columns: TableColumn[] = [ - { title: 'Avatar', field: 'avatar' }, - { title: 'Name', field: 'name' }, - { title: 'Email', field: 'email' }, - { title: 'Nationality', field: 'nationality' }, - ]; - - const data = users.map(user => { - return { - avatar: ( - {user.name.first} - ), - name: `${user.name.first} ${user.name.last}`, - email: user.email, - nationality: user.nat, - }; - }); - - return ( -
- ); -}; - -export const ExampleFetchComponent = () => { - const { value, loading, error } = useAsync(async (): Promise => { - const response = await fetch('https://randomuser.me/api/?results=20'); - const data = await response.json(); - return data.results; - }, []); - - if (loading) { - return ; - } else if (error) { - return {error.message}; - } - - return ; -}; diff --git a/plugins/todo/src/components/ExampleFetchComponent/index.ts b/plugins/todo/src/components/ExampleFetchComponent/index.ts deleted file mode 100644 index e7c8364039..0000000000 --- a/plugins/todo/src/components/ExampleFetchComponent/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright 2021 Spotify AB - * - * 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 { ExampleFetchComponent } from './ExampleFetchComponent'; diff --git a/plugins/todo/src/components/TodoList/TodoList.test.tsx b/plugins/todo/src/components/TodoList/TodoList.test.tsx new file mode 100644 index 0000000000..2f44b36673 --- /dev/null +++ b/plugins/todo/src/components/TodoList/TodoList.test.tsx @@ -0,0 +1,46 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { ApiProvider, ApiRegistry } from '@backstage/core'; +import { EntityProvider } from '@backstage/plugin-catalog-react'; +import { renderWithEffects } from '@backstage/test-utils'; +import React from 'react'; +import { TodoApi, todoApiRef } from '../../api'; +import { TodoList } from './TodoList'; + +describe('TodoList', () => { + it('should render', async () => { + const mockApi: jest.Mocked = { + listTodos: jest.fn().mockResolvedValue({ + items: [{ text: 'My TODO' }], + totalCount: 1, + cursors: { prev: 'prev', self: 'self', next: 'next' }, + }), + }; + const mockEntity = { metadata: { name: 'mock' } } as Entity; + + const rendered = await renderWithEffects( + + + + + , + ); + + await expect(rendered.findByText('My TODO')).resolves.toBeInTheDocument(); + }); +}); diff --git a/plugins/todo/src/components/TodoList/TodoList.tsx b/plugins/todo/src/components/TodoList/TodoList.tsx new file mode 100644 index 0000000000..a27734c80b --- /dev/null +++ b/plugins/todo/src/components/TodoList/TodoList.tsx @@ -0,0 +1,76 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { Progress, Table, TableColumn, useApi } from '@backstage/core'; +import { useEntity } from '@backstage/plugin-catalog-react'; +import Alert from '@material-ui/lab/Alert'; +import React from 'react'; +import { useAsync } from 'react-use'; +import { todoApiRef } from '../../api'; +import { TodoItem } from '../../api/types'; + +const columns: TableColumn[] = [ + { title: 'Text', field: 'text' }, + { title: 'Author', field: 'author' }, + { + title: 'View', + field: 'viewUrl', + render({ viewUrl }) { + return ( + + {viewUrl} + + ); + }, + }, + { + title: 'Edit', + field: 'editUrl', + render({ editUrl }) { + return ( + + {editUrl} + + ); + }, + }, +]; + +export const TodoList = () => { + const { entity } = useEntity(); + const todoApi = useApi(todoApiRef); + + const { value, loading, error } = useAsync( + async () => todoApi.listTodos({ entity }), + [todoApi, entity], + ); + + if (loading) { + return ; + } else if (error) { + return {error.message}; + } + + return ( +
+ ); +}; diff --git a/plugins/todo/src/components/ExampleComponent/index.ts b/plugins/todo/src/components/TodoList/index.ts similarity index 91% rename from plugins/todo/src/components/ExampleComponent/index.ts rename to plugins/todo/src/components/TodoList/index.ts index 337d24d5c5..416a52fd7a 100644 --- a/plugins/todo/src/components/ExampleComponent/index.ts +++ b/plugins/todo/src/components/TodoList/index.ts @@ -13,4 +13,4 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export { ExampleComponent } from './ExampleComponent'; +export { TodoList } from './TodoList'; diff --git a/plugins/todo/src/plugin.ts b/plugins/todo/src/plugin.ts index 4a202390be..7cc439940c 100644 --- a/plugins/todo/src/plugin.ts +++ b/plugins/todo/src/plugin.ts @@ -40,8 +40,7 @@ export const todoPlugin = createPlugin({ export const EntityTodoContent = todoPlugin.provide( createRoutableExtension({ - component: () => - import('./components/ExampleComponent').then(m => m.ExampleComponent), + component: () => import('./components/TodoList').then(m => m.TodoList), mountPoint: rootRouteRef, }), ); From 1c04474fe7851d55fce9ab1b4fa210f8ececed2b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 9 Mar 2021 20:51:41 +0100 Subject: [PATCH 029/315] todo: implement TodoClient Signed-off-by: Patrik Oldsberg --- plugins/todo/src/api/TodoClient.ts | 72 +++++++++++++++++++++++++++++- plugins/todo/src/plugin.ts | 11 +++-- 2 files changed, 78 insertions(+), 5 deletions(-) diff --git a/plugins/todo/src/api/TodoClient.ts b/plugins/todo/src/api/TodoClient.ts index e85e49f1fa..fb0c03bac6 100644 --- a/plugins/todo/src/api/TodoClient.ts +++ b/plugins/todo/src/api/TodoClient.ts @@ -14,10 +14,78 @@ * limitations under the License. */ +import { serializeEntityRef } from '@backstage/catalog-model'; +import { DiscoveryApi, IdentityApi } from '@backstage/core'; import { TodoApi, TodoListOptions, TodoListResult } from './types'; +interface Options { + discoveryApi: DiscoveryApi; + identityApi: IdentityApi; +} + export class TodoClient implements TodoApi { - listTodos(_options: TodoListOptions): Promise { - throw new Error('Method not implemented.'); + private readonly discoveryApi: DiscoveryApi; + private readonly identityApi: IdentityApi; + + constructor(options: Options) { + this.discoveryApi = options.discoveryApi; + this.identityApi = options.identityApi; + } + + async listTodos({ + entity, + cursor, + }: TodoListOptions): Promise { + const baseUrl = await this.discoveryApi.getBaseUrl('todo'); + const token = await this.identityApi.getIdToken(); + + const query = new URLSearchParams(); + if (entity) { + query.set('entity', serializeEntityRef(entity) as string); + } + if (cursor) { + query.set('cursor', cursor); + } + + const res = await fetch(`${baseUrl}/v1/todos?${query}`, { + headers: token + ? { + Authorization: `Bearer ${token}`, + } + : undefined, + }); + + if (!res.ok) { + const error = await this.readResponseError(res, 'list todos'); + throw error; + } + + const data: TodoListResult = await res.json(); + return data; + } + + private async readResponseError(res: Response, action: string) { + const error = new Error() as Error & { status: number }; + error.status = res.status; + + try { + const json = await res.json(); + if (typeof json?.error?.message !== 'string') { + throw new Error('invalid error'); + } + error.message = json.error.message; + if (json.error.name) { + error.name = json.error.name; + } + } catch { + try { + const text = await res.text(); + error.message = `Failed to ${action}, ${text}`; + } catch { + error.message = `Failed to ${action}, status ${res.status}`; + } + } + + throw error; } } diff --git a/plugins/todo/src/plugin.ts b/plugins/todo/src/plugin.ts index 7cc439940c..535630ba35 100644 --- a/plugins/todo/src/plugin.ts +++ b/plugins/todo/src/plugin.ts @@ -17,6 +17,8 @@ import { createApiFactory, createPlugin, createRoutableExtension, + discoveryApiRef, + identityApiRef, } from '@backstage/core'; import { todoApiRef, TodoClient } from './api'; @@ -27,9 +29,12 @@ export const todoPlugin = createPlugin({ apis: [ createApiFactory({ api: todoApiRef, - deps: {}, - factory() { - return new TodoClient(); + deps: { + identityApi: identityApiRef, + discoveryApi: discoveryApiRef, + }, + factory({ identityApi, discoveryApi }) { + return new TodoClient({ identityApi, discoveryApi }); }, }), ], From be0721c6c61fb2d22b28f336fcfa8d261af84771 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 9 Mar 2021 20:55:03 +0100 Subject: [PATCH 030/315] backend: add todo plugin Signed-off-by: Patrik Oldsberg --- packages/backend/package.json | 1 + packages/backend/src/index.ts | 3 +++ packages/backend/src/plugins/todo.ts | 24 ++++++++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 packages/backend/src/plugins/todo.ts diff --git a/packages/backend/package.json b/packages/backend/package.json index d3f967b3b3..dfbd45f200 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -41,6 +41,7 @@ "@backstage/plugin-rollbar-backend": "^0.1.7", "@backstage/plugin-scaffolder-backend": "^0.9.1", "@backstage/plugin-techdocs-backend": "^0.6.4", + "@backstage/plugin-todo-backend": "^0.1.0", "@gitbeaker/node": "^28.0.2", "@octokit/rest": "^18.0.12", "azure-devops-node-api": "^10.1.1", diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 81d0bb96d2..23739596e8 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -43,6 +43,7 @@ import rollbar from './plugins/rollbar'; import scaffolder from './plugins/scaffolder'; import proxy from './plugins/proxy'; import techdocs from './plugins/techdocs'; +import todo from './plugins/todo'; import graphql from './plugins/graphql'; import app from './plugins/app'; import { PluginEnvironment } from './types'; @@ -77,6 +78,7 @@ async function main() { const proxyEnv = useHotMemoize(module, () => createEnv('proxy')); const rollbarEnv = useHotMemoize(module, () => createEnv('rollbar')); const techdocsEnv = useHotMemoize(module, () => createEnv('techdocs')); + const todoEnv = useHotMemoize(module, () => createEnv('todo')); const kubernetesEnv = useHotMemoize(module, () => createEnv('kubernetes')); const kafkaEnv = useHotMemoize(module, () => createEnv('kafka')); const graphqlEnv = useHotMemoize(module, () => createEnv('graphql')); @@ -88,6 +90,7 @@ async function main() { apiRouter.use('/scaffolder', await scaffolder(scaffolderEnv)); apiRouter.use('/auth', await auth(authEnv)); apiRouter.use('/techdocs', await techdocs(techdocsEnv)); + apiRouter.use('/todo', await todo(todoEnv)); apiRouter.use('/kubernetes', await kubernetes(kubernetesEnv)); apiRouter.use('/kafka', await kafka(kafkaEnv)); apiRouter.use('/proxy', await proxy(proxyEnv)); diff --git a/packages/backend/src/plugins/todo.ts b/packages/backend/src/plugins/todo.ts new file mode 100644 index 0000000000..9f90d82a05 --- /dev/null +++ b/packages/backend/src/plugins/todo.ts @@ -0,0 +1,24 @@ +/* + * Copyright 2020 Spotify AB + * + * 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 { Router } from 'express'; +import { createRouter } from '@backstage/plugin-todo-backend'; +import { PluginEnvironment } from '../types'; + +export default async function createPlugin({ + logger, +}: PluginEnvironment): Promise { + return await createRouter({ logger }); +} From e24a8964f6086a6900744e803e3bacf1a35f19f5 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 9 Mar 2021 21:00:34 +0100 Subject: [PATCH 031/315] todo: set up both live and mocked api pages in dev env Signed-off-by: Patrik Oldsberg --- plugins/todo/dev/index.tsx | 74 +++++++++++++++++++++++++------------- 1 file changed, 49 insertions(+), 25 deletions(-) diff --git a/plugins/todo/dev/index.tsx b/plugins/todo/dev/index.tsx index 9560c49ecb..08936f3657 100644 --- a/plugins/todo/dev/index.tsx +++ b/plugins/todo/dev/index.tsx @@ -13,10 +13,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { Entity, LOCATION_ANNOTATION } from '@backstage/catalog-model'; -import { Content, Header, HeaderLabel, Page } from '@backstage/core'; +import { + ApiProvider, + ApiRegistry, + Content, + Header, + HeaderLabel, + Page, +} from '@backstage/core'; import { createDevApp } from '@backstage/dev-utils'; import { EntityProvider } from '@backstage/plugin-catalog-react'; +import OnlineIcon from '@material-ui/icons/Cloud'; +import OfflineIcon from '@material-ui/icons/Storage'; import React from 'react'; import { EntityTodoContent, todoApiRef, todoPlugin } from '../src'; @@ -35,36 +45,49 @@ const entity: Entity = { }, }; +const mockedApi = { + listTodos: async () => ({ + items: [ + { + text: 'Make sure this works', + author: 'Rugvip', + viewUrl: 'https://github.com/backstage/backstage', + }, + ], + totalCount: 15, + cursors: { + prev: 'prev', + self: 'self', + next: 'next', + }, + }), +}; + createDevApp() .registerPlugin(todoPlugin) - .registerApi({ - api: todoApiRef, - deps: {}, - factory() { - return { - listTodos: async () => ({ - items: [ - { - text: 'Make sure this works', - author: 'Rugvip', - viewUrl: 'https://github.com/backstage/backstage', - }, - ], - totalCount: 15, - cursors: { - prev: 'prev', - self: 'self', - next: 'next', - }, - }), - }; - }, + .addPage({ + element: ( + + + +
+ +
+ + + +
+
+
+ ), + title: 'Entity Todo Content', + icon: OfflineIcon, }) .addPage({ element: ( -
+
@@ -73,6 +96,7 @@ createDevApp() ), - title: 'Entity Todo Content', + title: 'Backend Connected', + icon: OnlineIcon, }) .render(); From f2bf479e0f87d392c33fbcafd08f0b549163bd52 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 9 Mar 2021 21:10:26 +0100 Subject: [PATCH 032/315] todo-backend: initial setup and mock API Signed-off-by: Patrik Oldsberg --- plugins/todo-backend/package.json | 2 +- plugins/todo-backend/src/run.ts | 33 ---------- plugins/todo-backend/src/service/router.ts | 15 +++-- .../src/service/standaloneServer.ts | 62 ------------------- plugins/todo-backend/src/setupTests.ts | 17 ----- 5 files changed, 11 insertions(+), 118 deletions(-) delete mode 100644 plugins/todo-backend/src/run.ts delete mode 100644 plugins/todo-backend/src/service/standaloneServer.ts delete mode 100644 plugins/todo-backend/src/setupTests.ts diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 47c0202bba..c47ff18ab8 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -10,7 +10,6 @@ "types": "dist/index.d.ts" }, "scripts": { - "start": "backstage-cli backend:dev", "build": "backstage-cli backend:build", "lint": "backstage-cli lint", "test": "backstage-cli test", @@ -20,6 +19,7 @@ }, "dependencies": { "@backstage/backend-common": "^0.5.5", + "@backstage/catalog-client": "^0.3.6", "@backstage/config": "^0.1.3", "@types/express": "^4.17.6", "express": "^4.17.1", diff --git a/plugins/todo-backend/src/run.ts b/plugins/todo-backend/src/run.ts deleted file mode 100644 index b96989e4b8..0000000000 --- a/plugins/todo-backend/src/run.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2020 Spotify AB - * - * 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 { getRootLogger } from '@backstage/backend-common'; -import yn from 'yn'; -import { startStandaloneServer } from './service/standaloneServer'; - -const port = process.env.PLUGIN_PORT ? Number(process.env.PLUGIN_PORT) : 7000; -const enableCors = yn(process.env.PLUGIN_CORS, { default: false }); -const logger = getRootLogger(); - -startStandaloneServer({ port, enableCors, logger }).catch(err => { - logger.error(err); - process.exit(1); -}); - -process.on('SIGINT', () => { - logger.info('CTRL+C pressed; exiting.'); - process.exit(0); -}); diff --git a/plugins/todo-backend/src/service/router.ts b/plugins/todo-backend/src/service/router.ts index 3ea8219365..08d6440780 100644 --- a/plugins/todo-backend/src/service/router.ts +++ b/plugins/todo-backend/src/service/router.ts @@ -14,13 +14,18 @@ * limitations under the License. */ -import { errorHandler } from '@backstage/backend-common'; +import { UrlReader } from '@backstage/backend-common'; +import { CatalogClient } from '@backstage/catalog-client'; +import { Config } from '@backstage/config'; import express from 'express'; import Router from 'express-promise-router'; import { Logger } from 'winston'; export interface RouterOptions { logger: Logger; + config: Config; + reader: UrlReader; + catalogClient: CatalogClient; } export async function createRouter( @@ -31,10 +36,10 @@ export async function createRouter( const router = Router(); router.use(express.json()); - router.get('/health', (_, response) => { - logger.info('PONG!'); - response.send({ status: 'ok' }); + router.get('/v1/todos', (req, res) => { + logger.debug('got todo request', req.query); + res.json({ items: [{ text: 'Test TODO' }], totalCount: 1 }); }); - router.use(errorHandler()); + return router; } diff --git a/plugins/todo-backend/src/service/standaloneServer.ts b/plugins/todo-backend/src/service/standaloneServer.ts deleted file mode 100644 index 4901ec1895..0000000000 --- a/plugins/todo-backend/src/service/standaloneServer.ts +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2021 Spotify AB - * - * 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. - */ -/* - * Copyright 2020 Spotify AB - * - * 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 { createServiceBuilder } from '@backstage/backend-common'; -import { Server } from 'http'; -import { Logger } from 'winston'; -import { createRouter } from './router'; - -export interface ServerOptions { - port: number; - enableCors: boolean; - logger: Logger; -} - -export async function startStandaloneServer( - options: ServerOptions, -): Promise { - const logger = options.logger.child({ service: 'todo-backend' }); - logger.debug('Starting application server...'); - const router = await createRouter({ - logger, - }); - - const service = createServiceBuilder(module) - .enableCors({ origin: 'http://localhost:3000' }) - .addRouter('/todo', router); - - return await service.start().catch(err => { - logger.error(err); - process.exit(1); - }); -} - -module.hot?.accept(); diff --git a/plugins/todo-backend/src/setupTests.ts b/plugins/todo-backend/src/setupTests.ts deleted file mode 100644 index ba33cf996b..0000000000 --- a/plugins/todo-backend/src/setupTests.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2020 Spotify AB - * - * 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 {}; From 117286b313758b0d7c4fbf98d54deeedf1f13688 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 9 Mar 2021 21:49:52 +0100 Subject: [PATCH 033/315] todo-backend: create layered shell with types and mock Signed-off-by: Patrik Oldsberg --- packages/backend/src/plugins/todo.ts | 22 +++++++- plugins/todo-backend/package.json | 1 + plugins/todo-backend/src/index.ts | 3 +- .../src/lib/TodoReader/TodoScmReader.ts | 40 ++++++++++++++ .../todo-backend/src/lib/TodoReader/index.ts | 23 ++++++++ .../todo-backend/src/lib/TodoReader/types.ts | 43 +++++++++++++++ plugins/todo-backend/src/lib/index.ts | 17 ++++++ .../src/service/TodoReaderService.ts | 53 +++++++++++++++++++ plugins/todo-backend/src/service/index.ts | 19 +++++++ plugins/todo-backend/src/service/router.ts | 38 ++++++++----- plugins/todo-backend/src/service/types.ts | 37 +++++++++++++ 11 files changed, 281 insertions(+), 15 deletions(-) create mode 100644 plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts create mode 100644 plugins/todo-backend/src/lib/TodoReader/index.ts create mode 100644 plugins/todo-backend/src/lib/TodoReader/types.ts create mode 100644 plugins/todo-backend/src/lib/index.ts create mode 100644 plugins/todo-backend/src/service/TodoReaderService.ts create mode 100644 plugins/todo-backend/src/service/index.ts create mode 100644 plugins/todo-backend/src/service/types.ts diff --git a/packages/backend/src/plugins/todo.ts b/packages/backend/src/plugins/todo.ts index 9f90d82a05..38fb43f78e 100644 --- a/packages/backend/src/plugins/todo.ts +++ b/packages/backend/src/plugins/todo.ts @@ -13,12 +13,30 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { CatalogClient } from '@backstage/catalog-client'; +import { + createRouter, + TodoReaderService, + TodoScmReader, +} from '@backstage/plugin-todo-backend'; import { Router } from 'express'; -import { createRouter } from '@backstage/plugin-todo-backend'; import { PluginEnvironment } from '../types'; export default async function createPlugin({ logger, + reader, + discovery, }: PluginEnvironment): Promise { - return await createRouter({ logger }); + const todoReader = new TodoScmReader({ + logger, + reader, + }); + const catalogClient = new CatalogClient({ discoveryApi: discovery }); + const todoService = new TodoReaderService({ + logger, + todoReader, + catalogClient, + }); + + return await createRouter({ todoService }); } diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index c47ff18ab8..6f3d88f56d 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -20,6 +20,7 @@ "dependencies": { "@backstage/backend-common": "^0.5.5", "@backstage/catalog-client": "^0.3.6", + "@backstage/catalog-model": "^0.7.3", "@backstage/config": "^0.1.3", "@types/express": "^4.17.6", "express": "^4.17.1", diff --git a/plugins/todo-backend/src/index.ts b/plugins/todo-backend/src/index.ts index 7612c392a2..d0406483c8 100644 --- a/plugins/todo-backend/src/index.ts +++ b/plugins/todo-backend/src/index.ts @@ -14,4 +14,5 @@ * limitations under the License. */ -export * from './service/router'; +export * from './lib'; +export * from './service'; diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts new file mode 100644 index 0000000000..bf309cd673 --- /dev/null +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts @@ -0,0 +1,40 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { UrlReader } from '@backstage/backend-common'; +import { Logger } from 'winston'; +import { ReadTodosOptions, ReadTodosResult, TodoReader } from './types'; + +type Options = { + logger: Logger; + reader: UrlReader; +}; + +export class TodoScmReader implements TodoReader { + private readonly logger: Logger; + private readonly reader: UrlReader; + + constructor(options: Options) { + this.logger = options.logger; + this.reader = options.reader; + } + + async readTodos(_options: ReadTodosOptions): Promise { + return { + items: [{ text: 'My mock todo' }], + }; + } +} diff --git a/plugins/todo-backend/src/lib/TodoReader/index.ts b/plugins/todo-backend/src/lib/TodoReader/index.ts new file mode 100644 index 0000000000..22c47ebef2 --- /dev/null +++ b/plugins/todo-backend/src/lib/TodoReader/index.ts @@ -0,0 +1,23 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { TodoScmReader } from './TodoScmReader'; +export type { + TodoItem, + TodoReader, + ReadTodosOptions, + ReadTodosResult, +} from './types'; diff --git a/plugins/todo-backend/src/lib/TodoReader/types.ts b/plugins/todo-backend/src/lib/TodoReader/types.ts new file mode 100644 index 0000000000..46e7f1dcfa --- /dev/null +++ b/plugins/todo-backend/src/lib/TodoReader/types.ts @@ -0,0 +1,43 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 type TodoItem = { + text: string; + author?: string; + viewUrl?: string; + editUrl?: string; +}; + +export type ReadTodosOptions = { + /** + * Base URLs defining the root at which to search for TODOs + */ + url: string; +}; + +export type ReadTodosResult = { + /** + * TODO items found at the given locations + */ + items: TodoItem[]; +}; + +export interface TodoReader { + /** + * Searches for TODO items in code at a given location + */ + readTodos(options: ReadTodosOptions): Promise; +} diff --git a/plugins/todo-backend/src/lib/index.ts b/plugins/todo-backend/src/lib/index.ts new file mode 100644 index 0000000000..85c100c959 --- /dev/null +++ b/plugins/todo-backend/src/lib/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 * from './TodoReader'; diff --git a/plugins/todo-backend/src/service/TodoReaderService.ts b/plugins/todo-backend/src/service/TodoReaderService.ts new file mode 100644 index 0000000000..4d9afc3099 --- /dev/null +++ b/plugins/todo-backend/src/service/TodoReaderService.ts @@ -0,0 +1,53 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { CatalogClient } from '@backstage/catalog-client'; +import { Logger } from 'winston'; +import { TodoReader } from '../lib'; +import { ListTodosRequest, ListTodosResponse, TodoService } from './types'; + +type Options = { + logger: Logger; + todoReader: TodoReader; + catalogClient: CatalogClient; +}; + +export class TodoReaderService implements TodoService { + private readonly logger: Logger; + private readonly todoReader: TodoReader; + private readonly catalogClient: CatalogClient; + + constructor(options: Options) { + this.logger = options.logger; + this.todoReader = options.todoReader; + this.catalogClient = options.catalogClient; + } + + async listTodos(_req: ListTodosRequest): Promise { + const todos = await this.todoReader.readTodos({ + url: 'https://github.com/backstage/backstage', + }); + return { + items: todos.items.slice(0, 10), + totalCount: todos.items.length, + cursors: { + prev: 'prev', + self: 'self', + next: 'next', + }, + }; + } +} diff --git a/plugins/todo-backend/src/service/index.ts b/plugins/todo-backend/src/service/index.ts new file mode 100644 index 0000000000..cbcf591da5 --- /dev/null +++ b/plugins/todo-backend/src/service/index.ts @@ -0,0 +1,19 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { createRouter } from './router'; +export type { TodoService, ListTodosRequest, ListTodosResponse } from './types'; +export { TodoReaderService } from './TodoReaderService'; diff --git a/plugins/todo-backend/src/service/router.ts b/plugins/todo-backend/src/service/router.ts index 08d6440780..f5237d6c0a 100644 --- a/plugins/todo-backend/src/service/router.ts +++ b/plugins/todo-backend/src/service/router.ts @@ -14,31 +14,45 @@ * limitations under the License. */ -import { UrlReader } from '@backstage/backend-common'; -import { CatalogClient } from '@backstage/catalog-client'; -import { Config } from '@backstage/config'; +import { InputError } from '@backstage/backend-common'; +import { EntityName, parseEntityName } from '@backstage/catalog-model'; import express from 'express'; import Router from 'express-promise-router'; -import { Logger } from 'winston'; +import { TodoService } from './types'; export interface RouterOptions { - logger: Logger; - config: Config; - reader: UrlReader; - catalogClient: CatalogClient; + todoService: TodoService; } export async function createRouter( options: RouterOptions, ): Promise { - const { logger } = options; + const { todoService } = options; const router = Router(); router.use(express.json()); - router.get('/v1/todos', (req, res) => { - logger.debug('got todo request', req.query); - res.json({ items: [{ text: 'Test TODO' }], totalCount: 1 }); + router.get('/v1/todos', async (req, res) => { + const { entity: entityRef, cursor } = req.query; + + if (entityRef && typeof entityRef !== 'string') { + throw new InputError(`entity query must be a string`); + } + if (cursor && typeof cursor !== 'string') { + throw new InputError(`cursor query must be a string`); + } + + let entity: EntityName | undefined = undefined; + if (entityRef) { + try { + entity = parseEntityName(entityRef); + } catch (error) { + throw new InputError(`Invalid entity ref, ${error}`); + } + } + + const todos = await todoService.listTodos({ entity, cursor }); + res.json(todos); }); return router; diff --git a/plugins/todo-backend/src/service/types.ts b/plugins/todo-backend/src/service/types.ts new file mode 100644 index 0000000000..bf417f0895 --- /dev/null +++ b/plugins/todo-backend/src/service/types.ts @@ -0,0 +1,37 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { EntityName } from '@backstage/catalog-model'; +import { TodoItem } from '../lib'; + +export type ListTodosRequest = { + entity?: EntityName; + cursor?: string; +}; + +export type ListTodosResponse = { + items: TodoItem[]; + totalCount: number; + cursors: { + prev: string; + self: string; + next: string; + }; +}; + +export interface TodoService { + listTodos(req: ListTodosRequest): Promise; +} From c829e1e983f8089ca4836c3b0c948471eda2b4e0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 9 Mar 2021 22:15:29 +0100 Subject: [PATCH 034/315] todo: fix error response parsing and set NotFoundError name Signed-off-by: Patrik Oldsberg --- plugins/todo/src/api/TodoClient.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/todo/src/api/TodoClient.ts b/plugins/todo/src/api/TodoClient.ts index fb0c03bac6..b8caee3ee9 100644 --- a/plugins/todo/src/api/TodoClient.ts +++ b/plugins/todo/src/api/TodoClient.ts @@ -69,7 +69,7 @@ export class TodoClient implements TodoApi { error.status = res.status; try { - const json = await res.json(); + const json = await res.clone().json(); if (typeof json?.error?.message !== 'string') { throw new Error('invalid error'); } @@ -84,6 +84,9 @@ export class TodoClient implements TodoApi { } catch { error.message = `Failed to ${action}, status ${res.status}`; } + if (res.status === 404) { + error.name = 'NotFoundError'; + } } throw error; From 76e6336312aee1ec0132194fc886a5449545e7b8 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 9 Mar 2021 22:18:04 +0100 Subject: [PATCH 035/315] todo-backend: full TodoReaderService implementation Signed-off-by: Patrik Oldsberg --- packages/backend/src/plugins/todo.ts | 1 - .../src/lib/TodoReader/TodoScmReader.ts | 4 +- .../src/service/TodoReaderService.ts | 123 ++++++++++++++++-- 3 files changed, 111 insertions(+), 17 deletions(-) diff --git a/packages/backend/src/plugins/todo.ts b/packages/backend/src/plugins/todo.ts index 38fb43f78e..6141108a27 100644 --- a/packages/backend/src/plugins/todo.ts +++ b/packages/backend/src/plugins/todo.ts @@ -33,7 +33,6 @@ export default async function createPlugin({ }); const catalogClient = new CatalogClient({ discoveryApi: discovery }); const todoService = new TodoReaderService({ - logger, todoReader, catalogClient, }); diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts index bf309cd673..f5457d0dd3 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts @@ -32,9 +32,9 @@ export class TodoScmReader implements TodoReader { this.reader = options.reader; } - async readTodos(_options: ReadTodosOptions): Promise { + async readTodos({ url }: ReadTodosOptions): Promise { return { - items: [{ text: 'My mock todo' }], + items: [{ text: 'My mock todo', viewUrl: url }], }; } } diff --git a/plugins/todo-backend/src/service/TodoReaderService.ts b/plugins/todo-backend/src/service/TodoReaderService.ts index 4d9afc3099..e646a29634 100644 --- a/plugins/todo-backend/src/service/TodoReaderService.ts +++ b/plugins/todo-backend/src/service/TodoReaderService.ts @@ -14,40 +14,135 @@ * limitations under the License. */ +import { InputError, NotFoundError } from '@backstage/backend-common'; import { CatalogClient } from '@backstage/catalog-client'; -import { Logger } from 'winston'; +import { + LOCATION_ANNOTATION, + SOURCE_LOCATION_ANNOTATION, + serializeEntityRef, + Entity, + parseLocationReference, +} from '@backstage/catalog-model'; import { TodoReader } from '../lib'; import { ListTodosRequest, ListTodosResponse, TodoService } from './types'; +const DEFAULT_DEFAULT_PAGE_SIZE = 10; +const DEFAULT_MAX_PAGE_SIZE = 50; + type Options = { - logger: Logger; todoReader: TodoReader; catalogClient: CatalogClient; + maxPageSize?: number; + defaultPageSize?: number; }; export class TodoReaderService implements TodoService { - private readonly logger: Logger; private readonly todoReader: TodoReader; private readonly catalogClient: CatalogClient; + private readonly maxPageSize: number; + private readonly defaultPageSize: number; constructor(options: Options) { - this.logger = options.logger; this.todoReader = options.todoReader; this.catalogClient = options.catalogClient; + this.maxPageSize = options.maxPageSize ?? DEFAULT_MAX_PAGE_SIZE; + this.defaultPageSize = options.defaultPageSize ?? DEFAULT_DEFAULT_PAGE_SIZE; } - async listTodos(_req: ListTodosRequest): Promise { - const todos = await this.todoReader.readTodos({ - url: 'https://github.com/backstage/backstage', - }); + async listTodos({ + entity: entityName, + cursor, + }: ListTodosRequest): Promise { + if (!entityName) { + throw new InputError('entity filter is required to list todos'); + } + const entity = await this.catalogClient.getEntityByName(entityName); + if (!entity) { + throw new NotFoundError( + `Entity not found, ${serializeEntityRef(entityName)}`, + ); + } + + const url = this.getEntitySourceUrl(entity); + const todos = await this.todoReader.readTodos({ url }); + + const { offset, limit } = this.parseCursor(cursor); return { - items: todos.items.slice(0, 10), + items: todos.items.slice(offset, offset + limit), totalCount: todos.items.length, - cursors: { - prev: 'prev', - self: 'self', - next: 'next', - }, + cursors: this.calculateCursors(offset, limit, todos.items.length), + }; + } + + private getEntitySourceUrl(entity: Entity) { + const sourceLocation = + entity.metadata.annotations?.[SOURCE_LOCATION_ANNOTATION]; + if (sourceLocation) { + const parsed = parseLocationReference(sourceLocation); + if (parsed.type !== 'url') { + throw new InputError( + `Invalid entity source location type for ${serializeEntityRef( + entity, + )}, got ${parsed.type}`, + ); + } + return parsed.target; + } + + const location = entity.metadata.annotations?.[LOCATION_ANNOTATION]; + if (location) { + const parsed = parseLocationReference(location); + if (parsed.type !== 'url') { + throw new InputError( + `Invalid entity source location type for ${serializeEntityRef( + entity, + )}, got ${parsed.type}`, + ); + } + return parsed.target; + } + throw new InputError( + `No entity location annotation found for ${serializeEntityRef(entity)}`, + ); + } + + private parseCursor( + cursor: string | undefined, + ): { offset: number; limit: number } { + if (!cursor) { + return { offset: 0, limit: this.defaultPageSize }; + } + + const [offsetStr, limitStr] = cursor.split(','); + + const offset = parseInt(offsetStr, 10); + if (!Number.isInteger(offset) || offset < 0) { + throw new InputError(`Invalid cursor, ${cursor}`); + } + + let limit = parseInt(limitStr, 10); + if (!Number.isInteger(limit) || limit < 0) { + throw new InputError(`Invalid cursor, ${cursor}`); + } + if (limit > this.maxPageSize) { + limit = this.maxPageSize; + } + + return { offset, limit }; + } + + private calculateCursors( + offset: number, + limit: number, + total: number, + ): ListTodosResponse['cursors'] { + const prevOffset = Math.max(offset - limit, 0); + const nextOffset = Math.min(offset + limit, total - limit); + + return { + prev: `${prevOffset},${limit}`, + self: `${offset},${limit}`, + next: `${nextOffset},${limit}`, }; } } From 2eeb88435316c898dedec3fbfa948ed626240680 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 9 Mar 2021 23:02:07 +0100 Subject: [PATCH 036/315] todo-backend: implement TodoScmReader Signed-off-by: Patrik Oldsberg --- packages/backend/src/plugins/todo.ts | 3 +- plugins/todo-backend/package.json | 8 +- .../src/lib/TodoReader/TodoScmReader.ts | 88 +++++++++++++++++-- yarn.lock | 34 ++++++- 4 files changed, 123 insertions(+), 10 deletions(-) diff --git a/packages/backend/src/plugins/todo.ts b/packages/backend/src/plugins/todo.ts index 6141108a27..84f2feac92 100644 --- a/packages/backend/src/plugins/todo.ts +++ b/packages/backend/src/plugins/todo.ts @@ -25,9 +25,10 @@ import { PluginEnvironment } from '../types'; export default async function createPlugin({ logger, reader, + config, discovery, }: PluginEnvironment): Promise { - const todoReader = new TodoScmReader({ + const todoReader = TodoScmReader.fromConfig(config, { logger, reader, }); diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 6f3d88f56d..9fd5f68948 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -22,18 +22,20 @@ "@backstage/catalog-client": "^0.3.6", "@backstage/catalog-model": "^0.7.3", "@backstage/config": "^0.1.3", + "@backstage/integration": "^0.5.0", "@types/express": "^4.17.6", + "cross-fetch": "^3.0.6", "express": "^4.17.1", "express-promise-router": "^3.0.3", + "leasot": "^11.5.0", "winston": "^3.2.1", - "cross-fetch": "^3.0.6", "yn": "^4.0.0" }, "devDependencies": { "@backstage/cli": "^0.6.3", "@types/supertest": "^2.0.8", - "supertest": "^4.0.2", - "msw": "^0.21.2" + "msw": "^0.21.2", + "supertest": "^4.0.2" }, "files": [ "dist" diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts index f5457d0dd3..5450d0228b 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts @@ -14,27 +14,105 @@ * limitations under the License. */ +import { extname } from 'path'; import { UrlReader } from '@backstage/backend-common'; +import { ScmIntegrations } from '@backstage/integration'; import { Logger } from 'winston'; -import { ReadTodosOptions, ReadTodosResult, TodoReader } from './types'; +import { parse } from 'leasot'; +import { + ReadTodosOptions, + ReadTodosResult, + TodoItem, + TodoReader, +} from './types'; +import { Config } from '@backstage/config'; + +type TodoParser = (ctx: { + content: string; + path: string; +}) => (TodoItem & { line: number })[]; type Options = { logger: Logger; reader: UrlReader; + parser?: TodoParser; +}; + +const defaultTodoParser: TodoParser = ({ content, path }) => { + try { + const comments = parse(content, { + extension: extname(path), + }); + + return comments.map(comment => ({ + text: comment.text, + author: comment.ref, + line: comment.line, + })); + } catch /* ignore unsupported extensions */ { + return []; + } }; export class TodoScmReader implements TodoReader { private readonly logger: Logger; private readonly reader: UrlReader; + private readonly parser: TodoParser; + private readonly integrations: ScmIntegrations; - constructor(options: Options) { + static fromConfig(config: Config, options: Options) { + return new TodoScmReader(options, ScmIntegrations.fromConfig(config)); + } + + private constructor(options: Options, integrations: ScmIntegrations) { this.logger = options.logger; this.reader = options.reader; + this.parser = options.parser ?? defaultTodoParser; + this.integrations = integrations; } async readTodos({ url }: ReadTodosOptions): Promise { - return { - items: [{ text: 'My mock todo', viewUrl: url }], - }; + const tree = await this.reader.readTree(url, { + filter(path) { + return !path.startsWith('.yarn'); + }, + }); + + const files = await tree.files(); + this.logger.info(`Read ${files.length} files from ${url}`); + + const todos = new Array(); + for (const file of files) { + const content = await file.content(); + try { + const items = this.parser({ + path: file.path, + content: content.toString('utf8'), + }); + const viewUrl = this.integrations.resolveUrl({ + url: file.path, + base: url, + }); + + let editUrl: string | undefined = this.integrations.resolveEditUrl( + viewUrl, + ); + if (editUrl === viewUrl) { + editUrl = undefined; + } + + todos.push( + ...items.map(item => ({ + ...item, + editUrl, + viewUrl: item.line ? `${viewUrl}#L${item.line}` : viewUrl, + })), + ); + } catch (error) { + this.logger.error(`Failed to parse TODO in ${url}, ${error}`); + } + } + + return { items: todos }; } } diff --git a/yarn.lock b/yarn.lock index 0b5a3e2fa0..c056641ff7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10092,7 +10092,7 @@ commander@^5.0.0, commander@^5.1.0: resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^6.1.0: +commander@^6.1.0, commander@^6.2.1: version "6.2.1" resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== @@ -12212,6 +12212,11 @@ envinfo@^7.7.4: resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz#c6311cdd38a0e86808c1c9343f667e4267c4a320" integrity sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ== +eol@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd" + integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg== + err-code@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" @@ -13890,6 +13895,11 @@ get-stdin@^6.0.0: resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== +get-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -16881,6 +16891,11 @@ json-to-pretty-yaml@^1.2.2: remedial "^1.0.7" remove-trailing-spaces "^1.0.6" +json2xml@^0.1.3: + version "0.1.3" + resolved "https://registry.npmjs.org/json2xml/-/json2xml-0.1.3.tgz#9ae7c220bedd7c66a668e26f7ac182f6704eca21" + integrity sha1-mufCIL7dfGamaOJvesGC9nBOyiE= + json3@^3.3.2: version "3.3.3" resolved "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" @@ -17295,6 +17310,23 @@ ldapjs@^2.2.0: vasync "^2.2.0" verror "^1.8.1" +leasot@^11.5.0: + version "11.5.0" + resolved "https://registry.npmjs.org/leasot/-/leasot-11.5.0.tgz#a99eb4479618c9d2ea442a32ee006e5b9da4844d" + integrity sha512-L08QKlmofYIRs5gfOmhOtbEJUu6U/zFGvYpboPq34yAHQ2Oc/QznOw62noe29yRJLiV/XnIDS8vO2um1e1sikA== + dependencies: + async "^3.2.0" + chalk "^4.1.0" + commander "^6.2.1" + eol "^0.9.1" + get-stdin "^8.0.0" + globby "^11.0.1" + json2xml "^0.1.3" + lodash "^4.17.20" + log-symbols "^4.0.0" + strip-ansi "^6.0.0" + text-table "^0.2.0" + left-pad@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" From cf193329a446ff3f8c0acb8be4f41135a3da3282 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Mar 2021 00:37:48 +0100 Subject: [PATCH 037/315] todo,todo-backend: switch to and implement offset/limit pagination Signed-off-by: Patrik Oldsberg --- .../src/service/TodoReaderService.ts | 72 ++++++------------- plugins/todo-backend/src/service/router.ts | 24 +++++-- plugins/todo-backend/src/service/types.ts | 10 ++- plugins/todo/dev/index.tsx | 7 +- plugins/todo/src/api/TodoClient.ts | 10 ++- plugins/todo/src/api/types.ts | 10 ++- .../todo/src/components/TodoList/TodoList.tsx | 23 ++++-- 7 files changed, 75 insertions(+), 81 deletions(-) diff --git a/plugins/todo-backend/src/service/TodoReaderService.ts b/plugins/todo-backend/src/service/TodoReaderService.ts index e646a29634..57010ee7e0 100644 --- a/plugins/todo-backend/src/service/TodoReaderService.ts +++ b/plugins/todo-backend/src/service/TodoReaderService.ts @@ -49,28 +49,40 @@ export class TodoReaderService implements TodoService { this.defaultPageSize = options.defaultPageSize ?? DEFAULT_DEFAULT_PAGE_SIZE; } - async listTodos({ - entity: entityName, - cursor, - }: ListTodosRequest): Promise { - if (!entityName) { + async listTodos(req: ListTodosRequest): Promise { + if (!req.entity) { throw new InputError('entity filter is required to list todos'); } - const entity = await this.catalogClient.getEntityByName(entityName); + const entity = await this.catalogClient.getEntityByName(req.entity); if (!entity) { throw new NotFoundError( - `Entity not found, ${serializeEntityRef(entityName)}`, + `Entity not found, ${serializeEntityRef(req.entity)}`, ); } const url = this.getEntitySourceUrl(entity); const todos = await this.todoReader.readTodos({ url }); + const totalCount = todos.items.length; + + let limit = req.limit ?? this.defaultPageSize; + if (limit < 0) { + limit = 0; + } else if (limit > this.maxPageSize) { + limit = this.maxPageSize; + } + + let offset = req.offset ?? 0; + if (offset < 0) { + offset = 0; + } else if (offset - limit > totalCount) { + offset = totalCount - limit; + } - const { offset, limit } = this.parseCursor(cursor); return { items: todos.items.slice(offset, offset + limit), - totalCount: todos.items.length, - cursors: this.calculateCursors(offset, limit, todos.items.length), + totalCount, + offset, + limit, }; } @@ -105,44 +117,4 @@ export class TodoReaderService implements TodoService { `No entity location annotation found for ${serializeEntityRef(entity)}`, ); } - - private parseCursor( - cursor: string | undefined, - ): { offset: number; limit: number } { - if (!cursor) { - return { offset: 0, limit: this.defaultPageSize }; - } - - const [offsetStr, limitStr] = cursor.split(','); - - const offset = parseInt(offsetStr, 10); - if (!Number.isInteger(offset) || offset < 0) { - throw new InputError(`Invalid cursor, ${cursor}`); - } - - let limit = parseInt(limitStr, 10); - if (!Number.isInteger(limit) || limit < 0) { - throw new InputError(`Invalid cursor, ${cursor}`); - } - if (limit > this.maxPageSize) { - limit = this.maxPageSize; - } - - return { offset, limit }; - } - - private calculateCursors( - offset: number, - limit: number, - total: number, - ): ListTodosResponse['cursors'] { - const prevOffset = Math.max(offset - limit, 0); - const nextOffset = Math.min(offset + limit, total - limit); - - return { - prev: `${prevOffset},${limit}`, - self: `${offset},${limit}`, - next: `${nextOffset},${limit}`, - }; - } } diff --git a/plugins/todo-backend/src/service/router.ts b/plugins/todo-backend/src/service/router.ts index f5237d6c0a..12655cb208 100644 --- a/plugins/todo-backend/src/service/router.ts +++ b/plugins/todo-backend/src/service/router.ts @@ -33,15 +33,13 @@ export async function createRouter( router.use(express.json()); router.get('/v1/todos', async (req, res) => { - const { entity: entityRef, cursor } = req.query; + const offset = parseIntegerParam(req.query.offset, 'offset query'); + const limit = parseIntegerParam(req.query.limit, 'limit query'); + const entityRef = req.query.entity; if (entityRef && typeof entityRef !== 'string') { throw new InputError(`entity query must be a string`); } - if (cursor && typeof cursor !== 'string') { - throw new InputError(`cursor query must be a string`); - } - let entity: EntityName | undefined = undefined; if (entityRef) { try { @@ -51,9 +49,23 @@ export async function createRouter( } } - const todos = await todoService.listTodos({ entity, cursor }); + const todos = await todoService.listTodos({ entity, offset, limit }); res.json(todos); }); return router; } + +function parseIntegerParam(str: unknown, ctx: string): number | undefined { + if (str === undefined) { + return undefined; + } + if (typeof str !== 'string') { + throw new InputError(`invalid ${ctx}, must be a string`); + } + const parsed = parseInt(str, 10); + if (!Number.isInteger(parsed)) { + throw new InputError(`invalid ${ctx}, not an integer`); + } + return parsed; +} diff --git a/plugins/todo-backend/src/service/types.ts b/plugins/todo-backend/src/service/types.ts index bf417f0895..ac8ecc16b5 100644 --- a/plugins/todo-backend/src/service/types.ts +++ b/plugins/todo-backend/src/service/types.ts @@ -19,17 +19,15 @@ import { TodoItem } from '../lib'; export type ListTodosRequest = { entity?: EntityName; - cursor?: string; + offset?: number; + limit?: number; }; export type ListTodosResponse = { items: TodoItem[]; totalCount: number; - cursors: { - prev: string; - self: string; - next: string; - }; + offset: number; + limit: number; }; export interface TodoService { diff --git a/plugins/todo/dev/index.tsx b/plugins/todo/dev/index.tsx index 08936f3657..25a6769cb5 100644 --- a/plugins/todo/dev/index.tsx +++ b/plugins/todo/dev/index.tsx @@ -55,11 +55,8 @@ const mockedApi = { }, ], totalCount: 15, - cursors: { - prev: 'prev', - self: 'self', - next: 'next', - }, + offset: 0, + limit: 10, }), }; diff --git a/plugins/todo/src/api/TodoClient.ts b/plugins/todo/src/api/TodoClient.ts index b8caee3ee9..44d80ba22e 100644 --- a/plugins/todo/src/api/TodoClient.ts +++ b/plugins/todo/src/api/TodoClient.ts @@ -34,7 +34,8 @@ export class TodoClient implements TodoApi { async listTodos({ entity, - cursor, + offset, + limit, }: TodoListOptions): Promise { const baseUrl = await this.discoveryApi.getBaseUrl('todo'); const token = await this.identityApi.getIdToken(); @@ -43,8 +44,11 @@ export class TodoClient implements TodoApi { if (entity) { query.set('entity', serializeEntityRef(entity) as string); } - if (cursor) { - query.set('cursor', cursor); + if (typeof offset === 'number') { + query.set('offset', String(offset)); + } + if (typeof limit === 'number') { + query.set('limit', String(limit)); } const res = await fetch(`${baseUrl}/v1/todos?${query}`, { diff --git a/plugins/todo/src/api/types.ts b/plugins/todo/src/api/types.ts index bc6a15620b..890bc50731 100644 --- a/plugins/todo/src/api/types.ts +++ b/plugins/todo/src/api/types.ts @@ -26,17 +26,15 @@ export type TodoItem = { export type TodoListOptions = { entity?: Entity; - cursor?: string; + offset?: number; + limit?: number; }; export type TodoListResult = { items: TodoItem[]; totalCount: number; - cursors: { - prev: string; - self: string; - next: string; - }; + offset: number; + limit: number; }; export interface TodoApi { diff --git a/plugins/todo/src/components/TodoList/TodoList.tsx b/plugins/todo/src/components/TodoList/TodoList.tsx index a27734c80b..df0413107a 100644 --- a/plugins/todo/src/components/TodoList/TodoList.tsx +++ b/plugins/todo/src/components/TodoList/TodoList.tsx @@ -17,7 +17,7 @@ import { Progress, Table, TableColumn, useApi } from '@backstage/core'; import { useEntity } from '@backstage/plugin-catalog-react'; import Alert from '@material-ui/lab/Alert'; -import React from 'react'; +import React, { useState } from 'react'; import { useAsync } from 'react-use'; import { todoApiRef } from '../../api'; import { TodoItem } from '../../api/types'; @@ -52,10 +52,17 @@ const columns: TableColumn[] = [ export const TodoList = () => { const { entity } = useEntity(); const todoApi = useApi(todoApiRef); + const [page, setPage] = useState(0); + const [pageSize, setPageSize] = useState(10); const { value, loading, error } = useAsync( - async () => todoApi.listTodos({ entity }), - [todoApi, entity], + async () => + todoApi.listTodos({ + entity, + offset: page * pageSize, + limit: pageSize, + }), + [todoApi, entity, page, pageSize], ); if (loading) { @@ -67,9 +74,15 @@ export const TodoList = () => { return (
); From 8e47b7d988f02219a29d5779d794ffe4935486dd Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Mar 2021 00:46:21 +0100 Subject: [PATCH 038/315] todo-backend: cache read results Signed-off-by: Patrik Oldsberg --- .../src/lib/TodoReader/TodoScmReader.ts | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts index 5450d0228b..8caa853c6b 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts @@ -38,6 +38,11 @@ type Options = { parser?: TodoParser; }; +type CacheItem = { + etag: string; + result: ReadTodosResult; +}; + const defaultTodoParser: TodoParser = ({ content, path }) => { try { const comments = parse(content, { @@ -60,6 +65,8 @@ export class TodoScmReader implements TodoReader { private readonly parser: TodoParser; private readonly integrations: ScmIntegrations; + private readonly cache = new Map(); + static fromConfig(config: Config, options: Options) { return new TodoScmReader(options, ScmIntegrations.fromConfig(config)); } @@ -72,7 +79,25 @@ export class TodoScmReader implements TodoReader { } async readTodos({ url }: ReadTodosOptions): Promise { + const cacheItem = this.cache.get(url); + try { + const newCacheItem = await this.doReadTodos({ url }, cacheItem?.etag); + this.cache.set(url, newCacheItem); + return newCacheItem.result; + } catch (error) { + if (cacheItem && error.name === 'NotModifiedError') { + return cacheItem.result; + } + throw error; + } + } + + private async doReadTodos( + { url }: ReadTodosOptions, + etag?: string, + ): Promise { const tree = await this.reader.readTree(url, { + etag, filter(path) { return !path.startsWith('.yarn'); }, @@ -113,6 +138,6 @@ export class TodoScmReader implements TodoReader { } } - return { items: todos }; + return { result: { items: todos }, etag: tree.etag }; } } From 74543b6688e82116f18a49de08877aa59be5d581 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Mar 2021 00:53:55 +0100 Subject: [PATCH 039/315] todo-backend: add service tests Signed-off-by: Patrik Oldsberg --- .../todo-backend/src/service/router.test.ts | 58 +++++++++++++++++-- 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/plugins/todo-backend/src/service/router.test.ts b/plugins/todo-backend/src/service/router.test.ts index 0aaeafa379..1bd70c1643 100644 --- a/plugins/todo-backend/src/service/router.test.ts +++ b/plugins/todo-backend/src/service/router.test.ts @@ -14,18 +14,28 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import express from 'express'; import request from 'supertest'; import { createRouter } from './router'; +import { TodoService } from './types'; + +const mockListBody = { + items: [{ text: 'my todo' }], + totalCount: 1, + offset: 0, + limit: 10, +}; describe('createRouter', () => { let app: express.Express; + const mockService: jest.Mocked = { + listTodos: jest.fn(), + }; beforeAll(async () => { const router = await createRouter({ - logger: getVoidLogger(), + todoService: mockService, }); app = express().use(router); }); @@ -35,11 +45,49 @@ describe('createRouter', () => { }); describe('GET /health', () => { - it('returns ok', async () => { - const response = await request(app).get('/health'); + it('returns list without query', async () => { + mockService.listTodos.mockResolvedValueOnce(mockListBody); + const response = await request(app).get('/v1/todos'); expect(response.status).toEqual(200); - expect(response.body).toEqual({ status: 'ok' }); + expect(response.body).toEqual(mockListBody); + expect(mockService.listTodos).toHaveBeenCalledWith({ + entity: undefined, + offset: undefined, + limit: undefined, + }); + }); + + it('forwards pagination query', async () => { + mockService.listTodos.mockResolvedValueOnce(mockListBody); + + const response = await request(app).get('/v1/todos?offset=5&limit=3'); + expect(response.status).toEqual(200); + expect(response.body).toEqual(mockListBody); + expect(mockService.listTodos).toHaveBeenCalledWith({ + entity: undefined, + offset: 5, + limit: 3, + }); + }); + + it('forwards entity query', async () => { + mockService.listTodos.mockResolvedValueOnce(mockListBody); + + const response = await request(app).get( + '/v1/todos?entity=component:my-component', + ); + expect(response.status).toEqual(200); + expect(response.body).toEqual(mockListBody); + expect(mockService.listTodos).toHaveBeenCalledWith({ + entity: { + name: 'my-component', + kind: 'component', + namespace: 'default', + }, + offset: undefined, + limit: undefined, + }); }); }); }); From 240ab2d5204f2910b26eb3644eba1e1e804cf052 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Mar 2021 01:26:41 +0100 Subject: [PATCH 040/315] todo,todo-backend: tweak todo item model and table Signed-off-by: Patrik Oldsberg --- .../src/lib/TodoReader/TodoScmReader.ts | 22 ++++---- .../todo-backend/src/lib/TodoReader/types.ts | 12 ++++- plugins/todo/src/api/types.ts | 12 ++++- .../todo/src/components/TodoList/TodoList.tsx | 50 +++++++++++-------- 4 files changed, 60 insertions(+), 36 deletions(-) diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts index 8caa853c6b..919cf3dd18 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts @@ -30,7 +30,7 @@ import { Config } from '@backstage/config'; type TodoParser = (ctx: { content: string; path: string; -}) => (TodoItem & { line: number })[]; +}) => { text: string; author?: string; lineNumber: number }[]; type Options = { logger: Logger; @@ -52,7 +52,7 @@ const defaultTodoParser: TodoParser = ({ content, path }) => { return comments.map(comment => ({ text: comment.text, author: comment.ref, - line: comment.line, + lineNumber: comment.line, })); } catch /* ignore unsupported extensions */ { return []; @@ -119,18 +119,14 @@ export class TodoScmReader implements TodoReader { base: url, }); - let editUrl: string | undefined = this.integrations.resolveEditUrl( - viewUrl, - ); - if (editUrl === viewUrl) { - editUrl = undefined; - } - todos.push( - ...items.map(item => ({ - ...item, - editUrl, - viewUrl: item.line ? `${viewUrl}#L${item.line}` : viewUrl, + ...items.map(({ lineNumber, text, author }) => ({ + text, + author, + lineNumber, + repoFilePath: file.path, + viewUrl: + lineNumber === undefined ? viewUrl : `${viewUrl}#L${lineNumber}`, })), ); } catch (error) { diff --git a/plugins/todo-backend/src/lib/TodoReader/types.ts b/plugins/todo-backend/src/lib/TodoReader/types.ts index 46e7f1dcfa..499d3ac843 100644 --- a/plugins/todo-backend/src/lib/TodoReader/types.ts +++ b/plugins/todo-backend/src/lib/TodoReader/types.ts @@ -15,10 +15,20 @@ */ export type TodoItem = { + /** The contents of the TODO comment */ text: string; + + /** References author, if any */ author?: string; + + /** URL used to view the file */ viewUrl?: string; - editUrl?: string; + + /** The line number of the file that the TODO occurs at */ + lineNumber?: number; + + /** The path of the file containing the TODO within the repo */ + repoFilePath?: string; }; export type ReadTodosOptions = { diff --git a/plugins/todo/src/api/types.ts b/plugins/todo/src/api/types.ts index 890bc50731..759df24b60 100644 --- a/plugins/todo/src/api/types.ts +++ b/plugins/todo/src/api/types.ts @@ -18,10 +18,20 @@ import { createApiRef } from '@backstage/core'; import { Entity } from '@backstage/catalog-model'; export type TodoItem = { + /** The contents of the TODO comment */ text: string; + + /** References author, if any */ author?: string; + + /** URL used to view the file */ viewUrl?: string; - editUrl?: string; + + /** The line number of the file that the TODO occurs at */ + lineNumber?: number; + + /** The path of the file containing the TODO within the repo */ + repoFilePath?: string; }; export type TodoListOptions = { diff --git a/plugins/todo/src/components/TodoList/TodoList.tsx b/plugins/todo/src/components/TodoList/TodoList.tsx index df0413107a..1201dca4fd 100644 --- a/plugins/todo/src/components/TodoList/TodoList.tsx +++ b/plugins/todo/src/components/TodoList/TodoList.tsx @@ -14,7 +14,14 @@ * limitations under the License. */ -import { Progress, Table, TableColumn, useApi } from '@backstage/core'; +import { + Progress, + Table, + TableColumn, + useApi, + OverflowTooltip, + Link, +} from '@backstage/core'; import { useEntity } from '@backstage/plugin-catalog-react'; import Alert from '@material-ui/lab/Alert'; import React, { useState } from 'react'; @@ -23,29 +30,29 @@ import { todoApiRef } from '../../api'; import { TodoItem } from '../../api/types'; const columns: TableColumn[] = [ - { title: 'Text', field: 'text' }, - { title: 'Author', field: 'author' }, { - title: 'View', - field: 'viewUrl', - render({ viewUrl }) { - return ( - - {viewUrl} - - ); - }, + title: 'Text', + width: '100%', + highlight: true, + render: ({ text }) => , }, { - title: 'Edit', - field: 'editUrl', - render({ editUrl }) { - return ( - - {editUrl} - - ); - }, + title: 'File', + width: '80%', + render: ({ viewUrl, repoFilePath }) => + viewUrl ? ( + + + + ) : ( + + ), + }, + { + title: 'Author', + field: 'author', + width: '20%', + render: ({ author }) => , }, ]; @@ -77,6 +84,7 @@ export const TodoList = () => { options={{ search: false, pageSize, + padding: 'dense', }} page={page} columns={columns} From 3a7a803b0b44288772bf6db66306b5fac67ff15a Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Mar 2021 01:34:56 +0100 Subject: [PATCH 041/315] todo-backend: filter out all dotfiles Signed-off-by: Patrik Oldsberg --- plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts index 919cf3dd18..7979b8f18e 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts @@ -99,7 +99,7 @@ export class TodoScmReader implements TodoReader { const tree = await this.reader.readTree(url, { etag, filter(path) { - return !path.startsWith('.yarn'); + return !path.startsWith('.') && !path.includes('/.'); }, }); From 803cc34d47406a3fe62ae3db649dfcd3d3c2eb7d Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Mar 2021 21:46:47 +0100 Subject: [PATCH 042/315] todo-backend: add ordering support Signed-off-by: Patrik Oldsberg --- .../src/service/TodoReaderService.ts | 22 ++++++++- plugins/todo-backend/src/service/router.ts | 48 ++++++++++++++++++- plugins/todo-backend/src/service/types.ts | 4 ++ 3 files changed, 72 insertions(+), 2 deletions(-) diff --git a/plugins/todo-backend/src/service/TodoReaderService.ts b/plugins/todo-backend/src/service/TodoReaderService.ts index 57010ee7e0..85949065e7 100644 --- a/plugins/todo-backend/src/service/TodoReaderService.ts +++ b/plugins/todo-backend/src/service/TodoReaderService.ts @@ -78,8 +78,28 @@ export class TodoReaderService implements TodoService { offset = totalCount - limit; } + let items = todos.items; + const { orderBy } = req; + if (orderBy) { + const dir = orderBy.direction === 'asc' ? 1 : -1; + const field = orderBy.field; + items = items.slice().sort((item1, item2) => { + const field1 = item1[field]; + const field2 = item2[field]; + + if (field1 && field2) { + return dir * field1?.localeCompare(field2, 'en-US'); + } else if (field1 && !field2) { + return -1; + } else if (!field1 && field2) { + return 1; + } + return 0; + }); + } + return { - items: todos.items.slice(offset, offset + limit), + items: items.slice(offset, offset + limit), totalCount, offset, limit, diff --git a/plugins/todo-backend/src/service/router.ts b/plugins/todo-backend/src/service/router.ts index 12655cb208..1132b879c4 100644 --- a/plugins/todo-backend/src/service/router.ts +++ b/plugins/todo-backend/src/service/router.ts @@ -20,6 +20,13 @@ import express from 'express'; import Router from 'express-promise-router'; import { TodoService } from './types'; +const ALLOWED_ORDER_BY_FIELDS = [ + 'text', + 'author', + 'viewUrl', + 'repoFilePath', +] as const; + export interface RouterOptions { todoService: TodoService; } @@ -35,6 +42,11 @@ export async function createRouter( router.get('/v1/todos', async (req, res) => { const offset = parseIntegerParam(req.query.offset, 'offset query'); const limit = parseIntegerParam(req.query.limit, 'limit query'); + const orderBy = parseOrderByParam( + req.query.orderBy, + 'orderBy query', + ALLOWED_ORDER_BY_FIELDS, + ); const entityRef = req.query.entity; if (entityRef && typeof entityRef !== 'string') { @@ -49,7 +61,12 @@ export async function createRouter( } } - const todos = await todoService.listTodos({ entity, offset, limit }); + const todos = await todoService.listTodos({ + entity, + offset, + limit, + orderBy, + }); res.json(todos); }); @@ -69,3 +86,32 @@ function parseIntegerParam(str: unknown, ctx: string): number | undefined { } return parsed; } + +function parseOrderByParam( + str: unknown, + ctx: string, + allowedFields: T, +): { field: T[number]; direction: 'asc' | 'desc' } | undefined { + if (str === undefined) { + return undefined; + } + if (typeof str !== 'string') { + throw new InputError(`invalid ${ctx}, must be a string`); + } + const [field, direction] = str.split('='); + if (!field) { + throw new InputError(`invalid ${ctx}, field name is empty`); + } + if (direction !== 'asc' && direction !== 'desc') { + throw new InputError( + `invalid ${ctx}, order direction must be 'asc' or 'desc'`, + ); + } + + if (field && !allowedFields.includes(field)) { + throw new InputError( + `invalid orderBy query, must be one of ${allowedFields.join(', ')}`, + ); + } + return { field, direction }; +} diff --git a/plugins/todo-backend/src/service/types.ts b/plugins/todo-backend/src/service/types.ts index ac8ecc16b5..0f06951132 100644 --- a/plugins/todo-backend/src/service/types.ts +++ b/plugins/todo-backend/src/service/types.ts @@ -21,6 +21,10 @@ export type ListTodosRequest = { entity?: EntityName; offset?: number; limit?: number; + orderBy?: { + field: 'text' | 'author' | 'viewUrl' | 'repoFilePath'; + direction: 'asc' | 'desc'; + }; }; export type ListTodosResponse = { From bdf5d7de5905a44d26bfc69e6b90b53a00a20645 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Mar 2021 22:02:19 +0100 Subject: [PATCH 043/315] todo: added support for order in api and table Signed-off-by: Patrik Oldsberg --- plugins/todo/src/api/TodoClient.ts | 4 ++ plugins/todo/src/api/types.ts | 4 ++ .../todo/src/components/TodoList/TodoList.tsx | 63 +++++++++++-------- 3 files changed, 46 insertions(+), 25 deletions(-) diff --git a/plugins/todo/src/api/TodoClient.ts b/plugins/todo/src/api/TodoClient.ts index 44d80ba22e..ca5284537b 100644 --- a/plugins/todo/src/api/TodoClient.ts +++ b/plugins/todo/src/api/TodoClient.ts @@ -36,6 +36,7 @@ export class TodoClient implements TodoApi { entity, offset, limit, + orderBy, }: TodoListOptions): Promise { const baseUrl = await this.discoveryApi.getBaseUrl('todo'); const token = await this.identityApi.getIdToken(); @@ -50,6 +51,9 @@ export class TodoClient implements TodoApi { if (typeof limit === 'number') { query.set('limit', String(limit)); } + if (orderBy) { + query.set('orderBy', `${orderBy.field}=${orderBy.direction}`); + } const res = await fetch(`${baseUrl}/v1/todos?${query}`, { headers: token diff --git a/plugins/todo/src/api/types.ts b/plugins/todo/src/api/types.ts index 759df24b60..22eff72b3a 100644 --- a/plugins/todo/src/api/types.ts +++ b/plugins/todo/src/api/types.ts @@ -38,6 +38,10 @@ export type TodoListOptions = { entity?: Entity; offset?: number; limit?: number; + orderBy?: { + field: 'text' | 'author' | 'viewUrl' | 'repoFilePath'; + direction: 'asc' | 'desc'; + }; }; export type TodoListResult = { diff --git a/plugins/todo/src/components/TodoList/TodoList.tsx b/plugins/todo/src/components/TodoList/TodoList.tsx index 1201dca4fd..a18e8f8626 100644 --- a/plugins/todo/src/components/TodoList/TodoList.tsx +++ b/plugins/todo/src/components/TodoList/TodoList.tsx @@ -15,7 +15,6 @@ */ import { - Progress, Table, TableColumn, useApi, @@ -25,19 +24,22 @@ import { import { useEntity } from '@backstage/plugin-catalog-react'; import Alert from '@material-ui/lab/Alert'; import React, { useState } from 'react'; -import { useAsync } from 'react-use'; import { todoApiRef } from '../../api'; -import { TodoItem } from '../../api/types'; +import { TodoItem, TodoListOptions } from '../../api/types'; + +const PAGE_SIZE = 10; const columns: TableColumn[] = [ { title: 'Text', + field: 'text', width: '100%', highlight: true, render: ({ text }) => , }, { title: 'File', + field: 'repoFilePath', width: '80%', render: ({ viewUrl, repoFilePath }) => viewUrl ? ( @@ -59,39 +61,50 @@ const columns: TableColumn[] = [ export const TodoList = () => { const { entity } = useEntity(); const todoApi = useApi(todoApiRef); - const [page, setPage] = useState(0); - const [pageSize, setPageSize] = useState(10); + const [error, setError] = useState(); - const { value, loading, error } = useAsync( - async () => - todoApi.listTodos({ - entity, - offset: page * pageSize, - limit: pageSize, - }), - [todoApi, entity, page, pageSize], - ); - - if (loading) { - return ; - } else if (error) { + if (error) { return {error.message}; } return ( -
title="TODOs" options={{ search: false, - pageSize, + pageSize: PAGE_SIZE, padding: 'dense', + sorting: true, + draggable: false, + paging: true, + paginationType: 'stepped', }} - page={page} columns={columns} - totalCount={value!.totalCount} - onChangePage={setPage} - onChangeRowsPerPage={setPageSize} - data={value!.items} + data={async query => { + try { + const page = query?.page ?? 0; + const pageSize = query?.pageSize ?? PAGE_SIZE; + const result = await todoApi.listTodos({ + entity, + offset: page * pageSize, + limit: pageSize, + orderBy: + query?.orderBy && + ({ + field: query.orderBy.field, + direction: query.orderDirection, + } as TodoListOptions['orderBy']), + }); + return { + data: result.items, + totalCount: result.totalCount, + page: Math.floor(result.offset / result.limit), + }; + } catch (loadingError) { + setError(loadingError); + return { data: [], totalCount: 0, page: 0 }; + } + }} /> ); }; From 4fb393e98f8fde16302b3b0792749b196274a436 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Mar 2021 22:35:31 +0100 Subject: [PATCH 044/315] todo-backend: use integrations to resolve line numbers Signed-off-by: Patrik Oldsberg --- .../todo-backend/src/lib/TodoReader/TodoScmReader.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts index 7979b8f18e..316ac7840f 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts @@ -114,10 +114,6 @@ export class TodoScmReader implements TodoReader { path: file.path, content: content.toString('utf8'), }); - const viewUrl = this.integrations.resolveUrl({ - url: file.path, - base: url, - }); todos.push( ...items.map(({ lineNumber, text, author }) => ({ @@ -125,8 +121,11 @@ export class TodoScmReader implements TodoReader { author, lineNumber, repoFilePath: file.path, - viewUrl: - lineNumber === undefined ? viewUrl : `${viewUrl}#L${lineNumber}`, + viewUrl: this.integrations.resolveUrl({ + url: file.path, + base: url, + lineNumber, + }), })), ); } catch (error) { From c44db42c849a101eafdc50944be99a9920b27eae Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Mar 2021 23:12:16 +0100 Subject: [PATCH 045/315] todo,todo-backend: updated READMEs Signed-off-by: Patrik Oldsberg --- plugins/todo-backend/README.md | 40 +++++++++++++++++++++++++++------- plugins/todo/README.md | 16 +++++--------- 2 files changed, 38 insertions(+), 18 deletions(-) diff --git a/plugins/todo-backend/README.md b/plugins/todo-backend/README.md index 78da07c683..4f79bab7a8 100644 --- a/plugins/todo-backend/README.md +++ b/plugins/todo-backend/README.md @@ -1,13 +1,37 @@ -# todo +# @backstage/plugin-todo-backend -Welcome to the todo backend plugin! +Backend for the `@backstage/plugin-todo` plugin. Assists in scanning for and listing `// TODO` comments in source code repositories. -_This plugin was created through the Backstage CLI_ +## Installation -## Getting started +Install the `@backstage/plugin-todo-backend` package in your backend packages, and then integrate the plugin using the following default setup for `src/plugins/todo.ts`: -Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn start` in the root directory, and then navigating to [/todo](http://localhost:3000/todo). +```ts +import { Router } from 'express'; +import { CatalogClient } from '@backstage/catalog-client'; +import { + createRouter, + TodoReaderService, + TodoScmReader, +} from '@backstage/plugin-todo-backend'; +import { PluginEnvironment } from '../types'; -You can also serve the plugin in isolation by running `yarn start` in the plugin directory. -This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. -It is only meant for local development, and the setup for it can be found inside the [/dev](/dev) directory. +export default async function createPlugin({ + logger, + reader, + config, + discovery, +}: PluginEnvironment): Promise { + const todoReader = TodoScmReader.fromConfig(config, { + logger, + reader, + }); + const catalogClient = new CatalogClient({ discoveryApi: discovery }); + const todoService = new TodoReaderService({ + todoReader, + catalogClient, + }); + + return await createRouter({ todoService }); +} +``` diff --git a/plugins/todo/README.md b/plugins/todo/README.md index a74a5c351b..aeaa72b3b9 100644 --- a/plugins/todo/README.md +++ b/plugins/todo/README.md @@ -1,13 +1,9 @@ -# todo +# @backstage/plugin-todo -Welcome to the todo plugin! +This plugins lists `// TODO` comments in source code. It currently exports a single component extension for use on entity pages. -_This plugin was created through the Backstage CLI_ +## Extensions -## Getting started - -Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn start` in the root directory, and then navigating to [/todo](http://localhost:3000/todo). - -You can also serve the plugin in isolation by running `yarn start` in the plugin directory. -This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. -It is only meant for local development, and the setup for it can be found inside the [/dev](./dev) directory. +| name | description | +| ------------------- | ------------------------------------------------------------------------------- | +| `EntityTodoContent` | Content for an entity page, showing a table of TODO items for the given entity. | From 38201c6ec4a47bb5d1fc5d0145158809b5066aa0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Mar 2021 23:13:11 +0100 Subject: [PATCH 046/315] todo,todo-backend: added repo info Signed-off-by: Patrik Oldsberg --- plugins/todo-backend/package.json | 6 ++++++ plugins/todo/package.json | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 9fd5f68948..58d335732b 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -9,6 +9,12 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "homepage": "https://backstage.io", + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/todo-backend" + }, "scripts": { "build": "backstage-cli backend:build", "lint": "backstage-cli lint", diff --git a/plugins/todo/package.json b/plugins/todo/package.json index de51fe2f18..ee105287f5 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -9,6 +9,12 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "homepage": "https://backstage.io", + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/todo" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", From 2f6faae4641f6e5b5ca43f2789a04bc5e6971a8a Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Mar 2021 23:13:29 +0100 Subject: [PATCH 047/315] todo: avoid routable extension for now Signed-off-by: Patrik Oldsberg --- plugins/todo/src/plugin.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/plugins/todo/src/plugin.ts b/plugins/todo/src/plugin.ts index 535630ba35..6dc06a7c34 100644 --- a/plugins/todo/src/plugin.ts +++ b/plugins/todo/src/plugin.ts @@ -16,13 +16,13 @@ import { createApiFactory, createPlugin, - createRoutableExtension, + createComponentExtension, discoveryApiRef, identityApiRef, } from '@backstage/core'; import { todoApiRef, TodoClient } from './api'; -import { rootRouteRef } from './routes'; +// import { rootRouteRef } from './routes'; export const todoPlugin = createPlugin({ id: 'todo', @@ -39,13 +39,16 @@ export const todoPlugin = createPlugin({ }), ], routes: { - root: rootRouteRef, + // root: rootRouteRef, }, }); export const EntityTodoContent = todoPlugin.provide( - createRoutableExtension({ - component: () => import('./components/TodoList').then(m => m.TodoList), - mountPoint: rootRouteRef, + createComponentExtension({ + component: { + lazy: () => import('./components/TodoList').then(m => m.TodoList), + }, + // TODO(Rugvip): Switch back to routable extension once apps are migrated + // mountPoint: rootRouteRef, }), ); From a7648a37fafd1ed8b52489154ee6c0597934467c Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Mar 2021 23:13:56 +0100 Subject: [PATCH 048/315] app: add todo plugin Signed-off-by: Patrik Oldsberg --- packages/app/package.json | 1 + .../app/src/components/catalog/EntityPage.tsx | 16 ++++++++++++++++ packages/app/src/plugins.ts | 1 + 3 files changed, 18 insertions(+) diff --git a/packages/app/package.json b/packages/app/package.json index 21f0d0c3d0..7925c203e3 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -33,6 +33,7 @@ "@backstage/plugin-search": "^0.3.3", "@backstage/plugin-tech-radar": "^0.3.7", "@backstage/plugin-techdocs": "^0.6.1", + "@backstage/plugin-todo": "^0.1.1", "@backstage/plugin-user-settings": "^0.2.7", "@backstage/theme": "^0.2.4", "@material-ui/core": "^4.11.0", diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx index fb56b40e68..d8883e7d18 100644 --- a/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/app/src/components/catalog/EntityPage.tsx @@ -81,6 +81,7 @@ import { } from '@backstage/plugin-rollbar'; import { Router as SentryRouter } from '@backstage/plugin-sentry'; import { EmbeddedDocsRouter as DocsRouter } from '@backstage/plugin-techdocs'; +import { EntityTodoContent } from '@backstage/plugin-todo'; import { Button, Grid } from '@material-ui/core'; import { isPluginApplicableToEntity as isBuildkiteAvailable, @@ -278,6 +279,11 @@ const ServiceEntityPage = ({ entity }: { entity: Entity }) => ( title="Kafka" element={} /> + } + /> ); @@ -323,6 +329,11 @@ const WebsiteEntityPage = ({ entity }: { entity: Entity }) => ( title="Code Insights" element={} /> + } + /> ); @@ -338,6 +349,11 @@ const DefaultEntityPage = ({ entity }: { entity: Entity }) => ( title="Docs" element={} /> + } + /> ); diff --git a/packages/app/src/plugins.ts b/packages/app/src/plugins.ts index 862d821ed6..29d19785bf 100644 --- a/packages/app/src/plugins.ts +++ b/packages/app/src/plugins.ts @@ -43,3 +43,4 @@ export { plugin as Buildkite } from '@roadiehq/backstage-plugin-buildkite'; export { plugin as Search } from '@backstage/plugin-search'; export { plugin as Org } from '@backstage/plugin-org'; export { plugin as Kafka } from '@backstage/plugin-kafka'; +export { todoPlugin } from '@backstage/plugin-todo'; From 9c4ebfb4e48ba10503b8923f0cd1698b959b9492 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 11 Mar 2021 01:18:46 +0100 Subject: [PATCH 049/315] todo: update TodoList test Signed-off-by: Patrik Oldsberg --- .../todo/src/components/TodoList/TodoList.test.tsx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/plugins/todo/src/components/TodoList/TodoList.test.tsx b/plugins/todo/src/components/TodoList/TodoList.test.tsx index 2f44b36673..bd90f40215 100644 --- a/plugins/todo/src/components/TodoList/TodoList.test.tsx +++ b/plugins/todo/src/components/TodoList/TodoList.test.tsx @@ -26,9 +26,16 @@ describe('TodoList', () => { it('should render', async () => { const mockApi: jest.Mocked = { listTodos: jest.fn().mockResolvedValue({ - items: [{ text: 'My TODO' }], + items: [ + { + text: 'My TODO', + viewUrl: 'https://example.com', + repoFilePath: '/my-file.js', + }, + ], totalCount: 1, - cursors: { prev: 'prev', self: 'self', next: 'next' }, + limit: 10, + offset: 0, }), }; const mockEntity = { metadata: { name: 'mock' } } as Entity; @@ -41,6 +48,6 @@ describe('TodoList', () => { , ); - await expect(rendered.findByText('My TODO')).resolves.toBeInTheDocument(); + await expect(rendered.findByText('1-1 of 1')).resolves.toBeInTheDocument(); }); }); From 010aed7848277b1ff096dbcb20ade89125ba2c7b Mon Sep 17 00:00:00 2001 From: Oliver Sand Date: Thu, 11 Mar 2021 18:18:30 +0100 Subject: [PATCH 050/315] Add `AnnotateScmSlugEntityProcessor` Signed-off-by: Oliver Sand --- .changeset/angry-boats-hunt.md | 15 +++ .../AnnotateScmSlugEntityProcessor.test.ts | 106 ++++++++++++++++++ .../AnnotateScmSlugEntityProcessor.ts | 54 +++++++++ .../src/ingestion/processors/index.ts | 1 + 4 files changed, 176 insertions(+) create mode 100644 .changeset/angry-boats-hunt.md create mode 100644 plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.test.ts create mode 100644 plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts diff --git a/.changeset/angry-boats-hunt.md b/.changeset/angry-boats-hunt.md new file mode 100644 index 0000000000..32933579ca --- /dev/null +++ b/.changeset/angry-boats-hunt.md @@ -0,0 +1,15 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Add `AnnotateScmSlugEntityProcessor` that automatically adds the +`github.com/project-slug` annotation for components coming from GitHub. + +The processor is optional and not automatically registered in the catalog +builder. To add it to your instance, add it to your `CatalogBuilder` using +`addProcessor()`: + +```typescript +const builder = new CatalogBuilder(env); +builder.addProcessor(new AnnotateScmSlugEntityProcessor()); +``` diff --git a/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.test.ts new file mode 100644 index 0000000000..d31122b6f7 --- /dev/null +++ b/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.test.ts @@ -0,0 +1,106 @@ +/* + * Copyright 2021 Spotify AB + * + * 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, LocationSpec } from '@backstage/catalog-model'; +import { AnnotateScmSlugEntityProcessor } from './AnnotateScmSlugEntityProcessor'; + +describe('AnnotateScmSlugEntityProcessor', () => { + describe('github', () => { + it('adds annotation', async () => { + const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: 'my-component', + }, + }; + const location: LocationSpec = { + type: 'url', + target: + 'https://github.com/backstage/backstage/blob/master/catalog-info.yaml', + }; + + const processor = new AnnotateScmSlugEntityProcessor(); + + expect(await processor.preProcessEntity(entity, location)).toEqual({ + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: 'my-component', + annotations: { + 'github.com/project-slug': 'backstage/backstage', + }, + }, + }); + }); + + it('does not override existing annotation', async () => { + const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: 'my-component', + annotations: { + 'github.com/project-slug': 'backstage/community', + }, + }, + }; + const location: LocationSpec = { + type: 'url', + target: + 'https://github.com/backstage/backstage/blob/master/catalog-info.yaml', + }; + + const processor = new AnnotateScmSlugEntityProcessor(); + + expect(await processor.preProcessEntity(entity, location)).toEqual({ + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: 'my-component', + annotations: { + 'github.com/project-slug': 'backstage/community', + }, + }, + }); + }); + + it('should not add annotation for other providers', async () => { + const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: 'my-component', + }, + }; + const location: LocationSpec = { + type: 'url', + target: + 'https://gitlab.com/backstage/backstage/-/blob/master/catalog-info.yaml', + }; + + const processor = new AnnotateScmSlugEntityProcessor(); + + expect(await processor.preProcessEntity(entity, location)).toEqual({ + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: 'my-component', + annotations: {}, + }, + }); + }); + }); +}); diff --git a/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts new file mode 100644 index 0000000000..d74e9521e0 --- /dev/null +++ b/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts @@ -0,0 +1,54 @@ +/* + * Copyright 2021 Spotify AB + * + * 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, LocationSpec } from '@backstage/catalog-model'; +import parseGitUrl from 'git-url-parse'; +import { identity, merge, pickBy } from 'lodash'; +import { CatalogProcessor } from './types'; + +const GITHUB_ACTIONS_ANNOTATION = 'github.com/project-slug'; + +export class AnnotateScmSlugEntityProcessor implements CatalogProcessor { + async preProcessEntity( + entity: Entity, + location: LocationSpec, + ): Promise { + if (entity.kind !== 'Component' || location.type !== 'url') { + return entity; + } + + const gitUrl = parseGitUrl(location.target); + let githubProjectSlug = + entity.metadata.annotations?.[GITHUB_ACTIONS_ANNOTATION]; + + if (gitUrl.source === 'github.com' && !githubProjectSlug) { + githubProjectSlug = `${gitUrl.owner}/${gitUrl.name}`; + } + + return merge( + { + metadata: { + annotations: pickBy( + { + [GITHUB_ACTIONS_ANNOTATION]: githubProjectSlug, + }, + identity, + ), + }, + }, + entity, + ); + } +} diff --git a/plugins/catalog-backend/src/ingestion/processors/index.ts b/plugins/catalog-backend/src/ingestion/processors/index.ts index 736c64ea39..fe4fe1c1dd 100644 --- a/plugins/catalog-backend/src/ingestion/processors/index.ts +++ b/plugins/catalog-backend/src/ingestion/processors/index.ts @@ -17,6 +17,7 @@ import * as results from './results'; export { AnnotateLocationEntityProcessor } from './AnnotateLocationEntityProcessor'; +export { AnnotateScmSlugEntityProcessor } from './AnnotateScmSlugEntityProcessor'; export { AwsOrganizationCloudAccountProcessor } from './AwsOrganizationCloudAccountProcessor'; export { BuiltinKindsEntityProcessor } from './BuiltinKindsEntityProcessor'; export { CodeOwnersProcessor } from './CodeOwnersProcessor'; From ab7bca3e8b1654009bcefc788770f4bab7aa8c43 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 11 Mar 2021 19:12:36 +0100 Subject: [PATCH 051/315] core-api: memo app and api provider versioned value maps Signed-off-by: Patrik Oldsberg --- .../core-api/src/apis/system/ApiProvider.tsx | 16 +++++++++------- packages/core-api/src/app/AppContext.tsx | 6 +++++- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/core-api/src/apis/system/ApiProvider.tsx b/packages/core-api/src/apis/system/ApiProvider.tsx index a99b849104..807b2ff7e0 100644 --- a/packages/core-api/src/apis/system/ApiProvider.tsx +++ b/packages/core-api/src/apis/system/ApiProvider.tsx @@ -20,6 +20,7 @@ import React, { ReactNode, PropsWithChildren, Context, + useMemo, } from 'react'; import PropTypes from 'prop-types'; import { ApiRef, ApiHolder, TypesToApiRefs } from './types'; @@ -54,14 +55,15 @@ export const ApiProvider = ({ children, }: PropsWithChildren) => { const parentHolder = useContext(ApiContext)?.atVersion(1); - const holder = parentHolder ? new ApiAggregator(apis, parentHolder) : apis; - - return ( - + const versionedValue = useMemo( + () => + createVersionedValueMap({ + 1: parentHolder ? new ApiAggregator(apis, parentHolder) : apis, + }), + [parentHolder, apis], ); + + return ; }; ApiProvider.propTypes = { diff --git a/packages/core-api/src/app/AppContext.tsx b/packages/core-api/src/app/AppContext.tsx index cfe439fca5..c143aa86bc 100644 --- a/packages/core-api/src/app/AppContext.tsx +++ b/packages/core-api/src/app/AppContext.tsx @@ -19,6 +19,7 @@ import React, { PropsWithChildren, useContext, Context, + useMemo, } from 'react'; import { VersionedValue, @@ -43,7 +44,10 @@ export const AppContextProvider = ({ appContext, children, }: PropsWithChildren) => { - const versionedValue = createVersionedValueMap({ 1: appContext }); + const versionedValue = useMemo( + () => createVersionedValueMap({ 1: appContext }), + [appContext], + ); return ; }; From 0d7db68595813ae97c8e842a67f2e37531414dcb Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 11 Mar 2021 17:32:59 +0100 Subject: [PATCH 052/315] 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: Adam Harvey Signed-off-by: Patrik Oldsberg --- plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts | 4 +++- plugins/todo-backend/src/service/TodoReaderService.ts | 2 +- plugins/todo/README.md | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts index 316ac7840f..2a191d2cb4 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts @@ -129,7 +129,9 @@ export class TodoScmReader implements TodoReader { })), ); } catch (error) { - this.logger.error(`Failed to parse TODO in ${url}, ${error}`); + this.logger.error( + `Failed to parse TODO in ${url} at ${file.path}, ${error}`, + ); } } diff --git a/plugins/todo-backend/src/service/TodoReaderService.ts b/plugins/todo-backend/src/service/TodoReaderService.ts index 85949065e7..3965257eff 100644 --- a/plugins/todo-backend/src/service/TodoReaderService.ts +++ b/plugins/todo-backend/src/service/TodoReaderService.ts @@ -51,7 +51,7 @@ export class TodoReaderService implements TodoService { async listTodos(req: ListTodosRequest): Promise { if (!req.entity) { - throw new InputError('entity filter is required to list todos'); + throw new InputError('Entity filter is required to list TODOs'); } const entity = await this.catalogClient.getEntityByName(req.entity); if (!entity) { diff --git a/plugins/todo/README.md b/plugins/todo/README.md index aeaa72b3b9..8a8383b5f7 100644 --- a/plugins/todo/README.md +++ b/plugins/todo/README.md @@ -1,6 +1,6 @@ # @backstage/plugin-todo -This plugins lists `// TODO` comments in source code. It currently exports a single component extension for use on entity pages. +This plugin lists `// TODO` comments in source code. It currently exports a single component extension for use on entity pages. ## Extensions From e1d3fcf1c016321ea1e4c3f966870cf17340df4d Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 11 Mar 2021 17:50:29 +0100 Subject: [PATCH 053/315] todo-backend: review suggestions Signed-off-by: Patrik Oldsberg --- packages/app/package.json | 2 +- plugins/todo-backend/package.json | 2 +- plugins/todo-backend/src/service/TodoReaderService.ts | 2 -- plugins/todo-backend/src/service/router.test.ts | 2 +- plugins/todo/package.json | 2 +- 5 files changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/app/package.json b/packages/app/package.json index 7925c203e3..3d9f83d89f 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -33,7 +33,7 @@ "@backstage/plugin-search": "^0.3.3", "@backstage/plugin-tech-radar": "^0.3.7", "@backstage/plugin-techdocs": "^0.6.1", - "@backstage/plugin-todo": "^0.1.1", + "@backstage/plugin-todo": "^0.1.0", "@backstage/plugin-user-settings": "^0.2.7", "@backstage/theme": "^0.2.4", "@material-ui/core": "^4.11.0", diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 58d335732b..888c9a404c 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-todo-backend", - "version": "0.1.1", + "version": "0.1.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/todo-backend/src/service/TodoReaderService.ts b/plugins/todo-backend/src/service/TodoReaderService.ts index 3965257eff..bc8ebbcd22 100644 --- a/plugins/todo-backend/src/service/TodoReaderService.ts +++ b/plugins/todo-backend/src/service/TodoReaderService.ts @@ -74,8 +74,6 @@ export class TodoReaderService implements TodoService { let offset = req.offset ?? 0; if (offset < 0) { offset = 0; - } else if (offset - limit > totalCount) { - offset = totalCount - limit; } let items = todos.items; diff --git a/plugins/todo-backend/src/service/router.test.ts b/plugins/todo-backend/src/service/router.test.ts index 1bd70c1643..3c17176dab 100644 --- a/plugins/todo-backend/src/service/router.test.ts +++ b/plugins/todo-backend/src/service/router.test.ts @@ -44,7 +44,7 @@ describe('createRouter', () => { jest.resetAllMocks(); }); - describe('GET /health', () => { + describe('GET /todos', () => { it('returns list without query', async () => { mockService.listTodos.mockResolvedValueOnce(mockListBody); diff --git a/plugins/todo/package.json b/plugins/todo/package.json index ee105287f5..d940dfbe8a 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-todo", - "version": "0.1.1", + "version": "0.1.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", From 51da6891e0ee718e940aadff82b66725f235954e Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 11 Mar 2021 18:14:02 +0100 Subject: [PATCH 054/315] todo,todo-backend: use @backstage/errors Signed-off-by: Patrik Oldsberg --- plugins/todo-backend/package.json | 1 + .../src/service/TodoReaderService.ts | 2 +- plugins/todo-backend/src/service/router.ts | 2 +- plugins/todo/package.json | 1 + plugins/todo/src/api/TodoClient.ts | 32 ++----------------- .../todo/src/components/TodoList/TodoList.tsx | 4 +-- 6 files changed, 8 insertions(+), 34 deletions(-) diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 888c9a404c..fd9bc46e1e 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -28,6 +28,7 @@ "@backstage/catalog-client": "^0.3.6", "@backstage/catalog-model": "^0.7.3", "@backstage/config": "^0.1.3", + "@backstage/errors": "^0.1.1", "@backstage/integration": "^0.5.0", "@types/express": "^4.17.6", "cross-fetch": "^3.0.6", diff --git a/plugins/todo-backend/src/service/TodoReaderService.ts b/plugins/todo-backend/src/service/TodoReaderService.ts index bc8ebbcd22..66ac0dbf4c 100644 --- a/plugins/todo-backend/src/service/TodoReaderService.ts +++ b/plugins/todo-backend/src/service/TodoReaderService.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { InputError, NotFoundError } from '@backstage/backend-common'; +import { InputError, NotFoundError } from '@backstage/errors'; import { CatalogClient } from '@backstage/catalog-client'; import { LOCATION_ANNOTATION, diff --git a/plugins/todo-backend/src/service/router.ts b/plugins/todo-backend/src/service/router.ts index 1132b879c4..d4f1a49c70 100644 --- a/plugins/todo-backend/src/service/router.ts +++ b/plugins/todo-backend/src/service/router.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -import { InputError } from '@backstage/backend-common'; import { EntityName, parseEntityName } from '@backstage/catalog-model'; +import { InputError } from '@backstage/errors'; import express from 'express'; import Router from 'express-promise-router'; import { TodoService } from './types'; diff --git a/plugins/todo/package.json b/plugins/todo/package.json index d940dfbe8a..91802b7b4a 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -28,6 +28,7 @@ "dependencies": { "@backstage/catalog-model": "^0.7.3", "@backstage/core": "^0.7.0", + "@backstage/errors": "^0.1.1", "@backstage/plugin-catalog-react": "^0.1.1", "@backstage/theme": "^0.2.3", "@material-ui/core": "^4.11.0", diff --git a/plugins/todo/src/api/TodoClient.ts b/plugins/todo/src/api/TodoClient.ts index ca5284537b..07b5eabead 100644 --- a/plugins/todo/src/api/TodoClient.ts +++ b/plugins/todo/src/api/TodoClient.ts @@ -15,6 +15,7 @@ */ import { serializeEntityRef } from '@backstage/catalog-model'; +import { ResponseError } from '@backstage/errors'; import { DiscoveryApi, IdentityApi } from '@backstage/core'; import { TodoApi, TodoListOptions, TodoListResult } from './types'; @@ -64,39 +65,10 @@ export class TodoClient implements TodoApi { }); if (!res.ok) { - const error = await this.readResponseError(res, 'list todos'); - throw error; + throw await ResponseError.fromResponse(res); } const data: TodoListResult = await res.json(); return data; } - - private async readResponseError(res: Response, action: string) { - const error = new Error() as Error & { status: number }; - error.status = res.status; - - try { - const json = await res.clone().json(); - if (typeof json?.error?.message !== 'string') { - throw new Error('invalid error'); - } - error.message = json.error.message; - if (json.error.name) { - error.name = json.error.name; - } - } catch { - try { - const text = await res.text(); - error.message = `Failed to ${action}, ${text}`; - } catch { - error.message = `Failed to ${action}, status ${res.status}`; - } - if (res.status === 404) { - error.name = 'NotFoundError'; - } - } - - throw error; - } } diff --git a/plugins/todo/src/components/TodoList/TodoList.tsx b/plugins/todo/src/components/TodoList/TodoList.tsx index a18e8f8626..999aa4fcbe 100644 --- a/plugins/todo/src/components/TodoList/TodoList.tsx +++ b/plugins/todo/src/components/TodoList/TodoList.tsx @@ -20,9 +20,9 @@ import { useApi, OverflowTooltip, Link, + ResponseErrorPanel, } from '@backstage/core'; import { useEntity } from '@backstage/plugin-catalog-react'; -import Alert from '@material-ui/lab/Alert'; import React, { useState } from 'react'; import { todoApiRef } from '../../api'; import { TodoItem, TodoListOptions } from '../../api/types'; @@ -64,7 +64,7 @@ export const TodoList = () => { const [error, setError] = useState(); if (error) { - return {error.message}; + return ; } return ( From e8b2ed9cc6e7e51097242f56a2b9c4f875724c6f Mon Sep 17 00:00:00 2001 From: Nir Gazit Date: Thu, 11 Mar 2021 20:50:14 +0200 Subject: [PATCH 055/315] Changed the way project slug is handled in Jenkins plugin Signed-off-by: Nir Gazit --- .changeset/warm-cows-wait.md | 6 ++++++ .../src/components/BuildsPage/lib/CITable/CITable.tsx | 4 ++-- plugins/jenkins/src/components/Cards/Cards.tsx | 4 ++-- plugins/jenkins/src/components/useBuilds.ts | 9 ++++----- .../jenkins/src/components/useProjectSlugFromEntity.ts | 5 +---- 5 files changed, 15 insertions(+), 13 deletions(-) create mode 100644 .changeset/warm-cows-wait.md diff --git a/.changeset/warm-cows-wait.md b/.changeset/warm-cows-wait.md new file mode 100644 index 0000000000..2029e38b3f --- /dev/null +++ b/.changeset/warm-cows-wait.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-jenkins': minor +--- + +Changed the way project slug is extracted from an entity. Up until now, the plugin assumed that the project slug is always of the format "owner/repo". However, this is not something that is enforced by Jenkins and sometimes the project name doesn't contain an owner. +Since this split is not used anywhere and the entire project slug is always used as-is, removed this distinction and just read the project slug from the annotation as-is. diff --git a/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx b/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx index 3044094ccc..57ffe48649 100644 --- a/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx +++ b/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx @@ -242,9 +242,9 @@ export const CITableView = ({ }; export const CITable = () => { - const { owner, repo } = useProjectSlugFromEntity(); + const projectName = useProjectSlugFromEntity(); - const [tableProps, { setPage, retry, setPageSize }] = useBuilds(owner, repo); + const [tableProps, { setPage, retry, setPageSize }] = useBuilds(projectName); return ( { - const { owner, repo } = useProjectSlugFromEntity(); - const [{ builds, loading }] = useBuilds(owner, repo, branch); + const projectName = useProjectSlugFromEntity(); + const [{ builds, loading }] = useBuilds(projectName, branch); const latestRun = builds ?? {}; return ( diff --git a/plugins/jenkins/src/components/useBuilds.ts b/plugins/jenkins/src/components/useBuilds.ts index a1ff3a1eef..5a6f8b9f08 100644 --- a/plugins/jenkins/src/components/useBuilds.ts +++ b/plugins/jenkins/src/components/useBuilds.ts @@ -18,7 +18,7 @@ import { useState } from 'react'; import { useAsyncRetry } from 'react-use'; import { jenkinsApiRef } from '../api'; -export function useBuilds(owner: string, repo: string, branch?: string) { +export function useBuilds(projectName: string, branch?: string) { const api = useApi(jenkinsApiRef); const errorApi = useApi(errorApiRef); @@ -38,9 +38,9 @@ export function useBuilds(owner: string, repo: string, branch?: string) { try { let build; if (branch) { - build = await api.getLastBuild(`${owner}/${repo}/${branch}`); + build = await api.getLastBuild(`${projectName}/${branch}`); } else { - build = await api.getFolder(`${owner}/${repo}`); + build = await api.getFolder(`${projectName}`); } const size = Array.isArray(build) ? build?.[0].build_num! : 1; @@ -51,9 +51,8 @@ export function useBuilds(owner: string, repo: string, branch?: string) { errorApi.post(e); throw e; } - }, [api, errorApi, owner, repo, branch]); + }, [api, errorApi, projectName, branch]); - const projectName = `${owner}/${repo}`; return [ { page, diff --git a/plugins/jenkins/src/components/useProjectSlugFromEntity.ts b/plugins/jenkins/src/components/useProjectSlugFromEntity.ts index ac2d6c7e8f..06261d3645 100644 --- a/plugins/jenkins/src/components/useProjectSlugFromEntity.ts +++ b/plugins/jenkins/src/components/useProjectSlugFromEntity.ts @@ -19,8 +19,5 @@ import { JENKINS_ANNOTATION } from '../constants'; export const useProjectSlugFromEntity = () => { const { entity } = useEntity(); - const [owner, repo] = ( - entity.metadata.annotations?.[JENKINS_ANNOTATION] ?? '' - ).split('/'); - return { owner, repo }; + return entity.metadata.annotations?.[JENKINS_ANNOTATION] ?? ''; }; From 24badb48794f23f51255f247c5b21fb9e27d2167 Mon Sep 17 00:00:00 2001 From: Nir Gazit Date: Thu, 11 Mar 2021 21:01:15 +0200 Subject: [PATCH 056/315] Fixed project slug handling Signed-off-by: Nir Gazit --- .../src/components/BuildWithStepsPage/BuildWithStepsPage.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/jenkins/src/components/BuildWithStepsPage/BuildWithStepsPage.tsx b/plugins/jenkins/src/components/BuildWithStepsPage/BuildWithStepsPage.tsx index 5d9d81c985..480dfd6dea 100644 --- a/plugins/jenkins/src/components/BuildWithStepsPage/BuildWithStepsPage.tsx +++ b/plugins/jenkins/src/components/BuildWithStepsPage/BuildWithStepsPage.tsx @@ -47,10 +47,10 @@ const useStyles = makeStyles(theme => ({ })); const BuildWithStepsView = () => { - const { owner, repo } = useProjectSlugFromEntity(); + const projectName = useProjectSlugFromEntity(); const { branch, buildNumber } = useParams(); const classes = useStyles(); - const buildPath = `${owner}/${repo}/${branch}/${buildNumber}`; + const buildPath = `${projectName}/${branch}/${buildNumber}`; const [{ value }] = useBuildWithSteps(buildPath); return ( From ebeb76822a95cbb9612be8c7aaafe9421d3bec40 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 11 Mar 2021 20:31:18 +0100 Subject: [PATCH 057/315] todo: sync package versions Signed-off-by: Patrik Oldsberg --- plugins/todo/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/todo/package.json b/plugins/todo/package.json index 91802b7b4a..36faa1d9c0 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -27,10 +27,10 @@ }, "dependencies": { "@backstage/catalog-model": "^0.7.3", - "@backstage/core": "^0.7.0", + "@backstage/core": "^0.7.1", "@backstage/errors": "^0.1.1", "@backstage/plugin-catalog-react": "^0.1.1", - "@backstage/theme": "^0.2.3", + "@backstage/theme": "^0.2.4", "@material-ui/core": "^4.11.0", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.45", @@ -39,7 +39,7 @@ "react-use": "^15.3.3" }, "devDependencies": { - "@backstage/cli": "^0.6.3", + "@backstage/cli": "^0.6.4", "@backstage/dev-utils": "^0.1.13", "@backstage/test-utils": "^0.1.8", "@testing-library/jest-dom": "^5.10.1", From fd4547221311fa2db5cc0e9fb37b513f4f8d69fe Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 11 Mar 2021 21:23:17 +0100 Subject: [PATCH 058/315] todo-backend: add support for configuring the default parser Signed-off-by: Patrik Oldsberg --- .github/styles/vocab.txt | 1 + plugins/todo-backend/README.md | 21 +++++++++ .../src/lib/TodoReader/TodoScmReader.ts | 28 ++---------- .../src/lib/TodoReader/createTodoParser.ts | 44 +++++++++++++++++++ .../todo-backend/src/lib/TodoReader/index.ts | 1 + .../todo-backend/src/lib/TodoReader/types.ts | 13 ++++++ 6 files changed, 84 insertions(+), 24 deletions(-) create mode 100644 plugins/todo-backend/src/lib/TodoReader/createTodoParser.ts diff --git a/.github/styles/vocab.txt b/.github/styles/vocab.txt index 489727ca4d..dc3ef0f036 100644 --- a/.github/styles/vocab.txt +++ b/.github/styles/vocab.txt @@ -42,6 +42,7 @@ JavaScript Kaewkasi Knex Kumar +Leasot Lerna Lundberg Luxon diff --git a/plugins/todo-backend/README.md b/plugins/todo-backend/README.md index 4f79bab7a8..0e455977f9 100644 --- a/plugins/todo-backend/README.md +++ b/plugins/todo-backend/README.md @@ -35,3 +35,24 @@ export default async function createPlugin({ return await createRouter({ todoService }); } ``` + +## Parser Configuration + +The `TodoScmReader` accepts a `TodoParser` option, which can be used to configure your own parser. The default one is based on [Leasot](https://github.com/pgilad/leasot) and supports a wide range of languages. You can change the list of supported tags by configuring your own version of the built-in parser, for example: + +```ts +import { + TodoScmReader, + createTodoParser, +} from '@backstage/plugin-todo-backend'; + +// ... + +const todoReader = TodoScmReader.fromConfig(config, { + logger, + reader, + parser: createTodoParser({ + tags: ['TODO', 'FIXME', 'NOTE', 'XXX'], + }), +}); +``` diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts index 2a191d2cb4..302c5985d6 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts @@ -14,23 +14,19 @@ * limitations under the License. */ -import { extname } from 'path'; import { UrlReader } from '@backstage/backend-common'; import { ScmIntegrations } from '@backstage/integration'; import { Logger } from 'winston'; -import { parse } from 'leasot'; + import { ReadTodosOptions, ReadTodosResult, TodoItem, + TodoParser, TodoReader, } from './types'; import { Config } from '@backstage/config'; - -type TodoParser = (ctx: { - content: string; - path: string; -}) => { text: string; author?: string; lineNumber: number }[]; +import { createTodoParser } from './createTodoParser'; type Options = { logger: Logger; @@ -43,22 +39,6 @@ type CacheItem = { result: ReadTodosResult; }; -const defaultTodoParser: TodoParser = ({ content, path }) => { - try { - const comments = parse(content, { - extension: extname(path), - }); - - return comments.map(comment => ({ - text: comment.text, - author: comment.ref, - lineNumber: comment.line, - })); - } catch /* ignore unsupported extensions */ { - return []; - } -}; - export class TodoScmReader implements TodoReader { private readonly logger: Logger; private readonly reader: UrlReader; @@ -74,7 +54,7 @@ export class TodoScmReader implements TodoReader { private constructor(options: Options, integrations: ScmIntegrations) { this.logger = options.logger; this.reader = options.reader; - this.parser = options.parser ?? defaultTodoParser; + this.parser = options.parser ?? createTodoParser(); this.integrations = integrations; } diff --git a/plugins/todo-backend/src/lib/TodoReader/createTodoParser.ts b/plugins/todo-backend/src/lib/TodoReader/createTodoParser.ts new file mode 100644 index 0000000000..deb0ed8800 --- /dev/null +++ b/plugins/todo-backend/src/lib/TodoReader/createTodoParser.ts @@ -0,0 +1,44 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { extname } from 'path'; +import { parse } from 'leasot'; +import { TodoParser } from './types'; + +export type TodoParserOptions = { + tags?: string[]; +}; + +export function createTodoParser(options: TodoParserOptions = {}): TodoParser { + const { tags = ['TODO', 'FIXME'] } = options; + + return ({ content, path }) => { + try { + const comments = parse(content, { + customTags: tags, + extension: extname(path), + }); + + return comments.map(comment => ({ + text: comment.text, + author: comment.ref, + lineNumber: comment.line, + })); + } catch /* ignore unsupported extensions */ { + return []; + } + }; +} diff --git a/plugins/todo-backend/src/lib/TodoReader/index.ts b/plugins/todo-backend/src/lib/TodoReader/index.ts index 22c47ebef2..58982385c8 100644 --- a/plugins/todo-backend/src/lib/TodoReader/index.ts +++ b/plugins/todo-backend/src/lib/TodoReader/index.ts @@ -15,6 +15,7 @@ */ export { TodoScmReader } from './TodoScmReader'; +export { createTodoParser } from './createTodoParser'; export type { TodoItem, TodoReader, diff --git a/plugins/todo-backend/src/lib/TodoReader/types.ts b/plugins/todo-backend/src/lib/TodoReader/types.ts index 499d3ac843..78859841d7 100644 --- a/plugins/todo-backend/src/lib/TodoReader/types.ts +++ b/plugins/todo-backend/src/lib/TodoReader/types.ts @@ -51,3 +51,16 @@ export interface TodoReader { */ readTodos(options: ReadTodosOptions): Promise; } + +type TodoParserContext = { + content: string; + path: string; +}; + +type TodoParserResult = { + text: string; + author?: string; + lineNumber: number; +}; + +export type TodoParser = (ctx: TodoParserContext) => TodoParserResult[]; From 378f77b4f63db52653c7f5a49eed81d87001c5ce Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 11 Mar 2021 21:32:46 +0100 Subject: [PATCH 059/315] todo: add format intro and examples to README Signed-off-by: Patrik Oldsberg --- plugins/todo/README.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/plugins/todo/README.md b/plugins/todo/README.md index 8a8383b5f7..4165582b65 100644 --- a/plugins/todo/README.md +++ b/plugins/todo/README.md @@ -2,6 +2,32 @@ This plugin lists `// TODO` comments in source code. It currently exports a single component extension for use on entity pages. +## Format + +The default parser uses [Leasot](https://github.com/pgilad/leasot), which supports a wide range of languages. By default it supports the `TODO` and `FIXME` tags, along with `@` prefix and author reference through with either a `()` suffix or trailing `/`. For more information on how to configure the parser, see `@backstage/plugin-todo-backend`. + +Below are some examples of formats that are supported by default: + +```ts +// TODO: Ideally this would be working + +// TODO(Rugvip): Not sure why this works, investigate + +// @todo: This worked last Monday /Rugvip + +// FIXME Nobody knows why this is here +``` + +Note the trailing comments are not supported, the following TODO would not be listed: + +```ts +function reverse(str: string) { + return str.reverse(); // TODO: optimize +} +``` + +The scanner also ignores all dot-files and directories, meaning TODOs inside of those will not be listed. + ## Extensions | name | description | From c07728eec8b3441e398389a3cb8942d0faea61a7 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 11 Mar 2021 22:10:47 +0100 Subject: [PATCH 060/315] todo,todo-backend: add tag field to TodoItems Signed-off-by: Patrik Oldsberg --- plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts | 3 ++- plugins/todo-backend/src/lib/TodoReader/createTodoParser.ts | 1 + plugins/todo-backend/src/lib/TodoReader/types.ts | 4 ++++ plugins/todo-backend/src/service/router.test.ts | 2 +- plugins/todo-backend/src/service/router.ts | 1 + plugins/todo-backend/src/service/types.ts | 2 +- plugins/todo/dev/index.tsx | 1 + plugins/todo/src/api/types.ts | 5 ++++- plugins/todo/src/components/TodoList/TodoList.test.tsx | 3 ++- plugins/todo/src/components/TodoList/TodoList.tsx | 5 ++++- 10 files changed, 21 insertions(+), 6 deletions(-) diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts index 302c5985d6..07ebdf97eb 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts @@ -96,8 +96,9 @@ export class TodoScmReader implements TodoReader { }); todos.push( - ...items.map(({ lineNumber, text, author }) => ({ + ...items.map(({ lineNumber, text, tag, author }) => ({ text, + tag, author, lineNumber, repoFilePath: file.path, diff --git a/plugins/todo-backend/src/lib/TodoReader/createTodoParser.ts b/plugins/todo-backend/src/lib/TodoReader/createTodoParser.ts index deb0ed8800..1abbb901db 100644 --- a/plugins/todo-backend/src/lib/TodoReader/createTodoParser.ts +++ b/plugins/todo-backend/src/lib/TodoReader/createTodoParser.ts @@ -34,6 +34,7 @@ export function createTodoParser(options: TodoParserOptions = {}): TodoParser { return comments.map(comment => ({ text: comment.text, + tag: comment.tag, author: comment.ref, lineNumber: comment.line, })); diff --git a/plugins/todo-backend/src/lib/TodoReader/types.ts b/plugins/todo-backend/src/lib/TodoReader/types.ts index 78859841d7..a6f046d2ea 100644 --- a/plugins/todo-backend/src/lib/TodoReader/types.ts +++ b/plugins/todo-backend/src/lib/TodoReader/types.ts @@ -18,6 +18,9 @@ export type TodoItem = { /** The contents of the TODO comment */ text: string; + /** The tag used, e.g. TODO, FIXME */ + tag: string; + /** References author, if any */ author?: string; @@ -59,6 +62,7 @@ type TodoParserContext = { type TodoParserResult = { text: string; + tag: string; author?: string; lineNumber: number; }; diff --git a/plugins/todo-backend/src/service/router.test.ts b/plugins/todo-backend/src/service/router.test.ts index 3c17176dab..8fda603937 100644 --- a/plugins/todo-backend/src/service/router.test.ts +++ b/plugins/todo-backend/src/service/router.test.ts @@ -21,7 +21,7 @@ import { createRouter } from './router'; import { TodoService } from './types'; const mockListBody = { - items: [{ text: 'my todo' }], + items: [{ text: 'my todo', tag: 'TODO' }], totalCount: 1, offset: 0, limit: 10, diff --git a/plugins/todo-backend/src/service/router.ts b/plugins/todo-backend/src/service/router.ts index d4f1a49c70..7b73ff93af 100644 --- a/plugins/todo-backend/src/service/router.ts +++ b/plugins/todo-backend/src/service/router.ts @@ -22,6 +22,7 @@ import { TodoService } from './types'; const ALLOWED_ORDER_BY_FIELDS = [ 'text', + 'tag', 'author', 'viewUrl', 'repoFilePath', diff --git a/plugins/todo-backend/src/service/types.ts b/plugins/todo-backend/src/service/types.ts index 0f06951132..e37307a4cf 100644 --- a/plugins/todo-backend/src/service/types.ts +++ b/plugins/todo-backend/src/service/types.ts @@ -22,7 +22,7 @@ export type ListTodosRequest = { offset?: number; limit?: number; orderBy?: { - field: 'text' | 'author' | 'viewUrl' | 'repoFilePath'; + field: 'text' | 'tag' | 'author' | 'viewUrl' | 'repoFilePath'; direction: 'asc' | 'desc'; }; }; diff --git a/plugins/todo/dev/index.tsx b/plugins/todo/dev/index.tsx index 25a6769cb5..71e5e36355 100644 --- a/plugins/todo/dev/index.tsx +++ b/plugins/todo/dev/index.tsx @@ -50,6 +50,7 @@ const mockedApi = { items: [ { text: 'Make sure this works', + tag: 'TODO', author: 'Rugvip', viewUrl: 'https://github.com/backstage/backstage', }, diff --git a/plugins/todo/src/api/types.ts b/plugins/todo/src/api/types.ts index 22eff72b3a..e615532113 100644 --- a/plugins/todo/src/api/types.ts +++ b/plugins/todo/src/api/types.ts @@ -21,6 +21,9 @@ export type TodoItem = { /** The contents of the TODO comment */ text: string; + /** The tag used, e.g. TODO, FIXME */ + tag: string; + /** References author, if any */ author?: string; @@ -39,7 +42,7 @@ export type TodoListOptions = { offset?: number; limit?: number; orderBy?: { - field: 'text' | 'author' | 'viewUrl' | 'repoFilePath'; + field: 'text' | 'tag' | 'author' | 'viewUrl' | 'repoFilePath'; direction: 'asc' | 'desc'; }; }; diff --git a/plugins/todo/src/components/TodoList/TodoList.test.tsx b/plugins/todo/src/components/TodoList/TodoList.test.tsx index bd90f40215..2fb4f780bc 100644 --- a/plugins/todo/src/components/TodoList/TodoList.test.tsx +++ b/plugins/todo/src/components/TodoList/TodoList.test.tsx @@ -29,6 +29,7 @@ describe('TodoList', () => { items: [ { text: 'My TODO', + tag: 'FIXME', viewUrl: 'https://example.com', repoFilePath: '/my-file.js', }, @@ -48,6 +49,6 @@ describe('TodoList', () => { , ); - await expect(rendered.findByText('1-1 of 1')).resolves.toBeInTheDocument(); + await expect(rendered.findByText('FIXME')).resolves.toBeInTheDocument(); }); }); diff --git a/plugins/todo/src/components/TodoList/TodoList.tsx b/plugins/todo/src/components/TodoList/TodoList.tsx index 999aa4fcbe..2ef8fceeef 100644 --- a/plugins/todo/src/components/TodoList/TodoList.tsx +++ b/plugins/todo/src/components/TodoList/TodoList.tsx @@ -30,6 +30,10 @@ import { TodoItem, TodoListOptions } from '../../api/types'; const PAGE_SIZE = 10; const columns: TableColumn[] = [ + { + title: 'Tag', + field: 'tag', + }, { title: 'Text', field: 'text', @@ -53,7 +57,6 @@ const columns: TableColumn[] = [ { title: 'Author', field: 'author', - width: '20%', render: ({ author }) => , }, ]; From 6231a9a0d4b06eb877322b1a00caa9d19caa5af6 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 11 Mar 2021 23:30:42 +0100 Subject: [PATCH 061/315] todo,todo-backend: add support for filtering Signed-off-by: Patrik Oldsberg --- .../src/service/TodoReaderService.ts | 20 ++++++- plugins/todo-backend/src/service/router.ts | 58 +++++++++++++++---- plugins/todo-backend/src/service/types.ts | 9 ++- plugins/todo/src/api/TodoClient.ts | 6 ++ plugins/todo/src/api/types.ts | 9 ++- .../todo/src/components/TodoList/TodoList.tsx | 10 +++- 6 files changed, 96 insertions(+), 16 deletions(-) diff --git a/plugins/todo-backend/src/service/TodoReaderService.ts b/plugins/todo-backend/src/service/TodoReaderService.ts index 66ac0dbf4c..994866db93 100644 --- a/plugins/todo-backend/src/service/TodoReaderService.ts +++ b/plugins/todo-backend/src/service/TodoReaderService.ts @@ -36,6 +36,13 @@ type Options = { defaultPageSize?: number; }; +function wildcardRegex(str: string): RegExp { + const pattern = str + .replace(/[.+?^${}()|[\]\\]/g, '\\$&') + .replace(/\*/g, '.*'); + return new RegExp(`^${pattern}$`, 'i'); +} + export class TodoReaderService implements TodoService { private readonly todoReader: TodoReader; private readonly catalogClient: CatalogClient; @@ -62,7 +69,6 @@ export class TodoReaderService implements TodoService { const url = this.getEntitySourceUrl(entity); const todos = await this.todoReader.readTodos({ url }); - const totalCount = todos.items.length; let limit = req.limit ?? this.defaultPageSize; if (limit < 0) { @@ -77,7 +83,15 @@ export class TodoReaderService implements TodoService { } let items = todos.items; - const { orderBy } = req; + const { orderBy, filters } = req; + + if (filters) { + for (const { field, value } of filters) { + const pattern = wildcardRegex(value); + items = items.filter(item => item[field]?.match(pattern)); + } + } + if (orderBy) { const dir = orderBy.direction === 'asc' ? 1 : -1; const field = orderBy.field; @@ -98,7 +112,7 @@ export class TodoReaderService implements TodoService { return { items: items.slice(offset, offset + limit), - totalCount, + totalCount: items.length, offset, limit, }; diff --git a/plugins/todo-backend/src/service/router.ts b/plugins/todo-backend/src/service/router.ts index 7b73ff93af..d2eb7278f8 100644 --- a/plugins/todo-backend/src/service/router.ts +++ b/plugins/todo-backend/src/service/router.ts @@ -20,7 +20,7 @@ import express from 'express'; import Router from 'express-promise-router'; import { TodoService } from './types'; -const ALLOWED_ORDER_BY_FIELDS = [ +const TODO_FIELDS = [ 'text', 'tag', 'author', @@ -43,11 +43,8 @@ export async function createRouter( router.get('/v1/todos', async (req, res) => { const offset = parseIntegerParam(req.query.offset, 'offset query'); const limit = parseIntegerParam(req.query.limit, 'limit query'); - const orderBy = parseOrderByParam( - req.query.orderBy, - 'orderBy query', - ALLOWED_ORDER_BY_FIELDS, - ); + const orderBy = parseOrderByParam(req.query.orderBy, TODO_FIELDS); + const filters = parseFilterParam(req.query.filter, TODO_FIELDS); const entityRef = req.query.entity; if (entityRef && typeof entityRef !== 'string') { @@ -67,6 +64,7 @@ export async function createRouter( offset, limit, orderBy, + filters, }); res.json(todos); }); @@ -90,22 +88,21 @@ function parseIntegerParam(str: unknown, ctx: string): number | undefined { function parseOrderByParam( str: unknown, - ctx: string, allowedFields: T, ): { field: T[number]; direction: 'asc' | 'desc' } | undefined { if (str === undefined) { return undefined; } if (typeof str !== 'string') { - throw new InputError(`invalid ${ctx}, must be a string`); + throw new InputError(`invalid orderBy query, must be a string`); } const [field, direction] = str.split('='); if (!field) { - throw new InputError(`invalid ${ctx}, field name is empty`); + throw new InputError(`invalid orderBy query, field name is empty`); } if (direction !== 'asc' && direction !== 'desc') { throw new InputError( - `invalid ${ctx}, order direction must be 'asc' or 'desc'`, + `invalid orderBy query, order direction must be 'asc' or 'desc'`, ); } @@ -116,3 +113,44 @@ function parseOrderByParam( } return { field, direction }; } + +function parseFilterParam( + str: unknown, + allowedFields: T, +): { field: T[number]; value: string }[] | undefined { + if (str === undefined) { + return undefined; + } + + const filters = new Array<{ field: T[number]; value: string }>(); + + const strs = [str].flat(); + for (const filterStr of strs) { + if (typeof filterStr !== 'string') { + throw new InputError( + `invalid filter query, must be a string or list of strings`, + ); + } + const splitIndex = filterStr.indexOf('='); + if (splitIndex <= 0) { + throw new InputError( + `invalid filter query, must separate field from value using '='`, + ); + } + + const field = filterStr.slice(0, splitIndex); + if (!allowedFields.includes(field)) { + throw new InputError( + `invalid filter field, must be one of ${allowedFields.join(', ')}`, + ); + } + + const value = filterStr.slice(splitIndex + 1); + if (!value) { + throw new InputError(`invalid filter query, value may not be empty`); + } + filters.push({ field, value }); + } + + return filters; +} diff --git a/plugins/todo-backend/src/service/types.ts b/plugins/todo-backend/src/service/types.ts index e37307a4cf..9216fe733d 100644 --- a/plugins/todo-backend/src/service/types.ts +++ b/plugins/todo-backend/src/service/types.ts @@ -17,14 +17,21 @@ import { EntityName } from '@backstage/catalog-model'; import { TodoItem } from '../lib'; +type Fields = 'text' | 'tag' | 'author' | 'viewUrl' | 'repoFilePath'; + export type ListTodosRequest = { entity?: EntityName; offset?: number; limit?: number; orderBy?: { - field: 'text' | 'tag' | 'author' | 'viewUrl' | 'repoFilePath'; + field: Fields; direction: 'asc' | 'desc'; }; + filters?: { + field: Fields; + /** Value to filter by, with '*' used as wildcard */ + value: string; + }[]; }; export type ListTodosResponse = { diff --git a/plugins/todo/src/api/TodoClient.ts b/plugins/todo/src/api/TodoClient.ts index 07b5eabead..9d9fff0144 100644 --- a/plugins/todo/src/api/TodoClient.ts +++ b/plugins/todo/src/api/TodoClient.ts @@ -38,6 +38,7 @@ export class TodoClient implements TodoApi { offset, limit, orderBy, + filters, }: TodoListOptions): Promise { const baseUrl = await this.discoveryApi.getBaseUrl('todo'); const token = await this.identityApi.getIdToken(); @@ -55,6 +56,11 @@ export class TodoClient implements TodoApi { if (orderBy) { query.set('orderBy', `${orderBy.field}=${orderBy.direction}`); } + if (filters) { + for (const filter of filters) { + query.append('filter', `${filter.field}=${filter.value}`); + } + } const res = await fetch(`${baseUrl}/v1/todos?${query}`, { headers: token diff --git a/plugins/todo/src/api/types.ts b/plugins/todo/src/api/types.ts index e615532113..10c810592c 100644 --- a/plugins/todo/src/api/types.ts +++ b/plugins/todo/src/api/types.ts @@ -37,14 +37,21 @@ export type TodoItem = { repoFilePath?: string; }; +type Fields = 'text' | 'tag' | 'author' | 'viewUrl' | 'repoFilePath'; + export type TodoListOptions = { entity?: Entity; offset?: number; limit?: number; orderBy?: { - field: 'text' | 'tag' | 'author' | 'viewUrl' | 'repoFilePath'; + field: Fields; direction: 'asc' | 'desc'; }; + filters?: { + field: Fields; + /** Value to filter by, with '*' used as wildcard */ + value: string; + }[]; }; export type TodoListResult = { diff --git a/plugins/todo/src/components/TodoList/TodoList.tsx b/plugins/todo/src/components/TodoList/TodoList.tsx index 2ef8fceeef..101f1caac0 100644 --- a/plugins/todo/src/components/TodoList/TodoList.tsx +++ b/plugins/todo/src/components/TodoList/TodoList.tsx @@ -33,6 +33,7 @@ const columns: TableColumn[] = [ { title: 'Tag', field: 'tag', + filtering: false, }, { title: 'Text', @@ -57,6 +58,7 @@ const columns: TableColumn[] = [ { title: 'Author', field: 'author', + width: '20%', render: ({ author }) => , }, ]; @@ -80,7 +82,9 @@ export const TodoList = () => { sorting: true, draggable: false, paging: true, - paginationType: 'stepped', + filtering: true, + debounceInterval: 500, + filterCellStyle: { padding: '0 16px 0 20px' }, }} columns={columns} data={async query => { @@ -97,6 +101,10 @@ export const TodoList = () => { field: query.orderBy.field, direction: query.orderDirection, } as TodoListOptions['orderBy']), + filters: query?.filters?.map(filter => ({ + field: filter.column.field!, + value: `*${filter.value}*`, + })) as TodoListOptions['filters'], }); return { data: result.items, From f7504fd789cb01bc147474d701ae928af15178ab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Mar 2021 04:20:02 +0000 Subject: [PATCH 062/315] chore(deps-dev): bump @types/js-yaml from 3.12.5 to 4.0.0 Bumps [@types/js-yaml](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/js-yaml) from 3.12.5 to 4.0.0. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/js-yaml) Signed-off-by: dependabot[bot] --- packages/techdocs-common/package.json | 2 +- yarn.lock | 51 +++++++++++++++------------ 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/packages/techdocs-common/package.json b/packages/techdocs-common/package.json index bf17cc3d9d..4a62dbb180 100644 --- a/packages/techdocs-common/package.json +++ b/packages/techdocs-common/package.json @@ -65,7 +65,7 @@ "@backstage/cli": "^0.6.4", "@types/fs-extra": "^9.0.5", "@types/git-url-parse": "^9.0.0", - "@types/js-yaml": "^3.12.5", + "@types/js-yaml": "^4.0.0", "@types/mime-types": "^2.1.0", "@types/mock-fs": "^4.13.0", "@types/pkgcloud": "^1.7.4", diff --git a/yarn.lock b/yarn.lock index 0b5a3e2fa0..3011b2b38c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1744,7 +1744,7 @@ to-fast-properties "^2.0.0" "@backstage/catalog-model@^0.2.0": - version "0.7.3" + version "0.7.4" dependencies: "@backstage/config" "^0.1.3" "@types/json-schema" "^7.0.5" @@ -1756,7 +1756,7 @@ yup "^0.29.3" "@backstage/catalog-model@^0.3.0": - version "0.7.3" + version "0.7.4" dependencies: "@backstage/config" "^0.1.3" "@types/json-schema" "^7.0.5" @@ -1768,12 +1768,12 @@ yup "^0.29.3" "@backstage/core@^0.3.0": - version "0.7.0" + version "0.7.1" dependencies: "@backstage/config" "^0.1.3" - "@backstage/core-api" "^0.2.12" + "@backstage/core-api" "^0.2.13" "@backstage/errors" "^0.1.1" - "@backstage/theme" "^0.2.3" + "@backstage/theme" "^0.2.4" "@material-ui/core" "^4.11.0" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.45" @@ -1810,12 +1810,12 @@ zen-observable "^0.8.15" "@backstage/core@^0.6.0": - version "0.7.0" + version "0.7.1" dependencies: "@backstage/config" "^0.1.3" - "@backstage/core-api" "^0.2.12" + "@backstage/core-api" "^0.2.13" "@backstage/errors" "^0.1.1" - "@backstage/theme" "^0.2.3" + "@backstage/theme" "^0.2.4" "@material-ui/core" "^4.11.0" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.45" @@ -1852,12 +1852,12 @@ zen-observable "^0.8.15" "@backstage/core@^0.6.1": - version "0.7.0" + version "0.7.1" dependencies: "@backstage/config" "^0.1.3" - "@backstage/core-api" "^0.2.12" + "@backstage/core-api" "^0.2.13" "@backstage/errors" "^0.1.1" - "@backstage/theme" "^0.2.3" + "@backstage/theme" "^0.2.4" "@material-ui/core" "^4.11.0" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.45" @@ -1894,14 +1894,14 @@ zen-observable "^0.8.15" "@backstage/plugin-catalog@^0.2.1": - version "0.4.1" + version "0.4.2" dependencies: - "@backstage/catalog-client" "^0.3.6" - "@backstage/catalog-model" "^0.7.3" - "@backstage/core" "^0.7.0" - "@backstage/integration" "^0.5.0" + "@backstage/catalog-client" "^0.3.7" + "@backstage/catalog-model" "^0.7.4" + "@backstage/core" "^0.7.1" + "@backstage/integration" "^0.5.1" "@backstage/plugin-catalog-react" "^0.1.1" - "@backstage/theme" "^0.2.3" + "@backstage/theme" "^0.2.4" "@material-ui/core" "^4.11.0" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.45" @@ -1917,14 +1917,14 @@ swr "^0.3.0" "@backstage/plugin-catalog@^0.3.1": - version "0.4.1" + version "0.4.2" dependencies: - "@backstage/catalog-client" "^0.3.6" - "@backstage/catalog-model" "^0.7.3" - "@backstage/core" "^0.7.0" - "@backstage/integration" "^0.5.0" + "@backstage/catalog-client" "^0.3.7" + "@backstage/catalog-model" "^0.7.4" + "@backstage/core" "^0.7.1" + "@backstage/integration" "^0.5.1" "@backstage/plugin-catalog-react" "^0.1.1" - "@backstage/theme" "^0.2.3" + "@backstage/theme" "^0.2.4" "@material-ui/core" "^4.11.0" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.45" @@ -6291,6 +6291,11 @@ resolved "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.5.tgz#136d5e6a57a931e1cce6f9d8126aa98a9c92a6bb" integrity sha512-JCcp6J0GV66Y4ZMDAQCXot4xprYB+Zfd3meK9+INSJeVZwJmHAW30BBEEkPzXswMXuiyReUGOP3GxrADc9wPww== +"@types/js-yaml@^4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.0.tgz#d1a11688112091f2c711674df3a65ea2f47b5dfb" + integrity sha512-4vlpCM5KPCL5CfGmTbpjwVKbISRYhduEJvvUWsH5EB7QInhEj94XPZ3ts/9FPiLZFqYO0xoW4ZL8z2AabTGgJA== + "@types/json-schema-merge-allof@^0.6.0": version "0.6.0" resolved "https://registry.npmjs.org/@types/json-schema-merge-allof/-/json-schema-merge-allof-0.6.0.tgz#0f587d8a3bcb41a55ef2e91d3ba96430c9bc1813" From da6bce39e4465f07fe285ab4ef42deac204928ae Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 12 Mar 2021 11:06:03 +0100 Subject: [PATCH 063/315] todo-backend: added comment parser tests and tweaks Signed-off-by: Patrik Oldsberg --- plugins/todo-backend/README.md | 4 +- .../lib/TodoReader/createTodoParser.test.ts | 127 ++++++++++++++++++ .../src/lib/TodoReader/createTodoParser.ts | 9 +- 3 files changed, 133 insertions(+), 7 deletions(-) create mode 100644 plugins/todo-backend/src/lib/TodoReader/createTodoParser.test.ts diff --git a/plugins/todo-backend/README.md b/plugins/todo-backend/README.md index 0e455977f9..e5f465466d 100644 --- a/plugins/todo-backend/README.md +++ b/plugins/todo-backend/README.md @@ -38,7 +38,7 @@ export default async function createPlugin({ ## Parser Configuration -The `TodoScmReader` accepts a `TodoParser` option, which can be used to configure your own parser. The default one is based on [Leasot](https://github.com/pgilad/leasot) and supports a wide range of languages. You can change the list of supported tags by configuring your own version of the built-in parser, for example: +The `TodoScmReader` accepts a `TodoParser` option, which can be used to configure your own parser. The default one is based on [Leasot](https://github.com/pgilad/leasot) and supports a wide range of languages. You can add to the list of supported tags by configuring your own version of the built-in parser, for example: ```ts import { @@ -52,7 +52,7 @@ const todoReader = TodoScmReader.fromConfig(config, { logger, reader, parser: createTodoParser({ - tags: ['TODO', 'FIXME', 'NOTE', 'XXX'], + additionalTags: ['NOTE', 'XXX'], }), }); ``` diff --git a/plugins/todo-backend/src/lib/TodoReader/createTodoParser.test.ts b/plugins/todo-backend/src/lib/TodoReader/createTodoParser.test.ts new file mode 100644 index 0000000000..0afe2c3420 --- /dev/null +++ b/plugins/todo-backend/src/lib/TodoReader/createTodoParser.test.ts @@ -0,0 +1,127 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 { createTodoParser } from './createTodoParser'; + +const comment = '//'; // just so we don't have all of these should up as TODOs :D + +describe('createTodoParser', () => { + it('should create a parser that parses TODOs', () => { + const parser = createTodoParser(); + + const output = parser({ + path: 'my-file.js', + content: ` + ${comment} TODO(user1): todo 1 + ${comment}TODO(user2): todo 2 + ${comment}todo: todo 3 + ${comment}@todo: todo 4 + + ${comment}@fixme(user5): todo 5 + ${comment} @TODO: todo 6 /user6 + ${comment} FIXME: todo 7 /user7 + `, + }); + expect(output).toEqual([ + { + text: 'todo 1', + author: 'user1', + lineNumber: 2, + tag: 'TODO', + }, + { + text: 'todo 2', + author: 'user2', + lineNumber: 3, + tag: 'TODO', + }, + { + text: 'todo 3', + lineNumber: 4, + tag: 'TODO', + }, + { + text: 'todo 4', + lineNumber: 5, + tag: 'TODO', + }, + { + text: 'todo 5', + author: 'user5', + lineNumber: 7, + tag: 'FIXME', + }, + { + text: 'todo 6', + author: 'user6', + lineNumber: 8, + tag: 'TODO', + }, + { + text: 'todo 7', + author: 'user7', + lineNumber: 9, + tag: 'FIXME', + }, + ]); + }); + + it('should support custom tags', () => { + const content = ` + ${comment} TODO: todo 1 + ${comment} MYTAG: todo 2 + ${comment} MYTAG(user): todo 3 + `; + expect( + createTodoParser()({ + path: 'my-file.js', + content, + }), + ).toEqual([{ text: 'todo 1', tag: 'TODO', lineNumber: 2 }]); + expect( + createTodoParser({ additionalTags: ['MYTAG'] })({ + path: 'my-file.js', + content, + }), + ).toEqual([ + { text: 'todo 1', tag: 'TODO', lineNumber: 2 }, + { text: 'todo 2', tag: 'MYTAG', lineNumber: 3 }, + { text: 'todo 3', author: 'user', tag: 'MYTAG', lineNumber: 4 }, + ]); + }); + + it('should support multiple languages', () => { + const parser = createTodoParser(); + + const content = ` + -- TODO: todo 1 + # TODO: todo 2 + ${comment} TODO: todo 3 + ${comment[0]}* TODO: todo 4 */ + `; + const todo1 = { text: 'todo 1', tag: 'TODO', lineNumber: 2 }; + const todo2 = { text: 'todo 2', tag: 'TODO', lineNumber: 3 }; + const todo3 = { text: 'todo 3', tag: 'TODO', lineNumber: 4 }; + const todo4 = { text: 'todo 4', tag: 'TODO', lineNumber: 5 }; + + expect(parser({ path: 'f.py', content })).toEqual([todo2]); + expect(parser({ path: 'f.lua', content })).toEqual([todo1]); + expect(parser({ path: 'f.java', content })).toEqual([todo3, todo4]); + expect(parser({ path: 'f.sh', content })).toEqual([todo2]); + expect(parser({ path: 'f.sql', content })).toEqual([todo1, todo3, todo4]); + expect(parser({ path: 'f.json', content })).toEqual([]); + }); +}); diff --git a/plugins/todo-backend/src/lib/TodoReader/createTodoParser.ts b/plugins/todo-backend/src/lib/TodoReader/createTodoParser.ts index 1abbb901db..79d54e2769 100644 --- a/plugins/todo-backend/src/lib/TodoReader/createTodoParser.ts +++ b/plugins/todo-backend/src/lib/TodoReader/createTodoParser.ts @@ -19,23 +19,22 @@ import { parse } from 'leasot'; import { TodoParser } from './types'; export type TodoParserOptions = { - tags?: string[]; + /** Custom tags to support in addition to TODO and FIXME */ + additionalTags?: string[]; }; export function createTodoParser(options: TodoParserOptions = {}): TodoParser { - const { tags = ['TODO', 'FIXME'] } = options; - return ({ content, path }) => { try { const comments = parse(content, { - customTags: tags, + customTags: options.additionalTags, extension: extname(path), }); return comments.map(comment => ({ text: comment.text, tag: comment.tag, - author: comment.ref, + author: comment.ref || undefined, lineNumber: comment.line, })); } catch /* ignore unsupported extensions */ { From 9393f7dfe7a02408443c989357a594d8d311a6f0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 12 Mar 2021 11:50:13 +0100 Subject: [PATCH 064/315] todo-backend: add tests for TodoScmReader and make constructor public Signed-off-by: Patrik Oldsberg --- .../src/lib/TodoReader/TodoScmReader.test.ts | 186 ++++++++++++++++++ .../src/lib/TodoReader/TodoScmReader.ts | 12 +- 2 files changed, 194 insertions(+), 4 deletions(-) create mode 100644 plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts new file mode 100644 index 0000000000..83cc8b5ecf --- /dev/null +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.test.ts @@ -0,0 +1,186 @@ +/* + * Copyright 2021 Spotify AB + * + * 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, + ReadTreeResponse, + UrlReader, +} from '@backstage/backend-common'; +import { ConfigReader } from '@backstage/config'; +import { NotFoundError, NotModifiedError } from '@backstage/errors'; +import { ScmIntegrations } from '@backstage/integration'; +import { createTodoParser } from './createTodoParser'; +import { TodoScmReader } from './TodoScmReader'; + +function mockReader(): jest.Mocked { + return { + read: jest.fn(), + readTree: jest.fn(), + search: jest.fn(), + } as jest.Mocked; +} + +describe('TodoScmReader', () => { + it('should be created from config', () => { + const todoReader = TodoScmReader.fromConfig(new ConfigReader({}), { + logger: getVoidLogger(), + reader: mockReader(), + }); + expect(todoReader).toEqual(expect.any(TodoScmReader)); + }); + + it('should read TODOs', async () => { + const reader = mockReader(); + const todoReader = new TodoScmReader({ + logger: getVoidLogger(), + reader, + integrations: ScmIntegrations.fromConfig(new ConfigReader({})), + }); + + reader.readTree.mockResolvedValueOnce({ + etag: 'my-etag', + files: async () => [ + { + content: async () => Buffer.from('// TODO: my-todo', 'utf8'), + path: 'my-folder/my-file.js', + }, + ], + } as ReadTreeResponse); + + const url = 'https://github.com/backstage/backstage/catalog-info.yaml'; + const expected = { + items: [ + { + text: 'my-todo', + tag: 'TODO', + lineNumber: 1, + repoFilePath: 'my-folder/my-file.js', + viewUrl: + 'https://github.com/backstage/backstage/my-folder/my-file.js#L1', + }, + ], + }; + + await expect(todoReader.readTodos({ url })).resolves.toEqual(expected); + + expect(reader.readTree).toHaveBeenCalledTimes(1); + expect(reader.readTree).toHaveBeenCalledWith( + 'https://github.com/backstage/backstage/catalog-info.yaml', + { + etag: undefined, + filter: expect.any(Function), + }, + ); + + // Filter function should filter out dotfiles + const filterFunc = reader.readTree.mock.calls[0][1]!.filter!; + expect(filterFunc('my-file.js')).toBe(true); + expect(filterFunc('my-folder/my-file.js')).toBe(true); + expect(filterFunc('.my-file.js')).toBe(false); + expect(filterFunc('.my-folder/my-file.js')).toBe(false); + expect(filterFunc('my-folder/.my-file.js')).toBe(false); + + // A NotModifiedError should return a cached result + reader.readTree.mockRejectedValueOnce(new NotModifiedError('nope')); + await expect(todoReader.readTodos({ url })).resolves.toEqual(expected); + + expect(reader.readTree).toHaveBeenCalledTimes(2); + expect(reader.readTree).toHaveBeenLastCalledWith( + 'https://github.com/backstage/backstage/catalog-info.yaml', + { + etag: 'my-etag', + filter: expect.any(Function), + }, + ); + + // Other errors should re-throw + reader.readTree.mockRejectedValueOnce(new NotFoundError('not found')); + await expect(todoReader.readTodos({ url })).rejects.toThrow('not found'); + }); + + it('should use custom parser', async () => { + const parser = jest.fn(createTodoParser({ additionalTags: ['XXX'] })); + const reader = mockReader(); + const todoReader = new TodoScmReader({ + logger: getVoidLogger(), + reader, + parser, + integrations: ScmIntegrations.fromConfig(new ConfigReader({})), + }); + + reader.readTree.mockResolvedValueOnce({ + files: async () => [ + { + content: async () => Buffer.from('-- XXX: my-todo', 'utf8'), + path: 'my-file.lua', + }, + ], + } as ReadTreeResponse); + + await expect( + todoReader.readTodos({ + url: 'https://github.com/backstage/backstage/catalog-info.yaml', + }), + ).resolves.toEqual({ + items: [ + { + text: 'my-todo', + tag: 'XXX', + lineNumber: 1, + repoFilePath: 'my-file.lua', + viewUrl: 'https://github.com/backstage/backstage/my-file.lua#L1', + }, + ], + }); + expect(parser).toHaveBeenCalledTimes(1); + expect(parser).toHaveBeenCalledWith({ + content: '-- XXX: my-todo', + path: 'my-file.lua', + }); + }); + + it('should log and ignore parser errors', async () => { + const logger = getVoidLogger(); + const errorSpy = jest.spyOn(logger, 'error'); + const reader = mockReader(); + const todoReader = new TodoScmReader({ + logger, + reader, + parser() { + throw new Error('failed to parse'); + }, + integrations: ScmIntegrations.fromConfig(new ConfigReader({})), + }); + + reader.readTree.mockResolvedValueOnce({ + files: async () => [ + { + content: async () => Buffer.from('# XXX: my-todo', 'utf8'), + path: 'my-file.sh', + }, + ], + } as ReadTreeResponse); + + await expect( + todoReader.readTodos({ + url: 'https://github.com/o/r/catalog-info.yaml', + }), + ).resolves.toEqual({ items: [] }); + expect(errorSpy).toHaveBeenCalledWith( + 'Failed to parse TODO in https://github.com/o/r/catalog-info.yaml at my-file.sh, Error: failed to parse', + ); + }); +}); diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts index 07ebdf97eb..f13b0c05df 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts @@ -31,6 +31,7 @@ import { createTodoParser } from './createTodoParser'; type Options = { logger: Logger; reader: UrlReader; + integrations: ScmIntegrations; parser?: TodoParser; }; @@ -47,15 +48,18 @@ export class TodoScmReader implements TodoReader { private readonly cache = new Map(); - static fromConfig(config: Config, options: Options) { - return new TodoScmReader(options, ScmIntegrations.fromConfig(config)); + static fromConfig(config: Config, options: Omit) { + return new TodoScmReader({ + ...options, + integrations: ScmIntegrations.fromConfig(config), + }); } - private constructor(options: Options, integrations: ScmIntegrations) { + constructor(options: Options) { this.logger = options.logger; this.reader = options.reader; this.parser = options.parser ?? createTodoParser(); - this.integrations = integrations; + this.integrations = options.integrations; } async readTodos({ url }: ReadTodosOptions): Promise { From b2f1ac111b99eb3afdda3c62e4f7e5b7ca42da03 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 12 Mar 2021 11:57:44 +0100 Subject: [PATCH 065/315] todo-backend: add index test Signed-off-by: Patrik Oldsberg --- plugins/todo-backend/src/index.test.ts | 28 ++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 plugins/todo-backend/src/index.test.ts diff --git a/plugins/todo-backend/src/index.test.ts b/plugins/todo-backend/src/index.test.ts new file mode 100644 index 0000000000..5b43267573 --- /dev/null +++ b/plugins/todo-backend/src/index.test.ts @@ -0,0 +1,28 @@ +/* + * Copyright 2021 Spotify AB + * + * 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 * as index from './index'; + +describe('imports', () => { + it('should export known symbols only', () => { + expect(index).toEqual({ + createRouter: expect.any(Function), + createTodoParser: expect.any(Function), + TodoScmReader: expect.any(Function), + TodoReaderService: expect.any(Function), + }); + }); +}); From 9ca0e40094ed8ce8611e391b3cc690740812d67f Mon Sep 17 00:00:00 2001 From: erdoganoksuz Date: Fri, 12 Mar 2021 15:06:01 +0300 Subject: [PATCH 066/315] locale added all case conversion Signed-off-by: erdoganoksuz --- .changeset/pink-knives-obey.md | 22 +++++++++++++++++++ .../app/src/components/catalog/EntityPage.tsx | 2 +- packages/core/src/api-wrappers/createApp.tsx | 5 ++++- .../src/components/Table/Table.stories.tsx | 4 ++-- .../components/WarningPanel/WarningPanel.tsx | 2 +- .../app/src/components/catalog/EntityPage.tsx | 2 +- .../components/ApisCards/ConsumedApisCard.tsx | 3 ++- .../src/components/ApisCards/HasApisCard.tsx | 3 ++- .../components/ApisCards/ProvidedApisCard.tsx | 3 ++- .../BitriseBuildsTableComponent.tsx | 4 ++-- .../EntityListComponent.tsx | 2 +- .../EntityRefLink/EntityRefLink.tsx | 5 +++-- .../src/components/AboutCard/AboutContent.tsx | 8 +++---- .../components/EntityLayout/EntityLayout.tsx | 4 ++-- .../EntityPageLayout/EntityPageLayout.tsx | 4 ++-- plugins/catalog/src/components/Router.tsx | 3 ++- .../BuildsPage/lib/CITable/CITable.tsx | 2 +- .../WorkflowRunStatus/WorkflowRunStatus.tsx | 2 +- .../src/components/ToolCard/ToolCard.tsx | 4 ++-- .../WorkflowRunDetails/WorkflowRunDetails.tsx | 4 ++-- .../WorkflowRunStatus/WorkflowRunStatus.tsx | 4 ++-- .../lib/Status/JenkinsRunStatus.tsx | 2 +- .../DefaultCustomResourceDrawer.tsx | 3 ++- .../components/AuditList/AuditListTable.tsx | 2 +- .../Cards/LastLighthouseAuditCard.tsx | 2 +- .../Group/MembersList/MembersListCard.tsx | 16 ++++++++------ .../ResultsFilter/ResultsFilter.test.tsx | 4 +++- .../ResultsFilter/ResultsFilter.tsx | 5 ++++- .../ScaffolderPage/ScaffolderPage.tsx | 6 ++--- .../src/components/SearchPage/SearchPage.tsx | 4 +++- .../components/SearchResult/SearchResult.tsx | 8 ++++--- 31 files changed, 93 insertions(+), 51 deletions(-) create mode 100644 .changeset/pink-knives-obey.md diff --git a/.changeset/pink-knives-obey.md b/.changeset/pink-knives-obey.md new file mode 100644 index 0000000000..258e974300 --- /dev/null +++ b/.changeset/pink-knives-obey.md @@ -0,0 +1,22 @@ +--- +'example-app': patch +'@backstage/core': patch +'@backstage/create-app': patch +'@backstage/plugin-api-docs': patch +'@backstage/plugin-bitrise': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-catalog-import': patch +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-circleci': patch +'@backstage/plugin-cloudbuild': patch +'@backstage/plugin-explore': patch +'@backstage/plugin-github-actions': patch +'@backstage/plugin-jenkins': patch +'@backstage/plugin-kubernetes': patch +'@backstage/plugin-lighthouse': patch +'@backstage/plugin-org': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-search': patch +--- + +use local version of lowerCase and upperCase methods diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx index fb56b40e68..b06cc042b3 100644 --- a/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/app/src/components/catalog/EntityPage.tsx @@ -484,7 +484,7 @@ const DomainEntityPage = ({ entity }: { entity: Entity }) => ( export const EntityPage = () => { const { entity } = useEntity(); - switch (entity?.kind?.toLowerCase()) { + switch (entity?.kind?.toLocaleLowerCase('en-US')) { case 'component': return ; case 'api': diff --git a/packages/core/src/api-wrappers/createApp.tsx b/packages/core/src/api-wrappers/createApp.tsx index 9a8f7a36df..db8d0d0636 100644 --- a/packages/core/src/api-wrappers/createApp.tsx +++ b/packages/core/src/api-wrappers/createApp.tsx @@ -58,7 +58,10 @@ export const defaultConfigLoader: AppConfigLoader = async ( const configs = (appConfig.slice() as unknown) as AppConfig[]; // Avoiding this string also being replaced at runtime - if (runtimeConfigJson !== '__app_injected_runtime_config__'.toUpperCase()) { + if ( + runtimeConfigJson !== + '__app_injected_runtime_config__'.toLocaleUpperCase('en-US') + ) { try { const data = JSON.parse(runtimeConfigJson) as JsonObject; if (Array.isArray(data)) { diff --git a/packages/core/src/components/Table/Table.stories.tsx b/packages/core/src/components/Table/Table.stories.tsx index 64ceb761f8..3e2f73b7cb 100644 --- a/packages/core/src/components/Table/Table.stories.tsx +++ b/packages/core/src/components/Table/Table.stories.tsx @@ -213,8 +213,8 @@ export const SubvalueTable = () => { row: any, // Only needed if you want subvalue searchable ) => `${row.col1} ${row.subvalue}` - .toUpperCase() - .includes(query.toUpperCase()), + .toLocaleUpperCase('en-US') + .includes(query.toLocaleUpperCase('en-US')), field: 'col1', highlight: true, render: (row: any): React.ReactNode => ( diff --git a/packages/core/src/components/WarningPanel/WarningPanel.tsx b/packages/core/src/components/WarningPanel/WarningPanel.tsx index e82c49c49a..1faf3bb142 100644 --- a/packages/core/src/components/WarningPanel/WarningPanel.tsx +++ b/packages/core/src/components/WarningPanel/WarningPanel.tsx @@ -81,7 +81,7 @@ type Props = { }; const capitalize = (s: string) => { - return s.charAt(0).toUpperCase() + s.slice(1); + return s.charAt(0).toLocaleUpperCase('en-US') + s.slice(1); }; /** diff --git a/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx b/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx index de6ab2b6b5..b1884ac1c6 100644 --- a/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx @@ -184,7 +184,7 @@ const ApiEntityPage = ({ entity }: { entity: Entity }) => ( export const EntityPage = () => { const { entity } = useEntity(); - switch (entity?.kind?.toLowerCase()) { + switch (entity?.kind?.toLocaleLowerCase('en-US')) { case 'component': return ; case 'api': diff --git a/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx b/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx index 9c3203d532..7cc0257e85 100644 --- a/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx +++ b/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx @@ -74,7 +74,8 @@ export const ConsumedApisCard = ({ variant = 'gridItem' }: Props) => { emptyContent={
- This {entity.kind.toLowerCase()} does not consume any APIs. + This {entity.kind.toLocaleLowerCase('en-US')} does not consume any + APIs. diff --git a/plugins/api-docs/src/components/ApisCards/HasApisCard.tsx b/plugins/api-docs/src/components/ApisCards/HasApisCard.tsx index beeb4d051e..e6da61fcd9 100644 --- a/plugins/api-docs/src/components/ApisCards/HasApisCard.tsx +++ b/plugins/api-docs/src/components/ApisCards/HasApisCard.tsx @@ -78,7 +78,8 @@ export const HasApisCard = ({ variant = 'gridItem' }: Props) => { emptyContent={
- This {entity.kind.toLowerCase()} does not contain any APIs. + This {entity.kind.toLocaleLowerCase('en-US')} does not contain any + APIs. diff --git a/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx b/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx index 2447054b89..6659d7d85e 100644 --- a/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx +++ b/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx @@ -74,7 +74,8 @@ export const ProvidedApisCard = ({ variant = 'gridItem' }: Props) => { emptyContent={
- This {entity.kind.toLowerCase()} does not provide any APIs. + This {entity.kind.toLocaleLowerCase('en-US')} does not provide any + APIs. diff --git a/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.tsx b/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.tsx index 86722436ed..06a9ddd9f8 100644 --- a/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.tsx +++ b/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.tsx @@ -162,8 +162,8 @@ export const BitriseBuildsTable = ({ title: 'Branch', customFilterAndSearch: (query, row: any) => `${row.message} ${row.workflow}` - .toUpperCase() - .includes(query.toUpperCase()), + .toLocaleUpperCase('en-US') + .includes(query.toLocaleUpperCase('en-US')), field: 'message', width: 'auto', highlight: true, diff --git a/plugins/catalog-import/src/components/EntityListComponent/EntityListComponent.tsx b/plugins/catalog-import/src/components/EntityListComponent/EntityListComponent.tsx index d94a1cad19..bdeb483df4 100644 --- a/plugins/catalog-import/src/components/EntityListComponent/EntityListComponent.tsx +++ b/plugins/catalog-import/src/components/EntityListComponent/EntityListComponent.tsx @@ -54,7 +54,7 @@ function sortEntities(entities: Array) { } function getEntityIcon(entity: { kind: string }): React.ReactElement { - switch (entity.kind.toLowerCase()) { + switch (entity.kind.toLocaleLowerCase('en-US')) { case 'api': return ; diff --git a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.tsx b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.tsx index 73e3824d98..c19c9c1703 100644 --- a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.tsx +++ b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.tsx @@ -48,11 +48,12 @@ export const EntityRefLink = forwardRef( name = entityRef.name; } - kind = kind.toLowerCase(); + kind = kind.toLocaleLowerCase('en-US'); const routeParams = { kind, - namespace: namespace?.toLowerCase() ?? ENTITY_DEFAULT_NAMESPACE, + namespace: + namespace?.toLocaleLowerCase('en-US') ?? ENTITY_DEFAULT_NAMESPACE, name, }; diff --git a/plugins/catalog/src/components/AboutCard/AboutContent.tsx b/plugins/catalog/src/components/AboutCard/AboutContent.tsx index 57ea894570..695595285b 100644 --- a/plugins/catalog/src/components/AboutCard/AboutContent.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutContent.tsx @@ -39,10 +39,10 @@ type Props = { export const AboutContent = ({ entity }: Props) => { const classes = useStyles(); - const isSystem = entity.kind.toLowerCase() === 'system'; - const isDomain = entity.kind.toLowerCase() === 'domain'; - const isResource = entity.kind.toLowerCase() === 'resource'; - const isComponent = entity.kind.toLowerCase() === 'component'; + const isSystem = entity.kind.toLocaleLowerCase('en-US') === 'system'; + const isDomain = entity.kind.toLocaleLowerCase('en-US') === 'domain'; + const isResource = entity.kind.toLocaleLowerCase('en-US') === 'resource'; + const isComponent = entity.kind.toLocaleLowerCase('en-US') === 'component'; const partOfSystemRelations = getEntityRelations(entity, RELATION_PART_OF, { kind: 'system', }); diff --git a/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx b/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx index c4cd4c5c71..cf7976e7ee 100644 --- a/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx +++ b/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx @@ -69,10 +69,10 @@ const headerProps = ( : '' }`, headerType: (() => { - let t = kind.toLowerCase(); + let t = kind.toLocaleLowerCase('en-US'); if (entity && entity.spec && 'type' in entity.spec) { t += ' — '; - t += (entity.spec as { type: string }).type.toLowerCase(); + t += (entity.spec as { type: string }).type.toLocaleLowerCase('en-US'); } return t; })(), diff --git a/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx b/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx index 51c8f85116..5cd66fca51 100644 --- a/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx +++ b/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx @@ -88,10 +88,10 @@ const headerProps = ( : '' }`, headerType: (() => { - let t = kind.toLowerCase(); + let t = kind.toLocaleLowerCase('en-US'); if (entity && entity.spec && 'type' in entity.spec) { t += ' — '; - t += (entity.spec as { type: string }).type.toLowerCase(); + t += (entity.spec as { type: string }).type.toLocaleLowerCase('en-US'); } return t; })(), diff --git a/plugins/catalog/src/components/Router.tsx b/plugins/catalog/src/components/Router.tsx index 3e51b74dc2..f86f5959cb 100644 --- a/plugins/catalog/src/components/Router.tsx +++ b/plugins/catalog/src/components/Router.tsx @@ -63,7 +63,8 @@ const EntityPageSwitch = ({ EntityPage }: { EntityPage: ComponentType }) => { const OldEntityRouteRedirect = () => { const { optionalNamespaceAndName, '*': rest } = useParams() as any; const [name, namespace] = optionalNamespaceAndName.split(':').reverse(); - const namespaceLower = namespace?.toLowerCase() ?? ENTITY_DEFAULT_NAMESPACE; + const namespaceLower = + namespace?.toLocaleLowerCase('en-US') ?? ENTITY_DEFAULT_NAMESPACE; const restWithSlash = rest ? `/${rest}` : ''; return ( { - switch (status.toLowerCase()) { + switch (status.toLocaleLowerCase('en-US')) { case 'queued': case 'scheduled': return ; diff --git a/plugins/cloudbuild/src/components/WorkflowRunStatus/WorkflowRunStatus.tsx b/plugins/cloudbuild/src/components/WorkflowRunStatus/WorkflowRunStatus.tsx index 45a8fc662c..931bcd7b2d 100644 --- a/plugins/cloudbuild/src/components/WorkflowRunStatus/WorkflowRunStatus.tsx +++ b/plugins/cloudbuild/src/components/WorkflowRunStatus/WorkflowRunStatus.tsx @@ -29,7 +29,7 @@ export const WorkflowRunStatus = ({ status: string | undefined; }) => { if (status === undefined) return null; - switch (status.toLowerCase()) { + switch (status.toLocaleLowerCase('en-US')) { case 'queued': return ( <> diff --git a/plugins/explore/src/components/ToolCard/ToolCard.tsx b/plugins/explore/src/components/ToolCard/ToolCard.tsx index 60f467ca80..b4a30b3e51 100644 --- a/plugins/explore/src/components/ToolCard/ToolCard.tsx +++ b/plugins/explore/src/components/ToolCard/ToolCard.tsx @@ -76,13 +76,13 @@ export const ToolCard = ({ card, objectFit }: Props) => { {title}{' '} - {lifecycle && lifecycle.toLowerCase() !== 'ga' && ( + {lifecycle && lifecycle.toLocaleLowerCase('en-US') !== 'ga' && ( )} diff --git a/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx b/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx index b5915f400c..38d84a4b6d 100644 --- a/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx +++ b/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx @@ -88,8 +88,8 @@ const StepView = ({ step }: { step: Step }) => { diff --git a/plugins/github-actions/src/components/WorkflowRunStatus/WorkflowRunStatus.tsx b/plugins/github-actions/src/components/WorkflowRunStatus/WorkflowRunStatus.tsx index b1a71ea3ed..c6beff00cd 100644 --- a/plugins/github-actions/src/components/WorkflowRunStatus/WorkflowRunStatus.tsx +++ b/plugins/github-actions/src/components/WorkflowRunStatus/WorkflowRunStatus.tsx @@ -32,7 +32,7 @@ export const WorkflowRunStatus = ({ conclusion: string | undefined; }) => { if (status === undefined) return null; - switch (status.toLowerCase()) { + switch (status.toLocaleLowerCase('en-US')) { case 'queued': return ( <> @@ -46,7 +46,7 @@ export const WorkflowRunStatus = ({ ); case 'completed': - switch (conclusion?.toLowerCase()) { + switch (conclusion?.toLocaleLowerCase('en-US')) { case 'skipped' || 'canceled': return ( <> diff --git a/plugins/jenkins/src/components/BuildsPage/lib/Status/JenkinsRunStatus.tsx b/plugins/jenkins/src/components/BuildsPage/lib/Status/JenkinsRunStatus.tsx index 66a58abe76..1b22015a59 100644 --- a/plugins/jenkins/src/components/BuildsPage/lib/Status/JenkinsRunStatus.tsx +++ b/plugins/jenkins/src/components/BuildsPage/lib/Status/JenkinsRunStatus.tsx @@ -30,7 +30,7 @@ export const JenkinsRunStatus = ({ status: string | undefined; }) => { if (status === undefined) return null; - switch (status.toLowerCase()) { + switch (status.toLocaleLowerCase('en-US')) { case 'queued': case 'scheduled': return ( diff --git a/plugins/kubernetes/src/components/CustomResources/DefaultCustomResourceDrawer.tsx b/plugins/kubernetes/src/components/CustomResources/DefaultCustomResourceDrawer.tsx index db109ad096..57836ac673 100644 --- a/plugins/kubernetes/src/components/CustomResources/DefaultCustomResourceDrawer.tsx +++ b/plugins/kubernetes/src/components/CustomResources/DefaultCustomResourceDrawer.tsx @@ -18,7 +18,8 @@ import React from 'react'; import { KubernetesDrawer } from '../KubernetesDrawer/KubernetesDrawer'; import { Typography, Grid } from '@material-ui/core'; -const capitalize = (str: string) => str.charAt(0).toUpperCase() + str.slice(1); +const capitalize = (str: string) => + str.charAt(0).toLocaleUpperCase('en-US') + str.slice(1); export const DefaultCustomResourceDrawer = ({ customResource, diff --git a/plugins/lighthouse/src/components/AuditList/AuditListTable.tsx b/plugins/lighthouse/src/components/AuditList/AuditListTable.tsx index 8a59869266..a85a5bfa0b 100644 --- a/plugins/lighthouse/src/components/AuditList/AuditListTable.tsx +++ b/plugins/lighthouse/src/components/AuditList/AuditListTable.tsx @@ -106,7 +106,7 @@ export const AuditListTable = ({ items }: { items: Website[] }) => { lastReport: ( <> {' '} - {website.lastAudit.status.toUpperCase()} + {website.lastAudit.status.toLocaleUpperCase('en-US')} ), lastAuditTriggered: formatTime(website.lastAudit.timeCreated), diff --git a/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.tsx b/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.tsx index 693a8b6ec6..8940bb3773 100644 --- a/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.tsx +++ b/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.tsx @@ -59,7 +59,7 @@ const LighthouseCategoryScoreStatus = ({ score }: { score: number }) => { const LighthouseAuditStatus = ({ audit }: { audit: Audit }) => ( <> - {audit.status.toUpperCase()} + {audit.status.toLocaleUpperCase('en-US')} ); diff --git a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx index a73216b23b..7a0e05dc4b 100644 --- a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx +++ b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx @@ -125,13 +125,15 @@ export const MembersListCard = (_props: { kind: 'User', }, }); - const groupMembersList = ((membersList.items as unknown) as Array).filter( - member => - member?.relations?.some( - r => - r.type === RELATION_MEMBER_OF && - r.target.name.toLowerCase() === groupName.toLowerCase(), - ), + const groupMembersList = ((membersList.items as unknown) as Array< + UserEntity + >).filter(member => + member?.relations?.some( + r => + r.type === RELATION_MEMBER_OF && + r.target.name.toLocaleLowerCase('en-US') === + groupName.toLocaleLowerCase('en-US'), + ), ); return groupMembersList; }, [catalogApi]); diff --git a/plugins/scaffolder/src/components/ResultsFilter/ResultsFilter.test.tsx b/plugins/scaffolder/src/components/ResultsFilter/ResultsFilter.test.tsx index 22de59b6ef..406515985c 100644 --- a/plugins/scaffolder/src/components/ResultsFilter/ResultsFilter.test.tsx +++ b/plugins/scaffolder/src/components/ResultsFilter/ResultsFilter.test.tsx @@ -100,7 +100,9 @@ describe('Results Filter', () => { ); for (const category of categories) { expect( - await findByText(category.charAt(0).toUpperCase() + category.slice(1)), + await findByText( + category.charAt(0).toLocaleUpperCase('en-US') + category.slice(1), + ), ).toBeInTheDocument(); } }); diff --git a/plugins/scaffolder/src/components/ResultsFilter/ResultsFilter.tsx b/plugins/scaffolder/src/components/ResultsFilter/ResultsFilter.tsx index 301c6b01d8..4325d2d0d4 100644 --- a/plugins/scaffolder/src/components/ResultsFilter/ResultsFilter.tsx +++ b/plugins/scaffolder/src/components/ResultsFilter/ResultsFilter.tsx @@ -107,7 +107,10 @@ export const ResultsFilter = ({ availableCategories }: Props) => { /> ); diff --git a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx index 8e8ba15ddc..0353dff798 100644 --- a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx +++ b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx @@ -105,8 +105,8 @@ export const ScaffolderPageContents = () => { ); const matchesQuery = (metadata: EntityMeta, query: string) => - `${metadata.title}`.toUpperCase().includes(query) || - metadata.tags?.join('').toUpperCase().indexOf(query) !== -1; + `${metadata.title}`.toLocaleUpperCase('en-US').includes(query) || + metadata.tags?.join('').toLocaleUpperCase('en-US').indexOf(query) !== -1; useEffect(() => { if (search.length === 0) { @@ -114,7 +114,7 @@ export const ScaffolderPageContents = () => { } return setMatchingEntities( filteredEntities.filter(template => - matchesQuery(template.metadata, search.toUpperCase()), + matchesQuery(template.metadata, search.toLocaleUpperCase('en-US')), ), ); }, [search, filteredEntities]); diff --git a/plugins/search/src/components/SearchPage/SearchPage.tsx b/plugins/search/src/components/SearchPage/SearchPage.tsx index 33e89e90dc..7c216fc908 100644 --- a/plugins/search/src/components/SearchPage/SearchPage.tsx +++ b/plugins/search/src/components/SearchPage/SearchPage.tsx @@ -56,7 +56,9 @@ export const SearchPage = () => { /> - + diff --git a/plugins/search/src/components/SearchResult/SearchResult.tsx b/plugins/search/src/components/SearchResult/SearchResult.tsx index c4d8809732..7f4d31a6df 100644 --- a/plugins/search/src/components/SearchResult/SearchResult.tsx +++ b/plugins/search/src/components/SearchResult/SearchResult.tsx @@ -158,11 +158,13 @@ export const SearchResult = ({ searchQuery }: SearchResultProps) => { if (searchQuery) { withFilters = withFilters.filter( (result: Result) => - result.name?.toLowerCase().includes(searchQuery) || + result.name?.toLocaleLowerCase('en-US').includes(searchQuery) || result.name - ?.toLowerCase() + ?.toLocaleLowerCase('en-US') .includes(searchQuery.split(' ').join('-')) || - result.description?.toLowerCase().includes(searchQuery), + result.description + ?.toLocaleLowerCase('en-US') + .includes(searchQuery), ); } From 196d8ec327cfbb57e5bedeaafe0e431f0b416a9d Mon Sep 17 00:00:00 2001 From: erdoganoksuz Date: Fri, 12 Mar 2021 15:14:17 +0300 Subject: [PATCH 067/315] prettier Signed-off-by: erdoganoksuz --- packages/app/public/index.html | 2 +- packages/core/src/layout/Sidebar/Intro.tsx | 7 +++--- .../PreparePullRequestForm.tsx | 10 +++----- .../components/CatalogPage/CatalogPage.tsx | 7 +++--- .../WorkflowRunDetails/useWorkflowRunJobs.ts | 4 +++- .../cost-insights/src/testUtils/providers.tsx | 24 ++++++++++++++----- .../src/kubernetes-auth-provider/types.ts | 13 +++++----- plugins/lighthouse/src/api.ts | 7 +++--- 8 files changed, 40 insertions(+), 34 deletions(-) diff --git a/packages/app/public/index.html b/packages/app/public/index.html index 9a665141c0..77e5c01e19 100644 --- a/packages/app/public/index.html +++ b/packages/app/public/index.html @@ -66,7 +66,7 @@ <% } %> - +
## Uninstalling Backstage From 29dcd30e99b8f7c57cf4c46cad8eed709b3a777e Mon Sep 17 00:00:00 2001 From: Gerard Wilkinson Date: Mon, 22 Mar 2021 12:03:49 +0000 Subject: [PATCH 254/315] Removing commented lines as now documented instead Signed-off-by: Gerard Wilkinson --- contrib/chart/backstage/values.yaml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/contrib/chart/backstage/values.yaml b/contrib/chart/backstage/values.yaml index 4975f86753..7b26d2bccd 100644 --- a/contrib/chart/backstage/values.yaml +++ b/contrib/chart/backstage/values.yaml @@ -70,9 +70,6 @@ global: postgresqlUsername: backend-user caFilename: ca.crt nodeSelector: {} - ## Speficy nodeSelector for multi-platform Kubernetes Services - ## nodeSelector: - ## kubernetes.io/os: linux postgresql: enabled: true @@ -85,13 +82,6 @@ postgresql: volumePermissions: enabled: true initdbScriptsSecret: backstage-postgresql-initdb - ## Speficy nodeSelector for multi-platform Kubernetes Services - ## master: - ## nodeSelector: - ## kubernetes.io/os: linux - ## slave: - ## nodeSelector: - ## kubernetes.io/os: linux appConfig: app: From 9f808f97c82551c407e01bf9e9ed6e23c6d23a32 Mon Sep 17 00:00:00 2001 From: Gerard Wilkinson Date: Mon, 22 Mar 2021 12:15:44 +0000 Subject: [PATCH 255/315] Clarification on documentation for postgres Helm chart Signed-off-by: Gerard Wilkinson --- contrib/chart/backstage/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/chart/backstage/README.md b/contrib/chart/backstage/README.md index 90e998a169..7d04a2cf1e 100644 --- a/contrib/chart/backstage/README.md +++ b/contrib/chart/backstage/README.md @@ -245,8 +245,9 @@ Add the following to your Helm values file: ```yaml global: nodeSelector: - kubernetes.io/os: linux + kubernetes.io/os: linux +# If using Postgres Chart also add postgresql: master: nodeSelector: From 628e7382ec096837eda5e68b147a97f02647f9a6 Mon Sep 17 00:00:00 2001 From: Maikel Date: Mon, 22 Mar 2021 13:21:18 +0100 Subject: [PATCH 256/315] Fix docs on Helm install commands. Signed-off-by: Maikel Vlasman --- docs/getting-started/deployment-helm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting-started/deployment-helm.md b/docs/getting-started/deployment-helm.md index e1f3ea7629..d1a52a5b30 100644 --- a/docs/getting-started/deployment-helm.md +++ b/docs/getting-started/deployment-helm.md @@ -33,7 +33,7 @@ Then use it to run: ```bash git clone https://github.com/backstage/backstage.git -cd contrib/chart/backstage +cd backstage/contrib/chart/backstage helm dependency update helm install -f backstage-mydomain.yaml backstage . ``` From 2aab54319ef7994403c98a479a572733714ae672 Mon Sep 17 00:00:00 2001 From: Adrian Ke Chongyang <14866712+adrianke77@users.noreply.github.com> Date: Mon, 22 Mar 2021 23:42:49 +0800 Subject: [PATCH 257/315] techdocs: reset scroll position on page navigate (#5018) Signed-off-by: Chongyang Adrian, Ke Co-authored-by: Chongyang Adrian, Ke --- .changeset/slimy-lies-tap.md | 5 +++++ plugins/techdocs/src/reader/components/Reader.tsx | 1 + 2 files changed, 6 insertions(+) create mode 100644 .changeset/slimy-lies-tap.md diff --git a/.changeset/slimy-lies-tap.md b/.changeset/slimy-lies-tap.md new file mode 100644 index 0000000000..8903f2e036 --- /dev/null +++ b/.changeset/slimy-lies-tap.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': patch +--- + +TechDocs: links at sidebar and bottom reset scroll position to top diff --git a/plugins/techdocs/src/reader/components/Reader.tsx b/plugins/techdocs/src/reader/components/Reader.tsx index 984e310bfb..2231476869 100644 --- a/plugins/techdocs/src/reader/components/Reader.tsx +++ b/plugins/techdocs/src/reader/components/Reader.tsx @@ -113,6 +113,7 @@ export const Reader = ({ entityId, onReady }: Props) => { addLinkClickListener({ baseUrl: window.location.origin, onClick: (_: MouseEvent, url: string) => { + window.scroll({ top: 0 }); const parsedUrl = new URL(url); if (parsedUrl.hash) { history.pushState( From b230d5a10a300203526c30f4c99c986541a006fb Mon Sep 17 00:00:00 2001 From: Robin Murphy Date: Thu, 25 Feb 2021 14:34:21 +0000 Subject: [PATCH 258/315] OverflowTooltip: Don't render component when text is empty Signed-off-by: Robin Murphy --- .../core/src/components/OverflowTooltip/OverflowTooltip.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/core/src/components/OverflowTooltip/OverflowTooltip.tsx b/packages/core/src/components/OverflowTooltip/OverflowTooltip.tsx index faf064f9f4..1db9543462 100644 --- a/packages/core/src/components/OverflowTooltip/OverflowTooltip.tsx +++ b/packages/core/src/components/OverflowTooltip/OverflowTooltip.tsx @@ -40,6 +40,10 @@ export const OverflowTooltip = (props: Props) => { setHover(truncated); }; + if (!props.text) { + return null; + } + return ( Date: Thu, 25 Feb 2021 15:03:31 +0000 Subject: [PATCH 259/315] Add basic test Signed-off-by: Robin Murphy --- .../OverflowTooltip/OverflowTooltip.test.tsx | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 packages/core/src/components/OverflowTooltip/OverflowTooltip.test.tsx diff --git a/packages/core/src/components/OverflowTooltip/OverflowTooltip.test.tsx b/packages/core/src/components/OverflowTooltip/OverflowTooltip.test.tsx new file mode 100644 index 0000000000..52f44bb4d0 --- /dev/null +++ b/packages/core/src/components/OverflowTooltip/OverflowTooltip.test.tsx @@ -0,0 +1,30 @@ +/* + * Copyright 2020 Spotify AB + * + * 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 } from '@testing-library/react'; + +import { OverflowTooltip } from '.'; + +describe('', () => { + it('renders without exploding', async () => { + render(); + }); + + it('renders without exploding when the text prop is missing', async () => { + render(); + }); +}); From df59930b388da26c7ab9f420689f0d83fcee4e6f Mon Sep 17 00:00:00 2001 From: Robin Murphy Date: Thu, 25 Feb 2021 15:06:33 +0000 Subject: [PATCH 260/315] Add changeset Signed-off-by: Robin Murphy --- .changeset/yellow-bananas-live.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/yellow-bananas-live.md diff --git a/.changeset/yellow-bananas-live.md b/.changeset/yellow-bananas-live.md new file mode 100644 index 0000000000..82a3ce8b15 --- /dev/null +++ b/.changeset/yellow-bananas-live.md @@ -0,0 +1,5 @@ +--- +'@backstage/core': patch +--- + +Fix PropTypes error with OverflowTooltip component From db4bf2edc165c94bed26a952e64c3f41e489f8ba Mon Sep 17 00:00:00 2001 From: Robin Murphy Date: Mon, 22 Mar 2021 17:05:55 +0000 Subject: [PATCH 261/315] Default title to empty string Signed-off-by: Robin Murphy --- .../core/src/components/OverflowTooltip/OverflowTooltip.tsx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/core/src/components/OverflowTooltip/OverflowTooltip.tsx b/packages/core/src/components/OverflowTooltip/OverflowTooltip.tsx index 1db9543462..b7bad6f377 100644 --- a/packages/core/src/components/OverflowTooltip/OverflowTooltip.tsx +++ b/packages/core/src/components/OverflowTooltip/OverflowTooltip.tsx @@ -40,13 +40,9 @@ export const OverflowTooltip = (props: Props) => { setHover(truncated); }; - if (!props.text) { - return null; - } - return ( From 5da3fddb427e5aa4e311efc78990c0fe4f2892db Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Mon, 22 Mar 2021 12:24:58 -0600 Subject: [PATCH 262/315] Add documentation for github-discovery processor Signed-off-by: Tim Hansen --- .../software-catalog/configuration.md | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/docs/features/software-catalog/configuration.md b/docs/features/software-catalog/configuration.md index 3ffd01a38a..9bac433682 100644 --- a/docs/features/software-catalog/configuration.md +++ b/docs/features/software-catalog/configuration.md @@ -79,6 +79,38 @@ silently at startup for convenience. So you only have to list it if you want to supply a token for it - and if you do, you can also leave out the `apiBaseUrl` and `rawBaseUrl` fields. +### Processor: github-discovery + +There is a special GitHub discovery processor for discovering catalog entities +within a GitHub organization. The processor will crawl a given GitHub +organization and register entities matching the configured path. This can be +useful as an alternative to static locations or manually adding things to the +catalog. + +To use the discovery processor, you'll need a GitHub integration set up as above +with a `GITHUB_TOKEN`. Then you can add a location target to the catalog +configuration: + +```yaml +catalog: + locations: + - type: github-discovery + target: https://github.com/myorg/service-*/blob/main/catalog-info.yaml +``` + +Note the `github-discovery` type, as this is not a regular `url` processor. + +The target is composed of three parts: + +- The base organization URL, `https://github.com/myorg` in this case +- The repository blob to scan, which accepts \* wildcard tokens. This can simply + be `*` to scan all repositories in the organization. This example only looks + for repositories prefixed with `service-`. +- The path within each repository to find the catalog YAML file. This will + usually be `/blob/main/catalog-info.yaml`, `/blob/master/catalog-info.yaml` or + a similar variation for catalog files stored in the root directory of each + repository. + ## Static Location Configuration To enable declarative catalog setups, it is possible to add locations to the From 04c3395f41f6458870489778bba1a793423aeced Mon Sep 17 00:00:00 2001 From: Erik Larsson Date: Tue, 23 Mar 2021 00:17:39 +0100 Subject: [PATCH 263/315] feat: document method to set token cookie Signed-off-by: Erik Larsson --- .../tutorials/authenticate-api-requests.md | 88 ++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/contrib/docs/tutorials/authenticate-api-requests.md b/contrib/docs/tutorials/authenticate-api-requests.md index 4f4547a49e..bf04d9cdef 100644 --- a/contrib/docs/tutorials/authenticate-api-requests.md +++ b/contrib/docs/tutorials/authenticate-api-requests.md @@ -6,7 +6,7 @@ API requests from frontend plugins include an authorization header with a Backst Note that this means Backstage will stop working for guests, as no token is issued for them. -Caveat: as of writing this, Backstage does not refresh the identity token so eventually users will get a 401 response on API calls (not on loading the web page as only the API calls are authenticated) and have to logout/login again to get a new token. +As techdocs HTML pages load assets without an Authorization header the code below also sets a token cookie when the user logs in (and when the token is about to expire). ```typescript // packages/backend/src/index.ts from a create-app deployment @@ -82,6 +82,10 @@ async function main() { apiRouter.use(cookieParser()); // The auth route must be publically available as it is used during login apiRouter.use('/auth', await auth(authEnv)); + // Add a simple endpoint to be used when setting a token cookie + apiRouter.use('/cookie', authMiddleware, (req, res) => { + res.status(200).send(`Coming right up`); + }); // Only authenticated requests are allowed to the routes below apiRouter.use('/catalog', authMiddleware, await catalog(catalogEnv)); apiRouter.use('/techdocs', authMiddleware, await techdocs(techdocsEnv)); @@ -91,3 +95,85 @@ async function main() { // ... } ``` + +```typescript +// packages/app/src/App.tsx from a create-app deployment + +import { + discoveryApiRef, + useApi, +} from '@backstage/core'; + +// ... + +// Parses supplied JWT token and returns the payload +function parseJwt(token) { + const base64Url = token.split('.')[1]; + const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); + const jsonPayload = decodeURIComponent( + atob(base64) + .split('') + .map(function (c) { + return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); + }) + .join(''), + ); + + return JSON.parse(jsonPayload); +} + +// Returns milliseconds until the supplied JWT token expires +function msUntilExpiry(token) { + const payload = parseJwt(token); + const remaining = new Date(payload.exp * 1000) - new Date(); + return remaining; +} + +// Calls the specified url regularly using an auth token to set a token cookie +// to authorize regular HTTP requests when loading techdocs +async function setAuthCookie(url, getIdToken) { + const token = await getIdToken(); + const response = await fetch(url, { + mode: 'cors', + credentials: 'include', + headers: { + Authorization: `Bearer ${token}`, + }, + }); + // Call this function again a few minutes before the token expires + const ms = msUntilExpiry(token) - 4 * 60 * 1000; + setTimeout( + () => { + setAuthCookie(url, getIdToken); + }, + ms > 0 ? ms : 10000, + ); +} + +const app = createApp({ + + // ... + + components: { + SignInPage: props => { + const discoveryApi = useApi(discoveryApiRef); + return ( + { + // When logged in, set a token cookie + setAuthCookie( + await discoveryApi.getBaseUrl('cookie'), + result.getIdToken, + ); + // Forward results + props.onResult(result); + }} + /> + ); + }, + }, +``` From 6f40c8b66b5eac73e5d3c91b6e715bb9cd32080a Mon Sep 17 00:00:00 2001 From: Erik Larsson Date: Tue, 23 Mar 2021 00:21:30 +0100 Subject: [PATCH 264/315] feat: document method to set token cookie Signed-off-by: Erik Larsson --- contrib/docs/tutorials/authenticate-api-requests.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/contrib/docs/tutorials/authenticate-api-requests.md b/contrib/docs/tutorials/authenticate-api-requests.md index bf04d9cdef..897e2378e7 100644 --- a/contrib/docs/tutorials/authenticate-api-requests.md +++ b/contrib/docs/tutorials/authenticate-api-requests.md @@ -99,10 +99,7 @@ async function main() { ```typescript // packages/app/src/App.tsx from a create-app deployment -import { - discoveryApiRef, - useApi, -} from '@backstage/core'; +import { discoveryApiRef, useApi } from '@backstage/core'; // ... @@ -151,7 +148,6 @@ async function setAuthCookie(url, getIdToken) { } const app = createApp({ - // ... components: { @@ -176,4 +172,9 @@ const app = createApp({ ); }, }, + + // ... +}); + +// ... ``` From 7e0ca4eec33e2f5689ee4aaa59aa1482cb5812bc Mon Sep 17 00:00:00 2001 From: Erik Larsson Date: Tue, 23 Mar 2021 00:26:00 +0100 Subject: [PATCH 265/315] feat: document method to set token cookie Signed-off-by: Erik Larsson --- contrib/docs/tutorials/authenticate-api-requests.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contrib/docs/tutorials/authenticate-api-requests.md b/contrib/docs/tutorials/authenticate-api-requests.md index 897e2378e7..c0ab7f9ceb 100644 --- a/contrib/docs/tutorials/authenticate-api-requests.md +++ b/contrib/docs/tutorials/authenticate-api-requests.md @@ -128,7 +128,7 @@ function msUntilExpiry(token) { // Calls the specified url regularly using an auth token to set a token cookie // to authorize regular HTTP requests when loading techdocs -async function setAuthCookie(url, getIdToken) { +async function setTokenCookie(url, getIdToken) { const token = await getIdToken(); const response = await fetch(url, { mode: 'cors', @@ -141,7 +141,7 @@ async function setAuthCookie(url, getIdToken) { const ms = msUntilExpiry(token) - 4 * 60 * 1000; setTimeout( () => { - setAuthCookie(url, getIdToken); + setTokenCookie(url, getIdToken); }, ms > 0 ? ms : 10000, ); @@ -161,7 +161,7 @@ const app = createApp({ align="center" onResult={async result => { // When logged in, set a token cookie - setAuthCookie( + setTokenCookie( await discoveryApi.getBaseUrl('cookie'), result.getIdToken, ); From 49713d9e445ee290c0e2a95441a0db76db155100 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Mon, 22 Mar 2021 22:23:59 -0400 Subject: [PATCH 266/315] Add icon to badge menu Signed-off-by: Adam Harvey --- .../src/components/EntityContextMenu/EntityContextMenu.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx b/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx index b9af9b307e..e4275181df 100644 --- a/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx +++ b/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx @@ -24,6 +24,7 @@ import { } from '@material-ui/core'; import { makeStyles } from '@material-ui/core/styles'; import Cancel from '@material-ui/icons/Cancel'; +import BadgeIcon from '@material-ui/icons/CallToAction'; import MoreVert from '@material-ui/icons/MoreVert'; import React, { useState } from 'react'; @@ -81,6 +82,9 @@ export const EntityContextMenu = ({ onShowBadgesDialog(); }} > + + + Badges )} From a2a8463b4b6915dc56632967b5e012a85ce6f2cd Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Mon, 22 Mar 2021 22:39:43 -0400 Subject: [PATCH 267/315] Update dialog format Signed-off-by: Adam Harvey --- .../src/components/EntityBadgesDialog.tsx | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/plugins/badges/src/components/EntityBadgesDialog.tsx b/plugins/badges/src/components/EntityBadgesDialog.tsx index 74a244e698..b3c0a4fee4 100644 --- a/plugins/badges/src/components/EntityBadgesDialog.tsx +++ b/plugins/badges/src/components/EntityBadgesDialog.tsx @@ -22,6 +22,7 @@ import { useApi, } from '@backstage/core'; import { + Box, Button, Dialog, DialogActions, @@ -55,7 +56,6 @@ export const EntityBadgesDialog = ({ open, onClose, entity }: Props) => { const theme = useTheme(); const fullScreen = useMediaQuery(theme.breakpoints.down('sm')); const badgesApi = useApi(badgesApiRef); - const classes = useStyles(); const { value: badges, loading, error } = useAsync(async () => { if (open) { @@ -67,18 +67,11 @@ export const EntityBadgesDialog = ({ open, onClose, entity }: Props) => { const content = (badges || []).map( ({ badge: { description }, id, url, markdown }) => ( -
- - {description || `${id} badge`} -
- {description -
- - Copy the following snippet of markdown code for the badge: - - -
-
+ + + {description + + ), ); @@ -87,6 +80,10 @@ export const EntityBadgesDialog = ({ open, onClose, entity }: Props) => { Entity Badges + + Embed badges in other web sites that link back to this entity. Copy + the relevant snippet of Markdown code to use the badge. + {loading && } {error && } {content} From 687f066e129397b0924b985ceabb67d3411f0bdb Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Mon, 22 Mar 2021 22:41:46 -0400 Subject: [PATCH 268/315] Add changeset Signed-off-by: Adam Harvey --- .changeset/calm-mugs-jog.md | 5 +++++ .changeset/silly-crabs-press.md | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 .changeset/calm-mugs-jog.md create mode 100644 .changeset/silly-crabs-press.md diff --git a/.changeset/calm-mugs-jog.md b/.changeset/calm-mugs-jog.md new file mode 100644 index 0000000000..6cb5c1de24 --- /dev/null +++ b/.changeset/calm-mugs-jog.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-badges': patch +--- + +Update badge dialog formatting diff --git a/.changeset/silly-crabs-press.md b/.changeset/silly-crabs-press.md new file mode 100644 index 0000000000..64895cb847 --- /dev/null +++ b/.changeset/silly-crabs-press.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Add icon for entity badge menu From f29a41bcc41a0c96e90d3c2327a64f51b912a186 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Mon, 22 Mar 2021 22:46:16 -0400 Subject: [PATCH 269/315] Test check for Markdown output Signed-off-by: Adam Harvey --- plugins/badges/src/components/EntityBadgesDialog.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/badges/src/components/EntityBadgesDialog.test.tsx b/plugins/badges/src/components/EntityBadgesDialog.test.tsx index 2491a3462c..25a6f01c1a 100644 --- a/plugins/badges/src/components/EntityBadgesDialog.test.tsx +++ b/plugins/badges/src/components/EntityBadgesDialog.test.tsx @@ -55,7 +55,7 @@ describe('EntityBadgesDialog', () => { ); await expect( - rendered.findByText('testbadge badge'), + rendered.findByText('![test: badge](http://127.0.0.1/catalog/...)'), ).resolves.toBeInTheDocument(); }); }); From 63541d53dc74cf253fdc430037734b29b3961b27 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Mon, 22 Mar 2021 22:56:34 -0400 Subject: [PATCH 270/315] Remove unused formatting Signed-off-by: Adam Harvey --- plugins/badges/src/components/EntityBadgesDialog.tsx | 9 --------- 1 file changed, 9 deletions(-) diff --git a/plugins/badges/src/components/EntityBadgesDialog.tsx b/plugins/badges/src/components/EntityBadgesDialog.tsx index b3c0a4fee4..58bce6a03b 100644 --- a/plugins/badges/src/components/EntityBadgesDialog.tsx +++ b/plugins/badges/src/components/EntityBadgesDialog.tsx @@ -33,7 +33,6 @@ import { useMediaQuery, useTheme, } from '@material-ui/core'; -import { makeStyles } from '@material-ui/core/styles'; import React from 'react'; import { useAsync } from 'react-use'; import { badgesApiRef } from '../api'; @@ -44,14 +43,6 @@ type Props = { entity: Entity; }; -const useStyles = makeStyles({ - codeBlock: { - '& code': { - whiteSpace: 'pre-wrap', - }, - }, -}); - export const EntityBadgesDialog = ({ open, onClose, entity }: Props) => { const theme = useTheme(); const fullScreen = useMediaQuery(theme.breakpoints.down('sm')); From b628311d4ce4c2dfbe89784c9fb11ead264d02c5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Mar 2021 04:15:35 +0000 Subject: [PATCH 271/315] chore(deps-dev): bump @types/fs-extra from 9.0.3 to 9.0.8 Bumps [@types/fs-extra](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/fs-extra) from 9.0.3 to 9.0.8. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/fs-extra) Signed-off-by: dependabot[bot] --- yarn.lock | 40 ++++++++-------------------------------- 1 file changed, 8 insertions(+), 32 deletions(-) diff --git a/yarn.lock b/yarn.lock index e038735a54..b5eaab9c6f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6195,24 +6195,10 @@ dependencies: "@types/node" "*" -"@types/fs-extra@^9.0.1": - version "9.0.1" - resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.1.tgz#91c8fc4c51f6d5dbe44c2ca9ab09310bd00c7918" - integrity sha512-B42Sxuaz09MhC3DDeW5kubRcQ5by4iuVQ0cRRWM2lggLzAa/KVom0Aft/208NgMvNQQZ86s5rVcqDdn/SH0/mg== - dependencies: - "@types/node" "*" - -"@types/fs-extra@^9.0.3": - version "9.0.3" - resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.3.tgz#9996e5cce993508c32325380b429f04a1327523e" - integrity sha512-NKdGoXLTFTRED3ENcfCsH8+ekV4gbsysanx2OPbstXVV6fZMgUCqTxubs6I9r7pbOJbFgVq1rpFtLURjKCZWUw== - dependencies: - "@types/node" "*" - -"@types/fs-extra@^9.0.5": - version "9.0.5" - resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.5.tgz#2afb76a43a4bef80a363b94b314d0ca1694fc4f8" - integrity sha512-wr3t7wIW1c0A2BIJtdVp4EflriVaVVAsCAIHVzzh8B+GiFv9X1xeJjCs4upRXtzp7kQ6lP5xvskjoD4awJ1ZeA== +"@types/fs-extra@^9.0.1", "@types/fs-extra@^9.0.3", "@types/fs-extra@^9.0.5": + version "9.0.8" + resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.8.tgz#32c3c07ddf8caa5020f84b5f65a48470519f78ba" + integrity sha512-bnlTVTwq03Na7DpWxFJ1dvnORob+Otb8xHyUqUWhqvz/Ksg8+JXPlR52oeMSZ37YEOa5PyccbgUNutiQdi13TA== dependencies: "@types/node" "*" @@ -6593,15 +6579,10 @@ "@types/node" "*" form-data "^3.0.0" -"@types/node@*", "@types/node@>= 8": - version "14.0.26" - resolved "https://registry.npmjs.org/@types/node/-/node-14.0.26.tgz#22a3b8a46510da8944b67bfc27df02c34a35331c" - integrity sha512-W+fpe5s91FBGE0pEa0lnqGLL4USgpLgs4nokw16SrBBco/gQxuua7KnArSEOd5iaMqbbSHV10vUDkJYJJqpXKA== - -"@types/node@>=12.12.47": - version "14.14.31" - resolved "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055" - integrity sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g== +"@types/node@*", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@^14.14.32": + version "14.14.32" + resolved "https://registry.npmjs.org/@types/node/-/node-14.14.32.tgz#90c5c4a8d72bbbfe53033f122341343249183448" + integrity sha512-/Ctrftx/zp4m8JOujM5ZhwzlWLx22nbQJiVqz8/zE15gOeEW+uly3FSX4fGFpcfEvFzXcMCJwq9lGVWgyARXhg== "@types/node@^10.1.0", "@types/node@^10.12.0": version "10.17.35" @@ -6618,11 +6599,6 @@ resolved "https://registry.npmjs.org/@types/node/-/node-13.13.45.tgz#e6676bcca092bae5751d015f074a234d5a82eb63" integrity sha512-703YTEp8AwQeapI0PTXDOj+Bs/mtdV/k9VcTP7z/de+lx6XjFMKdB+JhKnK+6PZ5za7omgZ3V6qm/dNkMj/Zow== -"@types/node@^14.14.32": - version "14.14.32" - resolved "https://registry.npmjs.org/@types/node/-/node-14.14.32.tgz#90c5c4a8d72bbbfe53033f122341343249183448" - integrity sha512-/Ctrftx/zp4m8JOujM5ZhwzlWLx22nbQJiVqz8/zE15gOeEW+uly3FSX4fGFpcfEvFzXcMCJwq9lGVWgyARXhg== - "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" From d42f055d487405952fa896b588eaf1b289444fbc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Mar 2021 04:26:33 +0000 Subject: [PATCH 272/315] chore(deps): bump express-promise-router from 3.0.3 to 4.1.0 Bumps [express-promise-router](https://github.com/express-promise-router/express-promise-router) from 3.0.3 to 4.1.0. - [Release notes](https://github.com/express-promise-router/express-promise-router/releases) - [Changelog](https://github.com/express-promise-router/express-promise-router/blob/trunk/CHANGELOG.md) - [Commits](https://github.com/express-promise-router/express-promise-router/commits) Signed-off-by: dependabot[bot] --- packages/backend-common/package.json | 2 +- packages/backend/package.json | 2 +- plugins/app-backend/package.json | 2 +- plugins/auth-backend/package.json | 2 +- plugins/badges-backend/package.json | 2 +- plugins/catalog-backend/package.json | 2 +- plugins/graphql/package.json | 2 +- plugins/kafka-backend/package.json | 2 +- plugins/kubernetes-backend/package.json | 2 +- plugins/proxy-backend/package.json | 2 +- plugins/rollbar-backend/package.json | 2 +- plugins/scaffolder-backend/package.json | 2 +- plugins/techdocs-backend/package.json | 2 +- plugins/todo-backend/package.json | 2 +- yarn.lock | 12 ++++++------ 15 files changed, 20 insertions(+), 20 deletions(-) diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index f31c292434..6b85b278e2 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -45,7 +45,7 @@ "cross-fetch": "^3.0.6", "dockerode": "^3.2.1", "express": "^4.17.1", - "express-promise-router": "^3.0.3", + "express-promise-router": "^4.1.0", "fs-extra": "^9.0.1", "git-url-parse": "^11.4.4", "helmet": "^4.0.0", diff --git a/packages/backend/package.json b/packages/backend/package.json index 34f9f7c6de..836b60dabd 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -49,7 +49,7 @@ "dockerode": "^3.2.1", "example-app": "^0.2.20", "express": "^4.17.1", - "express-promise-router": "^3.0.3", + "express-promise-router": "^4.1.0", "knex": "^0.95.1", "pg": "^8.3.0", "pg-connection-string": "^2.3.0", diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index 4a3626f8d5..132437597b 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -34,7 +34,7 @@ "@backstage/config": "^0.1.4", "@types/express": "^4.17.6", "express": "^4.17.1", - "express-promise-router": "^3.0.3", + "express-promise-router": "^4.1.0", "fs-extra": "^9.0.0", "winston": "^3.2.1", "yn": "^4.0.0" diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index a22b3c79d5..2e6b1af3db 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -42,7 +42,7 @@ "cors": "^2.8.5", "cross-fetch": "^3.0.6", "express": "^4.17.1", - "express-promise-router": "^3.0.3", + "express-promise-router": "^4.1.0", "express-session": "^1.17.1", "fs-extra": "^9.0.0", "got": "^11.5.2", diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index 75f681190d..5694adef70 100644 --- a/plugins/badges-backend/package.json +++ b/plugins/badges-backend/package.json @@ -40,7 +40,7 @@ "cors": "^2.8.5", "cross-fetch": "^3.0.6", "express": "^4.17.1", - "express-promise-router": "^3.0.3", + "express-promise-router": "^4.1.0", "winston": "^3.2.1", "yn": "^4.0.0" }, diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index bad9e3c809..ce146a8a5e 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -43,7 +43,7 @@ "core-js": "^3.6.5", "cross-fetch": "^3.0.6", "express": "^4.17.1", - "express-promise-router": "^3.0.3", + "express-promise-router": "^4.1.0", "fs-extra": "^9.0.0", "git-url-parse": "^11.4.4", "glob": "^7.1.6", diff --git a/plugins/graphql/package.json b/plugins/graphql/package.json index 594f2b475d..84b9731e85 100644 --- a/plugins/graphql/package.json +++ b/plugins/graphql/package.json @@ -37,7 +37,7 @@ "apollo-server": "^2.16.1", "apollo-server-express": "^2.16.1", "express": "^4.17.1", - "express-promise-router": "^3.0.3", + "express-promise-router": "^4.1.0", "graphql": "^15.3.0", "helmet": "^4.0.0", "reflect-metadata": "^0.1.13", diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index c501004efe..e270e92b2f 100644 --- a/plugins/kafka-backend/package.json +++ b/plugins/kafka-backend/package.json @@ -36,7 +36,7 @@ "@backstage/config": "^0.1.4", "@types/express": "^4.17.6", "express": "^4.17.1", - "express-promise-router": "^3.0.3", + "express-promise-router": "^4.1.0", "kafkajs": "^1.16.0-beta.6", "lodash": "^4.17.15", "winston": "^3.2.1" diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index e01cb0031d..0f2d18f757 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -42,7 +42,7 @@ "compression": "^1.7.4", "cors": "^2.8.5", "express": "^4.17.1", - "express-promise-router": "^3.0.3", + "express-promise-router": "^4.1.0", "fs-extra": "^9.0.0", "helmet": "^4.0.0", "lodash": "^4.17.15", diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index 7cee8cede6..4509d5772e 100644 --- a/plugins/proxy-backend/package.json +++ b/plugins/proxy-backend/package.json @@ -32,7 +32,7 @@ "@backstage/config": "^0.1.4", "@types/express": "^4.17.6", "express": "^4.17.1", - "express-promise-router": "^3.0.3", + "express-promise-router": "^4.1.0", "http-proxy-middleware": "^0.19.1", "morgan": "^1.10.0", "uuid": "^8.0.0", diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index b4044b49aa..341ba402a2 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -38,7 +38,7 @@ "compression": "^1.7.4", "cors": "^2.8.5", "express": "^4.17.1", - "express-promise-router": "^3.0.3", + "express-promise-router": "^4.1.0", "fs-extra": "^9.0.0", "helmet": "^4.0.0", "lodash": "^4.17.15", diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 9143f21b6f..bb442f79a4 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -48,7 +48,7 @@ "cross-fetch": "^3.0.6", "dockerode": "^3.2.1", "express": "^4.17.1", - "express-promise-router": "^3.0.3", + "express-promise-router": "^4.1.0", "fs-extra": "^9.0.0", "git-url-parse": "^11.4.4", "globby": "^11.0.0", diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index 3d0246ffb4..5fdff3e66b 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -40,7 +40,7 @@ "cross-fetch": "^3.0.6", "dockerode": "^3.2.1", "express": "^4.17.1", - "express-promise-router": "^3.0.3", + "express-promise-router": "^4.1.0", "fs-extra": "^9.0.1", "knex": "^0.95.1", "winston": "^3.2.1" diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 8a8f5f8488..3427ead176 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -33,7 +33,7 @@ "@types/express": "^4.17.6", "cross-fetch": "^3.0.6", "express": "^4.17.1", - "express-promise-router": "^3.0.3", + "express-promise-router": "^4.1.0", "leasot": "^11.5.0", "winston": "^3.2.1", "yn": "^4.0.0" diff --git a/yarn.lock b/yarn.lock index e038735a54..370f3f5a7f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13130,12 +13130,12 @@ expect@^26.6.2: jest-message-util "^26.6.2" jest-regex-util "^26.0.0" -express-promise-router@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/express-promise-router/-/express-promise-router-3.0.3.tgz#5e6d22a5a3f013d71833172fe8d7ab780c3f6b70" - integrity sha1-Xm0ipaPwE9cYMxcv6NereAw/a3A= +express-promise-router@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/express-promise-router/-/express-promise-router-4.1.0.tgz#79160e145c27610ba411bceb0552a36f11dbab4f" + integrity sha512-nvg0X1Rj8oajPPC+fG3t4e740aNmQZRZY6dRLbiiM56Dvd8213RJ4kaxhZVTdQLut+l4DZdfeJkyx2VENPMBdw== dependencies: - is-promise "^2.1.0" + is-promise "^4.0.0" lodash.flattendeep "^4.0.0" methods "^1.0.0" @@ -16071,7 +16071,7 @@ is-potential-custom-element-name@^1.0.0: resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= -is-promise@4.0.0: +is-promise@4.0.0, is-promise@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== From 3f21e46725ad9e1029f8eeb9b38ceca52ae1cbba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 23 Mar 2021 09:07:35 +0100 Subject: [PATCH 273/315] fix types in tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/app-backend/src/lib/config.test.ts | 8 ++++---- .../stages/templater/cookiecutter.test.ts | 14 ++++++-------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/plugins/app-backend/src/lib/config.test.ts b/plugins/app-backend/src/lib/config.test.ts index 95b34c8422..4018766ac9 100644 --- a/plugins/app-backend/src/lib/config.test.ts +++ b/plugins/app-backend/src/lib/config.test.ts @@ -36,7 +36,7 @@ const baseOptions = { describe('injectConfig', () => { beforeEach(() => { - fsMock.readdir.mockResolvedValue(['main.js']); + fsMock.readdir.mockResolvedValue(['main.js'] as any); }); afterEach(() => { @@ -44,7 +44,7 @@ describe('injectConfig', () => { }); it('should inject without config', async () => { - fsMock.readdir.mockResolvedValue(['main.js']); + fsMock.readdir.mockResolvedValue(['main.js'] as any); readFileMock.mockImplementation( async () => '"__APP_INJECTED_RUNTIME_CONFIG__"', ); @@ -68,7 +68,7 @@ describe('injectConfig', () => { 'not-js.txt', 'main.js', 'after.js', - ]); + ] as any); readFileMock.mockImplementation(async (file: string) => { if (file.endsWith('main.js')) { return '"__APP_INJECTED_RUNTIME_CONFIG__"'; @@ -111,7 +111,7 @@ describe('injectConfig', () => { }); it('should re-inject config', async () => { - fsMock.readdir.mockResolvedValue(['main.js']); + fsMock.readdir.mockResolvedValue(['main.js'] as any); readFileMock.mockResolvedValue( 'JSON.parse("__APP_INJECTED_RUNTIME_CONFIG__")', ); diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.test.ts b/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.test.ts index 537aac3088..763572fda5 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.test.ts @@ -48,7 +48,7 @@ describe('CookieCutter Templater', () => { }, }; - jest.spyOn(fs, 'readdir').mockResolvedValueOnce(['newthing']); + jest.spyOn(fs, 'readdir').mockResolvedValueOnce(['newthing'] as any); const templater = new CookieCutter(); await templater.run({ @@ -72,7 +72,7 @@ describe('CookieCutter Templater', () => { jest .spyOn(fs, 'readJSON') .mockImplementationOnce(() => Promise.resolve(existingJson)); - jest.spyOn(fs, 'readdir').mockResolvedValueOnce(['newthing']); + jest.spyOn(fs, 'readdir').mockResolvedValueOnce(['newthing'] as any); const values = { owner: 'blobby', @@ -135,12 +135,10 @@ describe('CookieCutter Templater', () => { }, }; - jest.spyOn(fs, 'readdir').mockResolvedValueOnce(['newthing']); + jest.spyOn(fs, 'readdir').mockResolvedValueOnce(['newthing'] as any); jest .spyOn(fs, 'realpath') - .mockImplementation((filePath: string | Buffer) => - Promise.resolve(filePath as string), - ); + .mockImplementation(x => Promise.resolve(x.toString())); const templater = new CookieCutter(); await templater.run({ @@ -182,7 +180,7 @@ describe('CookieCutter Templater', () => { }, }; - jest.spyOn(fs, 'readdir').mockResolvedValueOnce(['newthing']); + jest.spyOn(fs, 'readdir').mockResolvedValueOnce(['newthing'] as any); const templater = new CookieCutter(); await templater.run({ @@ -226,7 +224,7 @@ describe('CookieCutter Templater', () => { }, }; - jest.spyOn(fs, 'readdir').mockResolvedValueOnce(['newthing']); + jest.spyOn(fs, 'readdir').mockResolvedValueOnce(['newthing'] as any); commandExists.mockImplementationOnce(() => () => true); const templater = new CookieCutter(); From 8c32fbb8c4488424cf7a17d8d3d47ac563ae94d6 Mon Sep 17 00:00:00 2001 From: "Chongyang Adrian, Ke" Date: Fri, 19 Mar 2021 15:43:34 +0800 Subject: [PATCH 274/315] Add sticky sidebars and footer nav in Techdocs Reader Signed-off-by: Chongyang Adrian, Ke --- .changeset/nervous-plants-carry.md | 5 +++ .../techdocs/src/reader/components/Reader.tsx | 41 +++++++++++++++++-- 2 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 .changeset/nervous-plants-carry.md diff --git a/.changeset/nervous-plants-carry.md b/.changeset/nervous-plants-carry.md new file mode 100644 index 0000000000..59d45b2b88 --- /dev/null +++ b/.changeset/nervous-plants-carry.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': minor +--- + +Add sticky sidebars and footer navigation links to TechDocs Reader diff --git a/plugins/techdocs/src/reader/components/Reader.tsx b/plugins/techdocs/src/reader/components/Reader.tsx index 2231476869..4f3a52a522 100644 --- a/plugins/techdocs/src/reader/components/Reader.tsx +++ b/plugins/techdocs/src/reader/components/Reader.tsx @@ -17,7 +17,7 @@ import { EntityName } from '@backstage/catalog-model'; import { useApi } from '@backstage/core'; import { BackstageTheme } from '@backstage/theme'; import { useTheme } from '@material-ui/core'; -import React from 'react'; +import React, { useEffect, useState } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { useAsync } from 'react-use'; import { techdocsStorageApiRef } from '../../api'; @@ -47,12 +47,32 @@ export const Reader = ({ entityId, onReady }: Props) => { const techdocsStorageApi = useApi(techdocsStorageApiRef); const [shadowDomRef, shadowRoot] = useShadowDom(); + const [sidebars, setSidebars] = useState(); const navigate = useNavigate(); const { value, loading, error } = useAsync(async () => { return techdocsStorageApi.getEntityDocs({ kind, namespace, name }, path); }, [techdocsStorageApi, kind, namespace, name, path]); + useEffect(() => { + const updateSidebarPosition = () => { + if (!!shadowRoot && !!shadowDomRef.current && !!sidebars) { + sidebars!.forEach(sidebar => { + const newTop = Math.max( + shadowDomRef.current!.getBoundingClientRect().top, + 0, + ); + sidebar.style.top = `${newTop}px`; + }); + } + }; + updateSidebarPosition(); + document.addEventListener('scroll', updateSidebarPosition); + return () => { + document.removeEventListener('scroll', updateSidebarPosition); + }; + }, [shadowDomRef, shadowRoot, sidebars]); + React.useEffect(() => { if (!shadowRoot || loading || error) { return; // Shadow DOM isn't ready / It's not ready / Docs was not found @@ -82,10 +102,15 @@ export const Reader = ({ entityId, onReady }: Props) => { --md-code-bg-color: ${theme.palette.background.paper}; } .md-main__inner { margin-top: 0; } - .md-sidebar { top: 0; width: 20rem; } + .md-sidebar { position: fixed; bottom: 100px; width: 20rem; } + .md-sidebar--secondary { right: 2rem; } + .md-content { margin-bottom: 50px } + .md-footer { position: fixed; bottom: 0px; width: 100vw; } + .md-footer-nav__link { width: 20rem;} + .md-content { margin-left: 20rem; max-width: calc(100% - 20rem * 2 - 3rem); } .md-typeset { font-size: 1rem; } .md-nav { font-size: 1rem; } - .md-grid { max-width: 80vw; } + .md-grid { max-width: 90vw; margin: 0 } `, }), ]); @@ -135,6 +160,16 @@ export const Reader = ({ entityId, onReady }: Props) => { }, onLoaded: (dom: Element) => { (dom as HTMLElement).style.removeProperty('opacity'); + const sideDivs: HTMLElement[] = Array.from( + shadowRoot!.querySelectorAll('.md-sidebar'), + ); + setSidebars(sideDivs); + // set sidebar height so they don't initially render in wrong position + const docTopPosition = (dom as HTMLElement).getBoundingClientRect() + .top; + sideDivs!.forEach(sidebar => { + sidebar.style.top = `${docTopPosition}px`; + }); }, }), ]); From 0676e320491d8f183f5d2de3d244dd849d44afbf Mon Sep 17 00:00:00 2001 From: Erik Larsson Date: Tue, 23 Mar 2021 19:49:50 +0100 Subject: [PATCH 275/315] Typescript Signed-off-by: Erik Larsson --- .../tutorials/authenticate-api-requests.md | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/contrib/docs/tutorials/authenticate-api-requests.md b/contrib/docs/tutorials/authenticate-api-requests.md index c0ab7f9ceb..7422fa03ec 100644 --- a/contrib/docs/tutorials/authenticate-api-requests.md +++ b/contrib/docs/tutorials/authenticate-api-requests.md @@ -83,7 +83,7 @@ async function main() { // The auth route must be publically available as it is used during login apiRouter.use('/auth', await auth(authEnv)); // Add a simple endpoint to be used when setting a token cookie - apiRouter.use('/cookie', authMiddleware, (req, res) => { + apiRouter.use('/cookie', authMiddleware, (_req, res) => { res.status(200).send(`Coming right up`); }); // Only authenticated requests are allowed to the routes below @@ -104,7 +104,7 @@ import { discoveryApiRef, useApi } from '@backstage/core'; // ... // Parses supplied JWT token and returns the payload -function parseJwt(token) { +function parseJwt(token: string): { exp: number } { const base64Url = token.split('.')[1]; const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); const jsonPayload = decodeURIComponent( @@ -120,17 +120,18 @@ function parseJwt(token) { } // Returns milliseconds until the supplied JWT token expires -function msUntilExpiry(token) { +function msUntilExpiry(token: string): number { const payload = parseJwt(token); - const remaining = new Date(payload.exp * 1000) - new Date(); + const remaining = + new Date(payload.exp * 1000).getTime() - new Date().getTime(); return remaining; } // Calls the specified url regularly using an auth token to set a token cookie // to authorize regular HTTP requests when loading techdocs -async function setTokenCookie(url, getIdToken) { +async function setTokenCookie(url: string, getIdToken: () => Promise) { const token = await getIdToken(); - const response = await fetch(url, { + await fetch(url, { mode: 'cors', credentials: 'include', headers: { @@ -161,10 +162,12 @@ const app = createApp({ align="center" onResult={async result => { // When logged in, set a token cookie - setTokenCookie( - await discoveryApi.getBaseUrl('cookie'), - result.getIdToken, - ); + if (typeof result.getIdToken !== 'undefined') { + setTokenCookie( + await discoveryApi.getBaseUrl('cookie'), + result.getIdToken, + ); + } // Forward results props.onResult(result); }} From 1b424445874f2704abcf6388339bf8e38159beec Mon Sep 17 00:00:00 2001 From: Oliver Sand Date: Tue, 23 Mar 2021 21:29:31 +0100 Subject: [PATCH 276/315] Fix indentions of admonitions (#5073) Signed-off-by: Oliver Sand --- .prettierignore | 1 + .../documented-component/docs/extensions.md | 18 +++++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/.prettierignore b/.prettierignore index c4e675a5d7..e2dcb9adc9 100644 --- a/.prettierignore +++ b/.prettierignore @@ -7,3 +7,4 @@ templates plugins/scaffolder-backend/sample-templates .vscode dist-types +plugins/techdocs-backend/examples/documented-component/docs diff --git a/plugins/techdocs-backend/examples/documented-component/docs/extensions.md b/plugins/techdocs-backend/examples/documented-component/docs/extensions.md index a2b02ec866..55152628eb 100644 --- a/plugins/techdocs-backend/examples/documented-component/docs/extensions.md +++ b/plugins/techdocs-backend/examples/documented-component/docs/extensions.md @@ -22,17 +22,17 @@ To define an admonition simply put the following Markdown into your content: And they end up looking like this: !!! warn -Defining admonitions can be addicting. + Defining admonitions can be addicting. !!! note -You can learn a lot about TechDocs by just visiting the Backstage web site at -https://backstage.io/docs. + You can learn a lot about TechDocs by just visiting the Backstage web site at + https://backstage.io/docs. !!! info -TechDocs is the core feature that supports documentation as code in Backstage. + TechDocs is the core feature that supports documentation as code in Backstage. !!! tip -Don't forget to spell check your documentation. + Don't forget to spell check your documentation. ## PlantUML @@ -54,14 +54,14 @@ Pymdownx (Python Markdown extensions) are a variety of smaller additions. ### Details ??? note "What is the answer to life, the universe, and everything? (click me for the answer)" -The answer is 42. + The answer is 42. ??? note "What is 4 plus 4?" -The answer is 8. + The answer is 8. ???+ note "How do I get support?" -You can get support by opening an issue in this repository. This detail is open by default -so it's more easily visible without requiring the user to click to open it. + You can get support by opening an issue in this repository. This detail is open by default + so it's more easily visible without requiring the user to click to open it. ### Task Lists From cc3dca079e50a931be727c2dc86029eaeb472adb Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Tue, 23 Mar 2021 14:34:52 -0600 Subject: [PATCH 277/315] Rework catalog configuration; add integrations documentation Signed-off-by: Tim Hansen --- .github/styles/vocab.txt | 1 + .../software-catalog/configuration.md | 137 ++++-------------- docs/integrations/azure/locations.md | 30 ++++ docs/integrations/bitbucket/locations.md | 42 ++++++ docs/integrations/github/discovery.md | 52 +++++++ docs/integrations/github/locations.md | 60 ++++++++ docs/integrations/gitlab/locations.md | 40 +++++ docs/integrations/index.md | 36 +++++ microsite/sidebars.json | 28 +++- 9 files changed, 320 insertions(+), 106 deletions(-) create mode 100644 docs/integrations/azure/locations.md create mode 100644 docs/integrations/bitbucket/locations.md create mode 100644 docs/integrations/github/discovery.md create mode 100644 docs/integrations/github/locations.md create mode 100644 docs/integrations/gitlab/locations.md create mode 100644 docs/integrations/index.md diff --git a/.github/styles/vocab.txt b/.github/styles/vocab.txt index cc20afaf57..fb69937613 100644 --- a/.github/styles/vocab.txt +++ b/.github/styles/vocab.txt @@ -143,6 +143,7 @@ css dariddler dataflow deadnaming +declaratively destructured dev devops diff --git a/docs/features/software-catalog/configuration.md b/docs/features/software-catalog/configuration.md index 9bac433682..fb5d664f16 100644 --- a/docs/features/software-catalog/configuration.md +++ b/docs/features/software-catalog/configuration.md @@ -11,111 +11,13 @@ such as reading raw entity data from a remote source, parsing it, transforming it, and validating it. These processors are configured under the `catalog.processors` configuration key. -### Processor: url +### Static Location Configuration -The `url` processor is responsible for fetching entity data from files in any -external provider like GitHub, GitLab, Bitbucket, etc. Unlike other processors, -the configuration of this processor lives under the top-level `integrations` -key, as it is used by other parts of Backstage too. +The simplest configuration for the catalog, as shown in the default +`@backstage/create-app` template, is to declaratively add locations pointing to +YAML files with [static configuration](../../conf/index.md). -```yaml -integrations: - github: - - host: github.com - token: - $env: GITHUB_TOKEN - - host: ghe.example.net - apiBaseUrl: https://ghe.example.net/api/v3 - rawBaseUrl: https://ghe.example.net/raw - token: - $env: GHE_TOKEN - gitlab: - - host: gitlab.com - token: - $env: GITLAB_TOKEN - bitbucket: - - host: bitbucket.org - username: - $env: BITBUCKET_USERNAME - appPassword: - $env: BITBUCKET_APP_PASSWORD - azure: - - host: dev.azure.com - token: - $env: AZURE_TOKEN -``` - -Each key under `integrations` is a separate configuration for each external -provider. The providers each have their own configuration, so let's look at the -GitHub section as an example. - -Directly under the `github` key is a list of provider configurations, where you -can list the various GitHub compatible providers you want to be able to fetch -data from. Each entry is a structure with up to four elements: - -- `host` (optional): The host of the location target that you want to match on. - The default host is `github.com`. -- `token` (optional): An authentication token as expected by GitHub. If - supplied, it will be passed along with all calls to this provider, both API - and raw. If it is not supplied, anonymous access will be used. -- `apiBaseUrl` (optional): If you want to communicate using the APIv3 method - with this provider, specify the base URL for its endpoint here, with no - trailing slash. Specifically when the target is GitHub, you can leave it out - to be inferred automatically. For a GitHub Enterprise installation, it is - commonly at `https://api.` or `https:///api/v3`. -- `rawBaseUrl` (optional): If you want to communicate using the raw HTTP method - with this provider, specify the base URL for its endpoint here, with no - trailing slash. Specifically when the target is public GitHub, you can leave - it out to be inferred automatically. For a GitHub Enterprise installation, it - is commonly at `https://api.` or `https:///api/v3`. - -You need to supply either `apiBaseUrl` or `rawBaseUrl` or both (except for -public GitHub, for which we can infer them). The `apiBaseUrl` will always be -preferred over the other if a `token` is given, otherwise `rawBaseUrl` will be -preferred. - -If you do not supply a public GitHub provider, one will be added automatically, -silently at startup for convenience. So you only have to list it if you want to -supply a token for it - and if you do, you can also leave out the `apiBaseUrl` -and `rawBaseUrl` fields. - -### Processor: github-discovery - -There is a special GitHub discovery processor for discovering catalog entities -within a GitHub organization. The processor will crawl a given GitHub -organization and register entities matching the configured path. This can be -useful as an alternative to static locations or manually adding things to the -catalog. - -To use the discovery processor, you'll need a GitHub integration set up as above -with a `GITHUB_TOKEN`. Then you can add a location target to the catalog -configuration: - -```yaml -catalog: - locations: - - type: github-discovery - target: https://github.com/myorg/service-*/blob/main/catalog-info.yaml -``` - -Note the `github-discovery` type, as this is not a regular `url` processor. - -The target is composed of three parts: - -- The base organization URL, `https://github.com/myorg` in this case -- The repository blob to scan, which accepts \* wildcard tokens. This can simply - be `*` to scan all repositories in the organization. This example only looks - for repositories prefixed with `service-`. -- The path within each repository to find the catalog YAML file. This will - usually be `/blob/main/catalog-info.yaml`, `/blob/master/catalog-info.yaml` or - a similar variation for catalog files stored in the root directory of each - repository. - -## Static Location Configuration - -To enable declarative catalog setups, it is possible to add locations to the -catalog via [static configuration](../../conf/index.md). Locations are added to -the catalog under the `catalog.locations` key, for example: +Locations are added to the catalog under the `catalog.locations` key: ```yaml catalog: @@ -124,10 +26,35 @@ catalog: target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/artist-lookup-component.yaml ``` -The locations added through static configuration can not be removed through the -catalog locations API. To remove the locations, you have to remove them from the +The `url` type locations are handled by a standard processor included with the +catalog (`UrlReaderProcessor`), so no processor configuration is needed. This +processor _does however_ need an [integration](../../integrations/index.md) to +understand how to retrieve a given URL. For the example above, you would need to +configure the [GitHub integration](../../integrations/github/locations.md) to +read files from github.com. + +The locations added through static configuration cannot be removed through the +catalog locations API. To remove these locations, you must remove them from the configuration. +### Integration Processors + +Integrations may simply provide a mechanism to handle `url` location type for an +external provider, or they may also include additional processors out of the +box, such as the GitHub [discovery](../../integrations/github/discovery.md) +processor that scans a GitHub organization for +[entity descriptor files](descriptor-format.md). + +Check the [integrations](../../integrations/index.md) documentation to see what +is offered by each integration. + +### Custom Processors + +To ingest entities from an existing system already tracking software, you can +also write a _custom processor_ to convert between the existing system and +Backstage's descriptor format. This is documented in +[External Integrations](external-integrations.md). + ## Catalog Rules By default the catalog will only allow ingestion of entities with the kind diff --git a/docs/integrations/azure/locations.md b/docs/integrations/azure/locations.md new file mode 100644 index 0000000000..13de79821a --- /dev/null +++ b/docs/integrations/azure/locations.md @@ -0,0 +1,30 @@ +--- +id: locations +title: Azure DevOps Locations +sidebar_label: Locations +description: Documentation on Azure DevOps location integration +--- + +The Azure integration supports loading catalog entities from Azure DevOps. +Components can be added to +[static catalog configuration](../../features/software-catalog/configuration.md), +or registered with the +[catalog-import](https://github.com/backstage/backstage/tree/master/plugins/catalog-import) +plugin. + +```yaml +integrations: + azure: + - host: dev.azure.com + token: + $env: AZURE_TOKEN +``` + +> Note: An Azure DevOps provider is added automatically at startup for +> convenience, so you only need to list it if you want to supply a +> [token](https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate). + +The configuration is a structure with two elements: + +- `host`: The DevOps host; only `dev.azure.com` is supported. +- `token` (optional): An personal access token as expected by Azure DevOps. diff --git a/docs/integrations/bitbucket/locations.md b/docs/integrations/bitbucket/locations.md new file mode 100644 index 0000000000..dd65146b63 --- /dev/null +++ b/docs/integrations/bitbucket/locations.md @@ -0,0 +1,42 @@ +--- +id: locations +title: BitBucket Locations +sidebar_label: Locations +description: Documentation on BitBucket location integration +--- + +The BitBucket integration supports loading catalog entities from bitbucket.com +or a self-hosted BitBucket. Components can be added to +[static catalog configuration](../../features/software-catalog/configuration.md), +or registered with the +[catalog-import](https://github.com/backstage/backstage/tree/master/plugins/catalog-import) +plugin. + +```yaml +integrations: + bitbucket: + - host: bitbucket.org + username: + $env: BITBUCKET_USERNAME + token: + $env: BITBUCKET_TOKEN +``` + +> Note: A public BitBucket provider is added automatically at startup for +> convenience, so you only need to list it if you want to supply a +> [token](https://confluence.atlassian.com/bitbucketserver/personal-access-tokens-939515499.html). + +Directly under the `bitbucket` key is a list of provider configurations, where +you can list the BitBucket providers you want to fetch data from. Each entry is +a structure with up to four elements: + +- `host`: The host of the BitBucket instance, e.g. `bitbucket.company.com`. +- `username`: The BitBucket username to use in API requests. If a username is + not supplied, anonymous access will be used. +- `token` (optional): An personal access token as expected by BitBucket. Either + an access token **or** a password may be supplied. +- `appPassword` (optional): The password for the BitBucket user. Either an + appPassword **or** an access token may be supplied. +- `apiBaseUrl` (optional): The URL of the GitLab API. For self-hosted + installations, it is commonly at `https:///api/v4`. For gitlab.com, this + configuration is not needed as it can be inferred. diff --git a/docs/integrations/github/discovery.md b/docs/integrations/github/discovery.md new file mode 100644 index 0000000000..9bea4e3978 --- /dev/null +++ b/docs/integrations/github/discovery.md @@ -0,0 +1,52 @@ +--- +id: discovery +title: GitHub Discovery +sidebar_label: Discovery +description: Documentation on GitHub organization discovery +--- + +The GitHub integration has a special discovery processor for discovering catalog +entities within a GitHub organization. The processor will crawl the GitHub +organization and register entities matching the configured path. This can be +useful as an alternative to static locations or manually adding things to the +catalog. + +To use the discovery processor, you'll need a GitHub integration +[set up](locations.md) with a `GITHUB_TOKEN`. Then you can add a location target +to the catalog configuration: + +```yaml +catalog: + locations: + - type: github-discovery + target: https://github.com/myorg/service-*/blob/main/catalog-info.yaml +``` + +Note the `github-discovery` type, as this is not a regular `url` processor. + +The target is composed of three parts: + +- The base organization URL, `https://github.com/myorg` in this case +- The repository blob to scan, which accepts \* wildcard tokens. This can simply + be `*` to scan all repositories in the organization. This example only looks + for repositories prefixed with `service-`. +- The path within each repository to find the catalog YAML file. This will + usually be `/blob/main/catalog-info.yaml`, `/blob/master/catalog-info.yaml` or + a similar variation for catalog files stored in the root directory of each + repository. + +## GitHub API Rate Limits + +GitHub +[rate limits](https://docs.github.com/en/rest/overview/resources-in-the-rest-api#rate-limiting) +API requests to 5,000 per hour (or more for Enterprise accounts). The default +Backstage catalog backend refreshes data every 100 seconds, which issues an API +request for each discovered location. + +This means if you have more than ~140 catalog entities, you may get throttled by +rate limiting. This will soon be resolved once catalog refreshes make use of +ETags; to work around this in the meantime, you can change the refresh rate of +the catalog in your `packages/backend/src/plugins/catalog.ts` file. + +This is true for any method of adding GitHub entities to the catalog, but +especially easy to hit with automatic discovery. diff --git a/docs/integrations/github/locations.md b/docs/integrations/github/locations.md new file mode 100644 index 0000000000..498da0f24d --- /dev/null +++ b/docs/integrations/github/locations.md @@ -0,0 +1,60 @@ +--- +id: locations +title: GitHub Locations +sidebar_label: Locations +description: Documentation on GitHub location integration +--- + +The GitHub integration supports loading catalog entities from github.com or +GitHub Enterprise. Components can be added to +[static catalog configuration](../../features/software-catalog/configuration.md), +registered with the +[catalog-import](https://github.com/backstage/backstage/tree/master/plugins/catalog-import) +plugin, or [discovered](discovery.md) from a GitHub organization. Users and +Groups can also be [loaded from an organization](org.md). + +## Configuration + +To use this integration, add configuration to your root `app-config.yaml`: + +```yaml +integrations: + github: + - host: github.com + token: + $env: GITHUB_TOKEN + - host: ghe.example.net + apiBaseUrl: https://ghe.example.net/api/v3 + rawBaseUrl: https://ghe.example.net/raw + token: + $env: GHE_TOKEN +``` + +> Note: A public GitHub provider is added automatically at startup for +> convenience, so you only need to list it if you want to supply a +> [token](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token). + +Directly under the `github` key is a list of provider configurations, where you +can list the various GitHub-compatible providers you want to be able to fetch +data from. Each entry is a structure with up to four elements: + +- `host` (optional): The host of the location target that you want to match on. + The default host is `github.com`. +- `token` (optional): An authentication token as expected by GitHub. If + supplied, it will be passed along with all calls to this provider, both API + and raw. If it is not supplied, anonymous access will be used. +- `apiBaseUrl` (optional): If you want to communicate using the APIv3 method + with this provider, specify the base URL for its endpoint here, with no + trailing slash. Specifically when the target is GitHub, you can leave it out + to be inferred automatically. For a GitHub Enterprise installation, it is + commonly at `https://api.` or `https:///api/v3`. +- `rawBaseUrl` (optional): If you want to communicate using the raw HTTP method + with this provider, specify the base URL for its endpoint here, with no + trailing slash. Specifically when the target is public GitHub, you can leave + it out to be inferred automatically. For a GitHub Enterprise installation, it + is commonly at `https://api.` or `https:///api/v3`. + +You need to supply either `apiBaseUrl` or `rawBaseUrl` or both (except for +public GitHub, for which we can infer them). The `apiBaseUrl` will always be +preferred over the other if a `token` is given, otherwise `rawBaseUrl` will be +preferred. diff --git a/docs/integrations/gitlab/locations.md b/docs/integrations/gitlab/locations.md new file mode 100644 index 0000000000..8694cb8119 --- /dev/null +++ b/docs/integrations/gitlab/locations.md @@ -0,0 +1,40 @@ +--- +id: locations +title: GitLab Locations +sidebar_label: Locations +description: Documentation on GitLab location integration +--- + +The GitLab integration supports loading catalog entities from gitlab.com or a +self-hosted GitLab. Components can be added to +[static catalog configuration](../../features/software-catalog/configuration.md), +or registered with the +[catalog-import](https://github.com/backstage/backstage/tree/master/plugins/catalog-import) +plugin. + +```yaml +integrations: + gitlab: + - host: gitlab.com + token: + $env: GITLAB_TOKEN +``` + +> Note: A public GitLab provider is added automatically at startup for +> convenience, so you only need to list it if you want to supply a +> [token](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html). + +Directly under the `gitlab` key is a list of provider configurations, where you +can list the GitLab providers you want to fetch data from. Each entry is a +structure with up to four elements: + +- `host`: The host of the GitLab instance, e.g. `gitlab.company.com`. +- `token` (optional): An authentication token as expected by GitLab. If + supplied, it will be passed along with all calls to this provider, both API + and raw. If it is not supplied, anonymous access will be used. +- `apiBaseUrl` (optional): The URL of the GitLab API. For self-hosted + installations, it is commonly at `https:///api/v4`. For gitlab.com, this + configuration is not needed as it can be inferred. +- `baseUrl` (optional): The base URL for this provider, e.g. + `https://gitlab.com`. If this is not provided, it is assumed to be + `https://{host}`. diff --git a/docs/integrations/index.md b/docs/integrations/index.md new file mode 100644 index 0000000000..d54e1f630a --- /dev/null +++ b/docs/integrations/index.md @@ -0,0 +1,36 @@ +--- +id: index +title: Integrations +sidebar_label: Overview +description: Documentation on Backstage Integrations +--- + +Integrations allow Backstage to read or publish data using external providers + +- such as GitHub, GitLab, BitBucket, LDAP, or cloud providers. + +## Configuration + +Integration are configured at the root level of `app-config.yaml` since +integrations are used by many Backstage core features and other plugins. + +Each key under `integrations` is a separate configuration for a single external +provider. Providers each have different configuration; here's an example of +configuration to use both GitHub and BitBucket: + +```yaml +integrations: + github: + - host: github.com + token: + $env: GITHUB_TOKEN + bitbucket: + - host: bitbucket.org + username: + $env: BITBUCKET_USERNAME + appPassword: + $env: BITBUCKET_APP_PASSWORD +``` + +See documentation for each type of integration for full details on +configuration. diff --git a/microsite/sidebars.json b/microsite/sidebars.json index e6dba1386d..a302b4d8ee 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -104,10 +104,36 @@ } ], "Integrations": [ + "integrations/index", { "type": "subcategory", "label": "GitHub", - "ids": ["integrations/github/org"] + "ids": [ + "integrations/github/locations", + "integrations/github/discovery", + "integrations/github/org" + ] + }, + { + "type": "subcategory", + "label": "GitLab", + "ids": [ + "integrations/gitlab/locations" + ] + }, + { + "type": "subcategory", + "label": "BitBucket", + "ids": [ + "integrations/bitbucket/locations" + ] + }, + { + "type": "subcategory", + "label": "Azure DevOps", + "ids": [ + "integrations/azure/locations" + ] }, { "type": "subcategory", From d35fd7845b786ce3313a6bba6333d9b5254c5b66 Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Tue, 23 Mar 2021 14:39:05 -0600 Subject: [PATCH 278/315] I feel pretty Signed-off-by: Tim Hansen --- microsite/sidebars.json | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/microsite/sidebars.json b/microsite/sidebars.json index a302b4d8ee..bb0e69e5ac 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -117,23 +117,17 @@ { "type": "subcategory", "label": "GitLab", - "ids": [ - "integrations/gitlab/locations" - ] + "ids": ["integrations/gitlab/locations"] }, { "type": "subcategory", "label": "BitBucket", - "ids": [ - "integrations/bitbucket/locations" - ] + "ids": ["integrations/bitbucket/locations"] }, { "type": "subcategory", "label": "Azure DevOps", - "ids": [ - "integrations/azure/locations" - ] + "ids": ["integrations/azure/locations"] }, { "type": "subcategory", From a3b394a26f027c73bf48dda08636694f89d8cbbb Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Tue, 23 Mar 2021 17:39:27 -0400 Subject: [PATCH 279/315] add readme for public alerts Signed-off-by: Ryan Vazquez --- plugins/cost-insights/src/alerts/README.md | 123 ++++++++++++++++++ .../assets/project-growth-alert-advanced.png | Bin 0 -> 235252 bytes .../src/assets/project-growth-alert-basic.png | Bin 0 -> 186547 bytes .../assets/project-growth-alert-custom.png | Bin 0 -> 202057 bytes 4 files changed, 123 insertions(+) create mode 100644 plugins/cost-insights/src/alerts/README.md create mode 100644 plugins/cost-insights/src/assets/project-growth-alert-advanced.png create mode 100644 plugins/cost-insights/src/assets/project-growth-alert-basic.png create mode 100644 plugins/cost-insights/src/assets/project-growth-alert-custom.png diff --git a/plugins/cost-insights/src/alerts/README.md b/plugins/cost-insights/src/alerts/README.md new file mode 100644 index 0000000000..46a4bd2778 --- /dev/null +++ b/plugins/cost-insights/src/alerts/README.md @@ -0,0 +1,123 @@ +# Cost Insights Alerts + +Cost Insights currently supports [project growth](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/alerts/ProjectGrowthAlert.tsx) and [unlabeled dataflow](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/alerts/UnlabeledDataflowAlert.tsx) alerts. They do not require any UI or additional configuration but are extendable for custom implementations. + +### Basic Setup + +Project growth alerts, for example, can be used to alert users to increased cost growth in a project within the past 30 days. + +![project-growth-alert-basic](../assets/project-growth-alert-basic.png) + +```ts +// client.ts +import { ProjectGrowthAlert, ProjectGrowthData } from '@backstage/plugin-cost-insights'; + +export class CostInsightsClient extends CostInsightsApi { + + ... + + async getAlerts(group: string): Promise { + const data: ProjectGrowthData = await getAlertDataSomehow(group); + return [ + new ProjectGrowthAlert({ + project: data.project, + products: data.products, + periodEnd: data.periodEnd, + periodStart: data.periodStart, + aggregation: data.aggregation, + change: data.change + }) + ] + } +} + +``` + +### Custom Setup + +Default properties such as the title, subtitle and even the chart itself can be overridden. + +Additionally, alerts can be extended to support actions such as snoozing or dismissing. + +![project-growth-alert-custom](../assets/project-growth-alert-custom.png) + +```ts +// ./ProjectGrowthAlert.ts + +import { + Alert, + AlertOptions, + AlertDismissFormData, + AlertSnoozeFormData, + ProjectGrowthAlert as DefaultProjectGrowthAlert, + ProjectGrowthData +} from '@backstage/plugin-cost-insights'; + +export class ProjectGrowthAlert extends DefaultProjectGrowthAlert { + + constructor(data: ProjectGrowthData){ + super(data); + } + + get url(){ + return '/path/to/your/docs'; + } + + get title(){ + return `Custom title for ${this.data.project}`; + } + + get subtitle(){ + return 'A custom subtitle for a project growth alert'; + } + + get element(){ + return + } + + async onAccepted(options: AlertOptions): Promise{ + ... + } + + async onDismissed(options: AlertOptions): Promise{ + ... + } + + async onSnoozed(options: AlertOptions): Promise{ + ... + } +} + +``` + +```ts +// client.ts +import { ProjectGrowthAlert } from './ProjectGrowthAlert'; + +export class CostInsightsClient extends CostInsightsApi { + + ... + + async getAlerts(group: string): Promise { + const data: ProjectGrowthData = await getAlertDataSomehow(group); + return [ + new ProjectGrowthAlert({ + project: data.project, + products: data.products, + periodEnd: data.periodEnd, + periodStart: data.periodStart, + aggregation: data.aggregation, + change: data.change + }) + ] + } +} +``` + +### Advanced Setup + +If the default UI is insufficient, alerts can render their own custom forms for actions such as snoozing or dismissing. Cost Insights exports several core UI components such as the `BarChart` and `LegendItem` to support custom implementations. + +For more advanced usage, see example [KubernetesMigrationAlert](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/example/alerts/KubernetesMigrationAlert.tsx). + +![project-growth-alert-advanced](../assets/project-growth-alert-advanced.png) diff --git a/plugins/cost-insights/src/assets/project-growth-alert-advanced.png b/plugins/cost-insights/src/assets/project-growth-alert-advanced.png new file mode 100644 index 0000000000000000000000000000000000000000..03e98fd420ec7eb1b5500fd50988be5449ba788e GIT binary patch literal 235252 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

a^8Y&TAZDL*`Pm z1UP~)Zl<=|T%J7PlH(-(kup5@npR&>Wrpw=eB%lCMFFjR!*N;8G|2$MYHDR-r|}&K zB5u!Z&U#-nfhNu5Wj9M`in-gQi)T#{&JrWkeK67bEgjB>)&!7lbPuxA|g7lGopDN2mjC-)86&C3VL`J@Lm=`72 z&y~c52jo8;R2#${5>%B^+1=JlSWU$WfkJP2pL+1cIJ(~DwZM^GV8k`hS${?eUHi5- z{OGjbtDOC{mk2k1oyD9aF{?O{lZQi-GmvMrho%e}!-P8&b>4sCiHWx)D1Ga{Pz~W5 zXb6a2v0gtbjSb-6=vt`Kr-bA#Q$pU>*B1a49BobHJ9OpSoy7X`{koNcw6~bf+m)qC z@s6e1MkV-5)t>TqaK`)VauH3WpmBbxX=j86u^mv2W!m>HE&6)djN*IhW&|bqrUaLP zE|<4)t4kV;8`WK|Z0YUIH@~y;WiFKP)_*Y!f;3EfoWI?`IdTv#kH%j~Gpd82e+Y&e zX-`;h3CY&a`6p7)C^XY&h z9w*}IDYW0Rwt#lebt`KlEY`vL2X}2AEm{XiA0nm62N*V>g4zLdIQXqA7l=0L^OK!3 zp3`nYt3!PX$i-r0B`DbCD`R_#OP0wA}Dp6ktd#R4(09k3y*Mw5?fjErJ?rrZ5zhcQ!XGpThA`*jA_bWp&jO$XNP+; z_YB;dW$(dJSJQ`SM-or>FdCkp<3j$&P*CBHxQO=^+;#&qY}E^F1lsx1`pi0O(O$tq z$(_RwukJ!9+870I|Kt&LcDIl8!>i#zB%8QvFyBs1P04-`iEJbhi>Q29%g`8_gSDWc zBlSJ%qyad8Ld*R?!sRdGGK}=A`N9=w=cv7Sq>KXE%AM~NGde5!(9fJssX&K#p>?B? z-v#YrjjM}0{A7q=bsVNOi3yd#nbkB@id_ln45rAwcls=1yp+Q|2Wj(&ZSi-ThUR)a z1LCgyoCgEa>#54H9cL&7GV+9R=~gO#kwqw5#0&F}xfLo5@isn{xkF~Pt4Bz{ypp%TBrN$inXryt?Gtt8Xuh>E1 zpgrfri&hUKhC25T6;IwCUnpMp+Fqn;Io^Y82>W&r^-PN70F%rQpBUY(uC}Vwyo6&J zXD!-i3Yyd)qoE8D9bnDeuM+wnMpbHN)&_szGf#dRxgnwJH91P#OG#WA70Uim-B{-d&C6{UG1BZ9|?8+BD-Aig2Z&Rk32DwF*PxXJ{A zLLqYZTW58Vt^Wd`S1*>Na-tTfG&T>rTk`yiFce>rgK_kvja2;?MtQHpu%SQrAhQ60 z2tw_Q=-Q8b=v^;62#6!I>$ozh7sd5UHZ_ye>56OSX(bO-b8$c3l5b@n^gMNHy^0H} z{KGb-v@Uj{%V0`SpP9DSfHdXPmo>2A*4X0~MMe%mvsFddP=$7w%1XQB45l^y`oZXI zhlG*bv2X+N>1DQfi7!%;P^2~Cl1cU|nqN9kOB8AC2Fw|FQPpOc-Ir#I-qi{~znA7< zqIs&uRT=FYwsGdmjJ)zl=f8iGc|fO+R7_4Kj1_SjO{uESeShxse9y|MH4MI>DT9pY z7?%p$%Sua)N%> zR#6v;SSDUB#bd)L`Rh^+*U3+@I>w&^R64IgVCIx-5)3Jj*?oo<2IO>ss!h$)$nXCJ zD*UB4wg9x%Lv)75fXs)z1^T7^o*~|R+#gWnH3zFZY}lfLoGLkUk?k^(oYGcvvpS-9 z*HccSYw-lDXM*!2t%MOT<4i$q!U^`*l}w(We-`D|c~q$iB+ImSzr1)&ouCENfAYl` z9wE1o@q-dM@I^ZI2r(s88JX%`wil&AN$GU+5tk9joWU~W_^dm{|4Ra{Q_AF*&X6As zyf&_Cgve*t`+IxJijV3%^+^+$8q3IS*lWF=;(DG*#$>WzXgz5g!3BDv=;^Di7JIH; z>ZQCcoJy1An+Z0iD*w7F&pB|&u$jGgK z=|3yUx+<+qEi;~??urcJZT~j>K`_Cw-<%C`-2KR{Kg{(xn;Jq-$N~QtZydLcHB>yP z@<$XSIigBm&>_U3)@i|wgj75p+k*a-=O0?c>pyS1d~?lr3HDK}Hh}FarWTOWmKuo#m9Qe5Xh>{Q8xnUF zGyAIglibNToHI0@Sw=9{s!L4+1r~#;ysndWsCL6!is0KnGvj)$V(Z1OjW~b2Iu@n8 zwFeHPdZn(yMv z$60N{d*ZO$C@UUZrT?s=*Kj9YduO>l@-EV-W+wRhqcL)IDT&_CaH&Ze0#e^PR?5bU zI>e7%k4Y4~1uRdwbh%jd(&ZAglnT--XJMzH8CNxqTL5NZu>$I>WSpD^#5N(kG+-eW}M8#nwR%&6(e;(i;d# z@46CSrkR@12;Y=l|DLBez)OA5b1#g1&yb5lvA29Mt?vX}`@}@s*sN>Lh6AfH0+w>V zxi{H-(T?(-TtYnVxG7|`sjE0qxk!uVg}KQUM?pKvMSE|X&>V3zl7lHJeTvcEad#(J z{rCKzL<+rGfG%vMpL+|~bkM|~k|V~?4?TL0kML0M(fNd%8mqmYJ0_jpD0kXumf>Cx z#R<9iwGqe8J8r#;YnECjF1r-Tu(R{%7S!De5-Z|f&y$mva&0Kwg_Pk#@A53WLj@wp zms#J;vp0>kC-fm_33hg^kDz|bx$w1}mN}o;=*2D19+}BPesjF-Y!5kpH3w>}Nm%<% zc9T-){H~Y+!$hsWfoSrqfE&}J-8{(^0>^W=ZtQ2I0F21=012&B+f%!JL_?`XCV%eg znPS#?sei;pCPK8Q#z~d~ena77WF;E^!Y=!@Ji^E@Egugu^9{omStaXD@4*&K@Yd>I z`W{Mz@@`K+=IxmhauIu&XPaamFUBT!!P}*#pIE21Llqknni=@6N_EoL3hF^VqSxg( zx|zB7cZ}qWDg%U_jWgRHC_gbmQzt0N2hPM*CG-3UC2+wjuefjePQYIG*sXDdkkWGj za?^#Gy>b^H#ESA}5IU0BBt(?)vn=cyq_L>hFC(=m+~mbRgu;?>pSFfs#mZKClnjui zynA=`I*U-2i|tq`L;1;%u9*sI%d{#l@TI!=b0! zS_6)WYrRmO+TrNTM#pBwS?}CA((F%b_z`#ZP_VO-ibt*Un$Ech(gllk z&&uDruIotDxoKh&?stI`gEStmVNB()Y z5%=Z}>iUnwQZ^yVo1boQ=S`enL#cwAm4d5Kdp@eDoGDtgJF^J@(EQ}pOKH8YHoe_D zr?75ta@w)5G+yC2-ndfufk#dLwy(GJk_`16fnUbklstq3t%HX#`G9!-tSn!k7mQLbI<-_~H zol9kIX=g-~^KdKA?CxsB&WuW+>Ty@^3|RN)78)g7fh!c1xG_?~GHmPgv3655nr3sm zqi5v1Y#WMvM~cF)r2g<@>$FjWwy{V04iy3;juLakwzQaO?bLArzl}2qbgI68k<`j% z-TRi+v8^`Jt01-+F4;RedA)+V_x5?iOpWrg8i*ZbA9%*w>G_3!hB2Y>VFq@u-k^~D zmFrdCi0_W$?O@uYGuK{1=QHJEKY3#|?6uJUVgVqk&YSFd%#S2MXJwee>zzDPz%gl>$~E#9%Y(|^QuRo{L+wbZFGu*87N z%+WKh{VK8der^V`9l7>3TJZrewbpQ~y#ROs9u$XkX~_oa$T_nx{F5>L@)tD%g^D4D7Q@VTGikopOHA1xL z)cJQPLhmn3XW{azzV@BdOuq6iFLzAScC)=I z0+o>xwQCK@3B8^5 zyR=7}+0I3s1xMg+nk&y@W=qSdSSW4z-9-9dRyRw?Ujh@i-j~}8v=tIAeC!phhe?)C zsSxk2ZtzC1-xB+fyk%NUzLhQ6*UB7d!X5aB=t)GIwmk&`gtwzL7ybD1Jsi!IFzoZV zi9f4c+GvM4fNHVMjgI@67QO7ERW~oO>Cp#0dvG37z7p#gGo}f*kq_9(X`d!EVLwtQ z-q&7jOG6CS5NoZv2EYZ*XORIWM36UhB={Zr%v|K;?d3>qN9=lMojNo3OoahifYm9mt5E`6s#4yzVs{82uCrC~Zb9D` zzHi++5;@}RrLJRW+O0d`1j!L+;fjn$MTnW1SkA?P7dS|f&J)G^ceutra3k4%HqtJU zo6%Jnxx<8SDttykrN&XAA0f@>65|cm6Z#Ij%kEvsRkgV10-GE8K1xhnG)BLWCpbPC zB?NV$_0Cx~U<#+X=F=YhkZSirlc~csOLVMOodq*y_La6a@@f@R@_2k%5Ja3 z(Kmgk-}`xO8G_JYXJmoNNP)m)4NY~JzffHA*|k_paLj6P5IEP_u_LCCrPcc_UAVik z8x-r}mEUW}`Kmm@ZT^;W|MRpresuAKu@-f@l7c4$;DmmB!V4nEd_I&tpfZmk$P4ZL znnr0(jJfv#cx1PU7EKi>6r&14Gc?O`$At@z%ZWVrc6D`WW@{9uj<=11cgiwGE*U_5Y?L0h?}RkLOe|0YYGjFkCr;o#fp1Id1VU2 zR($0rM2lG-jeNV(i~=fhnv7Sp3724_vV9^-$vS}u;b!ccJMlPNM90`c?G9Xxrw6V# z+okX_lFyPN$cwY&VIPiM$>vH)&-I({>z&WGgc4n?aur$8&DB|U`C9fcU(?$3*c4B= zxghmoY*403%0)T0qR5ZY@5LxGKq0MP5b)-E+Kh_n{yk@E-&Ee%^izw3o!QonL-P)t z(wJiiUeraj*AMGny_ew*WY`VA6$sv5x#iA>~h{C)cJ)8QVpWY(iF|BO32w zw8DsYr)dT7q2<+fd!f7sH*u6sshyirlxvf$$XDuA+G|wD7j4eqoD(0S9ep>@4t6&t zg|yCp7CTwJV;0NqO!=w#Gsfoaob!0%+09-;=+TEIb?8;vs@V8`>8UoYGm5dd;W5$) z$V@$vw+42%D6IG>*R`<}9}7;LYa^;#JQyz;!{zoPxUom0PzQtKyaNV)>4f>CYbpG&Q~TW7pF<91CI zZGlhEWxnZ7qF-w(Xeq$ywG}>R*NU)={58qrgAIKhULGj8q2RP{XrV!<#f-C!r<4L| zs$7XSD83Cv&0}x^OZ3_U__!sCSQK$DaX4765vt$CLhHWM0MTE)^-(2+XWq?V5kJj+ zTt;&3s=-C6q_K<$QZK~|0}|o+VwT~| zY_+)WECiTTWCa*QdQbXwtKn=|(ENvSz-RrQv}n&xZ;~7)CZ*rMT1Xs=2qIK@BTKHt zP{C={!SJeq`K(e8wAO8ec~lu?;8C-bOL=WS{I;PY0T1Jpf9Qr=dPpoAjDx4}(#8tV zCH%6QX33w{d?a}s!{CM^JUqK3 zm8EfNL_ucd{?=Kk%XQq+X*e}zGb>R6n^}V@4U+U*GF@oT2Wxrsl-Ur__58`MZlQ-` z^k_COLFXPAy!5?F%BWTrzu`ma$zodJLqpR$+%<{+{gyG``2-N)biCG^V?c5ZxAa2+ z@5jjFql?kX@L(gC1|kR%WRjH#LUO?osV$;u`XY6>HO8jXr{aS_1vLV~_cfLe_SJ5g zoI_Y0%isD4Anoa55F;JT6N^@p{@bas&oH0>tHap?1+#GE>)*cjdxhc*FrfdjVMsFo z&}rlVTZE4Jhvo0O~6DFY2p@9vOS~N7uRHoS#A0NBLj}wx3uESXvo# zfV4t4XOyaZFhAMBdEKZIu9haPVywVldH<|B*vK!8N#XZ3{mrr{Xqkcat(W5azqOy= ze)V7eYz==2yrZ7~>v#00VgLS1ewlmF4(mIX;k3O97TAH4!`O*gW962 zg-^O!=}#JSc~1iI{pG}!P*R0F(t?Chn+;yQdw}iFL_iF>?*EoqQ90w5j^5iq69N3K z7dV)m^gq53*k2a@1U#^V#m_8w%(x=BrD0HtmV%Ug!Fnx6D`c4sczlp|oCs2yIF6)7 zjEn6P{M|=jJ{Z8fVYbC%1!6hOTlinC_0ryH9|NUu%D*WsSz`|fW`iQx7HtOfcN>|JVG`W-{d+wza0=Z|R0M^g$t!m>^)fm6ATp;s09( z^;FFm2r;bMN&om+EI~APuHlNjHOB-aOIq09rXQ`G{}>g4m!t$lqM3J?m?+Hlw`nvd z`k&qk=4S=50_mHp9_HoJlK*W6_}cBC@}6Hw3kdlAlD{$pIKkg8PJ8t~IYZ22S-@Tf z(=z-r64lVZwP9i9$9*YYd>XZio;;Q62B|IhCK z#|`+O-Txow|Nm>}-zs#uKcHLq*e=8KTxU7;_cP?bZEFiYTE61jDW*)fEno> zBYiaKQ3&uF3$5r=D+x^8TBuiouL~|ec!7~h#3+OzH@V#hv?cPzdcoxhp6#5;T3ddo zGik4hHkQ@VO40$%6O9C}eD)a0oHcg)i#y~0`jW&0HKQK$jlpT1I>5#=fE&GrzcyDOId-?Z>t|aNv8}0@23L5 zwt22Q$STU$pYL`K0DPz2^xV!^v@PKRGF0O7_|3o%XL(PFz%Ft9MhFd+cLq4GL1s;nywpRHoOe`)anAT5+kp((Js14MkEf0n9I)La}+3;?6JX_B_Y zTY&QY07eue<=^6J3MLWhGy0WCWr+W6B19q%1z^Yd7>-?{no*-#>!(EwY4nLr;=@yc z-Qalxke|Yr*f9-!5sgnQ;Jt5TuO^>^WkZTnXra3l5(w^Cwn!iFQ8dT$#z&3wvyvn*YSi z?Wx)7J%!IsUmYfx5F7$n+pOUX{ntwS@9}w#WiaN#iF0Cd!3WO`*Zb6%wY7e>ZUc4p zb(IBHaakgWkNvdoQbvZYjc>~cKu%=zdxBXwVYA@Tis`^YLxuIK#tY|hz?`M0oC;EH zKPG7)J|)<|3cbh%by}kTdKNYS3V_%VKr%T>WopIq_vt7J7b(iQa?Cc8(_?xk#yby# zSB_ZlN#XH59J3n$pruQz#&R%1k6zWWeDzH(=UQDA;6ueq*sYK=5Nm|ArV=Cr*Qz>!J0JfG_Cn@6U|du;Y{Df)YUUOK(o@!Ff~C}u4XIt zi#$N!UcoStpIFDM^iyc^_j#tr(*lnn|H;K+Tl-53jX8L>=n+jAC4$L+`^QH)jBeW# z*B`iRqkdFf47t zVqN)*=X1uw7-6@jS{II4!2Yx`^zIi6eCDa|k%KqGDAP6pkt&3!X$2DVU%qs{D>_*u zLXD#v78)E+V}`ElBLTH%wmxo5ztTq`SD^vq+fx-r+RZG0*v#22ceYL~-|+Cx+waxg z^@xCo_nD3Kcivh>S86q)l?HZpoN9mpzfYw$v#)5Lb%?7-kMz{6#Ky`V8ol+N_N81< zlM#0f77reM*ZQ7U@HU4qbVv4!Vci^c#@c*ceFN)_NHY5TUI0ZF@DPQrP288gj9$F- z-)-jx-1gLi=y>f7X@~y2Ropn>dZOg%)fg~sGb&A*oZWqg_$fTrlOdEve7V$%|5T^W zHl{ZKLEA3dS+7ig^n#QwnnnCQs{fl^zJfq1Ol{G-@ob7T6Zj(80Dx`1KB^tB5W{WI zyrn$g`S$noRFFd|aDFQ){1vvMPOK^fe>?wv18xvL7k^dF!ZV&GvJK`52Vk@OrqBCS zWO3=ZuJa;8-AGFSMEC&EMwHN9F&jqD#kEYRC5@3jD^5cGVsjaN4F7^b)B=lI7I}2W zZ1xlbZ@TmN1ONus8W3ATFsh#XmIvQP>WdR}@-#rT$8%8w$&Kd=PuV1Bd;pw!lH7I> z*#o2lg-lzg#QPZ8!_kjUCif@+Cd8c)Er2Rs_)%lqfAX6EWgh>;5kR(<6A4Pf#=?X2 z0DoWZ7kk(9aqE`W0|>)gy^iFXAC;Z4Wz>jBy#hvh=H;$C*cUg%lJXayUktskFZk#mra7$c#K~@iC5o zMX@XmZ3yK?kg)M|uaE;DM4NX~=5CJ^Yj!*p@pt9p24M4ytj>Iz4MOd85_Nfyx{P#)(g^S$-fE?tJr@Yv# z#$7EF&!L9{fXralHmv|Qg#5^!6ySd9Nbmnt`gE2G^#u6rhPC2T&j+3ZFKON>(cT>p zZS`7b$R?X9dW(I;Xhno3c4o#7C@2n$vGs=`1AzSE(+-9XyYi%mY}Weg&?8M|fGykq z$?V{xQ66PsCXzYOA0mas09`Zo8M47gvPW8tvySFxPo(#{#3-FZd2T4(@YtSNVB%?J zX??$&0^B>QF$X+95V+Nvb8cMUHP7kg+dc>2M*VaZ;50(Cf$oy4?{oVxSnKXpAAnd- z_GzsVFd^v`sbJVO&DJ%*sKmGpCw52oNuc=iw4KsC1{;0-m6Ye>Ipwg_Z5K;&O&~I>n zDqWV@c}r(}EO%4r57tM?K{WWs7qc=S7c{AWj)mL{fsLid7!fHQ47~lJv(XN55_YfQ zIXjRNF_~Jq_fS@WYsov%Kf`ywdURue^!(zhcA3yX?&I#6s@A{eg%#XDeM0G1eWKwF z_m_^T-)?5jfSXx9e){ko-75{x4DNFLg-@pMQq8=Ezb zaAdS9)#ws%-GiP)p;TZgcZ*#{%YtXGlOmiEu!8TUQfj0yTv(x$Ue5OX+2oCCIZ2x%yRwKfAZJv{X>u45UR+0%!=B){;L12^9mP$i@5p zqd>Lw<0ZvFC-l{_de-GAQZA|Ny(*L|wFckn?$29W4y*WE43!hlYF97wdR4MRFDSWn z)+rFj{_pYOUXAv4U~1T;->=;RdjbdaM8j zR_SnsX#Eo(Ph+lmhb0W$`szrG8C(9`Ze(h#tV~WLrrt%HB2daQqZ>z*OW;BLX{k3$bn|yA z7||Y#odR=2Y$_#j$-VRlNpX`a#!n3iC1m<;K(@O2VufRiugXW#U8seI0f?sKmq~|v zpAi9v0L%U3=S?c{Cc&J5l9%|WuGd(h07Lj=*;hv0(~Ar}5Pk8(Nul40XhD~RK+)>n zuM4zZ1mViR-F3S4OB5oV>0EY?VI!xIn7!e1KxnA{)gN15xO88qkjKXM`w_a3f?EjO zUWaQ~*WJoVCIG1HFp=yCA4+V>1TB*(AfXbei4==Sluhg)Oa*7R=gBHEQ4Y9a$uq+V z-@CU9)sb6JH8Xg0=?fSb8IrAC!JKKRC5e0q3s?Vf-@A{JsDz*{4{~Bu3`gU( z=w7f*wLVY?n4#w!d0#c@~-Vm z3;AqjAm$ZG$-DHa3Ehqf2f-z-Gd&Dd7%Y|6i@n;WRlM5wxu{9%+r0RC|GSK@?UNIh3U$FHTtYSy)=W8zBPT zVk?4zw_Pb$=Uv3)^q4I1u8B{}O!8q4T6Vs7cFAewG1y{n-`i~StYPziID+>i@kRn# zs12VV@ZvN9!d=pKE|Y8xvu>*O5E*?IT_=Mq$;W2isF>&Qr=NfB$)xxo_r&m8=|Vkl zR5r7|{VZW=bs?O4KnmABpZ>zYpBWCQ82FBKQm;45h=kvNAFR)`)ouXHzDopMXrtAA zQAtY?!A28~_A;#=jGjTzuKVG2UnuHHYt**iu+7*+a~}dnnc34VqXWj`5NPxDoBZ)9 z*k+SHuS)CB<2kj4urIp)sYnWPbOCN_4wAlzSi4Sv33T_qy>0rp~JS%Ve1sA_m>Pf9t+5tUz-- z(uw`my;bQ{Wvb&PLf2z$C68i&l!1ln6Jk3kG_|lO=Qwnydy@zaxO!53*e?M_zszQF z^d2J#STsiuk;g;{G?vXS1Rv?`Z(9a019B@LmGj&c!xFw+@tL38<75+wk3!Ngk+?xV z@853z1h~G#)j@LBun6ZQJS!|}k?Xx=4c)J?M~gJlZ|D(z1D`A#8#>5b=4Nc z*MZK>;3&#zSdT+;Qy38rs!GXA^6J9c;F!WmWu&k!U zPE^=@=vpSxBZ_r>X`H@aK#baFbCumsW7uwxS$-EHo$zU&`SfuE866FXx<;4K^CI&3 zrjoMBr5nls-)HvWTkM2Ew=v~Y@r3P~t3LS}<{7!k&=(UsK`4^eY<{)@{1gz<5oR+_ zz~7>Q>bVxSBNLe~+;l-{&Oc);yK{=Je;qsKs7c?j6Ya8YogL%To@fcOdf?mDud4j+ za)%R(Yj&qYgF^Q3T)#S zr)qAgRj9Lng-t5?&LHywr`5ex&W!jNAZ@>q+s`KRBy8S~AGPb)1KO9mF}^pvxZvn2 z_aux~jbX(|#^g$Xj=xPfZX#!evE0E3sOB z#awFU16`J;`>E?he`i*H;0h&h6b93^Zz1RbNp_zXf4#o>&I9<~YdXIS89OoIp_K7& zhO7&;5xHL{u?0rM-ZZI{lnc{!_9UIV{V1vEK+&zb*Kt7)4TAYE_phTaf|+e`d+ac)?G2m)&A_P1DZn$vRqX zcs@`PyIb@#^u7o0WDcCPQd90q&9MFuAt&h2kP9W^TJlB9;@4@+mBp-gYMv&7*XkaE zjzHk@Li}lLEe_Egu*pp3_u8n4pA0!51Ho4*dta0}nRIXv8VwGK*bu`*b^aEvO>Sl6 zx`-0pc+eRuREVo`#5LH+pFIoRX9)3&d-Otst!FMnjh-YYCOy}1W*QN~gP)`nN_TXR zlpwxO>^hg0J^PoLfJE7xq}00GTt}>)vDqVe4yKKerqr_tjZIq6Px2qTJ~8hJ8qd3L zZpQL#vc6~QArDK_6WUsek0INq42@;D=aQQqqvmKr5if45^^(=f@;pFsCI&^Mw5;@? z({~2ZA8`=|#Vu8U>o*TY2Ch$I(&K>-9LL?(1~jzig>vsj`#`fhUp)pZ8{~ z3Nrpn!R#F)a8GyqXPG1yEcJM^`2T6Q1EiHRwcx+{S2OGHbgT_9v3fqV_)RpUXOK`5G>yhT&^o+5!cz`8ME|x$mIh4wI!%FL{Rs1gt+-_4%V#!WG(V z@#Yp#@JoLqShwADZ{IT54UouLp4_s&OQnQRcs}E&2~*N;vYL4CMP zNH`DALPdeVG@C!_7JkgDDsnT2!Pthb8X!%Y+MhsOR(7ICF4z+10=QXJ#%d2uUp?qt;0m~ z?bq>XSk$X@6H?$meARcE6tn->p$?~1A)1^0BBO0%<}cxsf>su=pV2?bLA$arSokvXD1F!Segl<(W@*G4dlB)%Ya5?y8-RHH!%DMY+8kks8Yw}e zK5f@ZePzgds}gj1Y`(ybXil#(L8bTG^<~~DjwBH_&#}(iLh^XCj64>&HX>rdw zkx^bKeat2zSQ{b1Viq)+Kv3sPsGHPnJ=VQWGU%un077Gq!$;f%1L9f?~^ zWV7jKDQ9optn=oK6s!$?u!}f!s>yz~Rnm9;6 zHu(d4(o$W%USgwK@=>`;T({6I3y+3fnZ(I8n5)zqh=y+_5A17wSRdd@ikqE*$-rpa z&l^L5AJ9fej6FYSLq-_QhR+*V_6OvAyI6HeZRjNkAt9#%0%rrRz4y?ZFp{TWx|J>E zXZTfrX&?B$jLH4~j6Y;5|K7IimG0DqnL{}MI)io|#7<@DmQFv)()*q8@D6>Qa zY1lN>EAnvrf`H2LPjzfFMJ=GK7O@*jNLe;EQkfq2!!fMARCH#eS;E#G7Hm{AXgPpj zvFY6Uq;f6Bo!>468~N&?sl|tu0bTj}az4TOw)!3pq0X0X4Q4@G?%O2n%F5s#P=_id zh}4MfW7c=?(3#{{TI12}>Re~r-&w!kRNx-Q*A?b^y65gYZ`EFQEL(ElX-?n*s4u<# zYdhBI*-b03k54lTP&oziIBF92I4OF5} zo(H&))1u4rFca~o<0B18&j3M}Oypf*Wd_@mdZ^N$W?<&27;5T}pZKlJm07rT2)C|g zt}G0wFEFeDCxcH(C~K3L#)}1C+L3LuZd8eNpiuU$WFg$rrY*Z(ME@iV40Jth|ZFh3j{%3GtUY zh)R*)D}6vyPYh7%oBXq%NB2hDzm+0l5+G8t&pN9CPf#}HRdbucFLh=uoZgI7>)E27 zV3m>1?hIW8PzK7ZarJFKPX`)R>nZ-+zRfPi38QYr}2-Kk7KNd={0N=q~8=DT0q zdx^;_e>v`_D?(4c93QgN9gQsNzIg1y1XbQB`hJ3VF^q7SD z?!ZfSDE#^%NFpV>&arBYeprPzBk1Afx9NUJ&%<=$Enkimdr*)cTZw2zx|`L-k18>~ zHrh>l^`O7kX)e+XER!7V(W-S{j-24L;_54Hh<8xvhg1OjUn1`r<2+yUNe!L7wfP3j zc|m!eM#M|k58j*NCMid51e5c5Y40k5-rXZn9tp&&4EqT5yBWwwZU<3vsh_ZTNA@`G zz|C`C-%vwhZQ6UkwyTDcCS#^;%@S{4MKQ_%Enc3gY z$!_^$5jb-%;U@tBgKOCV7jjt^XXOv_;xEnwKu^g)?qd zw+z*_c)N~SwH5^PR)$1N+$>eN|C-6B)CbRB3_lePmrOOi8gg*}P;V|nnwIRo+k1BF z?Kw->F-aMvHHb<77345Ak;M=4 zc26cz=THTJEGC>@VxG6u;(UxrpLksHB#B?XRbEm+1hed~Pj~C{l`r-!UO9v-%%6z; zMb{Qs$Mq{(-Oj&v!%utCXjJ*8JJ}IXmtn8AzJ7c19q|Vo-dUHFpCBbpQ{k)_vUI5H zp{aHVD%-J#`q2V8t*!|f#+qh2JJR&MW3{=czKd#19cSfWF1}HnD4a20$i;6rTC%9o zZ-;Un)SPfqo_%sbgon%cYb$M$O0`v@wz#i8QBRI-^hT%;7~^TfMfbJOtOT^bPx^_i z^)UkW`~gHPab)T0-}d|l{8&_*E-G`Z(()3nVg@-2A^G*b>5$;-SU}kFi}#nE+k1!N zoj4I=c;AQq;cN%pFgQ>iPO*7nGWuezaJKfS9FeNnu>IMXAWzCl_Mr8%ecsrh4}%;f z7c=L(oLSaLP-DR#tK2O|Z<<@(@pJ8;7o7AelfG>*6igrjnDrC`DYnYHnkapzKYpQ` z^?LULfgZbpCyMkub76MR{HG~*T$NYHA~U7smw75$^a{?T6(eLU+i4@@ggrm*C08%9 zY&LkX!}Ln7ZY4dlvGZQNu$^|qA`A4Nj#ER-AEKFXkm5-&Urb5^Oe$w;-`O`X@hy;3 z(x<qJ+YizSg`Ub9&SN6>ES2lPB%*oMap#H$KvSBD1e?^wAHKBZim)$lj?h4QwUqS&`L_8060vTfiI-`Z${MMCC#djl(a zuyC5YvMZI>hoj6KdV-gCGAngWN6gzQ-iUrGqs{HhsL9I=YtP!=du>ePcW}e^R`dkX$MF>p%+I-Hcb%Rs_${SZSM{K)YI4I z@ULH#3iPTH!V#5K>qC3;CjDt0Z_~n#+G;N3sNH~h8rmC-dmTtC`iX5+@$YVo${+BO zB~~wchdcN%9H}_rb+PU0v9o`aIkS3BQD-tri}a*PI>2Bc{&jB86uQG78NFteuw!S& z!nLFyD()G^Y4g84T*4jXW5v~=Y^}q3;U50kyy$)y-e|k(A4n0#i?DVHeXzHe`jtbQ zWl5F6boNk$4!SdEx3laUg_yAgu}GKYc5D~!s)W!0mEGj~vu9kNe6U<1a(5Fek-X3+ zXwgxUC(4oCq8IS(J;sTM;HXOiyH6r@kY#MS5Wi(-pmj$SH+}jkyUP@XoCJ3%qk8y< zd!SZ!X2P#ntLmGL6`75T=X|EiZctP8&QL@SF>e^+YAp+}8bc1Mf{3OjB9p~25%n!@ z?(BX&^OTokl-OPIZ@(JsX*;%uZ<=bK;kdk8#%^xES?F_H?Q=zOw*GgP5mcXZ!v3CH zgeGORHRYxic$$lKvY@Q`c&6^+)pNzk*6M3+pP_Q4lwVp5|C-0@{AtjsLUD)n^IzIu zQH18Y9fz2P<*T(*N1#=ZjBipK^&p|i?rMSVS9za5(lT?ZMsRs^j~*U6T7PqpmBsRX zea1?h>u+@il)e%YSJ3at?4gqa?2@sfs9MU;3H@(xf5epR!VC(?Uj z$0vTkYNtCJdV*cq7EV=32@FEKv94anw--vuB_@D|M#Qi&(DE90NNA-na~g@=BzYLn z3E~ZCAry}KT`sfwMnUifA78mpVtVRXG&ijZ=e2>>(Y4fsjpe(;_$lWV)NA=*e zegyPCLbwIZ4?7-{5BS=wXmzhrm49nBj4aBxpYqwGa2LT$c5_!4+R3VqALjeAtKvq* zH^^{EuRAK(|Kx!$w?pvs=uH6lu5md&E6MQ<_nqK>7U6~KKRA`S%0V-f(GV9K(dHP( z(9CTK!!+#hc~7(Xwm|(Gb#?pt{_O<-vPmyobR>4~t~4!gUBs)pW;`MkCKAi-S9;MHN9Pf3>GJK^hpKx z;OBhnmU3e4=`Xw+98DvK>eX=B`GARPu}L+h6o2?4OZYWS!#Z9sfdT#5HiRCP7`W`y zdtG5I*VeGkX6SX0(rQ0Yi>fbXwZkFae_C-CMp}Q%(e7Vy^ikg3C1=HYYVJ(dJWMH` znZuMKqLkFb#b#_MHj?&|(E{DeaOX2~EW_{ZThjNaN_;wg_|r2>9RpmZa#wDO#&M1b zpF5PsPzO)pMzXzd4wQfD@Z5)4c{C}_D^v>rYz}E~V)iXZ7M^fVyHbfc4ogRAmg>*+ zNY|UK@3Kcy;@(nPA6J*Z0j0dS8RWHyItO*biP|ZFG?JnT=mL_399VA1w|*ZmFuE$e zN)9#8R&DkP1ANU_uuj9H!+1I0_Zi>TjP`Jnz({2fDpA$B+#ili z?3rRHoFw#BR8oDNpdw0k@*v_`K{wdXVICO8Cd`0xR2&=xJk>sZ#_3J)!Qs(9KW2v+In*KFn>SM?qG;Lw8Z3fIacCki~`hqhA}{L%p4k zK^?#mc*9uLw{ql=q47tAxTE%GrbQ1${huvU<_Ys0=+N_;lq!b$=X- z^qcfTZGO&2o|f!AdoM;FiKCQstkA!wALy#jUrl{U+;;|BPj^dgjO*8)?TY@T)aj*L`>RJ@ZI|)w zJzQq3?XYu_kSXx++0hS{a`WiSw}aQG{FwX^?jz>hnd&_5ZlSIn+&f5cFFk25RdW`Y z&HC>h1{(oclFHzfz9S1=$|YFx9--8)Nmk6f#=Mx*ZQe`Is_V~u@zKBO*0oz|p_I|9 z|Mh`&#?ojGY2)s0jJ-OFI`m$}dcctq%Gt7nhs%H9?m6EszT$nW$mAUQm9~}q)xeRk z=gDcxoxLzl+u2-?FMxNrE7hTbyJDs>$40e6u6VWlGM5sA`Oxe7XNuv)sik=@mI|?`ROmjNC-IMb`(TJ)TV{kMqB^aXA&_ybOCkAs zgXn~0as1xSxXz~a^yXN3xg_kTXDcN;Md(6hZhB|NvFd*6Y#vvo*_F0iNLB2(ee(}V zv=c&TGGjI09QuD|@BvnKr{$yYcRkLL|1&)fX9&SRf|UPH>XDFcan=%WY-vQ#{Y#hg z6HNNEu;*BLY*^AJJ-Fe!dwYjqLVQVZqA=r*iUs}880$}DOOR-Z0SZHjpfE2LFh;B* z{jNVaKu}(-ha>Re4A4wD%;67XINe?PR2`qbVr>|gMfC!ACG}IT4?lPHKU0h@=;Sj2 zhqm#%kPydCA5idDPD|UMk3*i10X9}9xoz1GDqXKzg=T9J7oyLDP`j~E|<0Wa=xNKncgt2xR-KB zS%W(X4kZ3!{lG=S3`m6+kb=H3t658(BQzJG90nDQ8fgBhBGLq0@W)7Z7jNch{$E`A zAzYc``;{|(x-wKMV?*!ubIE`uwV@LnJ{o=_Sl8pU?z?;U=(CaY;gCXk2o5Jn3A~1p zI3S;U%8J0R5=)>mX^)z~(rPP0#wbKZ9uz8n^cbWLL!RbFqK?U(Oa4 z3&2hfhu_T41cqcRVw)AO#Ol?FUSBot!8|bb;~%(yoMtbDk~qz139eI*J$|SA3)X@$ zz$b7H0iOb4A@3`HxmoB_b04_k`x*tO4Y$W%dQBfV5>nmIQGImkVVYTn@K|P}wcYO* z`%obA^}a8b@(hO`i^UgfRY`*=7T&~918APDMv8+}J*;+;yZKCzPy0!?8t%%zQH$S- zB^x;qwWZR=^xVgAN8DdFT9kuSx*(Lbn0(vM1Vk4Z6Yr?J>0;z!9( z`nl+fPaDGRyFx7BoRpc;oy4|^Rv?^^9!V~+cy17=8iRWK{yq0XEPc~`*`J(Ve%X{U z3ea+&PTXLL@2T%m$Sc?s0ZkzSe&NONwCLQ$%wtd=2sT*VFiks%Ieuh~>%UXu2mtR=awpjOMQ%DT$trwox$j4Psv0WKClj10g#I1OffIE~A z5XAy1_J}iRbix8P?OKo1{p*YFd$@jaQv>nKpQW~PV&cBL5qC$^Z{Idm96S~1$-8t% zi)pg^1Jz>?vQE5GIK3Uv{9_>)UxP}7?{}4m!xhrYsHoNr>^2{LFzPRpn~DVl0kZ&Z ze&)M|lt!mn6B@O3wc ztIB#5uUa7CJx31pwEd!}%v8+aL1~98r-(%;!N%~dWRd18c9@!ljtzWL1RQ+-R#^Q2 zrb}&Q;FVPE`ksn`Dq0XI-}=UIDS7DZwVAwYPgb)V z17BX2%el207W1+9+>5dFO4*6oKQ8b~2Hvq(#vhtKBgKuvzKf>(%@4{WH5GAcHCIU? z={vn5B&KI#NTs8Bfr*5K)HinhQ)b9aEZXpQD&`nv*eaRdw+eAR-qp=p#b0E}C?AN; z4TvHN*)N%;c>9kQmJ#r4L!Y@TE!`mNHz7~Q3DHR|l6ssnBS$_z}5=q5l8G68`mRmvXR!Cl>wNG($tu8y;Z#Jkq z#P1Ub6mmA!>k~VD`RSe?D;l`Xh%Lc#GGu8eJKg` zkhCCYP?M^01j(}#3BUQ$pAkX#UxI$}EhXK%$wd2V+8Y;}g-!(DeK>iHDn$e>aI@V& zQl)D2mngV7#$1LCdDjaGh^?n0a-z1fTWZkhS*AwYXv@fgW9# z?E~AjEaI5_7+pAh7yF&&`^<3A4!Xz z%FCSZn+Q06MMm7r*4&|z#y(m>UO4M`Ay7!7?~|(;+3rbyw%t2D(Ft0tDAw=M({@W^ zfg>_5?7Py~J^G*j>1~c)APnG>e11oT`BeHCa&U`XhgD_#M~FY6pn*_+IQqxH&$HD{ z3nNAl$&_&$nX-91J(Yg|{oEQMx$FeGT~9MW=wIva<3$D3$P3CV=fus<<<_uoy)E4- zb|Gbt>PFd9AoVM0c;*jO7F5JxU64FLNoq&!8OVZP|(3Ua2vATq0`X%6y1>S%ppZWezpJ@JpVEuFb z%e5;QGWnxISe==vpb{Ytz~+rX!aA0dySVAAZvJ!f6_gVd9N%GqgImG^uis)u@YDDW zBaPElW*cl!ZFCgbq3K;WS_dH;U*_c&;6k-Tuy;^54EQ7oM6E~cX zb~I9;(!fs)0W6x(fC!A09c@~z1))F51QCSdhdng5m(|d#vyC9eeTryKkB=b-bwT2D zQB5RWL%jKHfkSNn1*W@$$;pmz1F{6pvfUtRy(O@=&`UOm29;WZ89azhn?vuzMr4jn zuAaEOd{ee^C}0hcO_p%0io=S_9bllYsj5BoBq*AYr-h!z;j4Q9syRzx+t3hv2U5WW zBo)MbJ0h`nOAiv`6S%7=i37_O<7_egCj7tA@OZK5ID#^TVHiJ*^|gcXAlbU!0#LA3 zA82`L5-54yK$Ifab=SchQ1O8+HCY;=|C{{DFDY(kTwx9;hxC8>Q&nti#7Xe-gvQ{7 zE6#z=khf@9F=hC;)2H(kuVL--b{`Jhsi&04tEB>7KR48X|7{a!;-g~^O-U?h-M;)Bj)Z4EmVC4SES4!qqk(lFx^O=Ik4mCCEAZjxofVx7H`)tbI> zSx(WI`4>_*M7XfjF(?w$q@w@u-U~a>pv9)Rj=@Rb%VRm(OK>vxXI83R-1xEZ24mIY zZ;oX(%cVG!vo$oSTWUIbnuF#{F{IvQ;MCAgx&^UV7vHZ;x8T2wg|dmK8+ZO2lNTc4 zzNl`NcK(Yc>QnC8MvVp{_r$_-5Fu(SYMByTm1a*nw}dFYCo8JDrL~u?3IKsIzMnp> z5q3=1J>HI;#6pjdS)A>A2G3~7BZ)l@P>;{goUE=)Y=5^5;@LPmXmaI@%LsX85|Z;x zpcKuEe@&+AfYjE@&bTST-gKZud|*z7mw)n6|nwpGf@GL?mx1H zlKa*JN&ZF_7&cW^?-L*LW=np9p`J4kKVZosl-#w{l%u5Ac)`-CF*M$ROB_0XG@u(yfs&xeLkBCV8NZH~S((^i zR(U`6ICkHYx*I;2Y^X)Palg3d2@gu8-GMwEa2c{{8n-@1x;UXvRYI#RVbdw-RnuFE zmM*r+l1L)) z&s1vNIllzbcW9T!1D1T}l7RY~zQjyfu=o~p*9@^>5M6Gq7Z}`sKH(TvtoMlO0EyeJ zW~IOfJcH+RqbwEV&wa>GEh7@VcD5JRRLJDqscjpiTFAdT-)$15wsw-x>3L0GamACY zd^dxKRRpXWOuV^g0jx*;dEI~OT5aV!xrmUkqSOC}} zecQ3NbK>m#4EniM0&%sLZZJ@kAF)6c>GZNX$u0C~fPK*?bG-Q=3uJxeM zzTPhHIK9oYel5QMji8e9MkBboUFa7O_hsaLpobNhubX)+8sY65D&0k`YQS zKHXvPQ_$`=$f`P?5FNSF#}eM#n^j?-MNk4B5gQn3Yx7YroGX`58 zDIMtL)93K&&;RpMw{W>V;4*r_01q@4z{!V~_(G9Trb!2(xB3CV2wi->;I7_|R!a~X+@((I&uB1_+fLvMIpd;J35geyoVlZ6r%lvHkg1!xZ2R=o&Nn%~nsNMr!dZJzE08al@mjP!wx8q3YTw1%K!WonUtmppe?p?QF zGsYn5V5qDNhCHY&-WN0=QXJbV*4SvoFoJQM{yGit`ND;V0OAX6M)me^K4XaADZ^4>#*CuKZE*Ox=1ph5|j3!?7-u3 zXfW&)JtmR}=fks(>n}{~*Iqa)u-NyM&9V^wOHKyrru(za+M=C+e(%$}byMc)-@vJj z;3y^zpO+r_yyq+5-#8d*eWd+|sddn;E5OJ<9qdqYhtg2uprBD@e}iGMD0dd_K=m0q zX>nhhuZy;b^$#NY8$#T2M9iD#5CdvhsImce0If$OBLnY}LE(wG!VD!9-TSss_%wU- zcuCSNw^YWjAU-#Za1@$qxzuqlt9k{gd&h;E7TgYZnPQ=oXkZRCyGnCv4PpQTo<(lA z#}_Md)$5O|+I=Ui0=f~~@+HVVmzgqL5g~MWN^XyLCX(!MWyGRFMbqIE>^@4>G*@FE zkg+I9GeNOl68>lX&Akqu-Aonp?YVN<27JHyxc>~dG8f9f{tIZT?9@> z7!um=#VW12DbA3pL(FJ|1KYxs)XlRl73#*l_2DY!V>m)G80<1~+*#n^H6SD89q3YW z2rB~WXi~Ag5(_zGO6oy4w_w9G!Al9-`^s;lb_AyhvOBHNo32(Zj{<8Z86=ttKBn~y z&JP|}@D^@B+^XjbKcI*gB@gQz>Rw-)SdX`K?@wQ~kQc&Xh6T<02AvHY-Wb>+mK3DR ziG;|c{PhWGStNMjzp zY>jk@g+Y@?s~LRMSKTChtq~IzHOndcvZ>W#q^souYo^6Vn(d&-IZW~v#xS`ic^5{Z z=@LeKt`v(%vI+Kc72fO@=UHEwR<>J1Cqn1(sm6Gd?is)8d@=r7vQT$Ku1LQO5t8N zKKH)KaIV6($vYA?Rl0y~Bor1e6t`*E)CN2)$o9J7!gxUb#J&8MJ-DVp7d2SODk`v)?S+mdp#Jq{K(P;M?4V^{IFM3X2YsR z$6G$6--Y?0dR8XmJDO%8QilEFIGBtjFERAvPM0-WTy|$7CFz_TPzMt$L20FdUd91L z-XHLdz<%3%y(|ymj}r-hv#U|kU@`uRAfWNzCgZhvQOK6ozu7KPS125guHAW8@GF5| zCT@5-c4v;}4Sc4WfFkcAHgRX5FP} z-_&QVzrp8UAS;RlSyAbRLYCV=bLIX^<=95mpmo!mdq#UNOlX+C&1@c!o_*ZN{>uX0 zj5(d4hObBP9X5NmbwAXyfN^GiJ+d}u(y;T$^SdfyDOs3^E)_|701ylvMJGG$M(|T-MM{RCrU&7 z8tUM|%f`wA$IpK%Irid}*5%8EJkPxzcBRqFo_~(Q&zljWe|EXym^=PeIqON$iHO7x zmQAXra;-M+K76o`U>Th)c1{X$6%v|GLnROaAMxcszW)aWQ&H`as9?A5$;JMlV^V$RwHerZu_AsF8UM zsp|P|cir1!inqmTXb3O_n3E|4M|g&wT@xJ-h`VJj)YRsG(G-tcSlXB5Uk~`V>!RN5 zLwV)xbfW{z zEzt^BS96tPnzC>zrlQPAdoeTY+>+m4?BA~|_Tso0{QwcZ9==|PGCpCb?WK6S`Kr(P zJhY}`mClFrAr&Dr@#=Ct0(oQ99KDm1Q6R~WAK^A`-)9j+}XBkE}EYEL$iLc1gp z)m-1V<@Se6E9ML(2c_=6Mx+K5x_@S?lKJ_m@o_QagJx-FAJMn0G0oyqE>4k=fI>Mr zTmt^dOWU_qvF6^j@n}ICkH+4-RZ(nGmn*n44drp4arUxVWFsB>JMIY*uU#Q^=CQJ& zH+Va371E4=SCINCO3Hqm$f?vU88xzl#a-g(eg3`r|E35_%1vM|Qbx<0ZdH)J9`G$- zLkSwiTG@T{R8A3m-)rAJ+&KadpDwN>9fpH)}c9YB_Z8qT;m(O9FT@oKG*KsY%Hhrt3-C zC2l-+qbgJ?4OyK5uqr>$vkm3wDMuvNMJwDY7n=#i(VR zyzpz){W;7kV`thm$^qs3i(hnc=EfQf**Ck-7Qh+qqd+LnM2`0vM>T0Vo414FeiX)N z+3q{{G>z>qA4w^(K#Wnx0EEv3vvrZo+GbiS3`sU%Wlc`HlK?z7xq%I6JB&Dtkhx{; z-Ao`zeE}z1HT6^-_tjBD(F~v_TT5Vv7J=lh40j=2qh75itQmg>$m03zE!OK-TgFg;Mq z7Bf46#R6nXv0TAhtecRcg`U+Oce8dS#H{ckUd;tSv^B4K##(OEMQ0lIkS86SZ$2P1 zr9U54cT%`+9dk}FqNcHU8(m|9`!>;{_5enJ%wzGBy*>SaZtyzE0?f;=lpPUrxM}s} z>BRmVnEkfGw32Met+CS0G~OTTzJ2O@CF6x!=A=WO9cfu(t$V z&ugpHlW!Ry`o&>Q)}P#HUR#s5&Mj8QQB*v++DwT@bnWHBzI5*yGNT-@@91=I0dVsM zxMM?Na=1NnpUdUtLW|gXxD&j%nlff$|CIsdW5C(s=f?!v06Xy-)~bR#0cG70z~nu%e8K>zcGciUFtW!)oA3ZGFMKh-hVB9FS%z=78Nb%@()PbPVM@^GV7a=)YVMytJk+X9 z7O^+)F-Zd^LR_v%ZCM&Hn;Kyx~@Y@U=^h1u>EK8^{v42i^PpoFABykDiTJtBy88{G{F4uYhX*B~&T+5o2Yt!v8 z5in5Jay00PFk;vW?6`eQH;Q(mmKyS5(x6kxJC!P5H95 ze@noLnu&yho!sjx;w5*gO1MU06r&tEu`)$pA$sSd=)O-9@$0MD^`uoV?WKkwZ~E%H z(a7uLJiYHJa+CpuvZ~_?TX;F`lig)LnhdDviR063$q0Y(&l=!w1iWj|TL$06%v@_T zp#NpUWHjF*k^-jKCyD)55Ds^!Hfw*5Bm~-nJwR&ETl?gNI2)0iKIGFUx;`zsu5eGU zOJFd}rY7albUUbNbU`4mPIB4t#DK1fi!)H#M#&-$l;~%W}dc_r@ zN*{L~7xh?}gQc5p_oW#b;P=F{g--+U-?0)&moqW%Pd1~@iJDF*6H1&4MNg>Y3M3o7 zN3RIhu9)xqUln}2GJrm@x-T6(-aoI+#EO2Ql@BDBSSLEYet1=%wv%f%qujJd z4Hm#R$&!=ox17Oxx+W#jW<=v=u$mO{*4tbb+2(v3+dL#?>usL4TaVUc6%O6~qTAg? zbzd*;gxS>RJiC^|{vQ2=Iq-VGUlyH#Sdy1>FDUA{l?Q7FWWjkJJVKnrMk~Wy#7?wM z-(L1O7g+Bn5?RoJkKR5C%Q-e+sE}TM1Te|f(fx1`~ zUlGW<8s^IIUSR+BQmhWVZ34&j%j%7f--7XlC0Fr+UTCFHvk06WkPQiteC%d_8%&(9 z&W9V|j;z1AxIUhCbH95FlGu|YEAn+dK?@aU)} zh=e9fdyXd{wJM^z|2&ROQCog5C35xiny^}LrGLs;^)9`&RV}yk>eymepM(wpoBlww zGQy@&62eOQ(`qg+RJPr%Dit-c9{wD6zOuv!CCbSEByxB~OP+ntD zrrHgJ7&a}%y#* zWtOy;7QZO03G2~588ZJ`>OKd|k$i%>clNgt`stWfR`h(g{yJ@%6s=>lktzKg9IKME zXu+Zcp|Mwj+22b72j3v#E3<9funD7+9lh8=M3g3-#YFoja@ke6ET z#nNSiVA|H!$-HYXOPCH~trE18n;0J{XFiW}otcdMfaWQ=&(?5t`rDQfIaLTE@?xuY z@y@iS5HbWA-L4&glsN5NcVEv?Yd(yos9mjm?I!*j_k-}flkAD=YVIlyLM8i#feD$m zQAof67;SfnMJVlB!QxwFn(gt5{^GkYa!6GG%FQUA*rK< zgzk8SRt`i5DKB_cA`Hv&wx@CeABY6Ly~rr1C%5R{$Gy(qneb`sl@I4h`$=_Y z<&HD?baPw2l#ihR6t9euB8YxO|2A#nARc$g{Iz4`q9)2^CrTn;(|DCvj$?@ju!jbe zr54AaaAg;f#7$Lm@s><|*vUkkDWo%8!vWKPFDg;9h{zLXbqC4Ji-+`qg&pRYJ3#07 zO*yNaZYX#^W~G;ORiA8?2iVCT*Z@1IDB6HMdab4vxSrk!wdUdC{Bzgt{o2Pgyl?QX zvf%4=8(Peqfb$&Y$H1XpHmF`IYWW7;mi=|nc_c6%-3W|_x9P2|qF^b%l}M}hYcCx4 zPMv(;XvmRTR_BmehCNK)bl=>5x88mV&P;tj{)!d*0fgKz=gqP%7cW7?AI%3kKcNFt zY?a`fBY#MEoij~RS=#aD05-N?+3~*r?1<0G;Kx%5S`)wCi4_bg=u&dzX4Eb2RAZ zfC$j(2X6X$OUP3Q0vE0K_4zUP&~=$LO`SC>&$UwvwKOX@;pi!U;~Guf0ftVfH8m4) z6Y8cD&Q0DAKB3Rj4~#*@S;y1m&}$@_HKUJ2U$Y9|!`Z;;ZinRkBut9z=e_@&p`Z&`fDIN^8|HWV zG-?_6twwIQLeUxqE=Waa$P(#d{b?=<9mdGJb^l?+289SSl0eKOsm@Dnjd=9>;p?qk zII11sCpWq@wIU^Zimgu4m-31W zHbhj*1u}=o1aNzDfIgV7(xZHBk=p_Uo=qia^mJ)WiGOv9h^etLs|f8B=#jbH<|Zk- zk8{sYPMlf>BAc>H;w$aA{_dA(sa8-FYs#zxH&%ZSt%HtATU^p^z2ZsX2}gg&%Y(|^ zi&E#8qu4+f`m^y`Q_DN`zq9!22NYD|RtuU^w4AAY!1(rR9 zZX=YdCTsPUv}+Cy32Io=k|0EkOVY6raJ`%S zU6P-hXK;!$*sGX(R?U0d$IioXMwM=$$GlgN*v_*LcC~C)5bZgbF*`1>cBVtT8mfDl3`V>7gJ_ zzN$sfLC7mq5x)K&Ma6G@oy6;Y!L&~O-CFy?UYeKXTQ+Jt@R2fQ4+DTiJ`t2J4_Fp^ z3YaPUm=)5(tnl4oldkMj?kdx?Sx)juIU5BmUaC1b*rp57v*$l5pLZjnm!P#EjC8eb!Pg;bwp?PWEckzn~!g=mYPX;t+Pq+RNR~I-(03pPUmGR`v z;c;t!Wq6_eWkC6@WAGshBm*TcO-(3MiMTizHJb~co}Pey`K?f5!{7@~h2kbr+6KaW zr~Q!I*n1zaM5t)&9q{M1>?&;2bW$0li*M*yiPc8*Z;P?K@Vyi-CDYuKa58ko|ZK;Z_lH2fhF^ z+?w3?Tl3jeH*T&KtEK6is5!=WZT$*cor%=TiQ_r5RM5;}yo(lQq2 z?IUCx+4=r9aXQlO%PG5FS1#VcIsr$n0<$v}epu(u{~U9s@vlp_)IOcZZ{PI6nSb#% zE_;!Ss#QPP+sp_zPZ@`@zMZz*AOgEE;hX}J)XLAKC_u8p@lnA zrC{f&kS*a`1k(K&0l&MSWaA~UZv7HAMg`+&r|csBlJBE})VHf<)w7Z<3sw?Q!q2w7 zWle;Wz`ubmow~49Z2xDvzxmz$L*e*)i28@Zu{r+z@6H7O;puFm3;jdJ`oBoV5+w7= z%Fb?sxnhDS`EPh=POl*uMJjD%j7IfeGe&2Km{~*gMMUp7;$Qw7ij@{J1C0&X7~Rb@ z{W`j{KaFyRM%WA)(5$b{|0h2MU0iK2cNv&N=wukybGn74eu;ee8^&7E29|j2JC^vj zmf7N_)qQ-25fqam{$^ifGk33ix8)r}? zED~`G$8Epoosy7mp|OA| z+2A=2M8*%-w;GRbj2J$SAYjeG@8#g|ua(dUfC^x_)e4RO)fECnlZm6z1LXidUC0}j zfNejySPGOt(+biXlUHxkUnj3N?!onWU^7D zwYr&}TX|W!T7}pV)gaMtmP^es*Zf~7angRaA4y=cX1#;&5{8}TqjI%4E^6`a3bmOc+nqT%@omJe^bc6hQ zoAmfi+#6EX?4jA{ibqA*5aBT0X*woU_0YW&tX+{mXr@-iosY%X6GKiLlVTajBUMbc z?zhGMaMxljJ*4NR#-^*pTwj&hzQQ>(Bj(G7X$wnVqGwGjFoLcRodU%MUqt|lDv!7O*$zry1$>hU~ZApXd z#QUtEj_#f-=Tl`Jzq;-KOCu4W|P;>C{ROV8#ztruAV z=`vFBd;20dUwQn8XsZkv;Mn|Wyk&{^@gd$4t)>Iz*bv|7ym@kp4JB6zUfyl#WdWkA zaat`oLY8}B?!3{;Xzj8_Kl<<9X6Mlt6ZN<3I%GXDopWb*5atO8j^C%&TzX7^348dx zo&F@M^WWB%*Uyjy`(<`kg9Sl*a zN+%7t^{uH=B8%3A%6=icHOe%c|1FSVh4MsYHtFE9K?fH?c9Ci`D)w*Yg*)^9Z_C!Y zqwR=b?(CaT7rqWnE((I~Knqvu<~kIxQ-jE|mU~IO4waDL>jC+$2i>-6?nuRQPn5KH z7M+xo)YQP?K!sZmyp_c+7615!NZLerM_=S4a62tv89+q9wu$RB<@(mA$k_&i?g} zclSFfqnOREcg|Mu`P>YG*9%7dLhQQDxp?Qr^LX(E=qIss)cVV2C6{oY9*nuV=q02?+?y{Q>9d>tBQ5IgT5%EBihmtWNm9nw+qwI| zv9sL7B{Pv&CU=!DM^*6s9Y&TVf++`tuUMLUFj)|ikj`AUm!6dkQQCqL_c z%~etTxpt`PBV(?-vT{beG@hfi<`}fuiofr=`{6St*XG>cJ@2?TH@BSM5%yOq5D<~X zOY3Nj@!zUF661HDEQYUDa`RU39=-kK?5XuDwwLnu=$^r2!cShPYU45bNDq5tMN`kM z*@|AFr#mq3wFZOI%I=%@TVP_Fd(?W=y`%z1M}?Qh#KPL*;3;PIU_axprO8GFd(MjL z^4zZ*Y$-uMus*%EvN&xX87Ydb@$4%`eS21Fpsm%oo0zs^K%Z>Zgc*+;paKnnK+~K> zn!bJieo~MCEbOM5KzVUk>E7G&c~0$mw|oG|WU!zYL_bF1b1Yh5mk?{}Bm ztFiR@jJH@#3MtSmR~Xk<=-gET96PlGHYlmC3-2*YERt{D z(dAwCH2*6Sja5dSaaZA!Fxxg1(beUwacR(G8-4n7+F#}<$~2jGzR7V1A!cbF7<`ui zsfiE#OXY077v0y>xhby%L0-XyyxLMQ{DL2EO+>?it1br-&h%?NXZd&xH7)f?C(+SA zf3$NnYD9@djlo?hp>ZSnff1K+ zIM%UO!eYxnLI2TD%)zoDw%ont&aVAtum}M_67(1y*V;jhfz@Y*s6ZwkKcFqWr&C#J zMc-H?^*Lj_GX=Gu-0k`>iN?F8`AVCj!JHE;W?9Wf)DzNQ@b!|fj`NI9nrGO56tKC2 zd;9>P!HB=~)@S5qR~87i)oQOLR=`P?*Liz#LI0^~#g)7f7vntrKEL zbuAfXD$&p(xgbHd_6;`O6KUqV4}HkI&dksIIZOQ7Vj^ji9^wyk5i@H4aWm&9f4Hmk zW{A@dh~VpKFa$bAY?7XBd_Jk|HR!culkuRBs+G7Bik(ujDJ>Y%sz~PhSdnzP zrNWm|C!=<8T- zv(0q1EWwo*e`xH=EUOQ0xzPnYh0)tIm91#=^jEVjYs%il(MNPt1yqqUTa}>&ZLO z&-pBgjdu1*wfGaYeO#LNd6K$Rkk)EL(K=ZF+^A7Y^KyGH2vM|Ch%pfn-1S6@t&Cax zac@1dRX)irjV|3P;4C(e4`*?2nJ7s=iW0=V%XV);Pn>QdTAe&{YyR!6D*CE;-17+6s#-|?9bK-2{l7vuve7B`VtP)U-?HTrv%y~x&YLXO zkSD?jy?2@n;q|7=*X}1x{vt`7eoOhVS%Tk@>#j#D^H)D9j|ozUDgsw}A4ci$nU8hr zRX2F9>&#wCDu{IGTw6&A;VB|@O3G+Mwda!tnrD1EMs>za4A-Kd_1sdMZ{$j7&Wj}y zZ-}uhv@;o=W37j$ea^(KuY4^f^j`kr3MgeZ*7jL=;ri}!YvMmr@|-<7*WR-`+pPWB zetqoFsBl29TfIlrapf0^R%=V8)pK{NBjbcMS|bbWq@;Br1W<^#xeJT_9|`ifI# znugYCb@-dC862*@V%Na*bZpKuVLoy{hBH5F3g^kovA9sC*WI(8cp~%vA?>}Rn#`hi z;Spt2P(Y<9-Eqc36%~-)Mj3~u)JT;?1%ZGNAs{4(iXaH+C{4N!Ae{&VLW@etNC_w{ zk^o8xB_t671PFn9qEnoEncsKUcmHv*TrA%Ayyu*~pZ)CeWN|+=E0dic^`{!nk~yUw zIt|{rqq5=LYKhrr;pRP2M_bADh$q~S_@bOt&86ja?$YXLLYNWmw4a-b#;) zNV!Z2GzcrTlGgx{+6>w*N%WI2lr=mJ<)pN37|wC8ax&M?)Az@`joqkd?^paV7h2+Ai=H5V4~r5T1FW_~Mma9- zfLb{OX+AL~B8R?891SfSabBqE^odLSUZQiKO7Q!`y7pYzmoE*F+~+s^&HxLa47Rt% zm{;JgyEFXb-x#9zbRP@$tX77wXX)j)$C=ts9kh3ZH%WEG&@tL)xl9k~Jk!G9EjgfJh!}6;;+ap zueBgk?$G}b7RKMgACVYNc1qf+Hn8kCp-`Hj+89G~(A4uwrf4@9dWlBUU3Y@cD8it6 z$400Zmb=7M6*sc4c~gu%sTREzW1|v2NL(LnZRs$e==Gr2^N$4RW}zM&ZAHa z*7DeXg*)_Q)5eN`GtT(hvALq&wYu)L8fN&-_|DY27rx=VMSVgiwI%_- z{{QAld@l+E@fWY3bljOUNJL2VVxOCp!b3@r(Q;pYh+c|o7{JgqT;HwQ4m(&4xfX}@ zeoRDKRMQwCZ^cy{_g>HC!`#u=B?=7|tg1y5xQv~3)$?jGpO#{~{4O&cJ@`YfSjM7O zE2Dgva0jq3D!Y2v%VhR$SFsaE=;i1A?lgxQy?Kgs-8go-iYX+>33H-O_H(8gYGAkA z|A*abkXy>d=1d~E2}}Pol)cr+?oR_n1zDMJH?1;Q1Vn!RI<3j6)HV!1aM*iy^*VPj z4<>tDhD|==<2u2?uO$JOB6so+mGy9@!qUcKL^6GQvVqM5!UO3`4ro~H4>wp$AB;BWWbjrU8wk^JBWp7?^fFWLg6t(K8c z|B@}g{WW3e%iYUjH#PQZEQF~;KT+_9NLHY_0IQ8%BAD0ug)HV z*CFGvc4vi(Ex0{;C+Yd&Db~Hf6C%?Qy{*_e$tJjKyAzghjP2C^rrL)|x37ARbSi=% zr&MKmjr-oe%G-n30#t=RX$W15ZtL@XKFek9cUk$RrLk&gr0&Mcq51A&#|+6E3zL>5 z^uN(S!OxzlqRKtKcO35vkQZ)R!ziD~SB3Kf4@W@6O}GA-@vXbiXGWn4;8QEkd})8~m;wz!`eu>bT zXKl#asL}Ba#nQc?oBo#ZgRN%IWa^@v%v!Yu50LOfTjijn*eoXEPg=+apL1jkvQj`>-!u_AJJ+vdY8tT)B)=P-7C&W@np^_PxV5lX`$P z`!UPTr0@wP=Fs<~K7xY*qnj-k)OtuGWTt-H^zbTL_<3o8v=!)fm?aXfen<@uA*$&4 zB1W!E+P|qalZXm*+1cD!LzZ0nKyMXi2QJ<{5Y!6B6huz#TYD~wuVXGl8I(4HE@O3w zQ+&Vx=^te_ZLkd*m$S2(67_}b)qVHf-?PAM#%#M1x;XA`UQ##pffE#~*}UaRZ3~JC zzbMo!L=FkmxfJE!BCI!&yOO9_E?Zik4^ao*SF(=Wxily7$3SMvU}^3#vl_>8dVF2h zXXtZ7iO>0s8A2i5b!C6^2S1gz@1f`;`LdNcsE;y-I?ImM-F&m~L-RarwIe~cGTGJp zm~6gc1Zlgb6nunSCK;f&KAN@^dGg5Ngb!)!zO9h_q?|(P8q1o6PjQ_4i=3F9Gc&w_LSqcf)Zu82-^O7yBQTOP6_fEK@pKPm695 z$^+wB&#WdIn3(6=KWG>2I)-(PBFpS^t9qo9Lp#JsMc|X+-ryuY*MJwW6|9e+2QYGh@+Iw8|}aDfd?q zP0YL=6s^cXNFZN6SvLWec9l1ybZuQFWbg9nUYa}75*+T6 ze`EZ1fm`XEW$1HzPjuf#X|KZWhhCj+@?V+NFJXJwurSA(+%1UM+3b87<2%{(%vSWe{7SV14)J&Pzd^djhhJ2HzOgXpY1_pW4%w5%5~p1OOu){X1bfiKr+ zSk~=zaY2sE+Ri3Rv68}+U=F1sEY4!Wb=}2RyJt~S@e40Mb;27%0rcm7x){g;p;jQW zx04?@$xFaV7W{lAwNmMeaozKOX za!@Y5mjA?=Z|3gtd~p8FGis8Yo_-iKst z6ZG)-=!P2+4|sEE#s`d|4%)uYO!$X)$|p>4n$piY0btT$y=i*mp?Ei&vZML^*&8FS zTfi=^%j|A8_7uaS%YgMsPLql^A81DK$Tw@3k$9aj^6co>cHyRdZ+`zbS70(ytsT#f zd}`S7(|@>{##@b(XXX1FB~B(a0v->B0M`Mu=YqU0>&Lsl{+*HGxn{L{jeddBOhGW& z(d<7k6KV^pE6%VOrFvBf#d~w=m)*p6fOg^S9jq^^VT2?cbg89YjolOy!M?sbMl5thmiO+AZBVf+{b@tRAvo=ve1HG% z(=xjQ!_4KEvYz^v&z;@Ru_w$mo(Jb^+vYH35Lf}Qi-T-v>w5`#5pN$$dHcD8A{DMH zkM6G*$rUg5e@3%hoXM`ao+z$Q$JH3;Nt*9)1&F9!KDK{gnTFNxE^auq*>{tNFVH~_4pf8DCRarCB>%o*qwI@doCe`g#8ekKSh@=^U zME?&zuJ3#EJlNqMQ@yso$_gY%)Hna0wJIXRp&)y7NQ74VlVY7|_62$IH)-Yc%tKQj z*n=P~1*~LNQ=9s|xFZX<8h9DWP|=c;JDXpg{*>UXd+?vLiGDD61aLEwo2QyxBz7-Q;9I-dkEB6lO<`{aUBaf*DHwt~?^`*6le z><7C+7U|FL=_teT4=!n-q<}1}_vTsH8!o&o>~I#ZpY!tQpZOK+$N|+L?iR>>!*da4 z@fU~wOtL6|l)PcFY-MT$L|Vx!LyGfms?oO7^l*PxMX4>wRGb$Kf3>&HtK_dlW=TBv zReis!uerRvPTa1)DkA<>C2&-kmtSOdt!S(ZVYYUKyc1VZ;GU;!;mZ)`<$u>yOMOl5 z?ZWU{q$42UFnNtU61$yJPG8u%aGQS{H1Y8tV!Rwls7jPUz}))R{3&?sX=53`z^nv- zjUqP3MxA@Q*<)d|8=x3fvDvcb##23xwKoD}yN$B<@zIJYU6w;gAOA>@N0ux-5CPdC z+N7cTTR#rd)rTs0s@QznbD$bLwtSNX|KC1&P4D!^AI)I)6WF)1dYV|>>M*V|#E`)s zVYy>=F*9dr8g5@G*u21LG8Wl~&8VTdo=h|>4p6`ugREgd*VJcImA`C3A4bmf#aIbL z5SHPcjuD`?-Hc`O;_O1dZKN~4e_XTT8dk|Al<)3Fu2XLgcdz$4#rX4~rCKczwTVimy^Jn_02~*^1#86erb( zuzcS9t`$TysQIHgW zd+gx4+@=N|e^Y?w#b{gzGv~n5BkFL4A${p#fJH4G~(; z=ULmOtA{TS!Wkv=q^kT?Y!V{FBdRrThmc$DY8V)39M@>(vkNO zW4n|#HyI%jpNF4zea39C&Ub)mLX+Uwwq%C*77nfdTx5}{PIApK=yn{LNyEdIg zs2!;=UPl$5n(!ZCmJq3ab@Y!*KXhw6nPYy>n;p0(I&Qz(8=khxs7}+`^SvB4)30%4 zBl7&=VU@1D_OtRqRug9?N(Qg}y4`sjR6V=-R)V>CcCgvTce#1vOZltx#ZhiXL7?yc zsFHPQoa+<-MBAVR6_%TifNBNRc4=L^9PWoqiRtUBh2^J&-+i|I@<9wX*x?rK#mJ1P*MjcEp@UCl}LdABqcra zW+qtqh8K=Ja@95Umf?Kz$^bdyS`|>x2dsF~N=x?UiL$K`pV4VnJ7K$9)_%o^JXj%Z zL?)O&U}_X6aC+OT4OM=bD{n8`#tQ$$c?0T(3XXS(jd2`ZuYeZ3f{OqO=N2Pa0U(lX z+Xzyrj!5ZIU%m6*)9raxL7>cZ3!<{$e+JXE9xT;mL1!Ca-7^_SL=+**!kY%Y8R9#b z6)SI!3+1HvH4%>9gQo!Fi8d5h8sIw!nS(Dwn#*?^LBg)2+=&cqS05gg)0c?m*Icx& z?mfNmMq^o{P>L>?U?DI5V_hR?%pp|)oKS7h$NWV#v*!hoF32rklv7sk&-@;$y-{32 zZ2O~o(*yKf#L~6}y_(}opj<3{@E%7HVbUocah6Z=_u$~MKrb3Q2N6h_T2D?!naTv( z&OQG=xttEH110=3{TJ}?%Gy649`(OHe7AukF!W5}h?E3WcnYY=`C;=mrKwuO;IdAp z5#f`b7BkXcH=mZ!);3{b*z`o?9?nRiW3G|Newvp0J#^;riCvr~jpaz~;Z{zA5W<=h zz-iwGMZMX2r8@CI>bcaQw9vw^$1Z8ER^9**pFXr|s*ssPPM$&jF3~k@E<g1M5WcCqZMhp!BN>h>m6U;~F2ZW)#BYIbyVn|B9?Vr|oFm&Vr&#R6dCwSx4pZ6OoNmx%97f{w(OdYBV#Ld>p!Engn zql;z?7F}{rwE9E8h3y3uoY56}9~z=<%8O=b(lP`N03s$OPJlZe+nhV*Rry_a!3~`7 zuA2`oo<6|mpYlHSxk3f@WI{!87u`o*yv~abD;dhWAj53$^fM4?Z*fl~_yykan@6Q_$uz@`x5n~MM!hS`-VOHF)<_H#aAGG<6{6fs*|hrO{fqj* z+i=fzZ<=iQ(xnII(>o^8&VShjjAYyRqiN0bFcyzpO#@X?D!Cp%OHb7Ubsb)D?IF|n z+3r1e7Yp9TEv>BaT-%|BU`r3LEV3uM-k_teBz|YJHGa>+rf29&uVR{EC|HKAe!TbM z)F11?Xj3mfHM^O?6vbu*BkSi*JMLQ}0yx&(_yuhp(@74Hf^aPv!a z(OcsetzuAq!40F$N|wHS;|V_Ca6Z|1R7Vg7BC7_?;u<8nEEeBL^I@_{i^>rsYXQ){ z8mUN9uh%Iqb=EExZo$E=YAO5Zf{of{{EL@Gax(#};M!<>v-rvE? zWgl2PVL!FBx2==SDV25)+_&4rX6c@N8l2%zHlN)BDCWJOZXGXjd>UuIsI9G8rNOwC zA<45-JFEP-azH-g!hg$WG}y_DMPEyq7^?}2jb9qY6=?VMaE^!|a(DpJmsjC>_trTp zE7O}98P8cwr+u1Wp(PDx14*Xx;tT)d8cMf8CGBw*FPiK_=T6(@-@NG-w-vJ%_~$Mz zz~-Eu*$o}s=rnj~K69{XLSKZ%%67jnQ-5kOi#+fS?d3}Gwxu;57b1VIxVyShjm&?Y zY`e%MgkIerbQSXbp`zIxFJFl4x~;V3w*0n>&$8bsQT^s$JxMIo9X+SeWs`WM!1ml; z*plbn=eq89zgqgM)oFSOInX;v#w$h0^t?aj|VXXMi! zd+AIziT3Vy1C7=M4m`ueu7h5Nn59~a#5N2zZ(421yN6fLWy6h>?3df_r&Xj$#l%(0 zQ^lGp(ejt`)hqMmHJa51?}>#}4#+6s+|${zSb@NM#-t;8 zh^&T;Zb3^%Z%QWe&g;UtSIW^B-P?x9n9>jNaAxaMY3~Ob$j0+Jt|DoQE-eBO%<}oS ziVsD1Bu-9moH6QC;-SpT^2pGH}}Jexlg3}YKDTc0Uw<9i~O zLurs9pK&BF#Z+r85jZqR9r<<&awB;_sq3wHDG3n;;Xj`|gg)pYij1BPgJ+O%QL82x zk~7-3kiJx-1LusARK>^wVa2?HLd)PfnCI-J8i$9vA>~z(p-1NWfnqjskAFaPcaeZEO z<7F@yAL}jF4CODb^*36DK{3~je4IXbk>7o8-xnYH?gk>*xD4#^)&p01RL46Ujm)uE z&$CIb*Zc@iP3{fywC_fF0?HvBZkt9%Up?WukA+303ihSW7hT_vw#05v&if%ztZ=R2 zH>LjZ)9PnYgOruYA22%2RE3MKdhPdqWX#W>{XOl@it%>QW@CjzF&7UKVzi$tL{Bfk zOGvqQzivP&IVgcUhtb!R)eeH$Z>zwSSe?OuG05pUEl^c$|8JPjf8FQ^{-3gSn$}qc z8;J9}Y__y18?Usexulcjz+Wj?(?+%R<>A7Ys_OU>%zdmyScPsAd=n?`;Q0>R(cidr zJ4N-x8?2abaQiBNwqu$zoAc27g?`PER`_8q;!~J&n>I4-#SF847No%)B z*q43SLs$IBZ{`ep1w%UF`@WAq8qI(Htk`_4riCC>+aOIbsMLaEG8O|hM*CFK%P-Uz4Sjs#8RPOoi zH|U%!!8Z5ZzwY{;E%;Y^&v}cL*4@j>@~T5I{AWv*+x^+vLF8IU>_uk`MGIcPG)U3% z8OCM8!#P_0W36IEUQWasASoK-K7sp5w&TV6wZSEBc>d2;9zBXk@z~P(`8MS912*06 zXLisRJ#s{wfA*O4eGoXPh4Zy!U?x5ctGZrv4%O*jamoa?A+*>TPj9_Zto-EUz)5!X zVx8K?=_3TWvFf@M6MhVkg?vE*$_GcIS6)?qvA?Ylgw_3FfL|0?>YZ(D{z$HXpb~Hr@gZR zrr8A@Bx6<)2}8Q!=_93&Y4N%8hvR~Pa6CaZfB8b8nJD;}H6>4Z+2v zTv!V|p$hH?qpY9L0!s-m#%iP?O4ac)Z5WDnXn2M;tSBHHXvFUpfbvF++i7#ZUc?8s z*-Ftv+>T!cra0rZCO+(hJOL=>U_aF(yWYgdN&pJqb>N$D#?WaC-m~X&W4AQA!_Qkr z^C}^yp~dGxRTVN}2py|PmFT4C%6KDKbkY*y075G#WsyL|tWz*e{FqOintM(ftRw_E zsAka<{rl|oH^fi%?{Z#=)6WMhz(kwtlXDA?zppenRjNQ`*TLB&mDh0}Fmx`sFRt96 z;szNf${?drp(}u^RV*{8nAa&I<&}IcLN}HZ8m^DW`_>V|zyc=P5+`J!qRlhEKK^pP zx~pF4lx-A3kZh~E%%D7~(@UorA&hc@xijmddB_bECRUvG=)P!kZO|3{zl}k}2l3Cb zDsc6H$=HdNIS6?aI}k!U-5Klz3<{hV`(zWGA=c zk{XTn3a;}F29pBm+h2_@8tcZbAP`Y0s>WYB>Ms4pcg1KHXhXtX@4S>3Z!mdq8zSWt zmn+|I|8VXbi|VuQdaN?}*^r!F$-Wt@7K;AH>3(cY9Wo)X&x@nh0z<|YSUGu`D*@$K zLl2)9E{U{KOo_Y(-bdZwMD^g>@>+E09f#}zOP!j0o8 zc_B?zqo&Yp462n=BWG4+g9>W&jgKF~rj50l5Y{2>{$m)}$#OL`Ie{E`23lBAmG%<*S!GFN)|)WFK!% z8o_Ingve7&Pnlg}Ji1S~@~=B&=*GWh{MNXZNWx7vbET`{1aM`Xt>M*O1{yuKx=&zg z^dU@t5XVF<4%4Yu+7>6)jP1NyL8LbUlekkWs_F3=N73dVjz1T0I%pKiz2+p+6Ec{N zLHG{JNlp@KeaOz(YT5-IQC8VdXGNIi)fL~Y79T%Ue-Il-XzQU8)g@9lke2Z}g}#kC z8f*x^TIgkHF=#@R2>H4hm15_Oe3bby_74=I>6S*tiSAyXL5e1}B~&)+*PMTmS*<^Q zl<+A`>U=9aQG+Rj;YS9+jk+8hknr86H|f^5 zLj|BlN$>bevU3{N%@IcC0zr+3-v^Rinli|GSZQ!Iv1|l%4w5U5Dni+cxPR3OExP~(`6N)LyPl_PEl&&H#@?cUvHdJ~hVFFT0*Mtw+PIbM{HB;`L z*1wU7;RoAs^D@*&=}!+|D<13tM51+?2Mh89p*Js&a_QnJbMFud=Ho(`0~=}|=l_A! z+Tzz^^<6AoJX{S1{Al%*l+f9wi}l3e0B#7>f8qlbjZbOuNyk^C=_RUSEQB>&09tyv zVhpu0a_n71nk%jXas%kE6IHd&Mm@kc3G4%ySAt*7C9+eh?pYpp{WP9lMrU*21|!6Q zc^|np8@Cq*;zd#k8D^fc2AcgsE>RP;9NvU=2ynFi@6Jf12%~^NaFcMaF0v6MrgV)OszjsMF*?Z+fT)QHQ?cs%@k=iiRurd3qT)n@QxIj zJjA$=T4-)-W%Zl8ORE*#0#N8n@8d6P>AlhgxZqsg zTsNkr5;?i6N{lzzKZYP1S{w`p)5i8#>XeXxK1%ss9l2*jFm;hqoVipW?Ng3uB_M0+Vs2FL`nNLWhp=JpHG#VRaT82dGS z30UEY6%%>S@d^k0q$`#+$#CdFtKyRJ{cVKA$gksl$@W-AyoL z-#W3-S&XUw9|xmE&61Q3JT3DDKm*KG!q=P3g1PZ!I_Y6weUi4=QMuIM?fe*x7iLLx z=UG|hXn4rw(V48uR5X>4lweMwnVe*P_iYhE&*4jFaw)7|C!$uN7>M(vI|^H!GJ*~E zVlLqb8p-s&{7yI_e)7cRdJtl5PK!?E$NZvJ>}-n+Q6D)PtzPYY>V1sVAgxPDw0YZ= z0s1qX8k^LGP_Zg+A2Siy6ts!Wquu2)4r2As~yB8!G^*n|*0^aX%T& zp$m%rUdfyP-15j&R%`!NggzMg-7=P7AbSdE#kj-*k)7u)FR!$JKQ<#%E3Sk_WX~z5e|pH zdXlg1B+z z$7r={gtKIzJM|P(ezd-QMpV<_RFoWxEXi!8z|wR?&EgQOG->jFa-FyO{gr`F#7{(c z2xGWwsKy`W4`%j1i7W$7t@1QA1r`I4aq0OSvyp>&(Byc#qr7o6ZFP7beLed*AkgFg zp_c>(9o3Nh2{N&LMGna$oLp%C{6u?fMVEfv4phjq&c}mJMn1q%wgB<33wf&p4<)Vs z9Q5uYFeQW;U}nqrx1Mt0nE(x}WV;L$&VS$^DBW$k1%LX)TW_D6Dh2-NEMRvsXKovYtw(*%R{bRplm)~`O zK2D5c#l%4r<3D^b&#Yn*mV97_4MXdk^0SOLAj*u%)`ehd(w@U`gVgw)GEq>C{tN=t z7p)*p>ltzfn{J9>5p^UaoUa?LgrmVwwx2Np6K$hF%KKQ?sc zJRf8@zyn7?0310dE13-)#OBH`%{0LCvQ{v$Sjs_caG7vd{nqckfk_X3mA4JMR$Os%yV$xK*#{-Q=h8!|f5|HN|;cAW4B zSIAuX{Wl@4=T9OE&6TO;j4o$I;q4UBy-t=!hZFbBwBMf?pQbhS_-zfv3tK&pIVqYgVIcGjGY~g zRb8s97!+-OnevM+62`I?Y6LvE~|+;yAwx;?0(x>il>9an*pz zJ;j$}Y~hnzNP&bOWe|$#OuDnRKh4H>_H_Rwl@K6W-Pz@!dqlh~NB(MICtI}n#4P29 zUzPMgz^fS-**YDzR>NZmoU6--m^2!3x^)PqNieW?N}C{~RkSyl=kc;SKAnv=$(f2O*Z+P7#0wYKk?Z=O1T1NiYY>Plptv zqDnCVB0Ikxz{>(Y&J~RiPScSS73TzZK0!vG`GQCEa@?Cw@Kbr_OzCm#seeKd*`0S| zfb;9VH6`bF|^16q?Rt4IKlhz=J5yP%<>nc2qT^kO?*+|=;Es2q#78-@WUHTlK6|Vb{j2rK>+x51KRWt$> zon%xk#~k^%Z)irmd4_1E{}mhtZfm8{ZgR2e(M3F|t!2j1i z`p0tJGIWYK@1Dm<*FyXru%?eMVa>t%m)JoJaWE4U~YXFdC{?AN^7rA19@m6p8!E zENNH9*4DTz1RH!zcPlJg#LSCjnCenF#_i**+ipL&)VC|JLU&UtgjA+6-mQ&n)Ir2;#$ zM*L`wqO37rokO1>SRq;2a)GA66kfAUDS+LJ$_6{S&ZA% zoLjMN_=_?Nb8m+@HiwJt+!I?j;Gu=BZiMKFC&YP6TE&H~%@G7qrX*lbUC~x4F_#B< zibSv3k<&sv_Nuf#boP+kO0+?{Y)Nf z*QPpu_d6K4gcMyTa#tC-UsrN0L9mlaZH|ZQBmEE`^wl+DP$!uMdd|`nSweYC>m;?*3$_EHY6G>p!SCA_GIAi+y!8tdtmCa_vPi zPWUB^)=>Hd=`Tyj;VnTx`B)9aG9x&{IU_cWDa%0x4Wr{HB1iirBx#e?aI$29`jE6v zKTJ>#h#|cU0ityhtMMusu|o%WI!S}pv3_V)+5}7xh|`VFmzMKLwY6b2z3=CMvydCd zZLh81Ne3$9H_Q+goQ+FEh{^w&C;XZJ?4n<~1vLj+ImLEFlts@1Jwymb(WA)?;usgG}y?A7rf_q{Ra`Er<};uEPDP6%2@JLF5g9@ioS5_{beG5 z^)8JU7UuhgD~vE%>sYjwm;Eh& zW0nw1D<}A9-cDLGmr{t$xUSTd5Je<(T_eY5*w|541GgtP3eI+$2rI|B#BlgAKs2WA z{3jnUcQ{hO324=XV%(eV&6ldR=mV)u3E<|QSX^X`04P7o%S0^bL2Eg)CUUFY=MDZe zX8*_G%4YIe2prIY0T1JEPzHA@d*10D8VctIDKREj;KV z4~nuT%LBO-iY~G~yq@Q5BDTvOZMwPe2~3u@pPGvXD8p?IOn-ecB9r$lImX@B-3%G; z0xtH1%O%NrpARozZUBKyg$3^A!5bbVHG;H_EMfgu7Zaad|CPqLB+56YqJPRoRh>vj zB%oCBU4Duq3Auv>`bc_Vec^hqbN^)5yHmbnl?k2G)Eg+>`|4@VTlv*YmGh?_we4Jt zgkmojs{-F?M<+=#PO~8^cJQ>G&P76vmT#t9bx_7!t>P@Bj;SK(uHhQWO`zY}DssB*bH?p%v7Upt`D8*GM;S?yOln{V?~T(9_|>dR3JsqxKrDxXGjMA-Zjg_P zfok6p2Z~VeO>4c|dJzm_2`F4uPneh@mfIECCngx{0vXYEg8U4lywGBdXF`W9@^o5w z(y)aG7yc{l*|2Bo+4V;!P3(ig4oUIDV2ssuV;%I+k?u|(&c*&Z>adA5rS8yPdIt+qK!No}G`3{Zn2P1$E z&R?}bX}EGsM&H1-4{J8Z zGWNb3prqRG!Ntboh2sQU0$S}#Km+y6C{V8p@dxHyIIsPp_rs1Y->`rG^6sy6BWhdX zAZR6q%Ko;UEk5RUZXgQhz&qt)B1h4gBSbw1kcPzIj3+@+l7)qgj z+Q}-b&J0P-w#I9^`4?PO5u2Y|LpEOz%M0SS*fdA5jl~p~TI@RRFrBg!1OBlB#%ht~EDD-+)?OL|tTYmud*) zo7jYmgvEgmNG*qqz_;J9ao>2iE!)Iv4U=2q3UN>_5BY>ztcBraz%HANfdqMQEC^sU z#H;{1^UXVGs252YIu0^BdM-Vn%8ilH#Tr)90!|` zC6wYBx?f46Z!zVc2cbvhc>J3)49NmrVDr)t+x-$hf27<~RrP$G{&*OI_i)}q1J8qn z_8klQJ-`Nq^-($k>@1p0twg;TNmzkPd2`N(AI)2XP^d3aysz)iXtXTViU03W;5YdK z1>`Uk2*uzr#Pz6b434$JMLXegAPxxIPM0b)F<56n8>f-iiKfu1v>c?&j5>a-NBO?~ zDKUAbV!~SM%ih9W$x*9ADWN{FH54#t75)YK?Q?7#EP%DPLc$o*^S|G>-7 z{H=EBf4Cgc>}rVbP2mwM#C#A;>tXB9cdV|>s&iL>FhM%jm=27 z4f(m;(&)#;w3&)r9+2_vp!N@gtgDF@W7#&`Qw8Z`hfnh+1QL2Xs{=`!pK!42cll?; zb!VvFeT8b6bqJ;O$1is{t_tIv7^hK9x6vxlm-6F$^AV6r{AvzOTBSCZ&rRg5 zrcY4CN{Ura>5JN+m1JjPCt61fSUWrYRW?gz8F*WzhV?tyPu)Q`Rrm8$hW?k$JG$+xU9sm$zYGjG z0M7RUS7*j+%d9+|eLFG;@g^|DsuE$TAVev@om(?NTcCis;cdve^l}=m_!p2p@)@qj zePN_QBwLy+`LwHFM&Pid-HIJoBM`h-($hoz5>LqiRaT3HRq$TJ-TpoP3}=^)Pej6h z^eM|9SLAaM)p<(XBP9__Q$M#DxoWc#$T42YflPViE0h(EWK@9DTsl2hGvIwQGsmBD zP~7^1WRZ>Y+qa!>-@VV_WnHv#)B>qpsfrp|ad8=U79Hs1c;QZi7%dZ;$bUhHyfc?X zBOhQ9d99lC$4F0~qvGv>ZWY}%loXu=nW$FBEIK0KNm`l*3p7=X}>LUUwv*O$jyKsc#!n$DBUB!w~?w!{BbFLp_LTV4aHdtxP*>NV(5 z1_kE#%SDfwxZ4^DW$0pXPsd3q>FUbWv0%T75JVopWz@5XIR^o*8a$tNn&jT?&4)M+4zMz&MgvS4@Fnsk!yoUPJ`<}or zlUd6 z+oa2si(=mzomz?g$UV>B-Yifn(05Qwa?tce^dFFDufkP!y)Ag`py{vzucml=)>-z< zi8eoN3mKacwW#gb-6%TN2_<~025@blKd9ylGU^3%~**F^ob;9IKKK}Uv!A1J_* z4{JM?uQX-43sekvWTAqt>&bCQgc=i{?AQOoKc~bzo#fBOSuK88v7cyOh52`;&BQKh z9)JyeWEN2aShVrlv8U1rh?2vT`D%bN49XF%sU?d!IDgU*WQa(O?$DeOzdSSUFmZ3y zM2+2%w%`!=Zp~$UyyKIr*=$Ww2$Z$&?=r2`9}JC(Rm*-Hi1-HbjBl$|h_>yt=~Io! z)3O_Tx}bSrU#M6Sb)L}I$tDb31CQ38w9`bs7HB51Q7{Z;wV#K)tzfGT(=l)JhZ84tL90u%^TC?~17Xs4%m zPU8o>2TGNBC55w91FkK<{baWH!?a2U0jN&6W;TKNCdpFPs7$sqdl3Ym9AnymfA_S{ zU}XWM;;IE^D2V(e50>wd0*bfPyF>6GZO{UwhCj@xPc8hOy6fAmZ&f(ncH5Llc}_gn znKe@(aq!8$n2U`|c3fZIp|x5>oi`lRNQEi10o@C`#_bfqJGZeh7%db3hA7lxpF=yl z@uupBt37zZsbk8D_Qgjx;5nVnb}&Gi?u66JoGwjk8=L~3%gs{ZNWVlZ2T_#qm~3b1 z$-U4TKn#6CJE{5gT=pEzcC(e^iG$}GaIdYL=3`4ssJc4WGf_-M{m&7?qTq+nq0*c& zKS^iD&}b>vW>15ck=xbyiovE>^wymGD2j!&MCsLP_4KaB#(2h~_>1tl*sNdLE) zo@(SJVtBdA6aCb(^G4>Z;UF@+1-#R#;N1(WZ#O_XLOE#gTE2$aiGRs?wjLExfIRSD z`Dm>**=rY{Vd&EcaUQcq6@(PE+AWePSh>K){&&w87SZde9+}4sNM7FFW$YXvk9~RW zlW=$q1nZMZRzLne6w;6!KK{tGP54GF(|ytJJAyRA+#iHvyW{Lkm|Xl~iQn$gRpcFB zo-9mmqe*VPT&cLghK64rjlH8QHmK6LJZeN1TKGgM3+K}Ml}7M0@1jAXAI~M@caLf> zzmaG>-s{>867g?O$BG9I%zW8sjRgTec=J4T?l86hH$!w#cbJmA|7WiJl_&p#*({J| zIzKFy?CeGp4d4qaKa+E}osX#8|F1CZqhRl`DccGA#es`D8V*XCpqG(UxSp=Q zCSC12za*EPaMN#EyqJP`j|m7L(?mZ%J^lORd$l}G z+);z|F@x{bxK6KmnMw-KFgA(AeaYzZ{xQlFvh9A~<4LhN(;&C@ar>Qz0{*M=MVXZO z#Imp}A_K3J@oN(~AoqGO{>Jl}s1`XFO}8-{7!-x63D+-Jfgzelb8tftVokaO^kCAOfIScs)dJD0%jdkXRIA9om&wUcg zeOW>fEHu2FrD7As_@j2}S?s-lq1!18k)He(ih5%4n`CO(=hxe}!-TcQAI>L_8C`0R zShY*9usD;y&q^2LV=vZxqhw@#sd|z-oM-iJ`mq-y(9<{^rRQjz0OxgA_&RH1 z`j`XLW@Ex_{mRrig%}$5_tgb`($K-JXHwH+6jJ!8INo#s} z(`weYmTZo!`;eFaX6o9JlNUsK&RnS*?fULJrO)SnHnP<`R=nSS2sKnSLv?Vm0+(4A z6vBPvGGXXCnd59Q|G?&mGnhzN|i#xg?%FCX-pUqV!2{R2-pJ&E7Yo5|C` z<`Mm+WlR&BcT7-lT+Rq!62p1b7(hFIBioJtWW&X77r#N<@yEH;_j!bKZMD;|T_*f$ zL)@RjQwwgfNw9>($=P-NT&tyN-xL4Zs1)UhTK?pRmPBbStsI<~SzH|84|3F@I6zfu zMfQ81I9!GHi37yev#`O~MY+J<3lla*#U;!q{Tw*EDHYGD!#g!r+s88oYeD8gsbNii z#&4bKC)CI^W3m@z$tYn?RQPh#M3kNSAF9zGey$a7NFLzWH24_=w>ttIH*ybEI)jASX>G$y0W*v9s~r*h&` z(?9S%ewv5JYhH8T*LB_3`n;|?LB1zw2s15JigxQ1LB96tAy?Fn-l_ArZh;>OpDuSs zfb34u9YfbXWpb0%x3ZK(n*Ka1#dtHzJhM&YPnqLy(8dqcpO2gyF3IlBax49IU8l>VG-5_*~=4Sn6MqRK@fO6xgOAXBtBykAoq9TY0(dF3m4uL?FjpxC6RaLV-ufe4=bo?OVL?7Ptdq z3$Y4Sn@pStmA?B)mo(@Py}RixnhwVn8AN5hEBS7Pw8% ze^(}A&UxyNas>~e>(saya0Ju!4Kuy_G^&K!oW+ag20}(h-xQ>zV~iIs1Js4|k*d%( zJNJ@u$jPXJe_ei1p9o#zwvxzf<}XRkAk2cqk|-9#0zAlxTEB!D))$H7>hB(NgD{4X z-RPNGtgL~bEk#~I%~)N=bXmZ}kGN3|I3~+Q!hn21?|B?{T#q281_GpXIPPX|$)31l zg{@`|KFCB-q|1OhdTXq!s2V9Jta|{Q^6AIol1Xp@-G3>lDd%f@29d?=EnXNx54oq5 z40)tT&Y#5e4PO`fdRbfb(e>uMX4>^ZCD&Z~fKO98`*eW$bn=hi12RKJ4O`D6@cK>A zi1NC^*4|(zDyw99ZnizylR4<%u{5-epWaaJ7ZJ2bb%1Klp^teaB7hE0aXY^d1gf+G zahgllj*l+f85NXL%E9PZrx% zP-Z*I%v0U&#S1pxsq33t9FlZ)k5zV7`YZB8fcqfJMy6E4=x^<*A96QoOc%u6mk1)w z0Q$iCil;*+_lKMbwk&brC0Z(6r<`_(BxG&9y!29Y;pMyB4UC|-4hw^VjTQBblul)J zxSrT-(E$ryBHn3XabP(J&ke(Vg7Yi(V2J0hvjkC-t7Kv~)NhLoaiCOWf0pj=Le;`#W4H!<)C&|#UEp2kF7ZRF811byag?@A0Ua>HRRABn z=TMm2%hE`~%sM+iXq_nW$#wOErUOwIP`JNN*U2vGc%ejR-f762!u!rm_qgSsJ2hu@ zoPV~+4qUma+hSn}eCXM>lAubK)R0ekVI?Aj-lPf$+Aisoupx57#(EX zcP_!>6=}jA4R37&CNMJ}0{HNvr=P&?2WhfgfSJjFUK~#O9j1b|(}(i%{xly_TfsYR z;zd`W6>w%i*A)TNfv!Ok+Df9JxU$xvT~i(WZy7~`f%zD#9C0+2)+Yknpoq~q`PMfv zIxgl;U32Ypx&LcpklAy8niOP7H-D;x@y#LJ{FcOJf*3Bv;oAG~!db>xZvGZ|Q-^=% z=kd$)b<8Ph6ssvsq}IaGG(C$pDp)IzUzmI`6BRycU2)YTT@CAQ7J9;gJ5R04ork~k z3`8+#rW<%I%WppEw5XHz>{~F5yW@j5u?mOs7co9gqr7nbcY|5w6Wm*O-jB1@&`F?tT7+heZNpmcS2E6N(Zu)mTG`9d@`p-L z(G>4WHDpL7t8}YAne5lE!kE1t6k%a}p>4Ynt6KU(p=wzj#3dWYlWs}^wVgZ)Z10j| zz|-8Y?pbZh{S585ec{amJN z>beE>-);+WAGY5v z@wz^=OV=;L4zT8?aWVxt2>>QRck#diKS0cSUBS)wO>7BD9A`zOUt(>h=b_RQkJWn3 zg^PfLV{xzj@h4WR;BA29I4jVRhbP!OsDA91xH#~5G(Vd&MKs+B#f=O|?p{;)4YlQ1 zt}>;SS=qbd%v04IJX2!sj5G`?%NKbatWSOn%tY4A<7o{WkE#~pMytMYfE1FW%b_c( z84~8|>UtAo58`}nOArn5V&)kO`C7IjK% zhVG>xsUUO?{In0ttUK#xPcge(LWx4OTuIs3pDB*kNtwU45oI$UZ={;Nu&*bEaug^p z|D3cDjkBMgWW>s(=6iaXe`$$Cqda%=ZBQb!EZvLZvA<(LmA$BD1pRq`>h;NYoA0C` zF%4(R{0b@CujvcJZ*9&lp5cM*%p(~u$?&o+BqqPsKZ%XQbqwtt-)!)(c5OpowE#!p z#37mJoVi@)c%?Vpdy-1XQb9!*ASkfP=B)k6WyT6^GdHu-&Z7usaWj_MjmqlphZ#g; zC`x8;`GoP5lpcRZ-V^l9GwY!?eX-*ABYu(8DohDD05L>Mfe(wmE@r02#xQtkPFMmV zqZFd39sT@9d!4l}nFYY;727s*)X%`k-YB->s%1mGb!jgBlIT}g8Ev5zF0O9WqA{LD z@0fv8DxR>iA(O<5GA@*;01slu9OHzx2h*!4g@e}rGz;3^>HIq@*;SZOa+xT(%UZxy z9;of~t=dY`5mj@es5+o%@Eb#*(S1%2fLF7g75eCY@C?`kz!bz?95eF`_cD&`l)=40 zBhHvMAJBNE1^Kh?Y`(p^4-Ok;fd6N5<j9SR6nwra27BgTQ$(?dBGl$E|@@efviH(~DnjQR533iv%vSTD^zo=GJC| z)a3>8#(Z63Si(|_wwUtN5p``nJ@a~9}{%z(;n4$V5}z?6!IWg$jC#c#^vME z{DkJcE+D#_d`O8jd&Cj`F!}P~ZAT6t?E=^L#>HO|d+2gf))FJfLe-`}dN5T!-FnFki z)QgAPTldikuUcN+v2%8H&w(Cx=vy#te%~?=05t)?s_!P78W}#n?$nrZs0s1^`vJf zke2t3KWRu1}BYg%@>xGQo`yQ+x7R zCPk!jBr4G2*|`E(xS>jSt~g-U^uw0x=t;HO!&dm&inw4C1N=McAH3;?ei3t!f<@4M zYM+DKY7iHGZEgffUJR4p*vF4n`v61H(DQ9^!REn=&jRgUlSG`oJM6A93Hiz>;LhYW zD+hTcb}hZw8mus()S4mJqDsw^vqZ(IugN*_Zg;U3e=UMUk%kw>nm}>zs(hrMlCjHX zesH7Qrx%lI=&4TgrIHEUyZ|eElAaIc@(2*~2l!!rWA&+yR-)6rT(x>e)f<_!a}!P| zf!f0pemHva1&g?i9nenfZ>RJ!LAOGIYj?*K)lZPW z!CbCmj=CLQ_~d!j=lWeE*Q%u3_EQcw92K=J3tnUv&OWZFGrz?cDC;QS;Jq5&cjT$4>&Rdf$6 z(jw`hu=LL6t#*c;!k~_K$uni-@w6S`zO{bPkZtamZGE4n8AK6aFw)vbtbIpwUOydc znUio=)hEJL$b7GbW&+X?;y)eM0_qM18P#P`dkjf#ssyF{#Ecv~!Pe8W6Q1mwJDM{l zMz*#fAH1{lP&Q(df0Eum7}D!x=zi$_{p7z2$B%h5kduaVnqFLxz_}(JS|ci7$6!?F zZE6bmTVgt()c3MlKSB0VN|JCh5_QSV5@0}~#r;P~r;;1?&R;APm;3}5*oC#1^~3d6 z%Bzp%J!HO^a82phxx(=81(KCdMS>r4x)0v*_a-$pH+Fsuz;$4UY-N2#<7ucjVF~XV z&iM${S(hV5M`LO-2|b2O4GLp(sHE-AYaE5|4qB)NS2Xr+`_zK(Xk&A8b1pp~4o2u^ zf>&PMLfi(%EsR>i_#jCD(CmFZQqp-rWno%sltKF6W#dNw;Urm=m6FrS^1cPoTDw9o zOGicz9!qR`ct~>pW18E+NR?cI(>AxW$;3?NC9Jq4<0Rklph)EC{t$S|X1=2g(R0LGvd(q4x$%^NsRkaXrux}OezYUaOt@9M0`8bE&@+OhP1~g}Gru`SpkS?2r3z@fh_yq)|R8+PkaD-CDoEK z-s{nD3CFjlNpTIW80Kjn>5s=}`KVIh3IpnlVWa;nS!o<}UMktAUzVATX4+yC@KGwR zmB%vKj?nM^%AZOZHRDaXLg=~4$->Ghnxir-CSf&?29ujAYd zIexAT&=%Wk+A?t0$F(JwGGzc0h7{Z$BidFAHI&CVZ(h!NSev+{!e+c0nDuhbaT_E9 zo~IJ4l(^JuKrdISLZ6Jz5bx3nlHhZxhsO?CWz;qDiC|4y)B?19*a>1vwax)_^iX9( z!R;CE4o~@8h`b=v?K?r4dEbJLOinb_7QlWQk+JXDZpI8qa!pHF7bVPBBH2xlq&B7^ z72zvhX~Ls5q%i@{C%rh`$jA2EBHYmx|2ssR!alNoLhkFFii3%A!$h*>8L*bjmXLO; zAH%u&Fq>~zHvz#e1>Bk8c|_dC5Yh;5+TOZDu8*$cEWX%OEOgi~I&{`pnEH>%xv80G(Kf9ysj78?vL z4@yPEytAO#6l8gk4uv6;q}d!*j`j6Yt)+ve1DH$En%r+roANfIbCBKS-DgtspZ4b( ztoVCBa0{f>n6?UI^x~MIOMCpl9Eb8VnNTxx;*!HzTn5GhW6$cCZiSHO-PM?~secE8@P!C-f|i1J$L`xm+2$4?7g zfI|GsPdY3z>=O6)0*y|I%!@_Pt*f<~mMi-n1Rc z8-^24oABmtQjYZDhGm#sFk(YmuocNYTH5XhY1tOi5m`R<-TJ2P(cN<4KYur%T6M&F zsoODJB_l;()ClKQm83^j$i${!Jbw)Wo+nihTtSPKON=zKraK|++=kU=aSd%lx2%`C z<$L4kpfnKT9c2^-UtQvB#Wk6zwa z9jguP_a2+@q9z5Ud;|FEC@1I1g7!1HSO%R3FV-4pF&Zj*JK@+5>`uG!=oYH@Ly zaPg$ced2`_K$bXf8>ModI}y&t>ak9)69>1W6H-G@I%0~_*;FPFc|qtz<_|}Dh2adN z8;>j}?Axsc|J2SCu*Cl(9Xmyx8g^y7p4$+qu+4!@-ce!Qa(JdqesawY&Gl@_8MG~p zx9hRxbCg@Ucvp-w^kTX~R}}K^sPD+lwVy7Yy`j_Hgk#(n1fwhdaZ%nb727;YC0MY7 zUh){;*xjuYSSN|V@zqKW;lwSoPLzl{C>#CsHf%uG4>9ZN^7||AIpcY`Vb1#}NMU@h zm{S4XN^G`JUBqRwkodszkr-K9J5MZssKXWlDa`hlKFU^oX>T%FXJY~-g{ht6hVjt$ z4c%&x)(Z7X>d9ksY<$;CiFdZ`_UnR3MKm*w*O68=Ca&=5I|CWEH^Qu19317>%<}lZ z{7UfU;D$Y4+Fm`yj&xr(tS$&Ty6J)mjqFg3U*3Ds4glfume*hTHo52fVpf0BY60t? zT7ZmB{@=x{=5gpb@RQ0^O%7YlpL=d!U)hQP>sJp6EkDNoXoC*i|48<);u8OlWZ(7X ze^T~cE^hpHFjwi2i*}9xiV7x5*~?iMxpX;bV%YT*eAQZMI*wytaNRN({7_mM-HbXS z$b1eTs)vF4zdV4TTEqQ)eyL%(ny}SjG7;GdpsV)w=3SAXHJh&jbkgSGgMY07Z)k;A zhsi}$u>h%{2xSMlKSeJ%X;pa*{;+Xv&E-eyCRYX$LI=U*!oTmxL{f|t=QA3ltv^R2 z+4VYoGcBPIGhX895dmy3`0-R1zbJ}Tkf%KKXGy;Azghi}TkZ+?Imy!23*pc{X|yJ5 z*ciZAUkynp_g*D4KiD(zz0cl(JTwY}3T-SWlsC`oqt%CF{3L5-8AP#leHfChkR zY}c;ZpTh91Fl@DT{P%z07aRfe60F|K3T)+I+jQ`CWgkkb!{j60oYv)N+RMI6<;zND zIayN#1@%Ik1k-;yOn!wtO&BdG5A6B8xA(}e{|7{JzupA_&>SG z_$c-cK5K!WfM+wedj$o$X35_-6tEBEEi9q?1;1iZeq7PlwY}pp;ic=j{90)+P5~z` z-`+@`edNRvm1^KijYhG}(tMMS`|BVD_Ekx?zlb6Mi*G=+z@*$?3x#;AEZ|U8fJ*s} zU-F2i|JE)B<2yOTeLkDQ|DZ{{-wm0sAHc|DOohLday`t;!b{n)a;&e<$^f K{>11whW$S!Z;fyO literal 0 HcmV?d00001 diff --git a/plugins/cost-insights/src/assets/project-growth-alert-basic.png b/plugins/cost-insights/src/assets/project-growth-alert-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..397a0533689c5d5a5d292c160431210547f2b29a GIT binary patch literal 186547 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%0DWjH%r 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

&&w2mytH1{AjT80&Swb#b>pZw!<3E!k=U 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

+I1vtE^6EG1 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 z z4r(rXIQ#>O^6glMO{~*`-W1V&`4FDR$k5W2Ws z1DxH(<8>2gI<|bcCHi2r2Lq{f{~nV1e||KO2&#MNF$@Gded~e0`_{wY45%u7d{6u~ zD1soQY#4JIEZp{Op93j6*A1@~`R#_Y7Y685IKE=r Date: Tue, 23 Mar 2021 22:33:38 -0400 Subject: [PATCH 280/315] Update integration wording Signed-off-by: Adam Harvey --- docs/integrations/github/org.md | 4 ++-- .../google-analytics/installation.md | 17 +++++++------- docs/integrations/ldap/org.md | 22 +++++++++---------- 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/docs/integrations/github/org.md b/docs/integrations/github/org.md index 848a306381..04a0620233 100644 --- a/docs/integrations/github/org.md +++ b/docs/integrations/github/org.md @@ -6,8 +6,8 @@ sidebar_label: Org Data description: Setting up ingestion of organizational data from GitHub --- -The Backstage catalog can be set up to ingest organizational data - teams and -users - directly from an organization in GitHub or GitHub Enterprise. The result +The Backstage catalog can be set up to ingest organizational data - users and +teams - directly from an organization in GitHub or GitHub Enterprise. 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 diff --git a/docs/integrations/google-analytics/installation.md b/docs/integrations/google-analytics/installation.md index a0e6f69d13..d6c23cc4b0 100644 --- a/docs/integrations/google-analytics/installation.md +++ b/docs/integrations/google-analytics/installation.md @@ -6,19 +6,18 @@ sidebar_label: Installation description: Adding Google Analytics to Your App --- -There is a basic Google Analytics integration built into Backstage. You can -enable it by adding the following to your app configuration: +There is a basic +[Google Analytics](https://marketingplatform.google.com/about/analytics/) +integration built into Backstage. You can enable it by adding the following to +your app configuration: ```yaml app: googleAnalyticsTrackingId: UA-000000-0 ``` -Replace the tracking ID with your own. +Replace the tracking ID with the one generated for you after signing up for the +Google Analytics service. -For more information, learn about Google Analytics -[here](https://marketingplatform.google.com/about/analytics/). - -The default behavior is only to send a pageview hit to Google Analytics. To -record more, look at the developer documentation -[here](https://developers.google.com/analytics/devguides/collection/gtagjs). +The default behavior is only to send a pageview hit. To record more, review the +[Google Analytics developer documentation](https://developers.google.com/analytics/devguides/collection/gtagjs). diff --git a/docs/integrations/ldap/org.md b/docs/integrations/ldap/org.md index dea33e4024..5d25afceca 100644 --- a/docs/integrations/ldap/org.md +++ b/docs/integrations/ldap/org.md @@ -6,8 +6,8 @@ sidebar_label: Org Data description: Setting up ingestion of organizational data from LDAP --- -The Backstage catalog can be set up to ingest organizational data - groups and -users - directly from an LDAP compatible service. The result is a hierarchy of +The Backstage catalog can be set up to ingest organizational data - users and +groups - directly from an LDAP compatible service. 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. @@ -97,7 +97,7 @@ secret: $env: LDAP_SECRET ``` -The `dn` is the full LDAP DN (distinguished name) for the user that the plugin +The `dn` is the full LDAP Distinguished Name for the user that the plugin authenticates itself as. At this point, only regular user based authentication is supported. @@ -110,12 +110,12 @@ backend starts. The `users` block defines the settings that govern the reading and interpretation of users. Its fields are explained in separate sections below. -### users.dn +#### users.dn The DN under which users are stored, e.g. `ou=people,ou=example,dc=example,dc=net`. -### users.options +#### users.options The search options to use when sending the query to the server, when reading all users. All of the options are shown below, with their default values, but they @@ -138,7 +138,7 @@ options: paged: false ``` -### users.set +#### users.set This optional piece lets you specify a number of JSON paths (on a.b.c form) and hard coded values to set on those paths. This can be useful for example if you @@ -150,7 +150,7 @@ set: metadata.namespace: 'ldap' ``` -### users.map +#### users.map Mappings from well known entity fields, to LDAP attribute names. This is where you are able to define how to interpret the attributes of each LDAP result item, @@ -192,12 +192,12 @@ map: The `groups` block defines the settings that govern the reading and interpretation of groups. Its fields are explained in separate sections below. -### groups.dn +#### groups.dn The DN under which groups are stored, e.g. `ou=people,ou=example,dc=example,dc=net`. -### groups.options +#### groups.options The search options to use when sending the query to the server, when reading all groups. All of the options are shown below, with their default values, but they @@ -220,7 +220,7 @@ options: paged: false ``` -### groups.set +#### groups.set This optional piece lets you specify a number of JSON paths (on a.b.c form) and hard coded values to set on those paths. This can be useful for example if you @@ -232,7 +232,7 @@ set: metadata.namespace: 'ldap' ``` -### groups.map +#### groups.map Mappings from well known entity fields, to LDAP attribute names. This is where you are able to define how to interpret the attributes of each LDAP result item, From 4d785b32a71ceaab65a2979c1c287eb773119b7c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Mar 2021 04:27:12 +0000 Subject: [PATCH 281/315] chore(deps): bump @kubernetes/client-node from 0.13.2 to 0.14.0 Bumps [@kubernetes/client-node](https://github.com/kubernetes-client/javascript) from 0.13.2 to 0.14.0. - [Release notes](https://github.com/kubernetes-client/javascript/releases) - [Changelog](https://github.com/kubernetes-client/javascript/blob/master/CHANGELOG.md) - [Commits](https://github.com/kubernetes-client/javascript/compare/0.13.2...0.14.0) Signed-off-by: dependabot[bot] --- plugins/kubernetes-backend/package.json | 2 +- plugins/kubernetes/package.json | 2 +- yarn.lock | 22 +++++----------------- 3 files changed, 7 insertions(+), 19 deletions(-) diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index 0f2d18f757..8d67d854e1 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -35,7 +35,7 @@ "@backstage/catalog-model": "^0.7.4", "@backstage/config": "^0.1.4", "@google-cloud/container": "^2.2.0", - "@kubernetes/client-node": "^0.13.2", + "@kubernetes/client-node": "^0.14.0", "@types/express": "^4.17.6", "aws-sdk": "^2.840.0", "aws4": "^1.11.0", diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index c69c29f7a1..accbe428dc 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -37,7 +37,7 @@ "@backstage/plugin-catalog-react": "^0.1.2", "@backstage/plugin-kubernetes-backend": "^0.3.1", "@backstage/theme": "^0.2.4", - "@kubernetes/client-node": "^0.13.2", + "@kubernetes/client-node": "^0.14.0", "@material-ui/core": "^4.11.0", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.45", diff --git a/yarn.lock b/yarn.lock index c9843dfdc7..9a0f5f3fe6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3280,10 +3280,10 @@ resolved "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== -"@kubernetes/client-node@^0.13.2": - version "0.13.2" - resolved "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.13.2.tgz#881eb407afbd5b499e5daf898ffcc40f839709e7" - integrity sha512-ufvGfjBXuy5LbZTJZ8bd1eRVgWUd9rRDCryMWNfxb4372Q60R1oG8qy7svUB9NqBmwFgKHuaXkrfq3rFFbGrew== +"@kubernetes/client-node@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.14.0.tgz#a02806f3b6fdb68fb51d451ee8ff01faa446f557" + integrity sha512-/37JHuEUAQ5GQ4kLKBmCYvGgf5W1KZWKreKGWFYH8VvT2Hl/o0aJZasu2w0EHEfmE11JCn0X9arVmOTyVCYvww== dependencies: "@types/js-yaml" "^3.12.1" "@types/node" "^10.12.0" @@ -25067,19 +25067,7 @@ tar@^4, tar@^4.4.12, tar@^4.4.2: safe-buffer "^5.1.2" yallist "^3.0.3" -tar@^6.0.1, tar@^6.0.2, tar@^6.0.5: - version "6.0.5" - resolved "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" - integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -tar@^6.1.0: +tar@^6.0.1, tar@^6.0.2, tar@^6.0.5, tar@^6.1.0: version "6.1.0" resolved "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83" integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA== From 7b3fb287dc9cf54707486f007b5cdffa7f355a98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Wed, 24 Mar 2021 07:41:32 +0100 Subject: [PATCH 282/315] =?UTF-8?q?Bye=20bye=20=F0=9F=91=8B=20(#5069)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stefan Ålund --- OWNERS.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OWNERS.md b/OWNERS.md index f1649c50b8..43c1656753 100644 --- a/OWNERS.md +++ b/OWNERS.md @@ -14,6 +14,9 @@ This page lists all active sponsors and maintainers. - Patrik Oldsberg ([rugvip](https://github.com/rugvip)) (Discord: @Rugvip) - Fredrik Adelöw ([freben](https://github.com/freben)) (Discord: @freben) - Ben Lambert ([benjdlambert](https://github.com/benjdlambert)) (Discord: @blam) + +# Emeritus maintainers + - Stefan Ålund ([stefanalund](https://github.com/stefanalund)) (Discord: @stalund) # Friends of Backstage From 3139f83af5bcfe21f0c6259ac73d80ab728b2a69 Mon Sep 17 00:00:00 2001 From: "Chongyang Adrian, Ke" Date: Wed, 24 Mar 2021 14:57:51 +0800 Subject: [PATCH 283/315] improve small-screen rendering Signed-off-by: Chongyang Adrian, Ke --- ...ry.md => techdocs-nervous-plants-carry.md} | 0 .../techdocs/src/reader/components/Reader.tsx | 34 +++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) rename .changeset/{nervous-plants-carry.md => techdocs-nervous-plants-carry.md} (100%) diff --git a/.changeset/nervous-plants-carry.md b/.changeset/techdocs-nervous-plants-carry.md similarity index 100% rename from .changeset/nervous-plants-carry.md rename to .changeset/techdocs-nervous-plants-carry.md diff --git a/plugins/techdocs/src/reader/components/Reader.tsx b/plugins/techdocs/src/reader/components/Reader.tsx index 4f3a52a522..dc76aa3fdd 100644 --- a/plugins/techdocs/src/reader/components/Reader.tsx +++ b/plugins/techdocs/src/reader/components/Reader.tsx @@ -67,9 +67,11 @@ export const Reader = ({ entityId, onReady }: Props) => { } }; updateSidebarPosition(); - document.addEventListener('scroll', updateSidebarPosition); + window.addEventListener('scroll', updateSidebarPosition); + window.addEventListener('resize', updateSidebarPosition); return () => { - document.removeEventListener('scroll', updateSidebarPosition); + window.removeEventListener('scroll', updateSidebarPosition); + window.removeEventListener('resize', updateSidebarPosition); }; }, [shadowDomRef, shadowRoot, sidebars]); @@ -111,6 +113,30 @@ export const Reader = ({ entityId, onReady }: Props) => { .md-typeset { font-size: 1rem; } .md-nav { font-size: 1rem; } .md-grid { max-width: 90vw; margin: 0 } + @media screen and (max-width: 76.1875em) { + .md-nav { + background-color: ${theme.palette.background.default}; + transition: none !important + } + .md-sidebar--secondary { display: none; } + .md-sidebar--primary { left: 72px; width: 10rem } + .md-content { margin-left: 10rem; max-width: 100%; } + .md-content__inner { font-size: 0.9rem } + .md-footer { + position: static; + margin-left: 10rem; + width: calc(100% - 10rem); + } + .md-nav--primary .md-nav__title { + white-space: normal; + height: auto; + line-height: 1rem; + cursor: auto; + } + .md-nav--primary > .md-nav__title [for="none"] { + padding-top: 0; + } + } `, }), ]); @@ -160,6 +186,10 @@ export const Reader = ({ entityId, onReady }: Props) => { }, onLoaded: (dom: Element) => { (dom as HTMLElement).style.removeProperty('opacity'); + // disable MkDocs drawer toggling ('for' attribute => checkbox mechanism) + (dom as HTMLElement) + .querySelector('.md-nav__title') + ?.removeAttribute('for'); const sideDivs: HTMLElement[] = Array.from( shadowRoot!.querySelectorAll('.md-sidebar'), ); From 4599a705aeb5d7044c4107bcc992c10105b42fbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 24 Mar 2021 11:55:31 +0100 Subject: [PATCH 284/315] add a diff MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/curly-fishes-speak.md | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/.changeset/curly-fishes-speak.md b/.changeset/curly-fishes-speak.md index 6654855a46..8cd53daeb4 100644 --- a/.changeset/curly-fishes-speak.md +++ b/.changeset/curly-fishes-speak.md @@ -9,5 +9,23 @@ This resulted in 404 errors in newly bootstrapped backstage applications, when adding components without configuration. To fix this in an existing backstage application, the locationAnalyzer needs -to be added to the `packages/backend/src/plugins/catalog.ts` file. -Check out `/backstage/packages/create-app/templates/default-app/packages/backend/src/plugins/catalog.ts` for reference. +to be carried from the builder to the router in the +`packages/backend/src/plugins/catalog.ts` file. + +```diff + const builder = new CatalogBuilder(env); + const { + entitiesCatalog, + locationsCatalog, + higherOrderOperation, ++ locationAnalyzer, + } = await builder.build(); + // ... + return await createRouter({ + entitiesCatalog, + locationsCatalog, + higherOrderOperation, ++ locationAnalyzer, + logger: env.logger, + }); +``` From a2a3c7803597944a3b9edad8697ab2514af8e9a1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 24 Mar 2021 12:29:55 +0100 Subject: [PATCH 285/315] Create big-plums-remember.md --- .changeset/big-plums-remember.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/big-plums-remember.md diff --git a/.changeset/big-plums-remember.md b/.changeset/big-plums-remember.md new file mode 100644 index 0000000000..76578eec0a --- /dev/null +++ b/.changeset/big-plums-remember.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +'@backstage/plugin-kubernetes': patch +--- + +Bump `@kubernetes/client-node` from `^0.13.2` to `^0.14.0`. From 9f4e12cf925bfd2a0797046299961dc9b40bbcd7 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Wed, 24 Mar 2021 10:00:33 -0400 Subject: [PATCH 286/315] Move typography to DialogContentText Signed-off-by: Adam Harvey --- plugins/badges/src/components/EntityBadgesDialog.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/badges/src/components/EntityBadgesDialog.tsx b/plugins/badges/src/components/EntityBadgesDialog.tsx index 58bce6a03b..c7ce7b822c 100644 --- a/plugins/badges/src/components/EntityBadgesDialog.tsx +++ b/plugins/badges/src/components/EntityBadgesDialog.tsx @@ -71,10 +71,10 @@ export const EntityBadgesDialog = ({ open, onClose, entity }: Props) => { Entity Badges - + Embed badges in other web sites that link back to this entity. Copy the relevant snippet of Markdown code to use the badge. - + {loading && } {error && } {content} From da5d235f0f3488e930f1abbd0afc6b9285c1c150 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Wed, 24 Mar 2021 10:04:56 -0400 Subject: [PATCH 287/315] Remove unused import Signed-off-by: Adam Harvey --- plugins/badges/src/components/EntityBadgesDialog.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/badges/src/components/EntityBadgesDialog.tsx b/plugins/badges/src/components/EntityBadgesDialog.tsx index c7ce7b822c..f6ba9de9fe 100644 --- a/plugins/badges/src/components/EntityBadgesDialog.tsx +++ b/plugins/badges/src/components/EntityBadgesDialog.tsx @@ -29,7 +29,6 @@ import { DialogContent, DialogContentText, DialogTitle, - Typography, useMediaQuery, useTheme, } from '@material-ui/core'; From d10ea17c9387dc5b9cdfc9a834655f93d0b7389b Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Tue, 23 Mar 2021 18:41:24 -0400 Subject: [PATCH 288/315] fix missing type exports Signed-off-by: Ryan Vazquez --- .../cost-insights-short-garlics-press.md | 5 +++++ .../src/components/CostGrowth/index.ts | 6 ++--- .../src/components/LegendItem/index.ts | 2 +- plugins/cost-insights/src/index.ts | 22 ++++++++++++++++++- 4 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 .changeset/cost-insights-short-garlics-press.md diff --git a/.changeset/cost-insights-short-garlics-press.md b/.changeset/cost-insights-short-garlics-press.md new file mode 100644 index 0000000000..1c0c8c6229 --- /dev/null +++ b/.changeset/cost-insights-short-garlics-press.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-cost-insights': patch +--- + +fix missing type exports of public components diff --git a/plugins/cost-insights/src/components/CostGrowth/index.ts b/plugins/cost-insights/src/components/CostGrowth/index.ts index 569c343380..09f9991a3a 100644 --- a/plugins/cost-insights/src/components/CostGrowth/index.ts +++ b/plugins/cost-insights/src/components/CostGrowth/index.ts @@ -14,7 +14,5 @@ * limitations under the License. */ -export { CostGrowth } from './CostGrowth'; -export type { CostGrowthProps } from './CostGrowth'; -export { CostGrowthIndicator } from './CostGrowthIndicator'; -export type { CostGrowthIndicatorProps } from './CostGrowthIndicator'; +export * from './CostGrowth'; +export * from './CostGrowthIndicator'; diff --git a/plugins/cost-insights/src/components/LegendItem/index.ts b/plugins/cost-insights/src/components/LegendItem/index.ts index e97af0c97f..8deef5e51b 100644 --- a/plugins/cost-insights/src/components/LegendItem/index.ts +++ b/plugins/cost-insights/src/components/LegendItem/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export { LegendItem } from './LegendItem'; +export * from './LegendItem'; diff --git a/plugins/cost-insights/src/index.ts b/plugins/cost-insights/src/index.ts index 2d12eec9d9..0a7d6388af 100644 --- a/plugins/cost-insights/src/index.ts +++ b/plugins/cost-insights/src/index.ts @@ -22,8 +22,28 @@ export { CostInsightsLabelDataflowInstructionsPage, } from './plugin'; export { ExampleCostInsightsClient } from './example'; -export { BarChart, LegendItem, CostGrowth } from './components'; +export { + BarChart, + BarChartLegend, + BarChartTooltip, + BarChartTooltipItem, + CostGrowth, + CostGrowthIndicator, + LegendItem, +} from './components'; export { MockConfigProvider, MockCurrencyProvider } from './testUtils'; export * from './api'; export * from './alerts'; export * from './types'; + +export type { + BarChartProps, + BarChartLegendOptions, + BarChartLegendProps, + BarChartTooltipProps, + BarChartTooltipItemProps, + CostGrowthProps, + CostGrowthIndicatorProps, + TooltipItem, + LegendItemProps, +} from './components'; From f47e11427e6decc38d8d8e5367c48fe383ce2595 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 24 Mar 2021 16:08:07 +0100 Subject: [PATCH 289/315] Log how many repositories were actually matching in MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/small-oranges-enjoy.md | 5 +++++ .../src/ingestion/processors/GithubDiscoveryProcessor.ts | 8 +++----- 2 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 .changeset/small-oranges-enjoy.md diff --git a/.changeset/small-oranges-enjoy.md b/.changeset/small-oranges-enjoy.md new file mode 100644 index 0000000000..641fe61237 --- /dev/null +++ b/.changeset/small-oranges-enjoy.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Log how many repositories were actually matching in `GithubDiscoveryProcessor` diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts index 34f7fa2782..f1818a3ab8 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts @@ -78,16 +78,14 @@ export class GithubDiscoveryProcessor implements CatalogProcessor { this.logger.info(`Reading GitHub repositories from ${location.target}`); const { repositories } = await getOrganizationRepositories(client, org); + const matching = repositories.filter(r => repoSearchPath.test(r.name)); const duration = ((Date.now() - startTimestamp) / 1000).toFixed(1); this.logger.debug( - `Read ${repositories.length} GitHub repositories in ${duration} seconds`, + `Read ${repositories.length} GitHub repositories (${matching.length} matching the pattern) in ${duration} seconds`, ); - for (const repository of repositories) { - if (!repoSearchPath.test(repository.name)) { - continue; - } + for (const repository of matching) { emit( results.location( { From 8d88ba28ea6d10f1c58259131f84e0fa3dbc51b4 Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Wed, 24 Mar 2021 10:50:28 -0600 Subject: [PATCH 290/315] Update descriptions, remove $env, wording tweaks Signed-off-by: Tim Hansen --- docs/integrations/azure/locations.md | 10 +++++----- docs/integrations/bitbucket/locations.md | 21 ++++++++++----------- docs/integrations/github/discovery.md | 4 +++- docs/integrations/github/locations.md | 12 +++++------- docs/integrations/github/org.md | 5 ++--- docs/integrations/gitlab/locations.md | 12 +++++------- docs/integrations/index.md | 15 +++++++-------- docs/integrations/ldap/org.md | 6 ++---- 8 files changed, 39 insertions(+), 46 deletions(-) diff --git a/docs/integrations/azure/locations.md b/docs/integrations/azure/locations.md index 13de79821a..4ce19bad4e 100644 --- a/docs/integrations/azure/locations.md +++ b/docs/integrations/azure/locations.md @@ -2,11 +2,12 @@ id: locations title: Azure DevOps Locations sidebar_label: Locations -description: Documentation on Azure DevOps location integration +description: + Integrating source code stored in Azure DevOps into the Backstage catalog --- The Azure integration supports loading catalog entities from Azure DevOps. -Components can be added to +Entities can be added to [static catalog configuration](../../features/software-catalog/configuration.md), or registered with the [catalog-import](https://github.com/backstage/backstage/tree/master/plugins/catalog-import) @@ -16,8 +17,7 @@ plugin. integrations: azure: - host: dev.azure.com - token: - $env: AZURE_TOKEN + token: ${AZURE_TOKEN} ``` > Note: An Azure DevOps provider is added automatically at startup for @@ -27,4 +27,4 @@ integrations: The configuration is a structure with two elements: - `host`: The DevOps host; only `dev.azure.com` is supported. -- `token` (optional): An personal access token as expected by Azure DevOps. +- `token` (optional): A personal access token as expected by Azure DevOps. diff --git a/docs/integrations/bitbucket/locations.md b/docs/integrations/bitbucket/locations.md index dd65146b63..bf7a6af57c 100644 --- a/docs/integrations/bitbucket/locations.md +++ b/docs/integrations/bitbucket/locations.md @@ -2,11 +2,12 @@ id: locations title: BitBucket Locations sidebar_label: Locations -description: Documentation on BitBucket location integration +description: + Integrating source code stored in BitBucket into the Backstage catalog --- The BitBucket integration supports loading catalog entities from bitbucket.com -or a self-hosted BitBucket. Components can be added to +or a self-hosted BitBucket. Entities can be added to [static catalog configuration](../../features/software-catalog/configuration.md), or registered with the [catalog-import](https://github.com/backstage/backstage/tree/master/plugins/catalog-import) @@ -16,10 +17,8 @@ plugin. integrations: bitbucket: - host: bitbucket.org - username: - $env: BITBUCKET_USERNAME - token: - $env: BITBUCKET_TOKEN + username: ${BITBUCKET_USERNAME} + token: ${BITBUCKET_TOKEN} ``` > Note: A public BitBucket provider is added automatically at startup for @@ -31,12 +30,12 @@ you can list the BitBucket providers you want to fetch data from. Each entry is a structure with up to four elements: - `host`: The host of the BitBucket instance, e.g. `bitbucket.company.com`. -- `username`: The BitBucket username to use in API requests. If a username is - not supplied, anonymous access will be used. - `token` (optional): An personal access token as expected by BitBucket. Either - an access token **or** a password may be supplied. -- `appPassword` (optional): The password for the BitBucket user. Either an - appPassword **or** an access token may be supplied. + an access token **or** a username + appPassword may be supplied. +- `username`: The BitBucket username to use in API requests. If neither a + username nor token are supplied, anonymous access will be used. +- `appPassword` (optional): The password for the BitBucket user. Only needed + when using `username` instead of `token`. - `apiBaseUrl` (optional): The URL of the GitLab API. For self-hosted installations, it is commonly at `https:///api/v4`. For gitlab.com, this configuration is not needed as it can be inferred. diff --git a/docs/integrations/github/discovery.md b/docs/integrations/github/discovery.md index 9bea4e3978..e2c30bf179 100644 --- a/docs/integrations/github/discovery.md +++ b/docs/integrations/github/discovery.md @@ -2,7 +2,9 @@ id: discovery title: GitHub Discovery sidebar_label: Discovery -description: Documentation on GitHub organization discovery +description: + Automatically discovering catalog entities from repositories in a GitHub + organization --- The GitHub integration has a special discovery processor for discovering catalog diff --git a/docs/integrations/github/locations.md b/docs/integrations/github/locations.md index 498da0f24d..7976c1dfa9 100644 --- a/docs/integrations/github/locations.md +++ b/docs/integrations/github/locations.md @@ -2,11 +2,11 @@ id: locations title: GitHub Locations sidebar_label: Locations -description: Documentation on GitHub location integration +description: Integrating source code stored in GitHub into the Backstage catalog --- The GitHub integration supports loading catalog entities from github.com or -GitHub Enterprise. Components can be added to +GitHub Enterprise. Entities can be added to [static catalog configuration](../../features/software-catalog/configuration.md), registered with the [catalog-import](https://github.com/backstage/backstage/tree/master/plugins/catalog-import) @@ -21,13 +21,11 @@ To use this integration, add configuration to your root `app-config.yaml`: integrations: github: - host: github.com - token: - $env: GITHUB_TOKEN + token: ${GITHUB_TOKEN} - host: ghe.example.net apiBaseUrl: https://ghe.example.net/api/v3 rawBaseUrl: https://ghe.example.net/raw - token: - $env: GHE_TOKEN + token: ${GHE_TOKEN} ``` > Note: A public GitHub provider is added automatically at startup for @@ -52,7 +50,7 @@ data from. Each entry is a structure with up to four elements: with this provider, specify the base URL for its endpoint here, with no trailing slash. Specifically when the target is public GitHub, you can leave it out to be inferred automatically. For a GitHub Enterprise installation, it - is commonly at `https://api.` or `https:///api/v3`. + is commonly at `https:///raw`. You need to supply either `apiBaseUrl` or `rawBaseUrl` or both (except for public GitHub, for which we can infer them). The `apiBaseUrl` will always be diff --git a/docs/integrations/github/org.md b/docs/integrations/github/org.md index 848a306381..f31c42dcd9 100644 --- a/docs/integrations/github/org.md +++ b/docs/integrations/github/org.md @@ -3,7 +3,7 @@ id: org title: GitHub Organizational Data sidebar_label: Org Data # prettier-ignore -description: Setting up ingestion of organizational data from GitHub +description: Importing users and groups from a GitHub organization into Backstage --- The Backstage catalog can be set up to ingest organizational data - teams and @@ -46,8 +46,7 @@ catalog: providers: - target: https://github.com apiBaseUrl: https://api.github.com - token: - $env: GITHUB_TOKEN + token: ${GITHUB_TOKEN} ``` Locations point out the specific org(s) you want to import. The `type` of these diff --git a/docs/integrations/gitlab/locations.md b/docs/integrations/gitlab/locations.md index 8694cb8119..965d183a9d 100644 --- a/docs/integrations/gitlab/locations.md +++ b/docs/integrations/gitlab/locations.md @@ -2,11 +2,11 @@ id: locations title: GitLab Locations sidebar_label: Locations -description: Documentation on GitLab location integration +description: Integrating source code stored in GitLab into the Backstage catalog --- The GitLab integration supports loading catalog entities from gitlab.com or a -self-hosted GitLab. Components can be added to +self-hosted GitLab. Entities can be added to [static catalog configuration](../../features/software-catalog/configuration.md), or registered with the [catalog-import](https://github.com/backstage/backstage/tree/master/plugins/catalog-import) @@ -16,8 +16,7 @@ plugin. integrations: gitlab: - host: gitlab.com - token: - $env: GITLAB_TOKEN + token: ${GITLAB_TOKEN} ``` > Note: A public GitLab provider is added automatically at startup for @@ -29,9 +28,8 @@ can list the GitLab providers you want to fetch data from. Each entry is a structure with up to four elements: - `host`: The host of the GitLab instance, e.g. `gitlab.company.com`. -- `token` (optional): An authentication token as expected by GitLab. If - supplied, it will be passed along with all calls to this provider, both API - and raw. If it is not supplied, anonymous access will be used. +- `token` (optional): An authentication token as expected by GitLab. If this is + not supplied, anonymous access will be used. - `apiBaseUrl` (optional): The URL of the GitLab API. For self-hosted installations, it is commonly at `https:///api/v4`. For gitlab.com, this configuration is not needed as it can be inferred. diff --git a/docs/integrations/index.md b/docs/integrations/index.md index d54e1f630a..baa280d620 100644 --- a/docs/integrations/index.md +++ b/docs/integrations/index.md @@ -2,7 +2,9 @@ id: index title: Integrations sidebar_label: Overview -description: Documentation on Backstage Integrations +description: + Configuring Backstage to read or publish data with external providers using + integrations --- Integrations allow Backstage to read or publish data using external providers @@ -11,7 +13,7 @@ Integrations allow Backstage to read or publish data using external providers ## Configuration -Integration are configured at the root level of `app-config.yaml` since +Integrations are configured at the root level of `app-config.yaml` since integrations are used by many Backstage core features and other plugins. Each key under `integrations` is a separate configuration for a single external @@ -22,14 +24,11 @@ configuration to use both GitHub and BitBucket: integrations: github: - host: github.com - token: - $env: GITHUB_TOKEN + token: ${GITHUB_TOKEN} bitbucket: - host: bitbucket.org - username: - $env: BITBUCKET_USERNAME - appPassword: - $env: BITBUCKET_APP_PASSWORD + username: ${BITBUCKET_USERNAME} + appPassword: ${BITBUCKET_APP_PASSWORD} ``` See documentation for each type of integration for full details on diff --git a/docs/integrations/ldap/org.md b/docs/integrations/ldap/org.md index dea33e4024..fca68333ab 100644 --- a/docs/integrations/ldap/org.md +++ b/docs/integrations/ldap/org.md @@ -46,8 +46,7 @@ catalog: - target: ldaps://ds.example.net bind: dn: uid=ldap-reader-user,ou=people,ou=example,dc=example,dc=net - secret: - $env: LDAP_SECRET + secret: ${LDAP_SECRET} users: dn: ou=people,ou=example,dc=example,dc=net options: @@ -93,8 +92,7 @@ authenticate) towards the server. It has the following fields. ```yaml dn: uid=ldap-reader-user,ou=people,ou=example,dc=example,dc=net -secret: - $env: LDAP_SECRET +secret: ${LDAP_SECRET} ``` The `dn` is the full LDAP DN (distinguished name) for the user that the plugin From 6f9bb476db59cf72fe2df4dabf7f39b6c507d25a Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Wed, 24 Mar 2021 11:06:16 -0600 Subject: [PATCH 291/315] Accidentally a bullet Signed-off-by: Tim Hansen --- docs/integrations/index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/integrations/index.md b/docs/integrations/index.md index baa280d620..544ce08ac4 100644 --- a/docs/integrations/index.md +++ b/docs/integrations/index.md @@ -8,8 +8,7 @@ description: --- Integrations allow Backstage to read or publish data using external providers - -- such as GitHub, GitLab, BitBucket, LDAP, or cloud providers. +such as GitHub, GitLab, BitBucket, LDAP, or cloud providers. ## Configuration From 9ac204d11a3a81b0160fcb75c52323cbba384ff8 Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Wed, 24 Mar 2021 11:08:29 -0600 Subject: [PATCH 292/315] Alphabetical integrations sidebar Signed-off-by: Tim Hansen --- microsite/sidebars.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/microsite/sidebars.json b/microsite/sidebars.json index bb0e69e5ac..7fc3af84f3 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -105,6 +105,16 @@ ], "Integrations": [ "integrations/index", + { + "type": "subcategory", + "label": "Azure DevOps", + "ids": ["integrations/azure/locations"] + }, + { + "type": "subcategory", + "label": "BitBucket", + "ids": ["integrations/bitbucket/locations"] + }, { "type": "subcategory", "label": "GitHub", @@ -121,23 +131,13 @@ }, { "type": "subcategory", - "label": "BitBucket", - "ids": ["integrations/bitbucket/locations"] - }, - { - "type": "subcategory", - "label": "Azure DevOps", - "ids": ["integrations/azure/locations"] + "label": "Google Analytics", + "ids": ["integrations/google-analytics/installation"] }, { "type": "subcategory", "label": "LDAP", "ids": ["integrations/ldap/org"] - }, - { - "type": "subcategory", - "label": "Google Analytics", - "ids": ["integrations/google-analytics/installation"] } ], "Plugins": [ From 117fa99502b90e8a19661e80f26f0bc8dff8ef27 Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Wed, 24 Mar 2021 12:15:39 -0400 Subject: [PATCH 293/315] Update plugins/cost-insights/src/alerts/README.md Co-authored-by: Tim Signed-off-by: Ryan Vazquez --- plugins/cost-insights/src/alerts/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/cost-insights/src/alerts/README.md b/plugins/cost-insights/src/alerts/README.md index 46a4bd2778..224691249a 100644 --- a/plugins/cost-insights/src/alerts/README.md +++ b/plugins/cost-insights/src/alerts/README.md @@ -4,7 +4,7 @@ Cost Insights currently supports [project growth](https://github.com/backstage/b ### Basic Setup -Project growth alerts, for example, can be used to alert users to increased cost growth in a project within the past 30 days. +Project growth alerts, for example, can be used to alert users to increased cost growth in a Google Cloud project within the past 30 days. ![project-growth-alert-basic](../assets/project-growth-alert-basic.png) From 21cc2f92163f61f5a8f0afe5edeeb94fcc0b59e4 Mon Sep 17 00:00:00 2001 From: Oliver Sand Date: Wed, 24 Mar 2021 19:27:54 +0100 Subject: [PATCH 294/315] Different workaround for prettier issue with markdown files Follow up for #5073 Instead of disabling prettier completely, I would prefer to disable it for the lines that actual cause issues. Signed-off-by: Oliver Sand --- .prettierignore | 1 - .../examples/documented-component/docs/extensions.md | 7 +++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.prettierignore b/.prettierignore index e2dcb9adc9..c4e675a5d7 100644 --- a/.prettierignore +++ b/.prettierignore @@ -7,4 +7,3 @@ templates plugins/scaffolder-backend/sample-templates .vscode dist-types -plugins/techdocs-backend/examples/documented-component/docs diff --git a/plugins/techdocs-backend/examples/documented-component/docs/extensions.md b/plugins/techdocs-backend/examples/documented-component/docs/extensions.md index 55152628eb..40565bd42f 100644 --- a/plugins/techdocs-backend/examples/documented-component/docs/extensions.md +++ b/plugins/techdocs-backend/examples/documented-component/docs/extensions.md @@ -21,16 +21,20 @@ To define an admonition simply put the following Markdown into your content: And they end up looking like this: + !!! warn Defining admonitions can be addicting. + !!! note You can learn a lot about TechDocs by just visiting the Backstage web site at https://backstage.io/docs. + !!! info TechDocs is the core feature that supports documentation as code in Backstage. + !!! tip Don't forget to spell check your documentation. @@ -53,12 +57,15 @@ Pymdownx (Python Markdown extensions) are a variety of smaller additions. ### Details + ??? note "What is the answer to life, the universe, and everything? (click me for the answer)" The answer is 42. + ??? note "What is 4 plus 4?" The answer is 8. + ???+ note "How do I get support?" You can get support by opening an issue in this repository. This detail is open by default so it's more easily visible without requiring the user to click to open it. From aa9bcba113e1e8fef66c4917002a38a81b9efbbc Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Wed, 24 Mar 2021 14:31:00 -0400 Subject: [PATCH 295/315] Clarify contributing Signed-off-by: Adam Harvey --- docs/getting-started/index.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index 2536944a7c..13b52181df 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -42,6 +42,13 @@ this process in [Create an app](./create-an-app.md). ### Contributing to Backstage +If you intend to make changes to the core project's packages, certain plugins, +or project documentation, then you can fork and clone +[https://github.com/backstage/backstage](https://github.com/backstage/backstage). + +This will let you run the latest code off of the `master` branch, fix bugs or +contribute new features, run test suites, etc. + You can read more in our [CONTRIBUTING](https://github.com/backstage/backstage/blob/master/CONTRIBUTING.md) guide, which can help you get setup with a Backstage development environment. From 1f2bdb81c4751478b5e34e0b6e3441030af4d89c Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Wed, 24 Mar 2021 14:31:15 -0400 Subject: [PATCH 296/315] Add Key Concepts page Signed-off-by: Adam Harvey --- docs/getting-started/concepts.md | 20 ++++++++++++++++++++ microsite/sidebars.json | 1 + 2 files changed, 21 insertions(+) create mode 100644 docs/getting-started/concepts.md diff --git a/docs/getting-started/concepts.md b/docs/getting-started/concepts.md new file mode 100644 index 0000000000..7f2e020a07 --- /dev/null +++ b/docs/getting-started/concepts.md @@ -0,0 +1,20 @@ +--- +id: concepts +title: Key Concepts +# prettier-ignore +description: High level of key concepts used in the Backstage project +--- + +For new users to Backstage, there are certain concepts which are central to it's +design and functionality. Being an expert in each of these concepts is not +necessary, however having a base understanding of each will make administering, +configuring, and operating Backstage easier to understand. + +- CHANGELOG - https://keepachangelog.com +- Docker - https://www.docker.com/ +- Monorepo - https://semaphoreci.com/blog/what-is-monorepo +- React - https://reactjs.org +- Semantic Versioning - https://semver.org +- TypeScript - https://www.typescriptlang.org +- YAML - https://yaml.org +- Yarn - https://www.pluralsight.com/guides/yarn-a-package-manager-for-node-js diff --git a/microsite/sidebars.json b/microsite/sidebars.json index e6dba1386d..a41a77115f 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -33,6 +33,7 @@ ] }, "getting-started/keeping-backstage-updated", + "getting-started/concepts", "getting-started/contributors" ], "CLI": ["cli/index", "cli/commands"], From bc05e9029734bb401e6be62b2ee65d26100b6f88 Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Wed, 24 Mar 2021 14:31:18 -0400 Subject: [PATCH 297/315] link to main README; refactor wording Signed-off-by: Ryan Vazquez --- plugins/cost-insights/README.md | 4 ++-- plugins/cost-insights/src/alerts/README.md | 14 ++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/plugins/cost-insights/README.md b/plugins/cost-insights/README.md index a103b58a77..bbd047be14 100644 --- a/plugins/cost-insights/README.md +++ b/plugins/cost-insights/README.md @@ -144,6 +144,6 @@ costInsights: The CostInsightsApi `getAlerts` method may return any type of alert or recommendation (called collectively "Action Items" in Cost Insights) that implements the [Alert type](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/types/Alert.ts). This allows you to deliver any alerts or recommendations specific to your infrastructure or company migrations. -The Alert type includes an `element` field to supply the JSX Element that will be rendered in the Cost Insights "Action Items" section; we recommend using Backstage's [InfoCard](https://backstage.io/storybook/?path=/story/layout-information-card--default) and [Recharts](http://recharts.org/en-US/) to show actionable visualizations. +To learn more about using Cost Insights' ready-to-use alerts, see the alerts [README](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/alerts/README.md). -The Alert `url` should link to documentation or instructions for resolving the alert. This may be omitted if no external link is needed. +Example implementations of custom alerts, forms and components can be found in the [examples](https://github.com/backstage/backstage/tree/master/plugins/cost-insights/src/example) directory. diff --git a/plugins/cost-insights/src/alerts/README.md b/plugins/cost-insights/src/alerts/README.md index 224691249a..4b24e4005f 100644 --- a/plugins/cost-insights/src/alerts/README.md +++ b/plugins/cost-insights/src/alerts/README.md @@ -1,6 +1,6 @@ # Cost Insights Alerts -Cost Insights currently supports [project growth](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/alerts/ProjectGrowthAlert.tsx) and [unlabeled dataflow](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/alerts/UnlabeledDataflowAlert.tsx) alerts. They do not require any UI or additional configuration but are extendable for custom implementations. +Cost Insights supports custom and ready-to-use alerts such as [project growth](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/alerts/ProjectGrowthAlert.tsx) and [unlabeled dataflow](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/alerts/UnlabeledDataflowAlert.tsx) alerts. These exported alerts do not require any UI or additional configuration but are extendable for custom implementations. ### Basic Setup @@ -35,9 +35,7 @@ export class CostInsightsClient extends CostInsightsApi { ### Custom Setup -Default properties such as the title, subtitle and even the chart itself can be overridden. - -Additionally, alerts can be extended to support actions such as snoozing or dismissing. +Default properties such as the title, subtitle and instructions page url can be overridden - even default UI such as chart itself. Additionally, alerts can be extended to support actions such as snoozing or dismissing. ![project-growth-alert-custom](../assets/project-growth-alert-custom.png) @@ -71,6 +69,7 @@ export class ProjectGrowthAlert extends DefaultProjectGrowthAlert { return 'A custom subtitle for a project growth alert'; } + // render a custom component in the Action Items section get element(){ return } @@ -87,7 +86,6 @@ export class ProjectGrowthAlert extends DefaultProjectGrowthAlert { ... } } - ``` ```ts @@ -116,7 +114,11 @@ export class CostInsightsClient extends CostInsightsApi { ### Advanced Setup -If the default UI is insufficient, alerts can render their own custom forms for actions such as snoozing or dismissing. Cost Insights exports several core UI components such as the `BarChart` and `LegendItem` to support custom implementations. +Alerts can render their own custom forms for actions such as snoozing or dismissing if the default UI is insufficient. + +Cost Insights exports several core UI components such as the `BarChart` and `LegendItem` to support custom implementations. + +**Note**: We recommend using Backstage's [InfoCard](https://backstage.io/storybook/?path=/story/layout-information-card--default) and [Recharts](http://recharts.org/en-US/) to show actionable visualizations. For more advanced usage, see example [KubernetesMigrationAlert](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/example/alerts/KubernetesMigrationAlert.tsx). From 3846a67f046523912114c68ccd9ef1a400ac15c5 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Wed, 24 Mar 2021 14:35:48 -0400 Subject: [PATCH 298/315] Fix typo Signed-off-by: Adam Harvey --- docs/getting-started/concepts.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/getting-started/concepts.md b/docs/getting-started/concepts.md index 7f2e020a07..f58d742a98 100644 --- a/docs/getting-started/concepts.md +++ b/docs/getting-started/concepts.md @@ -5,7 +5,7 @@ title: Key Concepts description: High level of key concepts used in the Backstage project --- -For new users to Backstage, there are certain concepts which are central to it's +For new users to Backstage, there are certain concepts which are central to its design and functionality. Being an expert in each of these concepts is not necessary, however having a base understanding of each will make administering, configuring, and operating Backstage easier to understand. @@ -13,6 +13,7 @@ configuring, and operating Backstage easier to understand. - CHANGELOG - https://keepachangelog.com - Docker - https://www.docker.com/ - Monorepo - https://semaphoreci.com/blog/what-is-monorepo +- Node.js - https://nodejs.org - React - https://reactjs.org - Semantic Versioning - https://semver.org - TypeScript - https://www.typescriptlang.org From 7cb67326c4c6553a745efde5f857b4e691a3babd Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Wed, 24 Mar 2021 14:52:49 -0400 Subject: [PATCH 299/315] Apply feedback Signed-off-by: Adam Harvey --- docs/getting-started/concepts.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/getting-started/concepts.md b/docs/getting-started/concepts.md index f58d742a98..f8aba8537d 100644 --- a/docs/getting-started/concepts.md +++ b/docs/getting-started/concepts.md @@ -2,13 +2,13 @@ id: concepts title: Key Concepts # prettier-ignore -description: High level of key concepts used in the Backstage project +description: High level key concepts used in the Backstage project --- -For new users to Backstage, there are certain concepts which are central to its +For users of Backstage, there are certain concepts which are central to its design and functionality. Being an expert in each of these concepts is not necessary, however having a base understanding of each will make administering, -configuring, and operating Backstage easier to understand. +configuring, and operating Backstage easier. - CHANGELOG - https://keepachangelog.com - Docker - https://www.docker.com/ From d9ded6d5248c9ca363552b8874af23babae24df6 Mon Sep 17 00:00:00 2001 From: ImgBotApp Date: Wed, 24 Mar 2021 19:15:56 +0000 Subject: [PATCH 300/315] [ImgBot] Optimize images *Total -- 625.75kb -> 362.63kb (42.05%) /microsite/static/img/todo-logo.png -- 16.51kb -> 8.25kb (50.03%) /plugins/cost-insights/src/assets/project-growth-alert-advanced.png -- 229.74kb -> 131.07kb (42.95%) /plugins/cost-insights/src/assets/project-growth-alert-custom.png -- 197.32kb -> 114.43kb (42.01%) /plugins/cost-insights/src/assets/project-growth-alert-basic.png -- 182.17kb -> 108.88kb (40.23%) Signed-off-by: ImgBotApp --- microsite/static/img/todo-logo.png | Bin 16908 -> 8449 bytes .../assets/project-growth-alert-advanced.png | Bin 235252 -> 134219 bytes .../src/assets/project-growth-alert-basic.png | Bin 186547 -> 111493 bytes .../assets/project-growth-alert-custom.png | Bin 202057 -> 117175 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/microsite/static/img/todo-logo.png b/microsite/static/img/todo-logo.png index eae540147955c2c92c222ff31daa9afe5b28658b..a8513e04f767fac304f4257b515055b261ba3a7c 100644 GIT binary patch literal 8449 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 Yb$5Q{Pfi7IM7jW~N}7rl@)mFY3n$V#$N&HU literal 16908 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 b;_yLHG?d@T%GToXU&mx56vWF#4L|=cU+Dx9 diff --git a/plugins/cost-insights/src/assets/project-growth-alert-advanced.png b/plugins/cost-insights/src/assets/project-growth-alert-advanced.png index 03e98fd420ec7eb1b5500fd50988be5449ba788e..1fc3e588818455a9af1844c61a62cd60a4094c30 100644 GIT binary patch literal 134219 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�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%0Dh3SQgep#d7b#P5~Ti6D};n9R{3ti5e zMIjM#dbcuJ?_V-H8QXBUVlZD9^ZOZ{u+wGh@A5FyPm}fCN*_*0wTd$5Y-yGz-T_8V zgz)tA6*Pk2VGYX^7bouoQr~L(gfnQ)X*b}YT~nhNBC?d?(40I zf9{w!H+(q(CEwZuP)nkmcB7wZVi?kSEkrnZ9v99Dy5V7QYniRl_A>&COk41G98C+9 z6t!00K~s}cDSi87mbP3=jP6E$V52d2?v5ceJ4 zH(DA^(7;msSns15<;V5LWVm+|doP4PSU3h(LHX^Dmt>_~!3?b!*0vLquv%x;POY#4 zp&L(vL4DL+LMbVcx1ewK+GswBXa$A5c@?pHS?Wzs{o%Ig?xR#rOf;)5OFD&z=4n0xuD!ohj(|)iL zTQcQKt}gyL%UQ)GPB*tbuzojEx|~w7+cY~UZ4z1~jb>)szB$=*GP=6~1Xe#rr-h!N zEO+qi?^Sgc6`u?Pe*Hex$~<~<$hO?{ymVm^h@SeUKgWsRLhkyk-@vVu^OK&uQSYG4 zhTRz;a`GGgeCoC$orU>NXM;2uEz}dny~Oz`-p+a#L7DcW0z3eW|~T5+EYz|LgmLkNx^S zF-{wP}#3c$gg8HDcX| z3BtG`Z?4bJid{)mW@PfNxohS@LW7<_4v8Nt{RyH825c<%C*I7P_$K&q#7~fUtRy}v zaNLCZzkePg%OZq;4vY4L~wCE?Vm2~o_SUm|E7QC?~WEgoj@}D>UzZsr(eX0li z)$cmoDIk$_76N1(OvUbR)&=l%PDw${ncovMA^nT<4=27S{`u!KolB`6$OFRP z-cjmJT`kD_uDiO$di3NKZnj5`e204gXS^zMa?;#QmHh*0J2v~ik_(?1cjk%WXoG} zq_zc%wJ0`yOf}#ms(Utq?&o>w z<#M~X8 zl4WX3RF`k1YH2Ui(pFocv}~F7vSq>>F0}v42llzyJMH!PAAi7JSj-k5P#~`0WM`*s z=jQHnz{$bUi?sgde=S_=?(Vv0q2YeJrOFG5EBoL6K*49`{rrsm9#6XiPVQb#Zu?0z aCr@|R-9Gaq;%?$CBttzD+SPTt{`zkeiwCg) literal 235252 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

a^8Y&TAZDL*`Pm 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 K{>11whW$S!Z;fyO diff --git a/plugins/cost-insights/src/assets/project-growth-alert-basic.png b/plugins/cost-insights/src/assets/project-growth-alert-basic.png index 397a0533689c5d5a5d292c160431210547f2b29a..fe192332b3e01c66c043ef2ddbbda6f08f5ccbe6 100644 GIT binary patch literal 111493 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%0DWjH%r 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

    IO*zBjMVzyr6FNEfStTpG1|)ek_PPrXm?fc;u( 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

    &&w2mytH1{AjT80&Swb#b>pZw!<3E!k=U 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

    +I1vtE^6EG1 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 z z4r(rXIQ#>O^6glMO{~*`-W1V&`4FDR$k5W2Ws z1DxH(<8>2gI<|bcCHi2r2Lq{f{~nV1e||KO2&#MNF$@Gded~e0`_{wY45%u7d{6u~ zD1soQY#4JIEZp{Op93j6*A1@~`R#_Y7Y685IKE=r Date: Wed, 24 Mar 2021 15:47:17 -0600 Subject: [PATCH 301/315] Fix auth environment type; GitLab audience optional Signed-off-by: Tim Hansen --- plugins/auth-backend/config.d.ts | 18 +++++++++--------- .../src/providers/gitlab/provider.ts | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/plugins/auth-backend/config.d.ts b/plugins/auth-backend/config.d.ts index 9850e05235..64de6cdd50 100644 --- a/plugins/auth-backend/config.d.ts +++ b/plugins/auth-backend/config.d.ts @@ -36,13 +36,13 @@ export interface Config { */ providers?: { google?: { - development: { [key: string]: string }; + [authEnv: string]: { [key: string]: string }; }; github?: { - development: { [key: string]: string }; + [authEnv: string]: { [key: string]: string }; }; gitlab?: { - development: { [key: string]: string }; + [authEnv: string]: { [key: string]: string }; }; saml?: { entryPoint: string; @@ -55,10 +55,10 @@ export interface Config { digestAlgorithm?: string; }; okta?: { - development: { [key: string]: string }; + [authEnv: string]: { [key: string]: string }; }; oauth2?: { - development: { + [authEnv: string]: { clientId: string; clientSecret: string; authorizationUrl: string; @@ -67,16 +67,16 @@ export interface Config { }; }; oidc?: { - development: { [key: string]: string }; + [authEnv: string]: { [key: string]: string }; }; auth0?: { - development: { [key: string]: string }; + [authEnv: string]: { [key: string]: string }; }; microsoft?: { - development: { [key: string]: string }; + [authEnv: string]: { [key: string]: string }; }; onelogin?: { - development: { [key: string]: string }; + [authEnv: string]: { [key: string]: string }; }; awsalb?: { issuer?: string; diff --git a/plugins/auth-backend/src/providers/gitlab/provider.ts b/plugins/auth-backend/src/providers/gitlab/provider.ts index 630cad0554..b8de398af5 100644 --- a/plugins/auth-backend/src/providers/gitlab/provider.ts +++ b/plugins/auth-backend/src/providers/gitlab/provider.ts @@ -122,7 +122,7 @@ export const createGitlabProvider = ( OAuthEnvironmentHandler.mapConfig(config, envConfig => { const clientId = envConfig.getString('clientId'); const clientSecret = envConfig.getString('clientSecret'); - const audience = envConfig.getString('audience'); + const audience = envConfig.getOptionalString('audience'); const baseUrl = audience || 'https://gitlab.com'; const callbackUrl = `${globalConfig.baseUrl}/${providerId}/handler/frame`; From 7e1053a878ab77af44817b8f53642bf1effbc5cc Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Wed, 24 Mar 2021 15:33:42 -0600 Subject: [PATCH 302/315] Add notes about github-apps Signed-off-by: Tim Hansen --- docs/integrations/github/discovery.md | 3 ++- docs/integrations/github/locations.md | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/integrations/github/discovery.md b/docs/integrations/github/discovery.md index e2c30bf179..fe52feab6e 100644 --- a/docs/integrations/github/discovery.md +++ b/docs/integrations/github/discovery.md @@ -48,7 +48,8 @@ request for each discovered location. This means if you have more than ~140 catalog entities, you may get throttled by rate limiting. This will soon be resolved once catalog refreshes make use of ETags; to work around this in the meantime, you can change the refresh rate of -the catalog in your `packages/backend/src/plugins/catalog.ts` file. +the catalog in your `packages/backend/src/plugins/catalog.ts` file, or configure +Backstage to use the [github-apps plugin](../../plugins/github-apps.md). This is true for any method of adding GitHub entities to the catalog, but especially easy to hit with automatic discovery. diff --git a/docs/integrations/github/locations.md b/docs/integrations/github/locations.md index 7976c1dfa9..5b972f332c 100644 --- a/docs/integrations/github/locations.md +++ b/docs/integrations/github/locations.md @@ -56,3 +56,9 @@ You need to supply either `apiBaseUrl` or `rawBaseUrl` or both (except for public GitHub, for which we can infer them). The `apiBaseUrl` will always be preferred over the other if a `token` is given, otherwise `rawBaseUrl` will be preferred. + +## Authentication with GitHub Apps + +Alternatively, Backstage can use GitHub Apps for backend authentication. This +has higher rate limits, and a clearer authorization model. See the +[github-apps plugin](../../plugins/github-apps.md) for how to set this up. From 449776cd6901d7e133bd1016ca911a88672aeb1e Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Wed, 24 Mar 2021 19:38:19 -0600 Subject: [PATCH 303/315] changeset Signed-off-by: Tim Hansen --- .changeset/light-zoos-wonder.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/light-zoos-wonder.md diff --git a/.changeset/light-zoos-wonder.md b/.changeset/light-zoos-wonder.md new file mode 100644 index 0000000000..218cf5c6e0 --- /dev/null +++ b/.changeset/light-zoos-wonder.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +The `auth` config types now properly accept any declared auth environment. Previously only `development` was accepted. + +The `audience` configuration is no longer required for GitLab auth; this will default to `https://gitlab.com` From 61b2689f8b857ee09db33acc53c629c397ff8fc3 Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Wed, 24 Mar 2021 19:56:56 -0600 Subject: [PATCH 304/315] Permalinks Signed-off-by: Tim Hansen --- .changeset/five-eagles-flow.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/five-eagles-flow.md b/.changeset/five-eagles-flow.md index e05e6afa04..a546506907 100644 --- a/.changeset/five-eagles-flow.md +++ b/.changeset/five-eagles-flow.md @@ -32,10 +32,10 @@ catalog: Additionally, the default app sidebar was updated to parity with the Backstage repo. You can see these changes in the template -[App.tsx](https://github.com/backstage/backstage/blob/master/packages/create-app/templates/default-app/packages/app/src/App.tsx) +[App.tsx](https://github.com/backstage/backstage/blob/8817a87cdd5c881fbe8a43557ba7f9df0f9e3258/packages/create-app/templates/default-app/packages/app/src/App.tsx#L70) referencing a new `Root` component. Finally, compare your `packages/app/src/components/catalog/EntityPage.tsx` to -[EntityPage](https://github.com/backstage/backstage/blob/master/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx) +[EntityPage](https://github.com/backstage/backstage/blob/8817a87cdd5c881fbe8a43557ba7f9df0f9e3258/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx) from the `@backstage/create-app` default template to pick up additional changes there. From aaeb7ecf3c8ac277e9ee813b79468329398f28cb Mon Sep 17 00:00:00 2001 From: "Chongyang Adrian, Ke" Date: Tue, 16 Mar 2021 14:28:59 +0800 Subject: [PATCH 305/315] TechDocs: show outdated docs and asnyc build new Signed-off-by: Chongyang Adrian, Ke --- .changeset/four-hounds-own.md | 8 ++ .../src/DocsBuilder/builder.ts | 2 +- .../techdocs-backend/src/service/router.ts | 126 +++++++++-------- plugins/techdocs/dev/api.ts | 84 ++++++++++- plugins/techdocs/package.json | 4 +- plugins/techdocs/src/api.test.ts | 4 +- plugins/techdocs/src/api.ts | 62 +++++++- .../techdocs/src/reader/components/Reader.tsx | 133 ++++++++++++++---- .../components/TechDocsNotFound.test.tsx | 9 +- .../reader/components/TechDocsNotFound.tsx | 5 +- plugins/techdocs/src/reader/hooks/index.ts | 17 --- .../src/reader/hooks/shadowDom.test.tsx | 44 ------ .../techdocs/src/reader/hooks/shadowDom.ts | 31 ---- plugins/techdocs/src/reader/index.tsx | 1 - .../reader/transformers/addBaseUrl.test.ts | 1 + 15 files changed, 327 insertions(+), 204 deletions(-) create mode 100644 .changeset/four-hounds-own.md delete mode 100644 plugins/techdocs/src/reader/hooks/index.ts delete mode 100644 plugins/techdocs/src/reader/hooks/shadowDom.test.tsx delete mode 100644 plugins/techdocs/src/reader/hooks/shadowDom.ts diff --git a/.changeset/four-hounds-own.md b/.changeset/four-hounds-own.md new file mode 100644 index 0000000000..28eeb89f83 --- /dev/null +++ b/.changeset/four-hounds-own.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-techdocs': minor +'@backstage/plugin-techdocs-backend': minor +--- + +When newer documentation available but not built, show older documentation while async building newer +TechDocs backend: /sync endpoint added to support above, returns immediate success if docs don't need a build, returns delayed success after build if needed +TechDocs backend: /docs endpoint removed as frontend can directly request to techdocs.storageUrl or /static/docs diff --git a/plugins/techdocs-backend/src/DocsBuilder/builder.ts b/plugins/techdocs-backend/src/DocsBuilder/builder.ts index 5d8ee3612d..9dd53f159e 100644 --- a/plugins/techdocs-backend/src/DocsBuilder/builder.ts +++ b/plugins/techdocs-backend/src/DocsBuilder/builder.ts @@ -101,7 +101,7 @@ export class DocsBuilder { } catch (err) { // Proceed with a fresh build this.logger.warn( - `Unable to read techdocs_metadata.json, error ${err}.`, + `Unable to read techdocs_metadata.json, proceeding with fresh build, error ${err}.`, ); } } diff --git a/plugins/techdocs-backend/src/service/router.ts b/plugins/techdocs-backend/src/service/router.ts index 4b10063e03..9456e8a277 100644 --- a/plugins/techdocs-backend/src/service/router.ts +++ b/plugins/techdocs-backend/src/service/router.ts @@ -31,6 +31,7 @@ import { Logger } from 'winston'; import { DocsBuilder } from '../DocsBuilder'; import { shouldCheckForUpdate } from '../DocsBuilder/BuildMetadataStorage'; import { getEntityNameFromUrlPath } from './helpers'; +import { NotFoundError } from '@backstage/errors'; type RouterOptions = { preparers: PreparerBuilder; @@ -105,12 +106,11 @@ export async function createRouter({ } }); - router.get('/docs/:namespace/:kind/:name/*', async (req, res) => { + // Check if docs are the latest version and trigger rebuilds if not + // Responds with immediate success if rebuild not needed + // If a build is required, responds with a success when finished + router.get('/sync/:namespace/:kind/:name', async (req, res) => { const { kind, namespace, name } = req.params; - const storageUrl = - config.getOptionalString('techdocs.storageUrl') ?? - `${await discovery.getExternalBaseUrl('techdocs')}/static/docs`; - const catalogUrl = await discovery.getBaseUrl('catalog'); const triple = [kind, namespace, name].map(encodeURIComponent).join('/'); @@ -127,6 +127,16 @@ export async function createRouter({ const entity: Entity = await catalogRes.json(); + if (!entity.metadata.uid) { + throw new NotFoundError('Entity metadata UID missing'); + } + if (!shouldCheckForUpdate(entity.metadata.uid)) { + res.status(200).json({ + message: `Last check for documentation update is recent, did not retry.`, + }); + return; + } + let publisherType = ''; try { publisherType = config.getString('techdocs.publisher.type'); @@ -137,63 +147,61 @@ export async function createRouter({ 'https://backstage.io/docs/features/techdocs/architecture', ); } - // techdocs-backend will only try to build documentation for an entity if techdocs.builder is set to 'local' - // If set to 'external', it will only try to fetch and assume that an external process (e.g. CI/CD pipeline - // of the repository) is responsible for building and publishing documentation to the storage provider. - if ( - config.getString('techdocs.builder') === 'local' && - entity.metadata.uid && - shouldCheckForUpdate(entity.metadata.uid) - ) { - const docsBuilder = new DocsBuilder({ - preparers, - generators, - publisher, - dockerClient, - logger, - entity, + // If set to 'external', it will assume that an external process (e.g. CI/CD pipeline + // of the repository) is responsible for building and publishing documentation to the storage provider + if (config.getString('techdocs.builder') !== 'local') { + res.status(200).json({ + message: + '`techdocs.builder` app config is not set to `local`, so docs will not be generated locally and sync is not required.', }); - let foundDocs = false; - switch (publisherType) { - case 'local': - case 'awsS3': - case 'azureBlobStorage': - case 'openStackSwift': - case 'googleGcs': - // This block should be valid for all storage implementations. So no need to duplicate in future, - // add the publisher type in the list here. - await docsBuilder.build(); - // With a maximum of ~5 seconds wait, check if the files got published and if docs will be fetched - // on the user's page. If not, respond with a message asking them to check back later. - // The delay here is to make sure GCS/AWS/etc. registers newly uploaded files which is usually <1 second - for (let attempt = 0; attempt < 5; attempt++) { - if (await publisher.hasDocsBeenGenerated(entity)) { - foundDocs = true; - break; - } - await new Promise(r => setTimeout(r, 1000)); - } - if (!foundDocs) { - logger.error( - 'Published files are taking longer to show up in storage. Something went wrong.', - ); - res.status(408).json({ - error: - 'Sorry! It took too long for the generated docs to show up in storage. Check back later.', - }); - return; - } - break; - default: - res.status(400).json({ - error: `Publisher type ${publisherType} is not supported by techdocs-backend docs builder.`, - }); - break; - } + return; + } + const docsBuilder = new DocsBuilder({ + preparers, + generators, + publisher, + dockerClient, + logger, + entity, + }); + let foundDocs = false; + switch (publisherType) { + case 'local': + case 'awsS3': + case 'azureBlobStorage': + case 'openStackSwift': + case 'googleGcs': + // This block should be valid for all storage implementations. So no need to duplicate in future, + // add the publisher type in the list here. + await docsBuilder.build(); + // With a maximum of ~5 seconds wait, check if the files got published and if docs will be fetched + // on the user's page. If not, respond with a message asking them to check back later. + // The delay here is to make sure GCS/AWS/etc. registers newly uploaded files which is usually <1 second + for (let attempt = 0; attempt < 5; attempt++) { + if (await publisher.hasDocsBeenGenerated(entity)) { + foundDocs = true; + break; + } + await new Promise(r => setTimeout(r, 1000)); + } + if (!foundDocs) { + logger.error( + 'Published files are taking longer to show up in storage. Something went wrong.', + ); + throw new NotFoundError( + 'Sorry! It took too long for the generated docs to show up in storage. Check back later.', + ); + } + res + .status(201) + .json({ message: 'Docs updated or did not need updating' }); + break; + default: + throw new NotFoundError( + `Publisher type ${publisherType} is not supported by techdocs-backend docs builder.`, + ); } - - res.redirect(`${storageUrl}${req.path.replace('/docs', '')}`); }); // Route middleware which serves files from the storage set in the publisher. diff --git a/plugins/techdocs/dev/api.ts b/plugins/techdocs/dev/api.ts index 5fa494a973..7acf3c7032 100644 --- a/plugins/techdocs/dev/api.ts +++ b/plugins/techdocs/dev/api.ts @@ -17,6 +17,7 @@ import { DiscoveryApi, IdentityApi } from '@backstage/core'; import { Config } from '@backstage/config'; import { EntityName } from '@backstage/catalog-model'; import { TechDocsStorage } from '../src/api'; +import { NotFoundError } from '@backstage/errors'; export class TechDocsDevStorageApi implements TechDocsStorage { public configApi: Config; @@ -44,11 +45,29 @@ export class TechDocsDevStorageApi implements TechDocsStorage { ); } - async getEntityDocs(entityId: EntityName, path: string) { - const { name } = entityId; + async getStorageUrl() { + return ( + this.configApi.getOptionalString('techdocs.storageUrl') ?? + `${await this.discoveryApi.getBaseUrl('techdocs')}/static/docs` + ); + } - const apiOrigin = await this.getApiOrigin(); - const url = `${apiOrigin}/${name}/${path}`; + async getBuilder() { + return this.configApi.getString('techdocs.builder'); + } + + async fetchUrl(url: string) { + const token = await this.identityApi.getIdToken(); + return fetch(url, { + headers: token ? { Authorization: `Bearer ${token}` } : {}, + }); + } + + async getEntityDocs(entityId: EntityName, path: string) { + const { kind, namespace, name } = entityId; + + const storageUrl = await this.getStorageUrl(); + const url = `${storageUrl}/${namespace}/${kind}/${name}/${path}`; const token = await this.identityApi.getIdToken(); const request = await fetch( @@ -58,13 +77,66 @@ export class TechDocsDevStorageApi implements TechDocsStorage { }, ); - if (request.status === 404) { - throw new Error('Page not found'); + let errorMessage = ''; + switch (request.status) { + case 404: + errorMessage = 'Page not found. '; + // path is empty for the home page of an entity's docs site + if (!path) { + errorMessage += + 'This could be because there is no index.md file in the root of the docs directory of this repository.'; + } + throw new NotFoundError(errorMessage); + case 500: + errorMessage = + 'Could not generate documentation or an error in the TechDocs backend. '; + throw new Error(errorMessage); + default: + // Do nothing + break; } return request.text(); } + /** + * Check if docs are the latest version and trigger rebuilds if not + * + * @param {EntityName} entityId Object containing entity data like name, namespace, etc. + * @returns {boolean} Whether documents are currently synchronized to newest version + * @throws {Error} Throws error on error from sync endpoint + */ + async syncEntityDocs(entityId: EntityName) { + const { kind, namespace, name } = entityId; + + const apiOrigin = await this.getApiOrigin(); + const url = `${apiOrigin}/sync/${namespace}/${kind}/${name}`; + let request; + let attempts: number = 0; + // retry if request times out, up to 5 times + // can happen due to docs taking too long to generate + while (!request || (request.status === 408 && attempts < 5)) { + attempts++; + request = await this.fetchUrl( + `${url.endsWith('/') ? url : `${url}/`}index.html`, + ); + } + + switch (request.status) { + case 404: + throw (await request.json()).error; + case 200: + case 201: + return true; + // for timeout and misc errors, handle without error to allow viewing older docs + // if older docs not available, + // Reader will show 404 error coming from getEntityDocs + case 408: + default: + return false; + } + } + async getBaseUrl( oldBaseUrl: string, entityId: EntityName, diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 9951dccded..42e2ac0b6e 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -38,10 +38,10 @@ "@backstage/test-utils": "^0.1.9", "@backstage/theme": "^0.2.4", "@backstage/techdocs-common": "^0.4.5", + "@backstage/errors": "^0.1.1", "@material-ui/core": "^4.11.0", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.45", - "@types/react": "^16.9", "react": "^16.13.1", "react-dom": "^16.13.1", "react-router": "6.0.0-beta.0", @@ -56,8 +56,10 @@ "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^12.0.7", + "@types/react": "^16.9", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", + "@types/react": "^16.9", "canvas": "^2.6.1", "cross-fetch": "^3.0.6", "msw": "^0.21.2" diff --git a/plugins/techdocs/src/api.test.ts b/plugins/techdocs/src/api.test.ts index 734650d7c8..2260cc7d39 100644 --- a/plugins/techdocs/src/api.test.ts +++ b/plugins/techdocs/src/api.test.ts @@ -37,7 +37,7 @@ describe('TechDocsStorageApi', () => { await expect( storageApi.getBaseUrl('test.js', mockEntity, ''), ).resolves.toEqual( - `${mockBaseUrl}/docs/${mockEntity.namespace}/${mockEntity.kind}/${mockEntity.name}/test.js`, + `${mockBaseUrl}/static/docs/${mockEntity.namespace}/${mockEntity.kind}/${mockEntity.name}/test.js`, ); }); @@ -48,7 +48,7 @@ describe('TechDocsStorageApi', () => { await expect( storageApi.getBaseUrl('test/', mockEntity, ''), ).resolves.toEqual( - `${mockBaseUrl}/docs/${mockEntity.namespace}/${mockEntity.kind}/${mockEntity.name}/test/`, + `${mockBaseUrl}/static/docs/${mockEntity.namespace}/${mockEntity.kind}/${mockEntity.name}/test/`, ); }); }); diff --git a/plugins/techdocs/src/api.ts b/plugins/techdocs/src/api.ts index 6de94b63bb..0be530cc08 100644 --- a/plugins/techdocs/src/api.ts +++ b/plugins/techdocs/src/api.ts @@ -18,6 +18,7 @@ import { createApiRef, DiscoveryApi, IdentityApi } from '@backstage/core'; import { Config } from '@backstage/config'; import { EntityName } from '@backstage/catalog-model'; import { TechDocsMetadata } from './types'; +import { NotFoundError } from '@backstage/errors'; export const techdocsStorageApiRef = createApiRef({ id: 'plugin.techdocs.storageservice', @@ -31,6 +32,7 @@ export const techdocsApiRef = createApiRef({ export interface TechDocsStorage { getEntityDocs(entityId: EntityName, path: string): Promise; + syncEntityDocs(entityId: EntityName): Promise; getBaseUrl( oldBaseUrl: string, entityId: EntityName, @@ -153,6 +155,17 @@ export class TechDocsStorageApi implements TechDocsStorage { ); } + async getStorageUrl() { + return ( + this.configApi.getOptionalString('techdocs.storageUrl') ?? + `${await this.discoveryApi.getBaseUrl('techdocs')}/static/docs` + ); + } + + async getBuilder() { + return this.configApi.getString('techdocs.builder'); + } + /** * Fetch HTML content as text for an individual docs page in an entity's docs site. * @@ -164,8 +177,8 @@ export class TechDocsStorageApi implements TechDocsStorage { async getEntityDocs(entityId: EntityName, path: string) { const { kind, namespace, name } = entityId; - const apiOrigin = await this.getApiOrigin(); - const url = `${apiOrigin}/docs/${namespace}/${kind}/${name}/${path}`; + const storageUrl = await this.getStorageUrl(); + const url = `${storageUrl}/${namespace}/${kind}/${name}/${path}`; const token = await this.identityApi.getIdToken(); const request = await fetch( @@ -184,7 +197,7 @@ export class TechDocsStorageApi implements TechDocsStorage { errorMessage += 'This could be because there is no index.md file in the root of the docs directory of this repository.'; } - throw new Error(errorMessage); + throw new NotFoundError(errorMessage); case 500: errorMessage = 'Could not generate documentation or an error in the TechDocs backend. '; @@ -197,6 +210,46 @@ export class TechDocsStorageApi implements TechDocsStorage { return request.text(); } + /** + * Check if docs are on the latest version and trigger rebuild if not + * + * @param {EntityName} entityId Object containing entity data like name, namespace, etc. + * @returns {boolean} Whether documents are currently synchronized to newest version + * @throws {Error} Throws error on error from sync endpoint in Techdocs Backend + */ + async syncEntityDocs(entityId: EntityName) { + const { kind, namespace, name } = entityId; + + const apiOrigin = await this.getApiOrigin(); + const url = `${apiOrigin}/sync/${namespace}/${kind}/${name}`; + const token = await this.identityApi.getIdToken(); + let request; + let attempts: number = 0; + // retry if request times out, up to 5 times + // can happen due to docs taking too long to generate + while (!request || (request.status === 408 && attempts < 5)) { + attempts++; + request = await fetch(url, { + headers: token ? { Authorization: `Bearer ${token}` } : {}, + }); + } + + switch (request.status) { + case 404: + throw new NotFoundError((await request.json()).error); + case 200: + case 201: + case 304: + return true; + // for timeout and misc errors, handle without error to allow viewing older docs + // if older docs not available, + // Reader will show 404 error coming from getEntityDocs + case 408: + default: + return false; + } + } + async getBaseUrl( oldBaseUrl: string, entityId: EntityName, @@ -205,10 +258,9 @@ export class TechDocsStorageApi implements TechDocsStorage { const { kind, namespace, name } = entityId; const apiOrigin = await this.getApiOrigin(); - return new URL( oldBaseUrl, - `${apiOrigin}/docs/${namespace}/${kind}/${name}/${path}`, + `${apiOrigin}/static/docs/${namespace}/${kind}/${name}/${path}`, ).toString(); } } diff --git a/plugins/techdocs/src/reader/components/Reader.tsx b/plugins/techdocs/src/reader/components/Reader.tsx index dc76aa3fdd..b5186f70b2 100644 --- a/plugins/techdocs/src/reader/components/Reader.tsx +++ b/plugins/techdocs/src/reader/components/Reader.tsx @@ -17,11 +17,15 @@ import { EntityName } from '@backstage/catalog-model'; import { useApi } from '@backstage/core'; import { BackstageTheme } from '@backstage/theme'; import { useTheme } from '@material-ui/core'; +<<<<<<< HEAD import React, { useEffect, useState } from 'react'; +======= +>>>>>>> 3ab0f7d4f (TechDocs: show outdated docs and asnyc build new) import { useNavigate, useParams } from 'react-router-dom'; import { useAsync } from 'react-use'; +import React, { useEffect, useRef, useState } from 'react'; +import { Alert } from '@material-ui/lab'; import { techdocsStorageApiRef } from '../../api'; -import { useShadowDom } from '../hooks'; import transformer, { addBaseUrl, addLinkClickListener, @@ -46,13 +50,45 @@ export const Reader = ({ entityId, onReady }: Props) => { const theme = useTheme(); const techdocsStorageApi = useApi(techdocsStorageApiRef); +<<<<<<< HEAD const [shadowDomRef, shadowRoot] = useShadowDom(); const [sidebars, setSidebars] = useState(); +======= +>>>>>>> 3ab0f7d4f (TechDocs: show outdated docs and asnyc build new) const navigate = useNavigate(); + const shadowDomRef = useRef(null); + const [loadedPath, setLoadedPath] = useState(''); + const [atInitialLoad, setAtInitialLoad] = useState(true); + const [newerDocsExist, setNewerDocsExist] = useState(false); - const { value, loading, error } = useAsync(async () => { + const { + value: isSynced, + loading: syncInProgress, + error: syncError, + } = useAsync(async () => { + // Attempt to sync only if `techdocs.builder` in app config is set to 'local' + if ((await techdocsStorageApi.getBuilder()) !== 'local') { + return Promise.resolve({ + value: true, + loading: null, + error: null, + }); + } + return techdocsStorageApi.syncEntityDocs({ kind, namespace, name }); + }); + + const { + value: rawPage, + loading: docLoading, + error: docLoadError, + } = useAsync(async () => { + // do not automatically load same page again if URL has not changed, + // happens when generating new docs finishes + if (newerDocsExist && path === loadedPath) { + return null; + } return techdocsStorageApi.getEntityDocs({ kind, namespace, name }, path); - }, [techdocsStorageApi, kind, namespace, name, path]); + }, [techdocsStorageApi, kind, namespace, name, path, isSynced]); useEffect(() => { const updateSidebarPosition = () => { @@ -75,15 +111,36 @@ export const Reader = ({ entityId, onReady }: Props) => { }; }, [shadowDomRef, shadowRoot, sidebars]); - React.useEffect(() => { - if (!shadowRoot || loading || error) { - return; // Shadow DOM isn't ready / It's not ready / Docs was not found + useEffect(() => { + if (rawPage) { + setLoadedPath(path); + } + }, [rawPage, path]); + + useEffect(() => { + if (atInitialLoad === false) { + return; + } + setTimeout(() => { + setAtInitialLoad(false); + }, 5000); + }); + + useEffect(() => { + if (!atInitialLoad && !!rawPage && syncInProgress) { + setNewerDocsExist(true); + } + }, [atInitialLoad, rawPage, syncInProgress]); + + useEffect(() => { + if (!rawPage || !shadowDomRef.current) { + return; } if (onReady) { onReady(); } // Pre-render - const transformedElement = transformer(value as string, [ + const transformedElement = transformer(rawPage as string, [ sanitizeDOM(), addBaseUrl({ techdocsStorageApi, @@ -145,6 +202,9 @@ export const Reader = ({ entityId, onReady }: Props) => { return; // An unexpected error occurred } + const shadowDiv: HTMLElement = shadowDomRef.current!; + const shadowRoot = + shadowDiv.shadowRoot || shadowDiv.attachShadow({ mode: 'open' }); Array.from(shadowRoot.children).forEach(child => shadowRoot.removeChild(child), ); @@ -166,17 +226,15 @@ export const Reader = ({ entityId, onReady }: Props) => { onClick: (_: MouseEvent, url: string) => { window.scroll({ top: 0 }); const parsedUrl = new URL(url); + if (newerDocsExist && isSynced) { + // link navigation will load newer docs + setNewerDocsExist(false); + } if (parsedUrl.hash) { - history.pushState( - null, - '', - `${parsedUrl.pathname}${parsedUrl.hash}`, - ); + navigate(`${parsedUrl.pathname}${parsedUrl.hash}`); } else { navigate(parsedUrl.pathname); } - - shadowRoot?.querySelector(parsedUrl.hash)?.scrollIntoView(); }, }), onCssReady({ @@ -204,30 +262,49 @@ export const Reader = ({ entityId, onReady }: Props) => { }), ]); }, [ - name, - path, - shadowRoot, - value, - error, - loading, - namespace, - kind, + rawPage, entityId, navigate, + onReady, + shadowDomRef, + path, techdocsStorageApi, theme, - onReady, + kind, + namespace, + name, + newerDocsExist, + isSynced, ]); - if (error) { - // TODO Enhance API call to return customize error objects so we can identify which we ran into - // For now this defaults to display error code 404 - return ; + // docLoadError not considered an error state if sync request is still ongoing + // or sync just completed and doc is loading again + if ((docLoadError && !syncInProgress && !docLoading) || syncError) { + let errMessage = ''; + if (docLoadError) { + errMessage += ` Load error: ${docLoadError}`; + } + if (syncError) errMessage += ` Build error: ${syncError}`; + return ; } return ( <> - {loading ? : null} + {newerDocsExist && !isSynced ? ( + + A newer version of this documentation is being prepared and will be + available shortly. + + ) : null} + {newerDocsExist && isSynced ? ( + + A newer version of this documentation is now available, please refresh + to view. + + ) : null} + {docLoading || (docLoadError && syncInProgress) ? ( + + ) : null}

    ); diff --git a/plugins/techdocs/src/reader/components/TechDocsNotFound.test.tsx b/plugins/techdocs/src/reader/components/TechDocsNotFound.test.tsx index c6562ec8ad..841ccfcc66 100644 --- a/plugins/techdocs/src/reader/components/TechDocsNotFound.test.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsNotFound.test.tsx @@ -43,17 +43,14 @@ describe('', ( }); describe('', () => { - it('should render with a custom status code, custom error message and go back link', () => { + it('should render with a 404 code, custom error message and go back link', () => { const rendered = render( wrapInTestApp( - , + , ), ); rendered.getByText(/This is a custom error message/i); - rendered.getByText(/500/i); + rendered.getByText(/404/i); rendered.getByText(/Looks like someone dropped the mic!/i); expect(rendered.getByTestId('go-back-link')).toBeDefined(); }); diff --git a/plugins/techdocs/src/reader/components/TechDocsNotFound.tsx b/plugins/techdocs/src/reader/components/TechDocsNotFound.tsx index 04f2106161..cdacc1cb7e 100644 --- a/plugins/techdocs/src/reader/components/TechDocsNotFound.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsNotFound.tsx @@ -19,10 +19,9 @@ import { ErrorPage, useApi, configApiRef } from '@backstage/core'; type Props = { errorMessage?: string; - statusCode?: number; }; -export const TechDocsNotFound = ({ errorMessage, statusCode }: Props) => { +export const TechDocsNotFound = ({ errorMessage }: Props) => { const techdocsBuilder = useApi(configApiRef).getOptionalString( 'techdocs.builder', ); @@ -38,7 +37,7 @@ export const TechDocsNotFound = ({ errorMessage, statusCode }: Props) => { return ( diff --git a/plugins/techdocs/src/reader/hooks/index.ts b/plugins/techdocs/src/reader/hooks/index.ts deleted file mode 100644 index f66c5303ed..0000000000 --- a/plugins/techdocs/src/reader/hooks/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2020 Spotify AB - * - * 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 { useShadowDom } from './shadowDom'; diff --git a/plugins/techdocs/src/reader/hooks/shadowDom.test.tsx b/plugins/techdocs/src/reader/hooks/shadowDom.test.tsx deleted file mode 100644 index c4fab0dbc6..0000000000 --- a/plugins/techdocs/src/reader/hooks/shadowDom.test.tsx +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2020 Spotify AB - * - * 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 { renderWithEffects } from '@backstage/test-utils'; -import { useShadowDom } from './shadowDom'; - -const ComponentWithoutHook = () => { - return
    ; -}; - -const ComponentWithHook = () => { - const [ref] = useShadowDom(); - return
    ; -}; - -describe('useShadowDom', () => { - it('does not create a Shadow DOM instance', async () => { - const rendered = await renderWithEffects(); - - const divElement = rendered.getByTestId('shadow-dom'); - expect(divElement.shadowRoot).not.toBeInstanceOf(ShadowRoot); - }); - - it('create a Shadow DOM instance', async () => { - const rendered = await renderWithEffects(); - - const divElement = rendered.getByTestId('shadow-dom'); - expect(divElement.shadowRoot).toBeInstanceOf(ShadowRoot); - }); -}); diff --git a/plugins/techdocs/src/reader/hooks/shadowDom.ts b/plugins/techdocs/src/reader/hooks/shadowDom.ts deleted file mode 100644 index 93e4c1d375..0000000000 --- a/plugins/techdocs/src/reader/hooks/shadowDom.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2020 Spotify AB - * - * 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 { useEffect, useRef } from 'react'; -import type { RefObject } from 'react'; - -type IUseShadowDOM = () => [RefObject, ShadowRoot?]; - -export const useShadowDom: IUseShadowDOM = () => { - const ref = useRef(null); - - useEffect(() => { - const divElement = ref.current; - divElement?.attachShadow({ mode: 'open' }); - }, []); - - return [ref, ref.current?.shadowRoot || undefined]; -}; diff --git a/plugins/techdocs/src/reader/index.tsx b/plugins/techdocs/src/reader/index.tsx index a3ca8f394b..6b66289fa5 100644 --- a/plugins/techdocs/src/reader/index.tsx +++ b/plugins/techdocs/src/reader/index.tsx @@ -14,5 +14,4 @@ * limitations under the License. */ -export * from './hooks'; export * from './components'; diff --git a/plugins/techdocs/src/reader/transformers/addBaseUrl.test.ts b/plugins/techdocs/src/reader/transformers/addBaseUrl.test.ts index 10c7191b63..5ba86e42ca 100644 --- a/plugins/techdocs/src/reader/transformers/addBaseUrl.test.ts +++ b/plugins/techdocs/src/reader/transformers/addBaseUrl.test.ts @@ -23,6 +23,7 @@ const DOC_STORAGE_URL = 'https://example-host.storage.googleapis.com'; const techdocsStorageApi: TechDocsStorage = { getBaseUrl: jest.fn(() => Promise.resolve(DOC_STORAGE_URL)), getEntityDocs: () => new Promise(resolve => resolve('yes!')), + syncEntityDocs: () => new Promise(resolve => resolve(true)), }; const fixture = ` From 74e5042386500284dfcd72237eeb73d870645d38 Mon Sep 17 00:00:00 2001 From: "Chongyang Adrian, Ke" Date: Thu, 25 Mar 2021 11:00:04 +0800 Subject: [PATCH 306/315] fix rebase clashes Signed-off-by: Chongyang Adrian, Ke --- .../techdocs/src/reader/components/Reader.tsx | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/plugins/techdocs/src/reader/components/Reader.tsx b/plugins/techdocs/src/reader/components/Reader.tsx index b5186f70b2..8c18d9496d 100644 --- a/plugins/techdocs/src/reader/components/Reader.tsx +++ b/plugins/techdocs/src/reader/components/Reader.tsx @@ -17,10 +17,6 @@ import { EntityName } from '@backstage/catalog-model'; import { useApi } from '@backstage/core'; import { BackstageTheme } from '@backstage/theme'; import { useTheme } from '@material-ui/core'; -<<<<<<< HEAD -import React, { useEffect, useState } from 'react'; -======= ->>>>>>> 3ab0f7d4f (TechDocs: show outdated docs and asnyc build new) import { useNavigate, useParams } from 'react-router-dom'; import { useAsync } from 'react-use'; import React, { useEffect, useRef, useState } from 'react'; @@ -50,13 +46,9 @@ export const Reader = ({ entityId, onReady }: Props) => { const theme = useTheme(); const techdocsStorageApi = useApi(techdocsStorageApiRef); -<<<<<<< HEAD - const [shadowDomRef, shadowRoot] = useShadowDom(); const [sidebars, setSidebars] = useState(); -======= ->>>>>>> 3ab0f7d4f (TechDocs: show outdated docs and asnyc build new) const navigate = useNavigate(); - const shadowDomRef = useRef(null); + const shadowDomRef = useRef(null); const [loadedPath, setLoadedPath] = useState(''); const [atInitialLoad, setAtInitialLoad] = useState(true); const [newerDocsExist, setNewerDocsExist] = useState(false); @@ -92,7 +84,7 @@ export const Reader = ({ entityId, onReady }: Props) => { useEffect(() => { const updateSidebarPosition = () => { - if (!!shadowRoot && !!shadowDomRef.current && !!sidebars) { + if (!!shadowDomRef.current && !!sidebars) { sidebars!.forEach(sidebar => { const newTop = Math.max( shadowDomRef.current!.getBoundingClientRect().top, @@ -109,7 +101,7 @@ export const Reader = ({ entityId, onReady }: Props) => { window.removeEventListener('scroll', updateSidebarPosition); window.removeEventListener('resize', updateSidebarPosition); }; - }, [shadowDomRef, shadowRoot, sidebars]); + }, [shadowDomRef, sidebars]); useEffect(() => { if (rawPage) { @@ -177,7 +169,7 @@ export const Reader = ({ entityId, onReady }: Props) => { } .md-sidebar--secondary { display: none; } .md-sidebar--primary { left: 72px; width: 10rem } - .md-content { margin-left: 10rem; max-width: 100%; } + .md-content { margin-left: 10rem; max-width: calc(100% - 10rem); } .md-content__inner { font-size: 0.9rem } .md-footer { position: static; From 5691532f891d4861e9874d56c36c6e9f1c45dc3f Mon Sep 17 00:00:00 2001 From: Brian Leathem Date: Wed, 24 Mar 2021 20:54:54 -0700 Subject: [PATCH 307/315] Changed the signature of createRoutableExtension to include null Signed-off-by: Brian Leathem --- packages/core-api/src/extensions/extensions.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/core-api/src/extensions/extensions.tsx b/packages/core-api/src/extensions/extensions.tsx index c486bfd84a..191e4c4fb7 100644 --- a/packages/core-api/src/extensions/extensions.tsx +++ b/packages/core-api/src/extensions/extensions.tsx @@ -27,8 +27,11 @@ type ComponentLoader = sync: T; }; +// We do not use ComponentType as the return type, since it doesn't let us convey the children prop. +// ComponentType inserts children as an optional prop whether the inner component accepts it or not, +// making it impossible to make the usage of children type safe. export function createRoutableExtension< - T extends (props: any) => JSX.Element + T extends (props: any) => JSX.Element | null >(options: { component: () => Promise; mountPoint: RouteRef; @@ -70,6 +73,9 @@ export function createComponentExtension< return createReactExtension({ component }); } +// We do not use ComponentType as the return type, since it doesn't let us convey the children prop. +// ComponentType inserts children as an optional prop whether the inner component accepts it or not, +// making it impossible to make the usage of children type safe. export function createReactExtension< T extends (props: any) => JSX.Element | null >(options: { From ea9d977e7d32d320dce6e8201d518c59d48716fd Mon Sep 17 00:00:00 2001 From: Oliver Sand Date: Wed, 24 Mar 2021 19:15:31 +0100 Subject: [PATCH 308/315] Fix icons of admonitions The fixes one display issue of #3558 Signed-off-by: Oliver Sand --- .changeset/orange-shirts-bake.md | 5 +++ .../techdocs/src/reader/components/Reader.tsx | 35 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 .changeset/orange-shirts-bake.md diff --git a/.changeset/orange-shirts-bake.md b/.changeset/orange-shirts-bake.md new file mode 100644 index 0000000000..192559cde5 --- /dev/null +++ b/.changeset/orange-shirts-bake.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': patch +--- + +Introduce workaround for admonition icons of MkDocs. diff --git a/plugins/techdocs/src/reader/components/Reader.tsx b/plugins/techdocs/src/reader/components/Reader.tsx index dc76aa3fdd..dc2a30f5b0 100644 --- a/plugins/techdocs/src/reader/components/Reader.tsx +++ b/plugins/techdocs/src/reader/components/Reader.tsx @@ -137,6 +137,41 @@ export const Reader = ({ entityId, onReady }: Props) => { padding-top: 0; } } + `, + }), + injectCss({ + // Admonitions and others are using SVG masks to define icons. These + // masks are defined as CSS variables. + // As the MkDocs output is rendered in shadow DOM, the CSS variable + // definitions on the root selector are not applied. Instead, the have + // to be applied on :host. + // As there is no way to transform the served main*.css yet (for + // example in the backend), we have to copy from main*.css and modify + // them. + css: ` + :host { + --md-admonition-icon--note: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--abstract: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--info: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--tip: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--success: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--question: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--warning: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--failure: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--danger: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--bug: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--example: url('data:image/svg+xml;charset=utf-8,'); + --md-admonition-icon--quote: url('data:image/svg+xml;charset=utf-8,'); + } + :host { + --md-footnotes-icon: url('data:image/svg+xml;charset=utf-8,'); + } + :host { + --md-details-icon: url('data:image/svg+xml;charset=utf-8,'); + } + :host { + --md-tasklist-icon: url('data:image/svg+xml;charset=utf-8,'); + --md-tasklist-icon--checked: url('data:image/svg+xml;charset=utf-8,'); `, }), ]); From 76deafd318f93de4824b04f9a5c85e19473a3f4b Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 25 Mar 2021 08:51:13 +0100 Subject: [PATCH 309/315] Added changeset Signed-off-by: blam --- .changeset/chilled-flies-speak.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/chilled-flies-speak.md diff --git a/.changeset/chilled-flies-speak.md b/.changeset/chilled-flies-speak.md new file mode 100644 index 0000000000..fc647a4fd5 --- /dev/null +++ b/.changeset/chilled-flies-speak.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-api': patch +--- + +Changed the signature of `createRoutableExtension` to include null From 5daf260539bfa67dd391ca18a4c36ec6cd8017e6 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 25 Mar 2021 10:06:08 +0100 Subject: [PATCH 310/315] Remove the vale check for now as it's borked. Signed-off-by: blam --- .github/workflows/docs-quality-checker.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/docs-quality-checker.yml b/.github/workflows/docs-quality-checker.yml index 45cf1dafe3..f0bfaefe0a 100644 --- a/.github/workflows/docs-quality-checker.yml +++ b/.github/workflows/docs-quality-checker.yml @@ -1,10 +1,10 @@ name: Check Markdown files quality -on: - pull_request: - branches: [master] - paths: - - '**.md' +# on: +# pull_request: +# branches: [master] +# paths: +# - '**.md' jobs: check-all-files: From b1dc16baa14863d974aa627067b9f19462831ce4 Mon Sep 17 00:00:00 2001 From: Vinay P Date: Mon, 15 Mar 2021 12:45:06 +0000 Subject: [PATCH 311/315] copyWithoutRender, extensions inputs for fetch:cookiecutter as discussed in this GitHub issue: https://github.com/backstage/backstage/issues/4920 Signed-off-by: Vinay P --- .../builtin/fetch/cookiecutter.test.ts | 50 +++++++++++++++++++ .../actions/builtin/fetch/cookiecutter.ts | 39 ++++++++++++++- .../stages/templater/cookiecutter.test.ts | 23 +++++++++ 3 files changed, 111 insertions(+), 1 deletion(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/cookiecutter.test.ts index 0de7d94fda..940c0f1e08 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/cookiecutter.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/cookiecutter.test.ts @@ -108,6 +108,56 @@ describe('fetch:cookiecutter', () => { }); }); + it('should execute the cookiecutter templater with optional inputs if they are present and valid', async () => { + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + copyWithoutRender: ['goreleaser.yml'], + extensions: [ + 'jinja2_custom_filters_extension.string_filters_extension.StringFilterExtension', + ], + }, + }); + + expect(cookiecutterTemplater.run).toHaveBeenCalledWith({ + workspacePath: mockTmpDir, + dockerClient: mockDockerClient, + logStream: mockContext.logStream, + values: { + ...mockContext.input.values, + _copy_without_render: ['goreleaser.yml'], + _extensions: [ + 'jinja2_custom_filters_extension.string_filters_extension.StringFilterExtension', + ], + }, + }); + }); + + it('should throw if copyWithoutRender is not an Array', async () => { + await expect( + action.handler({ + ...mockContext, + input: { + ...mockContext.input, + copyWithoutRender: 'xyz', + }, + }), + ).rejects.toThrow(/copyWithoutRender must be an Array/); + }); + + it('should throw if extensions is not an Array', async () => { + await expect( + action.handler({ + ...mockContext, + input: { + ...mockContext.input, + extensions: 'xyz', + }, + }), + ).rejects.toThrow(/extensions must be an Array/); + }); + it('should throw if there is no cookiecutter templater initialized', async () => { const templatersWithoutCookiecutter = new Templaters(); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/cookiecutter.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/cookiecutter.ts index 814146cc50..404d134f6d 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/cookiecutter.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/cookiecutter.ts @@ -37,6 +37,8 @@ export function createFetchCookiecutterAction(options: { url: string; targetPath?: string; values: JsonObject; + copyWithoutRender?: string[]; + extensions?: string[]; }>({ id: 'fetch:cookiecutter', description: @@ -63,6 +65,24 @@ export function createFetchCookiecutterAction(options: { description: 'Values to pass on to cookiecutter for templating', type: 'object', }, + copyWithoutRender: { + title: 'Copy Without Render', + description: + 'Avoid rendering directories and files in the template', + type: 'array', + items: { + type: 'string', + }, + }, + extensions: { + title: 'Template Extensions', + description: + "Jinja2 extensions to add filters, tests, globals or extend the parser. Extensions must be installed in the container or on the host where Cookiecutter executes. See the contrib directory in Backstage's repo for more information", + type: 'array', + items: { + type: 'string', + }, + }, }, }, }, @@ -76,6 +96,18 @@ export function createFetchCookiecutterAction(options: { ); const resultDir = resolvePath(workDir, 'result'); + if ( + ctx.input.copyWithoutRender && + !Array.isArray(ctx.input.copyWithoutRender) + ) { + throw new InputError( + 'Fetch action input copyWithoutRender must be an Array', + ); + } + if (ctx.input.extensions && !Array.isArray(ctx.input.extensions)) { + throw new InputError('Fetch action input extensions must be an Array'); + } + await fetchContents({ reader, integrations, @@ -85,13 +117,18 @@ export function createFetchCookiecutterAction(options: { }); const cookiecutter = templaters.get('cookiecutter'); + const values = { + ...(ctx.input.values as TemplaterValues), + _copy_without_render: ctx.input.copyWithoutRender, + _extensions: ctx.input.extensions, + }; // Will execute the template in ./template and put the result in ./result await cookiecutter.run({ workspacePath: workDir, dockerClient, logStream: ctx.logStream, - values: ctx.input.values as TemplaterValues, + values, }); // Finally move the template result into the task workspace diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.test.ts b/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.test.ts index 763572fda5..7806f089ff 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.test.ts @@ -168,6 +168,29 @@ describe('CookieCutter Templater', () => { }); }); + it('should run the docker container mentioned in configs, overriding the default', async () => { + const values = { + owner: 'blobby', + storePath: 'https://github.com/org/repo', + imageName: 'foo/cookiecutter-image-with-extensions', + }; + + jest.spyOn(fs, 'readdir').mockResolvedValueOnce(['newthing'] as any); + + const templater = new CookieCutter(); + await templater.run({ + workspacePath: 'tempdir', + values, + dockerClient: mockDocker, + }); + + expect(runDockerContainer).toHaveBeenCalledWith( + expect.objectContaining({ + imageName: 'foo/cookiecutter-image-with-extensions', + }), + ); + }); + it('should pass through the streamer to the run docker helper', async () => { const stream = new PassThrough(); From 91e87c0554055ce830b4a7e79ec97c6289e9e452 Mon Sep 17 00:00:00 2001 From: Vinay P Date: Mon, 15 Mar 2021 13:35:27 +0000 Subject: [PATCH 312/315] Add changeset Signed-off-by: Vinay P --- .changeset/orange-flowers-act.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/orange-flowers-act.md diff --git a/.changeset/orange-flowers-act.md b/.changeset/orange-flowers-act.md new file mode 100644 index 0000000000..ba83f8401e --- /dev/null +++ b/.changeset/orange-flowers-act.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +Add inputs for action `fetch:cookiecutter`: copyWithoutRender, extensions, imageName From 3105b46afa8088670160f4f68e4a5de270c59741 Mon Sep 17 00:00:00 2001 From: Vinay P Date: Thu, 18 Mar 2021 12:19:28 +0000 Subject: [PATCH 313/315] Document use of Jinja2 extensions with fetch:cookiecutter Signed-off-by: Vinay P --- .../Dockerfile | 11 ++++ .../README.md | 63 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 contrib/docker/cookiecutter-with-jinja2-extensions/Dockerfile create mode 100644 contrib/docker/cookiecutter-with-jinja2-extensions/README.md diff --git a/contrib/docker/cookiecutter-with-jinja2-extensions/Dockerfile b/contrib/docker/cookiecutter-with-jinja2-extensions/Dockerfile new file mode 100644 index 0000000000..4f5f72bdf8 --- /dev/null +++ b/contrib/docker/cookiecutter-with-jinja2-extensions/Dockerfile @@ -0,0 +1,11 @@ +FROM alpine:3.7 + +RUN apk add --update \ + git \ + python \ + python-dev \ + py-pip \ + g++ && \ + pip install cookiecutter jinja2_custom_filters_extension && \ + apk del g++ py-pip python-dev && \ + rm -rf /var/cache/apk/* diff --git a/contrib/docker/cookiecutter-with-jinja2-extensions/README.md b/contrib/docker/cookiecutter-with-jinja2-extensions/README.md new file mode 100644 index 0000000000..6b990f77a3 --- /dev/null +++ b/contrib/docker/cookiecutter-with-jinja2-extensions/README.md @@ -0,0 +1,63 @@ +# Using Cookiecutter with Jinja2 extensions + +Jinja2 extensions can be used with the scaffolder's `fetch:cookiecutter` built-in action to add filters, tests, or to extend the parser. + +Using Cookiecutter extensions is a two-step process: + +- [Installing the extension](#installing-the-extension), and +- [Instructing Cookiecutter to use the extension](#instructing-cookiecutter-to-use-the-extension) + +### Installing the extension + +This step depends on how the scaffolder is setup to use Cookiecutter: + +- Using a local Cookiecutter, or +- Using a Cookiecutter Docker image, e.g. [spotify/backstage-cookiecutter](https://github.com/backstage/backstage/blob/37e35b91/plugins/scaffolder-backend/scripts/Cookiecutter.dockerfile). + +Say we want to install [`jinja2_custom_filters_extension`](https://pypi.org/project/jinja2-custom-filters-extension/) to use the `upper_case_first_letter` filter in a Cookiecutter template. + +#### Using a local Cookiecutter + +The scaffolder is able to execute a locally installed Cookiecutter, and doesn't pull a Docker image in that case. If that's your setup, just ensure that the Jinja2 extensions, available via `pip` are installed alongside Cookiecutter, e.g. if Cookiecutter is baked into a custom Backstage image using `pip` and a `requirements.txt`: + +In the custom Backstage Dockerfile: + +```Dockerfile +... +RUN pip3 install -r requirements.txt +... +``` + +In requirements.txt: + +```python +... +cookiecutter==1.7.2 +jinja2_custom_filters_extension==0.0.2 +... +``` + +#### Using a Cookiecutter Docker image + +If the scaffolder doesn't find a local Cookiecutter, it pulls down the `spotify/backstage-cookiecutter` image. You can create a custom Cookiecutter image based on that, install extensions into it, and use that instead. See for example, the [`Dockerfile`](./Dockerfile) in this directory. + +**Note:** The [`imageName`](https://github.com/vinayvinay/backstage/blob/37e35b91/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.ts#L77) that gets pulled isn't currently configurable. So, for the time being, you might have to customise the `scaffolder-backend` plugin to fetch your customised Cookiecutter Docker image. + +### Instructing Cookiecutter to use the extension + +Cookiecutter enables extensions mentioned in `cookiecutter.json`. `fetch:cookiecutter` generates a `cookiecutter.json`, deriving its values from `inputs` to `fetch:cookiecutter` in the scaffolder [Template](https://backstage.io/docs/features/software-templates/writing-templates), as: + +```yaml +steps: + - id: fetch-base + name: Fetch Base + action: fetch:cookiecutter + input: + extensions: + - jinja2_custom_filters_extension.string_filters_extension.StringFilterExtension + url: https://github.com/spotify/cookiecutter-golang + values: + name: '{{ parameters.name }}' +``` + +Cookiecutter enables a few extensions by default. See the official Cookiecutter documentation for [Template Extensions](https://cookiecutter.readthedocs.io/en/1.7.2/advanced/template_extensions.html) for a list of such extensions, and more information. From 673c4f7d5aef19beef2772baa8415130e64534eb Mon Sep 17 00:00:00 2001 From: Vinay P Date: Thu, 18 Mar 2021 13:23:30 +0000 Subject: [PATCH 314/315] Allow overriding cookiecutter's docker imageName .. to allow running custom-built images that have cookiecutter installed alongwith extensions, for example. https://cookiecutter.readthedocs.io/en/1.7.2/advanced/template_extensions.html related to: https://github.com/backstage/backstage/pull/4956#discussion_r596846365 Signed-off-by: Vinay P --- .../cookiecutter-with-jinja2-extensions/README.md | 14 ++++++++++++-- .../actions/builtin/fetch/cookiecutter.test.ts | 2 ++ .../actions/builtin/fetch/cookiecutter.ts | 8 ++++++++ .../scaffolder/stages/templater/cookiecutter.ts | 5 +++-- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/contrib/docker/cookiecutter-with-jinja2-extensions/README.md b/contrib/docker/cookiecutter-with-jinja2-extensions/README.md index 6b990f77a3..470694513a 100644 --- a/contrib/docker/cookiecutter-with-jinja2-extensions/README.md +++ b/contrib/docker/cookiecutter-with-jinja2-extensions/README.md @@ -39,9 +39,19 @@ jinja2_custom_filters_extension==0.0.2 #### Using a Cookiecutter Docker image -If the scaffolder doesn't find a local Cookiecutter, it pulls down the `spotify/backstage-cookiecutter` image. You can create a custom Cookiecutter image based on that, install extensions into it, and use that instead. See for example, the [`Dockerfile`](./Dockerfile) in this directory. +If the scaffolder doesn't find a local Cookiecutter, it pulls down the `spotify/backstage-cookiecutter` image. You can create a custom Cookiecutter image based on that, install extensions into it, and specify that customised image as an input `imageName` to the `fetch:cookiecutter` action: -**Note:** The [`imageName`](https://github.com/vinayvinay/backstage/blob/37e35b91/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.ts#L77) that gets pulled isn't currently configurable. So, for the time being, you might have to customise the `scaffolder-backend` plugin to fetch your customised Cookiecutter Docker image. +```yaml +steps: + - id: fetch-base + name: Fetch Base + action: fetch:cookiecutter + input: + url: https://github.com/spotify/cookiecutter-golang + imageName: 'foo/custom-built-cookiecutter-image-with-extensions' +``` + +See for example, the [`Dockerfile`](./Dockerfile) in this directory. ### Instructing Cookiecutter to use the extension diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/cookiecutter.test.ts index 940c0f1e08..628107155d 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/cookiecutter.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/cookiecutter.test.ts @@ -117,6 +117,7 @@ describe('fetch:cookiecutter', () => { extensions: [ 'jinja2_custom_filters_extension.string_filters_extension.StringFilterExtension', ], + imageName: 'foo/cookiecutter-image-with-extensions', }, }); @@ -130,6 +131,7 @@ describe('fetch:cookiecutter', () => { _extensions: [ 'jinja2_custom_filters_extension.string_filters_extension.StringFilterExtension', ], + imageName: 'foo/cookiecutter-image-with-extensions', }, }); }); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/cookiecutter.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/cookiecutter.ts index 404d134f6d..fca791c7bd 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/cookiecutter.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/cookiecutter.ts @@ -39,6 +39,7 @@ export function createFetchCookiecutterAction(options: { values: JsonObject; copyWithoutRender?: string[]; extensions?: string[]; + imageName?: string; }>({ id: 'fetch:cookiecutter', description: @@ -83,6 +84,12 @@ export function createFetchCookiecutterAction(options: { type: 'string', }, }, + imageName: { + title: 'Cookiecutter Docker image', + description: + "Specify a custom Docker image to run cookiecutter, to override the default: 'spotify/backstage-cookiecutter'. This can be used to execute cookiecutter with Template Extensions. Used only when a local cookiecutter is not found.", + type: 'string', + }, }, }, }, @@ -121,6 +128,7 @@ export function createFetchCookiecutterAction(options: { ...(ctx.input.values as TemplaterValues), _copy_without_render: ctx.input.copyWithoutRender, _extensions: ctx.input.extensions, + imageName: ctx.input.imageName, }; // Will execute the template in ./template and put the result in ./result diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.ts b/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.ts index f0fbf4a708..e60c5efb4d 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.ts @@ -52,9 +52,10 @@ export class CookieCutter implements TemplaterBase { // First lets grab the default cookiecutter.json file const cookieCutterJson = await this.fetchTemplateCookieCutter(templateDir); + const { imageName, ...valuesForCookieCutterJson } = values; const cookieInfo = { ...cookieCutterJson, - ...values, + ...valuesForCookieCutterJson, }; await fs.writeJSON(path.join(templateDir, 'cookiecutter.json'), cookieInfo); @@ -74,7 +75,7 @@ export class CookieCutter implements TemplaterBase { }); } else { await runDockerContainer({ - imageName: 'spotify/backstage-cookiecutter', + imageName: imageName || 'spotify/backstage-cookiecutter', args: [ 'cookiecutter', '--no-input', From 4d248725e6eed8a7e0ef8894c9c13b4a449bef40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 25 Mar 2021 12:04:31 +0100 Subject: [PATCH 315/315] detach the badges plugin from the catalog plugin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/dull-badgers-pull.md | 6 ++ .changeset/eight-poems-camp.md | 5 ++ .changeset/famous-knives-cough.md | 5 ++ .changeset/selfish-apples-fly.md | 7 +++ .changeset/twelve-rings-sip.md | 5 ++ .../app/src/components/catalog/EntityPage.tsx | 62 ++++++++++++++----- .../default-backend-plugin/package.json.hbs | 2 +- .../packages/backend/package.json.hbs | 2 +- .../components/EntityBadgesDialog.test.tsx | 5 +- .../src/components/EntityBadgesDialog.tsx | 23 +++---- plugins/catalog/package.json | 1 - .../EntityContextMenu.test.tsx | 55 ++++++++++++---- .../EntityContextMenu/EntityContextMenu.tsx | 51 +++++++++------ .../components/EntityLayout/EntityLayout.tsx | 31 +++++++--- .../EntityPageLayout/EntityPageLayout.tsx | 33 ++++++---- plugins/search-backend-node/package.json | 2 +- plugins/search-backend/package.json | 4 +- yarn.lock | 2 - 18 files changed, 213 insertions(+), 88 deletions(-) create mode 100644 .changeset/dull-badgers-pull.md create mode 100644 .changeset/eight-poems-camp.md create mode 100644 .changeset/famous-knives-cough.md create mode 100644 .changeset/selfish-apples-fly.md create mode 100644 .changeset/twelve-rings-sip.md diff --git a/.changeset/dull-badgers-pull.md b/.changeset/dull-badgers-pull.md new file mode 100644 index 0000000000..ddbdeb55ca --- /dev/null +++ b/.changeset/dull-badgers-pull.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-search-backend': patch +'@backstage/plugin-search-backend-node': patch +--- + +Bump to use the in-repo latest `backend-common`, and the correct version of `express-promise-router` diff --git a/.changeset/eight-poems-camp.md b/.changeset/eight-poems-camp.md new file mode 100644 index 0000000000..62ee6810c9 --- /dev/null +++ b/.changeset/eight-poems-camp.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-badges': patch +--- + +Get the current entity using `useEntity` from `@backstage/plugin-catalog-react` diff --git a/.changeset/famous-knives-cough.md b/.changeset/famous-knives-cough.md new file mode 100644 index 0000000000..28869ddf33 --- /dev/null +++ b/.changeset/famous-knives-cough.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Temporarily add `UNSTABLE_extraContextMenuItems` to the entity layout, so that we could detach the catalog plugin from the dependency on the badges plugin diff --git a/.changeset/selfish-apples-fly.md b/.changeset/selfish-apples-fly.md new file mode 100644 index 0000000000..b0be4f0423 --- /dev/null +++ b/.changeset/selfish-apples-fly.md @@ -0,0 +1,7 @@ +--- +'@backstage/create-app': patch +--- + +Update the create-app template to use the correct latest version of `express-promise-router`. + +To apply the same change in your own repository, update all of your repo's dependencies on `express-promise-router` to `"^4.1.0"`. diff --git a/.changeset/twelve-rings-sip.md b/.changeset/twelve-rings-sip.md new file mode 100644 index 0000000000..1fc2f88ec1 --- /dev/null +++ b/.changeset/twelve-rings-sip.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Make the backend plugin template use the correct latest version of `express-promise-router` diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx index cacd2458b1..0f9cc98f4b 100644 --- a/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/app/src/components/catalog/EntityPage.tsx @@ -31,6 +31,7 @@ import { ProvidedApisCard, ProvidingComponentsCard, } from '@backstage/plugin-api-docs'; +import { EntityBadgesDialog } from '@backstage/plugin-badges'; import { AboutCard, EntityHasComponentsCard, @@ -104,7 +105,8 @@ import { RecentTravisCIBuildsWidget, Router as TravisCIRouter, } from '@roadiehq/backstage-plugin-travis-ci'; -import React, { ReactNode } from 'react'; +import React, { ReactNode, useMemo, useState } from 'react'; +import BadgeIcon from '@material-ui/icons/CallToAction'; export const CICDSwitcher = ({ entity }: { entity: Entity }) => { // This component is just an example of how you can implement your company's logic in entity page. @@ -178,6 +180,32 @@ export const ErrorsSwitcher = ({ entity }: { entity: Entity }) => { } }; +const EntityPageLayoutWrapper = (props: { children?: React.ReactNode }) => { + const [badgesDialogOpen, setBadgesDialogOpen] = useState(false); + + const extraMenuItems = useMemo(() => { + return [ + { + title: 'Badges', + Icon: BadgeIcon, + onClick: () => setBadgesDialogOpen(true), + }, + ]; + }, []); + + return ( + <> + + {props.children} + + setBadgesDialogOpen(false)} + /> + + ); +}; + const ComponentOverviewContent = ({ entity }: { entity: Entity }) => ( @@ -233,7 +261,7 @@ const ComponentApisContent = ({ entity }: { entity: Entity }) => ( ); const ServiceEntityPage = ({ entity }: { entity: Entity }) => ( - + ( title="TODOs" element={} /> - + ); const WebsiteEntityPage = ({ entity }: { entity: Entity }) => ( - + ( title="TODOs" element={} /> - + ); const DefaultEntityPage = ({ entity }: { entity: Entity }) => ( - + ( title="TODOs" element={} /> - + ); export const ComponentEntityPage = ({ entity }: { entity: Entity }) => { @@ -393,7 +421,7 @@ const ApiDefinitionContent = ({ entity }: { entity: ApiEntity }) => ( ); const ApiEntityPage = ({ entity }: { entity: Entity }) => ( - + ( title="Definition" element={} /> - + ); const UserOverviewContent = ({ entity }: { entity: UserEntity }) => ( @@ -419,13 +447,13 @@ const UserOverviewContent = ({ entity }: { entity: UserEntity }) => ( ); const UserEntityPage = ({ entity }: { entity: Entity }) => ( - + } /> - + ); const GroupOverviewContent = ({ entity }: { entity: GroupEntity }) => ( @@ -443,13 +471,13 @@ const GroupOverviewContent = ({ entity }: { entity: GroupEntity }) => ( ); const GroupEntityPage = ({ entity }: { entity: Entity }) => ( - + } /> - + ); const SystemOverviewContent = ({ entity }: { entity: SystemEntity }) => ( @@ -467,13 +495,13 @@ const SystemOverviewContent = ({ entity }: { entity: SystemEntity }) => ( ); const SystemEntityPage = ({ entity }: { entity: Entity }) => ( - + } /> - + ); const DomainOverviewContent = ({ entity }: { entity: DomainEntity }) => ( @@ -488,13 +516,13 @@ const DomainOverviewContent = ({ entity }: { entity: DomainEntity }) => ( ); const DomainEntityPage = ({ entity }: { entity: Entity }) => ( - + } /> - + ); export const EntityPage = () => { diff --git a/packages/cli/templates/default-backend-plugin/package.json.hbs b/packages/cli/templates/default-backend-plugin/package.json.hbs index b762bb9645..d041773d3c 100644 --- a/packages/cli/templates/default-backend-plugin/package.json.hbs +++ b/packages/cli/templates/default-backend-plugin/package.json.hbs @@ -27,7 +27,7 @@ "@backstage/config": "^{{version '@backstage/config'}}", "@types/express": "^4.17.6", "express": "^4.17.1", - "express-promise-router": "^3.0.3", + "express-promise-router": "^4.1.0", "winston": "^3.2.1", "cross-fetch": "^3.0.6", "yn": "^4.0.0" diff --git a/packages/create-app/templates/default-app/packages/backend/package.json.hbs b/packages/create-app/templates/default-app/packages/backend/package.json.hbs index 8c8cfae0b3..138bcaec8d 100644 --- a/packages/create-app/templates/default-app/packages/backend/package.json.hbs +++ b/packages/create-app/templates/default-app/packages/backend/package.json.hbs @@ -32,7 +32,7 @@ "@octokit/rest": "^18.0.12", "dockerode": "^3.2.1", "express": "^4.17.1", - "express-promise-router": "^3.0.3", + "express-promise-router": "^4.1.0", "knex": "^0.21.6", {{#if dbTypePG}} "pg": "^8.3.0", diff --git a/plugins/badges/src/components/EntityBadgesDialog.test.tsx b/plugins/badges/src/components/EntityBadgesDialog.test.tsx index 25a6f01c1a..62f2b55bc5 100644 --- a/plugins/badges/src/components/EntityBadgesDialog.test.tsx +++ b/plugins/badges/src/components/EntityBadgesDialog.test.tsx @@ -25,6 +25,7 @@ import { import { renderWithEffects } from '@backstage/test-utils'; import { BadgesApi, badgesApiRef } from '../api'; import { EntityBadgesDialog } from './EntityBadgesDialog'; +import { EntityProvider } from '@backstage/plugin-catalog-react'; describe('EntityBadgesDialog', () => { it('should render', async () => { @@ -50,7 +51,9 @@ describe('EntityBadgesDialog', () => { {} as ErrorApi, )} > - + + + , ); diff --git a/plugins/badges/src/components/EntityBadgesDialog.tsx b/plugins/badges/src/components/EntityBadgesDialog.tsx index f6ba9de9fe..c0cbd6b15c 100644 --- a/plugins/badges/src/components/EntityBadgesDialog.tsx +++ b/plugins/badges/src/components/EntityBadgesDialog.tsx @@ -14,13 +14,13 @@ * limitations under the License. */ -import { Entity } from '@backstage/catalog-model'; import { CodeSnippet, Progress, ResponseErrorPanel, useApi, } from '@backstage/core'; +import { useEntity } from '@backstage/plugin-catalog-react'; import { Box, Button, @@ -39,43 +39,44 @@ import { badgesApiRef } from '../api'; type Props = { open: boolean; onClose?: () => any; - entity: Entity; }; -export const EntityBadgesDialog = ({ open, onClose, entity }: Props) => { +export const EntityBadgesDialog = ({ open, onClose }: Props) => { const theme = useTheme(); + const { entity } = useEntity(); const fullScreen = useMediaQuery(theme.breakpoints.down('sm')); const badgesApi = useApi(badgesApiRef); const { value: badges, loading, error } = useAsync(async () => { - if (open) { + if (open && entity) { return await badgesApi.getEntityBadgeSpecs(entity); } - return []; }, [badgesApi, entity, open]); const content = (badges || []).map( ({ badge: { description }, id, url, markdown }) => ( - - - {description - - + + + {description + + + ), ); return ( Entity Badges - Embed badges in other web sites that link back to this entity. Copy the relevant snippet of Markdown code to use the badge. + {loading && } {error && } + {content} diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index d2c5085035..8c05c376f9 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -35,7 +35,6 @@ "@backstage/core": "^0.7.2", "@backstage/integration": "^0.5.1", "@backstage/integration-react": "^0.1.1", - "@backstage/plugin-badges": "^0.1.1", "@backstage/plugin-catalog-react": "^0.1.2", "@backstage/theme": "^0.2.4", "@material-ui/core": "^4.11.0", diff --git a/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.test.tsx b/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.test.tsx index 68306944a3..4d7a969542 100644 --- a/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.test.tsx +++ b/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.test.tsx @@ -14,22 +14,53 @@ * limitations under the License. */ -import { render, fireEvent } from '@testing-library/react'; +import { renderInTestApp } from '@backstage/test-utils'; +import SearchIcon from '@material-ui/icons/Search'; +import { fireEvent, screen } from '@testing-library/react'; import * as React from 'react'; -import { act } from 'react-dom/test-utils'; import { EntityContextMenu } from './EntityContextMenu'; describe('ComponentContextMenu', () => { it('should call onUnregisterEntity on button click', async () => { - await act(async () => { - const mockCallback = jest.fn(); - const menu = render( - , - ); - const button = await menu.findByTestId('menu-button'); - fireEvent.click(button); - const unregister = await menu.findByText('Unregister entity'); - expect(unregister).toBeInTheDocument(); - }); + const mockCallback = jest.fn(); + + await renderInTestApp( + , + ); + + const button = await screen.findByTestId('menu-button'); + expect(button).toBeInTheDocument(); + fireEvent.click(button); + + const unregister = await screen.findByText('Unregister entity'); + expect(unregister).toBeInTheDocument(); + fireEvent.click(unregister); + + expect(mockCallback).toBeCalled(); + }); + + it('supports extra items', async () => { + const extra = { + title: 'HELLO', + Icon: SearchIcon, + onClick: jest.fn(), + }; + + await renderInTestApp( + , + ); + + const button = await screen.findByTestId('menu-button'); + expect(button).toBeInTheDocument(); + fireEvent.click(button); + + const item = await screen.findByText('HELLO'); + expect(item).toBeInTheDocument(); + fireEvent.click(item); + + expect(extra.onClick).toBeCalled(); }); }); diff --git a/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx b/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx index e4275181df..809a4fd16e 100644 --- a/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx +++ b/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx @@ -14,17 +14,18 @@ * limitations under the License. */ +import { IconComponent } from '@backstage/core'; import { + Divider, IconButton, ListItemIcon, + ListItemText, MenuItem, MenuList, Popover, - Typography, } from '@material-ui/core'; import { makeStyles } from '@material-ui/core/styles'; import Cancel from '@material-ui/icons/Cancel'; -import BadgeIcon from '@material-ui/icons/CallToAction'; import MoreVert from '@material-ui/icons/MoreVert'; import React, { useState } from 'react'; @@ -35,13 +36,21 @@ const useStyles = makeStyles({ }, }); +// NOTE(freben): Intentionally not exported at this point, since it's part of +// the unstable extra context menu items concept below +type ExtraContextMenuItem = { + title: string; + Icon: IconComponent; + onClick: () => void; +}; + type Props = { - onShowBadgesDialog?: () => void; + UNSTABLE_extraContextMenuItems?: ExtraContextMenuItem[]; onUnregisterEntity: () => void; }; export const EntityContextMenu = ({ - onShowBadgesDialog, + UNSTABLE_extraContextMenuItems, onUnregisterEntity, }: Props) => { const [anchorEl, setAnchorEl] = useState(); @@ -55,6 +64,24 @@ export const EntityContextMenu = ({ setAnchorEl(undefined); }; + const extraItems = UNSTABLE_extraContextMenuItems && [ + ...UNSTABLE_extraContextMenuItems.map(item => ( + { + onClose(); + item.onClick(); + }} + > + + + + + + )), + , + ]; + return ( <> - {onShowBadgesDialog && ( - { - onClose(); - onShowBadgesDialog(); - }} - > - - - - Badges - - )} + {extraItems} { onClose(); @@ -97,7 +112,7 @@ export const EntityContextMenu = ({ - Unregister entity + diff --git a/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx b/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx index cf7976e7ee..87a1a48e92 100644 --- a/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx +++ b/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx @@ -19,6 +19,7 @@ import { Content, Header, HeaderLabel, + IconComponent, Page, Progress, TabbedLayout, @@ -29,12 +30,7 @@ import { } from '@backstage/plugin-catalog-react'; import { Box } from '@material-ui/core'; import { Alert } from '@material-ui/lab'; -import { - default as React, - PropsWithChildren, - useContext, - useState, -} from 'react'; +import { default as React, useContext, useState } from 'react'; import { useNavigate } from 'react-router'; import { EntityContextMenu } from '../EntityContextMenu/EntityContextMenu'; import { FavouriteEntity } from '../FavouriteEntity/FavouriteEntity'; @@ -79,6 +75,19 @@ const headerProps = ( }; }; +// NOTE(freben): Intentionally not exported at this point, since it's part of +// the unstable extra context menu items concept below +type ExtraContextMenuItem = { + title: string; + Icon: IconComponent; + onClick: () => void; +}; + +type EntityLayoutProps = { + UNSTABLE_extraContextMenuItems?: ExtraContextMenuItem[]; + children?: React.ReactNode; +}; + /** * EntityLayout is a compound component, which allows you to define a layout for * entities using a sub-navigation mechanism. @@ -94,7 +103,10 @@ const headerProps = ( * * ``` */ -export const EntityLayout = ({ children }: PropsWithChildren<{}>) => { +export const EntityLayout = ({ + UNSTABLE_extraContextMenuItems, + children, +}: EntityLayoutProps) => { const { kind, namespace, name } = useEntityCompoundName(); const { entity, loading, error } = useContext(EntityContext); @@ -132,7 +144,10 @@ export const EntityLayout = ({ children }: PropsWithChildren<{}>) => { label="Lifecycle" value={entity.spec?.lifecycle || 'unknown'} /> - + )} diff --git a/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx b/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx index 64a51f2bb8..44b1329938 100644 --- a/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx +++ b/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx @@ -27,6 +27,7 @@ import { Progress, ResponseErrorPanel, WarningPanel, + IconComponent, } from '@backstage/core'; import { EntityContext, @@ -35,12 +36,11 @@ import { useEntityCompoundName, } from '@backstage/plugin-catalog-react'; import { Box } from '@material-ui/core'; -import React, { PropsWithChildren, useContext, useState } from 'react'; +import React, { useContext, useState } from 'react'; import { useNavigate } from 'react-router'; import { EntityContextMenu } from '../EntityContextMenu/EntityContextMenu'; import { FavouriteEntity } from '../FavouriteEntity/FavouriteEntity'; import { UnregisterEntityDialog } from '../UnregisterEntityDialog/UnregisterEntityDialog'; -import { EntityBadgesDialog } from '@backstage/plugin-badges'; import { Tabbed } from './Tabbed'; const EntityPageTitle = ({ @@ -99,7 +99,23 @@ const headerProps = ( }; }; -export const EntityPageLayout = ({ children }: PropsWithChildren<{}>) => { +// NOTE(freben): Intentionally not exported at this point, since it's part of +// the unstable extra context menu items concept below +type ExtraContextMenuItem = { + title: string; + Icon: IconComponent; + onClick: () => void; +}; + +type EntityPageLayoutProps = { + UNSTABLE_extraContextMenuItems?: ExtraContextMenuItem[]; + children?: React.ReactNode; +}; + +export const EntityPageLayout = ({ + children, + UNSTABLE_extraContextMenuItems, +}: EntityPageLayoutProps) => { const { kind, namespace, name } = useEntityCompoundName(); const { entity, loading, error } = useContext(EntityContext); const { headerTitle, headerType } = headerProps( @@ -109,7 +125,6 @@ export const EntityPageLayout = ({ children }: PropsWithChildren<{}>) => { entity!, ); - const [badgesDialogOpen, setBadgesDialogOpen] = useState(false); const [confirmationDialogOpen, setConfirmationDialogOpen] = useState(false); const navigate = useNavigate(); const cleanUpAfterRemoval = async () => { @@ -131,7 +146,7 @@ export const EntityPageLayout = ({ children }: PropsWithChildren<{}>) => { <> setBadgesDialogOpen(true)} + UNSTABLE_extraContextMenuItems={UNSTABLE_extraContextMenuItems} onUnregisterEntity={showRemovalDialog} /> @@ -164,14 +179,6 @@ export const EntityPageLayout = ({ children }: PropsWithChildren<{}>) => { )} - {entity && ( - setBadgesDialogOpen(false)} - /> - )} -

    N~76D{~!^kN$ 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