From 5cf3f854d36b82fb4183025b3dfb9dad39af672e Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Sun, 4 Oct 2020 17:55:43 +0530 Subject: [PATCH 001/323] feat: implement customPageTheme which includes core material-ui theming features & backstage pages theming features --- packages/theme/src/baseTheme.ts | 14 +++++++ packages/theme/src/pageTheme.ts | 66 +++++++++++++++++++++++++++++++++ packages/theme/src/themes.ts | 8 +++- packages/theme/src/types.ts | 21 +++++++++++ 4 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 packages/theme/src/pageTheme.ts diff --git a/packages/theme/src/baseTheme.ts b/packages/theme/src/baseTheme.ts index 00a485bb41..a3fded7e04 100644 --- a/packages/theme/src/baseTheme.ts +++ b/packages/theme/src/baseTheme.ts @@ -19,6 +19,8 @@ import { darken, lighten } from '@material-ui/core/styles/colorManipulator'; import { Overrides } from '@material-ui/core/styles/overrides'; import { + BackstagePageTheme, + BackstagePageThemeOptions, BackstageTheme, BackstageThemeOptions, SimpleThemeOptions, @@ -242,3 +244,15 @@ export function createTheme(options: SimpleThemeOptions): BackstageTheme { const theme = { ...baseTheme, overrides }; return theme; } + +export function createPageTheme( + options: BackstagePageThemeOptions, +): BackstagePageTheme { + const baseTheme = createTheme(options); + const pageTheme = options.pageTheme; + + return { + pageTheme, + baseTheme, + }; +} diff --git a/packages/theme/src/pageTheme.ts b/packages/theme/src/pageTheme.ts new file mode 100644 index 0000000000..f86f3a6449 --- /dev/null +++ b/packages/theme/src/pageTheme.ts @@ -0,0 +1,66 @@ +/* + * 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 { PageTheme } from './types'; + +/* + # How to add a shape + 1. Get the svg shape from figma, should be ~1400 wide, ~400 high + and only the white->transparent mask, no colors. + 2. Run it through https://jakearchibald.github.io/svgomg/ + 3. Run that through https://github.com/tigt/mini-svg-data-uri + with something like https://npm.runkit.com/mini-svg-data-uri + 4. Wrap the output in `url("")` + 5. Give it a name and paste it into the `shapes` object below. +*/ +export const shapes: Record = { + wave: `url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='1368' height='400' fill='none'%3e%3cmask id='a' width='1368' height='401' x='0' y='0' maskUnits='userSpaceOnUse'%3e%3cpath fill='url(%23paint0_linear)' d='M437 116C223 116 112 0 112 0h1256v400c-82 0-225-21-282-109-112-175-436-175-649-175z'/%3e%3cpath fill='url(%23paint1_linear)' d='M1368 400V282C891-29 788 40 711 161 608 324 121 372 0 361v39h1368z'/%3e%3cpath fill='url(%23paint2_linear)' d='M1368 244v156H0V94c92-24 198-46 375 0l135 41c176 51 195 109 858 109z'/%3e%3cpath fill='url(%23paint3_linear)' d='M1252 400h116c-14-7-35-14-116-16-663-14-837-128-1013-258l-85-61C98 28 46 8 0 0v400h1252z'/%3e%3c/mask%3e%3cg mask='url(%23a)'%3e%3cpath fill='white' d='M-172-98h1671v601H-172z'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient id='paint0_linear' x1='602' x2='1093.5' y1='-960.5' y2='272' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint1_linear' x1='482' x2='480' y1='1058.5' y2='70.5' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint2_linear' x1='424' x2='446.1' y1='-587.5' y2='274.6' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint3_linear' x1='587' x2='349' y1='-1120.5' y2='341' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e")`, + wave2: `url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='1368' height='400' fill='none'%3e%3cmask id='a' width='1764' height='479' x='-229' y='-6' maskUnits='userSpaceOnUse'%3e%3cpath fill='url(%23paint0_linear)' d='M0 400h1350C1321 336 525 33 179-2c-345-34-395 236-408 402H0z'/%3e%3cpath fill='url(%23paint1_linear)' d='M1378 177v223H0V217s219 75 327 52C436 246 717-35 965 45s254 144 413 132z'/%3e%3cpath fill='url(%23paint2_linear)' d='M26 400l-78-16c-170 205-44-6-137-30l-4-1 4 1 137 30c37-45 89-110 159-201 399-514-45 238 1176-50 275-65 354-39 91 267H26z'/%3e%3c/mask%3e%3cg mask='url(%23a)'%3e%3cpath fill='white' d='M0 0h1368v400H0z'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient id='paint0_linear' x1='431' x2='397.3' y1='-599' y2='372.8' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint1_linear' x1='236.5' x2='446.6' y1='-586' y2='381.5' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint2_linear' x1='851.8' x2='640.4' y1='-867.2' y2='363.7' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e")`, + round: `url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='1368' height='400' fill='none'%3e%3cmask id='a' width='2269' height='1408' x='-610' y='-509' maskUnits='userSpaceOnUse'%3e%3ccircle cx='1212.8' cy='74.8' r='317.5' fill='url(%23paint0_linear)' transform='rotate(-52 1213 75)'/%3e%3ccircle cx='737.8' cy='445.8' r='317.5' fill='url(%23paint1_linear)' transform='rotate(-116 738 446)'/%3e%3ccircle cx='601.8' cy='52.8' r='418.6' fill='url(%23paint2_linear)' transform='rotate(-117 602 53)'/%3e%3ccircle cx='999.8' cy='364' r='389.1' fill='url(%23paint3_linear)' transform='rotate(31 1000 364)'/%3e%3cellipse cx='-109.2' cy='263.5' fill='url(%23paint4_linear)' rx='429.2' ry='465.8' transform='rotate(-85 -109 264)'/%3e%3c/mask%3e%3cg mask='url(%23a)'%3e%3cpath fill='white' d='M0 0h1368v400H0z'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient id='paint0_linear' x1='1301.2' x2='161.4' y1='-1879.7' y2='-969.6' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint1_linear' x1='826.2' x2='-313.6' y1='-1508.7' y2='-598.6' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint2_linear' x1='718.4' x2='-784.3' y1='-2524' y2='-1324.2' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint3_linear' x1='1108.2' x2='-288.6' y1='-2031.1' y2='-915.9' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint4_linear' x1='10.4' x2='-1626.5' y1='-2603.8' y2='-1399.5' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e")`, +}; + +export const colorVariants: Record = { + darkGrey: ['#171717', '#383838'], + marineBlue: ['#006D8F', '#0049A1'], + veryBlue: ['#0027AF', '#270094'], + rubyRed: ['#98002B', '#8D1134'], + toastyOrange: ['#BE2200', '#A41D00'], + purpleSky: ['#8912CA', '#3E00EA'], + eveningSea: ['#00FFF2', '#035355'], + teal: ['#005B4B'], + pinkSea: ['#C8077A', '#C2297D'], +}; + +// As the background shapes and colors are decorative, we place them onto +// the page as a css background-image instead of an html element of its own. +// Utility to not have to write colors and shapes twice. +export function genPageTheme(colors: string[], shape: string): PageTheme { + const gradientColors = colors.length === 1 ? [colors[0], colors[0]] : colors; + const gradient = `linear-gradient(90deg, ${gradientColors.join(', ')})`; + const backgroundImage = `${shape}, ${gradient}`; + + return { colors, shape, backgroundImage }; +} + +export const pageTheme: Record = { + home: genPageTheme(colorVariants.teal, shapes.wave), + documentation: genPageTheme(colorVariants.pinkSea, shapes.wave2), + tool: genPageTheme(colorVariants.purpleSky, shapes.round), + service: genPageTheme(colorVariants.marineBlue, shapes.wave), + website: genPageTheme(colorVariants.veryBlue, shapes.wave), + library: genPageTheme(colorVariants.rubyRed, shapes.wave), + other: genPageTheme(colorVariants.darkGrey, shapes.wave), + app: genPageTheme(colorVariants.toastyOrange, shapes.wave), +}; diff --git a/packages/theme/src/themes.ts b/packages/theme/src/themes.ts index 0ec3304ac5..78a68c8f13 100644 --- a/packages/theme/src/themes.ts +++ b/packages/theme/src/themes.ts @@ -14,7 +14,8 @@ * limitations under the License. */ -import { createTheme } from './baseTheme'; +import { createTheme, createPageTheme } from './baseTheme'; +import { pageTheme } from './pageTheme'; import { yellow } from '@material-ui/core/colors'; export const lightTheme = createTheme({ @@ -132,3 +133,8 @@ export const darkTheme = createTheme({ }, }, }); + +export const customPageTheme = createPageTheme({ + pageTheme, + palette: lightTheme.palette, +}); diff --git a/packages/theme/src/types.ts b/packages/theme/src/types.ts index 1d244f8cd4..3d3943392a 100644 --- a/packages/theme/src/types.ts +++ b/packages/theme/src/types.ts @@ -87,3 +87,24 @@ export type SimpleThemeOptions = { palette: BackstagePaletteOptions; fontFamily?: string; }; + +export type PageTheme = { + colors: string[]; + shape: string; + backgroundImage: string; +}; + +export type BackstagePage = Record; + +export interface BackstagePageThemeOptions extends SimpleThemeOptions { + pageTheme: BackstagePage; +} + +export interface BackstagePageTheme { + pageTheme: BackstagePage; + baseTheme: BackstageTheme; +} + +export interface BackstagePageThemeConsumer extends BackstageTheme { + pageTheme: PageTheme; +} From 26cfd3e2ca28b200a6f0eddcb567db8a73e4d48a Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Sun, 4 Oct 2020 17:58:09 +0530 Subject: [PATCH 002/323] feat: remove old PageTheme provider & add new implemented functionality to provide theme[using ThemeProvider] --- packages/core/src/layout/Page/Page.stories.tsx | 6 +++--- packages/core/src/layout/Page/Page.tsx | 17 +++++++++-------- packages/core/src/layout/Page/index.ts | 2 -- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/packages/core/src/layout/Page/Page.stories.tsx b/packages/core/src/layout/Page/Page.stories.tsx index 8fd779196d..427dc644d9 100644 --- a/packages/core/src/layout/Page/Page.stories.tsx +++ b/packages/core/src/layout/Page/Page.stories.tsx @@ -15,13 +15,13 @@ */ import React, { useState } from 'react'; +import { customPageTheme } from '@backstage/theme'; import { Header, Page, HeaderLabel, ContentHeader, Content, - pageTheme, InfoCard, HeaderTabs, } from '../'; @@ -196,7 +196,7 @@ export const PluginWithData = () => { const [selectedTab, setSelectedTab] = useState(2); return (
- + { export const PluginWithTable = () => { return (
- + diff --git a/packages/core/src/layout/Page/Page.tsx b/packages/core/src/layout/Page/Page.tsx index a5f5e4fd2b..f4dc4888ed 100644 --- a/packages/core/src/layout/Page/Page.tsx +++ b/packages/core/src/layout/Page/Page.tsx @@ -15,10 +15,8 @@ */ import React, { FC } from 'react'; -import { PageTheme, pageTheme } from './PageThemeProvider'; -import { makeStyles } from '@material-ui/core'; - -export const PageThemeContext = React.createContext(pageTheme.home); +import { customPageTheme, PageTheme } from '@backstage/theme'; +import { makeStyles, ThemeProvider } from '@material-ui/core'; const useStyles = makeStyles(() => ({ root: { @@ -32,14 +30,17 @@ const useStyles = makeStyles(() => ({ })); type Props = { - theme?: PageTheme; + pageTheme?: PageTheme; }; -export const Page: FC = ({ theme = pageTheme.home, children }) => { +export const Page: FC = ({ + pageTheme = customPageTheme.pageTheme.home, + children, +}) => { const classes = useStyles(); return ( - +
{children}
-
+ ); }; diff --git a/packages/core/src/layout/Page/index.ts b/packages/core/src/layout/Page/index.ts index 000a565c83..987aee5cdb 100644 --- a/packages/core/src/layout/Page/index.ts +++ b/packages/core/src/layout/Page/index.ts @@ -15,5 +15,3 @@ */ export { Page } from './Page'; -export { pageTheme } from './PageThemeProvider'; -export type { PageTheme } from './PageThemeProvider'; From 317bb8b6543cbc3b66dc68587d3cb636647d2f88 Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Sun, 4 Oct 2020 17:59:21 +0530 Subject: [PATCH 003/323] chore: remove old Page theme Provider file --- .../core/src/layout/Page/PageThemeProvider.ts | 72 ------------------- 1 file changed, 72 deletions(-) delete mode 100644 packages/core/src/layout/Page/PageThemeProvider.ts diff --git a/packages/core/src/layout/Page/PageThemeProvider.ts b/packages/core/src/layout/Page/PageThemeProvider.ts deleted file mode 100644 index 57411c8786..0000000000 --- a/packages/core/src/layout/Page/PageThemeProvider.ts +++ /dev/null @@ -1,72 +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 type PageTheme = { - colors: string[]; - shape: string; - backgroundImage: string; -}; - -/* - # How to add a shape - 1. Get the svg shape from figma, should be ~1400 wide, ~400 high - and only the white->transparent mask, no colors. - 2. Run it through https://jakearchibald.github.io/svgomg/ - 3. Run that through https://github.com/tigt/mini-svg-data-uri - with something like https://npm.runkit.com/mini-svg-data-uri - 4. Wrap the output in `url("")` - 5. Give it a name and paste it into the `shapes` object below. - -*/ -export const shapes: Record = { - wave: `url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='1368' height='400' fill='none'%3e%3cmask id='a' width='1368' height='401' x='0' y='0' maskUnits='userSpaceOnUse'%3e%3cpath fill='url(%23paint0_linear)' d='M437 116C223 116 112 0 112 0h1256v400c-82 0-225-21-282-109-112-175-436-175-649-175z'/%3e%3cpath fill='url(%23paint1_linear)' d='M1368 400V282C891-29 788 40 711 161 608 324 121 372 0 361v39h1368z'/%3e%3cpath fill='url(%23paint2_linear)' d='M1368 244v156H0V94c92-24 198-46 375 0l135 41c176 51 195 109 858 109z'/%3e%3cpath fill='url(%23paint3_linear)' d='M1252 400h116c-14-7-35-14-116-16-663-14-837-128-1013-258l-85-61C98 28 46 8 0 0v400h1252z'/%3e%3c/mask%3e%3cg mask='url(%23a)'%3e%3cpath fill='white' d='M-172-98h1671v601H-172z'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient id='paint0_linear' x1='602' x2='1093.5' y1='-960.5' y2='272' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint1_linear' x1='482' x2='480' y1='1058.5' y2='70.5' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint2_linear' x1='424' x2='446.1' y1='-587.5' y2='274.6' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint3_linear' x1='587' x2='349' y1='-1120.5' y2='341' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e")`, - wave2: `url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='1368' height='400' fill='none'%3e%3cmask id='a' width='1764' height='479' x='-229' y='-6' maskUnits='userSpaceOnUse'%3e%3cpath fill='url(%23paint0_linear)' d='M0 400h1350C1321 336 525 33 179-2c-345-34-395 236-408 402H0z'/%3e%3cpath fill='url(%23paint1_linear)' d='M1378 177v223H0V217s219 75 327 52C436 246 717-35 965 45s254 144 413 132z'/%3e%3cpath fill='url(%23paint2_linear)' d='M26 400l-78-16c-170 205-44-6-137-30l-4-1 4 1 137 30c37-45 89-110 159-201 399-514-45 238 1176-50 275-65 354-39 91 267H26z'/%3e%3c/mask%3e%3cg mask='url(%23a)'%3e%3cpath fill='white' d='M0 0h1368v400H0z'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient id='paint0_linear' x1='431' x2='397.3' y1='-599' y2='372.8' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint1_linear' x1='236.5' x2='446.6' y1='-586' y2='381.5' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint2_linear' x1='851.8' x2='640.4' y1='-867.2' y2='363.7' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e")`, - round: `url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='1368' height='400' fill='none'%3e%3cmask id='a' width='2269' height='1408' x='-610' y='-509' maskUnits='userSpaceOnUse'%3e%3ccircle cx='1212.8' cy='74.8' r='317.5' fill='url(%23paint0_linear)' transform='rotate(-52 1213 75)'/%3e%3ccircle cx='737.8' cy='445.8' r='317.5' fill='url(%23paint1_linear)' transform='rotate(-116 738 446)'/%3e%3ccircle cx='601.8' cy='52.8' r='418.6' fill='url(%23paint2_linear)' transform='rotate(-117 602 53)'/%3e%3ccircle cx='999.8' cy='364' r='389.1' fill='url(%23paint3_linear)' transform='rotate(31 1000 364)'/%3e%3cellipse cx='-109.2' cy='263.5' fill='url(%23paint4_linear)' rx='429.2' ry='465.8' transform='rotate(-85 -109 264)'/%3e%3c/mask%3e%3cg mask='url(%23a)'%3e%3cpath fill='white' d='M0 0h1368v400H0z'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient id='paint0_linear' x1='1301.2' x2='161.4' y1='-1879.7' y2='-969.6' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint1_linear' x1='826.2' x2='-313.6' y1='-1508.7' y2='-598.6' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint2_linear' x1='718.4' x2='-784.3' y1='-2524' y2='-1324.2' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint3_linear' x1='1108.2' x2='-288.6' y1='-2031.1' y2='-915.9' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3clinearGradient id='paint4_linear' x1='10.4' x2='-1626.5' y1='-2603.8' y2='-1399.5' gradientUnits='userSpaceOnUse'%3e%3cstop stop-color='white'/%3e%3cstop offset='1' stop-color='white' stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e")`, -}; - -export const colorVariants: Record = { - darkGrey: ['#171717', '#383838'], - marineBlue: ['#006D8F', '#0049A1'], - veryBlue: ['#0027AF', '#270094'], - rubyRed: ['#98002B', '#8D1134'], - toastyOrange: ['#BE2200', '#A41D00'], - purpleSky: ['#8912CA', '#3E00EA'], - eveningSea: ['#00FFF2', '#035355'], - teal: ['#005B4B'], - pinkSea: ['#C8077A', '#C2297D'], -}; - -export const pageTheme: Record = { - home: genTheme(colorVariants.teal, shapes.wave), - documentation: genTheme(colorVariants.pinkSea, shapes.wave2), - tool: genTheme(colorVariants.purpleSky, shapes.round), - service: genTheme(colorVariants.marineBlue, shapes.wave), - website: genTheme(colorVariants.veryBlue, shapes.wave), - library: genTheme(colorVariants.rubyRed, shapes.wave), - other: genTheme(colorVariants.darkGrey, shapes.wave), - app: genTheme(colorVariants.toastyOrange, shapes.wave), -}; - -// As the background shapes and colors are decorative, we place them onto -// the page as a css background-image instead of an html element of its own. -// Utility to not have to write colors and shapes twice. -function genTheme(colors: string[], shape: string) { - const gradientColors = colors.length === 1 ? [colors[0], colors[0]] : colors; - const gradient = `linear-gradient(90deg, ${gradientColors.join(', ')})`; - const backgroundImage = `${shape}, ${gradient}`; - - return { colors, shape, backgroundImage }; -} From 3a82aaef7ab693bc02f1bc5911c4d955713f51f9 Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Sun, 4 Oct 2020 18:02:00 +0530 Subject: [PATCH 004/323] feat: Add new theme consumer in Header [use useTheme consumer provided in material-ui] --- .../core/src/layout/Header/Header.stories.tsx | 19 ++++++++++--------- packages/core/src/layout/Header/Header.tsx | 14 +++++++------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/packages/core/src/layout/Header/Header.stories.tsx b/packages/core/src/layout/Header/Header.stories.tsx index 39b9133c0a..cc0276224a 100644 --- a/packages/core/src/layout/Header/Header.stories.tsx +++ b/packages/core/src/layout/Header/Header.stories.tsx @@ -13,10 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { customPageTheme } from '@backstage/theme'; import React from 'react'; import { Header } from '.'; import { HeaderLabel } from '../HeaderLabel'; -import { Page, pageTheme } from '../Page'; +import { Page } from '../Page'; export default { title: 'Header', @@ -32,7 +33,7 @@ const labels = ( ); export const Home = () => ( - +
{labels}
@@ -46,7 +47,7 @@ export const HomeWithSubtitle = () => ( ); export const Tool = () => ( - +
{labels}
@@ -54,7 +55,7 @@ export const Tool = () => ( ); export const Service = () => ( - +
{labels}
@@ -62,7 +63,7 @@ export const Service = () => ( ); export const Website = () => ( - +
{labels}
@@ -70,7 +71,7 @@ export const Website = () => ( ); export const Library = () => ( - +
{labels}
@@ -78,7 +79,7 @@ export const Library = () => ( ); export const App = () => ( - +
{labels}
@@ -86,7 +87,7 @@ export const App = () => ( ); export const Documentation = () => ( - +
{labels}
@@ -94,7 +95,7 @@ export const Documentation = () => ( ); export const Other = () => ( - +
{labels}
diff --git a/packages/core/src/layout/Header/Header.tsx b/packages/core/src/layout/Header/Header.tsx index 6b9ea05245..dc71fe333b 100644 --- a/packages/core/src/layout/Header/Header.tsx +++ b/packages/core/src/layout/Header/Header.tsx @@ -14,12 +14,10 @@ * limitations under the License. */ -import React, { ReactNode, CSSProperties, FC, useContext } from 'react'; +import React, { ReactNode, CSSProperties, FC } from 'react'; import { Helmet } from 'react-helmet'; -import { Typography, Tooltip, makeStyles } from '@material-ui/core'; -import { BackstageTheme } from '@backstage/theme'; - -import { PageThemeContext } from '../Page/Page'; +import { Typography, Tooltip, makeStyles, useTheme } from '@material-ui/core'; +import { BackstageTheme, BackstagePageThemeConsumer } from '@backstage/theme'; const useStyles = makeStyles( theme => ({ @@ -163,8 +161,10 @@ export const Header: FC = ({ type, typeLink, }) => { - const theme = useContext(PageThemeContext); - const classes = useStyles({ backgroundImage: theme.backgroundImage }); + const theme = useTheme(); + const classes = useStyles({ + backgroundImage: theme.pageTheme.backgroundImage, + }); const documentTitle = pageTitleOverride || title; const pageTitle = title || pageTitleOverride; const titleTemplate = `${documentTitle} | %s | Backstage`; From e2564645e5751d684b3b528e90011518eee6c376 Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Sun, 4 Oct 2020 18:03:50 +0530 Subject: [PATCH 005/323] feat: Replace old page theme props with new ones --- .../components/ApiEntityPage/ApiEntityPage.tsx | 8 ++++---- .../ApiExplorerPage/ApiExplorerLayout.tsx | 5 +++-- .../src/components/CatalogPage/CatalogLayout.tsx | 4 ++-- .../EntityPageLayout/EntityPageLayout.tsx | 15 ++++----------- .../AlertInstructionsLayout.tsx | 5 +++-- .../CostInsightsLayout/CostInsightsLayout.tsx | 6 +++--- .../explore/src/components/ExplorePluginPage.tsx | 5 ++--- .../components/NewProjectPage/NewProjectPage.tsx | 4 ++-- .../ProjectDetailsPage/ProjectDetailsPage.tsx | 5 ++--- .../ProjectListPage/ProjectListPage.tsx | 5 ++--- .../src/components/ClusterList/ClusterList.tsx | 4 ++-- .../src/components/ClusterPage/ClusterPage.tsx | 5 ++--- .../components/ProfileCatalog/ProfileCatalog.tsx | 4 ++-- .../src/components/GraphiQLPage/GraphiQLPage.tsx | 5 ++--- .../KubernetesContent/KubernetesContent.tsx | 4 ++-- .../lighthouse/src/components/AuditList/index.tsx | 5 ++--- .../lighthouse/src/components/AuditView/index.tsx | 4 ++-- .../src/components/CreateAudit/index.tsx | 4 ++-- .../NewRelicComponent/NewRelicComponent.tsx | 4 ++-- .../RegisterComponentPage.tsx | 4 ++-- .../src/components/RollbarHome/RollbarHome.tsx | 5 +++-- .../RollbarProjectPage/RollbarProjectPage.tsx | 5 +++-- .../components/ScaffolderPage/ScaffolderPage.tsx | 4 ++-- .../src/components/TemplateCard/TemplateCard.tsx | 6 ++++-- .../src/components/TemplatePage/TemplatePage.tsx | 4 ++-- .../SentryPluginPage/SentryPluginPage.tsx | 4 ++-- plugins/tech-radar/src/components/RadarPage.tsx | 4 ++-- .../src/reader/components/TechDocsHome.tsx | 8 ++++---- .../src/reader/components/TechDocsPage.tsx | 5 +++-- .../src/components/WelcomePage/WelcomePage.tsx | 4 ++-- 30 files changed, 74 insertions(+), 80 deletions(-) diff --git a/plugins/api-docs/src/components/ApiEntityPage/ApiEntityPage.tsx b/plugins/api-docs/src/components/ApiEntityPage/ApiEntityPage.tsx index b7e9996cc0..edfc3ab08b 100644 --- a/plugins/api-docs/src/components/ApiEntityPage/ApiEntityPage.tsx +++ b/plugins/api-docs/src/components/ApiEntityPage/ApiEntityPage.tsx @@ -20,11 +20,10 @@ import { errorApiRef, Header, Page, - pageTheme, - PageTheme, Progress, useApi, } from '@backstage/core'; +import { customPageTheme, PageTheme } from '@backstage/theme'; import { catalogApiRef } from '@backstage/plugin-catalog'; import { Box } from '@material-ui/core'; import { Alert } from '@material-ui/lab'; @@ -54,9 +53,10 @@ function headerProps( }; } +// REUSABLE IN plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx export const getPageTheme = (entity?: Entity): PageTheme => { const themeKey = entity?.spec?.type?.toString() ?? 'home'; - return pageTheme[themeKey] ?? pageTheme.home; + return customPageTheme.pageTheme[themeKey] ?? customPageTheme.pageTheme.home; }; type EntityPageTitleProps = { @@ -107,7 +107,7 @@ export const ApiEntityPage = () => { ); return ( - +
} pageTitleOverride={headerTitle} diff --git a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx index a111007278..53b50f1826 100644 --- a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx +++ b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx @@ -14,7 +14,8 @@ * limitations under the License. */ -import { Header, Page, pageTheme } from '@backstage/core'; +import { Header, Page } from '@backstage/core'; +import { customPageTheme } from '@backstage/theme'; import React from 'react'; type Props = { @@ -23,7 +24,7 @@ type Props = { export const ApiExplorerLayout = ({ children }: Props) => { return ( - +
{ const userId = useApi(identityApiRef).getUserId(); return ( - +
{ const themeKey = entity?.spec?.type?.toString() ?? 'home'; - return pageTheme[themeKey] ?? pageTheme.home; + return customPageTheme.pageTheme[themeKey] ?? customPageTheme.pageTheme.home; }; const EntityPageTitle = ({ @@ -100,7 +93,7 @@ export const EntityPageLayout = ({ const showRemovalDialog = () => setConfirmationDialogOpen(true); return ( - +
} pageTitleOverride={headerTitle} diff --git a/plugins/cost-insights/src/components/AlertInstructionsLayout/AlertInstructionsLayout.tsx b/plugins/cost-insights/src/components/AlertInstructionsLayout/AlertInstructionsLayout.tsx index 0a422c335a..c0777fc844 100644 --- a/plugins/cost-insights/src/components/AlertInstructionsLayout/AlertInstructionsLayout.tsx +++ b/plugins/cost-insights/src/components/AlertInstructionsLayout/AlertInstructionsLayout.tsx @@ -14,10 +14,11 @@ * limitations under the License. */ +import { customPageTheme } from '@backstage/theme'; import React, { ReactNode } from 'react'; import { Box, Button, Container, makeStyles } from '@material-ui/core'; import ChevronLeftIcon from '@material-ui/icons/ChevronLeft'; -import { Header, Page, pageTheme } from '@backstage/core'; +import { Header, Page } from '@backstage/core'; import { CostInsightsThemeProvider } from '../CostInsightsPage/CostInsightsThemeProvider'; const useStyles = makeStyles(theme => ({ @@ -39,7 +40,7 @@ const AlertInstructionsLayout = ({ const classes = useStyles(); return ( - +
diff --git a/plugins/cost-insights/src/components/CostInsightsLayout/CostInsightsLayout.tsx b/plugins/cost-insights/src/components/CostInsightsLayout/CostInsightsLayout.tsx index 61bf7ac22f..c95f624bbe 100644 --- a/plugins/cost-insights/src/components/CostInsightsLayout/CostInsightsLayout.tsx +++ b/plugins/cost-insights/src/components/CostInsightsLayout/CostInsightsLayout.tsx @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - +import { customPageTheme } from '@backstage/theme'; import React from 'react'; import { makeStyles } from '@material-ui/core'; -import { Header, Page, pageTheme } from '@backstage/core'; +import { Header, Page } from '@backstage/core'; import { Group } from '../../types'; import CostInsightsTabs from '../CostInsightsTabs'; @@ -41,7 +41,7 @@ type CostInsightsLayoutProps = { const CostInsightsLayout = ({ groups, children }: CostInsightsLayoutProps) => { const classes = useStyles(); return ( - +
(theme => ({ container: { @@ -117,7 +116,7 @@ const toolsCards = [ export const ExplorePluginPage = () => { const classes = useStyles(); return ( - +
{ return ( - +
{labels}
diff --git a/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx b/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx index 3dfb4e886b..e310c27c68 100644 --- a/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx +++ b/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx @@ -13,14 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - +import { customPageTheme } from '@backstage/theme'; import { Content, ContentHeader, Header, HeaderLabel, Page, - pageTheme, SupportButton, useApi, WarningPanel, @@ -149,7 +148,7 @@ const labels = ( export const ProjectDetailsPage = () => { return ( - +
{labels}
diff --git a/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx b/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx index 542d03d5fd..5a404dbb01 100644 --- a/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx +++ b/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx @@ -15,7 +15,7 @@ */ // NEEDS WORK - +import { customPageTheme } from '@backstage/theme'; import { Content, ContentHeader, @@ -23,7 +23,6 @@ import { HeaderLabel, Link, Page, - pageTheme, SupportButton, useApi, WarningPanel, @@ -136,7 +135,7 @@ const PageContents = () => { export const ProjectListPage = () => { return ( - +
{labels}
diff --git a/plugins/gitops-profiles/src/components/ClusterList/ClusterList.tsx b/plugins/gitops-profiles/src/components/ClusterList/ClusterList.tsx index baab018415..8926ed3260 100644 --- a/plugins/gitops-profiles/src/components/ClusterList/ClusterList.tsx +++ b/plugins/gitops-profiles/src/components/ClusterList/ClusterList.tsx @@ -14,6 +14,7 @@ * limitations under the License. */ +import { customPageTheme } from '@backstage/theme'; import React, { FC, useState } from 'react'; import { Content, @@ -21,7 +22,6 @@ import { Header, SupportButton, Page, - pageTheme, Progress, HeaderLabel, useApi, @@ -91,7 +91,7 @@ const ClusterList: FC<{}> = () => { } return ( - +
diff --git a/plugins/gitops-profiles/src/components/ClusterPage/ClusterPage.tsx b/plugins/gitops-profiles/src/components/ClusterPage/ClusterPage.tsx index b2d62e8650..d51fb7656e 100644 --- a/plugins/gitops-profiles/src/components/ClusterPage/ClusterPage.tsx +++ b/plugins/gitops-profiles/src/components/ClusterPage/ClusterPage.tsx @@ -13,13 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - +import { customPageTheme } from '@backstage/theme'; import React, { FC, useEffect, useState } from 'react'; import { Content, Header, Page, - pageTheme, Table, Progress, HeaderLabel, @@ -85,7 +84,7 @@ const ClusterPage: FC<{}> = () => { }, [pollingLog, api, params, githubAuth, githubAccessToken, githubUsername]); return ( - +
diff --git a/plugins/gitops-profiles/src/components/ProfileCatalog/ProfileCatalog.tsx b/plugins/gitops-profiles/src/components/ProfileCatalog/ProfileCatalog.tsx index a5125fb006..078e1b7601 100644 --- a/plugins/gitops-profiles/src/components/ProfileCatalog/ProfileCatalog.tsx +++ b/plugins/gitops-profiles/src/components/ProfileCatalog/ProfileCatalog.tsx @@ -14,11 +14,11 @@ * limitations under the License. */ +import { customPageTheme } from '@backstage/theme'; import React, { FC, useEffect, useState } from 'react'; import { Header, Page, - pageTheme, Content, ContentHeader, HeaderLabel, @@ -259,7 +259,7 @@ const ProfileCatalog: FC<{}> = () => { ]; return ( - +
{ } return ( - +
diff --git a/plugins/kubernetes/src/components/KubernetesContent/KubernetesContent.tsx b/plugins/kubernetes/src/components/KubernetesContent/KubernetesContent.tsx index 6119884c43..381b942f3d 100644 --- a/plugins/kubernetes/src/components/KubernetesContent/KubernetesContent.tsx +++ b/plugins/kubernetes/src/components/KubernetesContent/KubernetesContent.tsx @@ -14,13 +14,13 @@ * limitations under the License. */ +import { customPageTheme } from '@backstage/theme'; import React, { ReactElement, useEffect, useState } from 'react'; import { Grid, TabProps } from '@material-ui/core'; import { CardTab, Content, Page, - pageTheme, Progress, TabbedCard, useApi, @@ -120,7 +120,7 @@ export const KubernetesContent = ({ entity }: KubernetesContentProps) => { kubernetesObjects?.items.filter(r => r.errors.length > 0) ?? []; return ( - + {kubernetesObjects === undefined && error === undefined && ( diff --git a/plugins/lighthouse/src/components/AuditList/index.tsx b/plugins/lighthouse/src/components/AuditList/index.tsx index a75bb25a0d..9c38e27fe3 100644 --- a/plugins/lighthouse/src/components/AuditList/index.tsx +++ b/plugins/lighthouse/src/components/AuditList/index.tsx @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - +import { customPageTheme } from '@backstage/theme'; import React, { useState, useMemo, FC, ReactNode } from 'react'; import { useLocalStorage, useAsync } from 'react-use'; import { useNavigate } from 'react-router-dom'; @@ -28,7 +28,6 @@ import { ContentHeader, HeaderLabel, Progress, - pageTheme, useApi, } from '@backstage/core'; @@ -95,7 +94,7 @@ const AuditList: FC<{}> = () => { } return ( - +
= () => { } return ( - +
= () => { ]); return ( - +
= () => ( - +
diff --git a/plugins/register-component/src/components/RegisterComponentPage/RegisterComponentPage.tsx b/plugins/register-component/src/components/RegisterComponentPage/RegisterComponentPage.tsx index 933b67060a..5e4da3fc35 100644 --- a/plugins/register-component/src/components/RegisterComponentPage/RegisterComponentPage.tsx +++ b/plugins/register-component/src/components/RegisterComponentPage/RegisterComponentPage.tsx @@ -14,12 +14,12 @@ * limitations under the License. */ +import { customPageTheme } from '@backstage/theme'; import React, { useState } from 'react'; import { Grid, makeStyles } from '@material-ui/core'; import { InfoCard, Page, - pageTheme, Content, useApi, errorApiRef, @@ -113,7 +113,7 @@ export const RegisterComponentPage = ({ }; return ( - +
diff --git a/plugins/rollbar/src/components/RollbarHome/RollbarHome.tsx b/plugins/rollbar/src/components/RollbarHome/RollbarHome.tsx index d09c2054b1..9f0deca967 100644 --- a/plugins/rollbar/src/components/RollbarHome/RollbarHome.tsx +++ b/plugins/rollbar/src/components/RollbarHome/RollbarHome.tsx @@ -14,8 +14,9 @@ * limitations under the License. */ +import { customPageTheme } from '@backstage/theme'; import React from 'react'; -import { Content, Header, Page, pageTheme } from '@backstage/core'; +import { Content, Header, Page } from '@backstage/core'; import { RollbarProjectTable } from '../RollbarProjectTable/RollbarProjectTable'; import { useRollbarEntities } from '../../hooks/useRollbarEntities'; @@ -23,7 +24,7 @@ export const RollbarHome = () => { const { entities, loading, error } = useRollbarEntities(); return ( - +
{ const { entity } = useCatalogEntity(); return ( - +
diff --git a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx index b5bdaaef4a..1bd43ded44 100644 --- a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx +++ b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx @@ -14,6 +14,7 @@ * limitations under the License. */ +import { customPageTheme } from '@backstage/theme'; import { TemplateEntityV1alpha1 } from '@backstage/catalog-model'; import { Content, @@ -22,7 +23,6 @@ import { Header, Lifecycle, Page, - pageTheme, Progress, SupportButton, useApi, @@ -66,7 +66,7 @@ export const ScaffolderPage = () => { }, [error, errorApi]); return ( - +
{ - const theme = pageTheme[type] ?? pageTheme.other; + const theme = + customPageTheme.pageTheme[type] ?? customPageTheme.pageTheme.other; const classes = useStyles({ backgroundImage: theme.backgroundImage }); const href = generatePath(templateRoute.path, { templateName: name }); diff --git a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx index e68c795bd6..5067f7963d 100644 --- a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx +++ b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { customPageTheme } from '@backstage/theme'; import { TemplateEntityV1alpha1 } from '@backstage/catalog-model'; import { Content, @@ -22,7 +23,6 @@ import { Lifecycle, Page, useApi, - pageTheme, } from '@backstage/core'; import { catalogApiRef } from '@backstage/plugin-catalog'; import { LinearProgress } from '@material-ui/core'; @@ -145,7 +145,7 @@ export const TemplatePage = () => { } return ( - +
= () => { const sentryProjectId = 'sample-sentry-project-id'; return ( - +
diff --git a/plugins/tech-radar/src/components/RadarPage.tsx b/plugins/tech-radar/src/components/RadarPage.tsx index 519c9afeee..58dcaec9af 100644 --- a/plugins/tech-radar/src/components/RadarPage.tsx +++ b/plugins/tech-radar/src/components/RadarPage.tsx @@ -14,6 +14,7 @@ * limitations under the License. */ +import { customPageTheme } from '@backstage/theme'; import React from 'react'; import { Grid } from '@material-ui/core'; import { @@ -23,7 +24,6 @@ import { Header, HeaderLabel, SupportButton, - pageTheme, } from '@backstage/core'; import RadarComponent from '../components/RadarComponent'; import { TechRadarComponentProps } from '../api'; @@ -40,7 +40,7 @@ export const RadarPage = ({ pageTitle, ...props }: TechRadarPageProps): JSX.Element => ( - +
diff --git a/plugins/techdocs/src/reader/components/TechDocsHome.tsx b/plugins/techdocs/src/reader/components/TechDocsHome.tsx index c478a52127..11211e713c 100644 --- a/plugins/techdocs/src/reader/components/TechDocsHome.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsHome.tsx @@ -14,6 +14,7 @@ * limitations under the License. */ +import { customPageTheme } from '@backstage/theme'; import React from 'react'; import { useAsync } from 'react-use'; import { useNavigate, generatePath } from 'react-router-dom'; @@ -24,7 +25,6 @@ import { useApi, Content, Page, - pageTheme, Header, } from '@backstage/core'; import { catalogApiRef } from '@backstage/plugin-catalog'; @@ -43,7 +43,7 @@ export const TechDocsHome = () => { if (loading) { return ( - +
{ if (error) { return ( - +
{ } return ( - +
{ }; return ( - + { const profile = { givenName: '' }; return ( - +
Date: Sun, 4 Oct 2020 18:05:16 +0530 Subject: [PATCH 006/323] chore: update new consumer variables in example md file & update in handlebars template --- .../docs/tutorials/quickstart-app-plugin/ExampleComponent.md | 3 ++- .../src/components/ExampleComponent/ExampleComponent.tsx.hbs | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/contrib/docs/tutorials/quickstart-app-plugin/ExampleComponent.md b/contrib/docs/tutorials/quickstart-app-plugin/ExampleComponent.md index 855608c8b1..ed4bfc8012 100644 --- a/contrib/docs/tutorials/quickstart-app-plugin/ExampleComponent.md +++ b/contrib/docs/tutorials/quickstart-app-plugin/ExampleComponent.md @@ -3,6 +3,7 @@ ExampleComponent.tsx reference ```tsx +import { customPageTheme } from '@backstage/theme'; import React, { FC } from 'react'; import { Typography, Grid } from '@material-ui/core'; import { @@ -25,7 +26,7 @@ const ExampleComponent: FC<{}> = () => { const profile = identityApi.getProfile(); return ( - +
= () => ( - +
From 773e521301bcbeb1958a15ef9da2f226e461372f Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Sun, 4 Oct 2020 20:53:18 +0530 Subject: [PATCH 007/323] fix: e2e, storybook & unit tests Header component required ThemeProvider as wrapper to work properly --- .../ExampleComponent/ExampleComponent.tsx.hbs | 1 - .../core/src/layout/Header/Header.stories.tsx | 8 +- .../core/src/layout/Header/Header.test.tsx | 86 +++++++++++++------ 3 files changed, 67 insertions(+), 28 deletions(-) diff --git a/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.tsx.hbs b/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.tsx.hbs index 5b15ab0c70..a050ccd2ec 100644 --- a/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.tsx.hbs +++ b/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.tsx.hbs @@ -5,7 +5,6 @@ import { InfoCard, Header, Page, - pageTheme, Content, ContentHeader, HeaderLabel, diff --git a/packages/core/src/layout/Header/Header.stories.tsx b/packages/core/src/layout/Header/Header.stories.tsx index cc0276224a..b902a709cf 100644 --- a/packages/core/src/layout/Header/Header.stories.tsx +++ b/packages/core/src/layout/Header/Header.stories.tsx @@ -41,9 +41,11 @@ export const Home = () => ( ); export const HomeWithSubtitle = () => ( -
- {labels} -
+ +
+ {labels} +
+
); export const Tool = () => ( diff --git a/packages/core/src/layout/Header/Header.test.tsx b/packages/core/src/layout/Header/Header.test.tsx index 5d28c6633f..00c5bfa2bd 100644 --- a/packages/core/src/layout/Header/Header.test.tsx +++ b/packages/core/src/layout/Header/Header.test.tsx @@ -15,8 +15,10 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; +import { act, render, RenderResult } from '@testing-library/react'; import { wrapInTestApp } from '@backstage/test-utils'; +import { ThemeProvider } from '@material-ui/core'; +import { customPageTheme } from '@backstage/theme'; import { Header } from './Header'; jest.mock('react-helmet', () => { @@ -25,37 +27,73 @@ jest.mock('react-helmet', () => { }; }); +const ThemeProviderWrapper: React.FC = ({ children }) => ( + + {children} + +); + describe('
', () => { - it('should render with title', () => { - const rendered = render(wrapInTestApp(
)); - rendered.getByText('Title'); + it('should render with title', async () => { + let rendered: RenderResult | undefined; + await act(async () => { + rendered = render(wrapInTestApp(
), { + wrapper: ThemeProviderWrapper, + }); + }); + rendered?.getByText('Title'); }); - it('should set document title', () => { - const rendered = render(wrapInTestApp(
)); - rendered.getByText('Title1'); - rendered.getByText('defaultTitle: Title1 | Backstage'); + it('should set document title', async () => { + let rendered: RenderResult | undefined; + await act(async () => { + rendered = render(wrapInTestApp(
), { + wrapper: ThemeProviderWrapper, + }); + }); + rendered?.getByText('Title1'); + rendered?.getByText('defaultTitle: Title1 | Backstage'); }); - it('should override document title', () => { - const rendered = render( - wrapInTestApp(
), - ); - rendered.getByText('Title1'); - rendered.getByText('defaultTitle: Title2 | Backstage'); + it('should override document title', async () => { + let rendered: RenderResult | undefined; + await act(async () => { + rendered = render( + wrapInTestApp(
), + { + wrapper: ThemeProviderWrapper, + }, + ); + }); + rendered?.getByText('Title1'); + rendered?.getByText('defaultTitle: Title2 | Backstage'); }); - it('should have subtitle', () => { - const rendered = render( - wrapInTestApp(
), - ); - rendered.getByText('Subtitle'); + it('should have subtitle', async () => { + let rendered: RenderResult | undefined; + await act(async () => { + rendered = render( + wrapInTestApp(
), + { + wrapper: ThemeProviderWrapper, + }, + ); + }); + rendered?.getByText('Subtitle'); }); - it('should have type rendered', () => { - const rendered = render( - wrapInTestApp(
), - ); - rendered.getByText('tool'); + it('should have type rendered', async () => { + let rendered: RenderResult | undefined; + await act(async () => { + rendered = render(wrapInTestApp(
), { + wrapper: ThemeProviderWrapper, + }); + }); + rendered?.getByText('tool'); }); }); From fd842a09482439e3db3e33bc92fbecc73b77e8da Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Sun, 4 Oct 2020 22:00:05 +0530 Subject: [PATCH 008/323] chore: use home as default pageTheme to reduce complexity --- .../core/src/layout/Header/Header.stories.tsx | 8 +- .../core/src/layout/Header/Header.test.tsx | 76 +++++-------------- packages/core/src/layout/Header/Header.tsx | 10 ++- 3 files changed, 30 insertions(+), 64 deletions(-) diff --git a/packages/core/src/layout/Header/Header.stories.tsx b/packages/core/src/layout/Header/Header.stories.tsx index b902a709cf..cc0276224a 100644 --- a/packages/core/src/layout/Header/Header.stories.tsx +++ b/packages/core/src/layout/Header/Header.stories.tsx @@ -41,11 +41,9 @@ export const Home = () => ( ); export const HomeWithSubtitle = () => ( - -
- {labels} -
-
+
+ {labels} +
); export const Tool = () => ( diff --git a/packages/core/src/layout/Header/Header.test.tsx b/packages/core/src/layout/Header/Header.test.tsx index 00c5bfa2bd..e5dc7fec4d 100644 --- a/packages/core/src/layout/Header/Header.test.tsx +++ b/packages/core/src/layout/Header/Header.test.tsx @@ -15,10 +15,8 @@ */ import React from 'react'; -import { act, render, RenderResult } from '@testing-library/react'; +import { render } from '@testing-library/react'; import { wrapInTestApp } from '@backstage/test-utils'; -import { ThemeProvider } from '@material-ui/core'; -import { customPageTheme } from '@backstage/theme'; import { Header } from './Header'; jest.mock('react-helmet', () => { @@ -27,73 +25,37 @@ jest.mock('react-helmet', () => { }; }); -const ThemeProviderWrapper: React.FC = ({ children }) => ( - - {children} - -); - describe('
', () => { it('should render with title', async () => { - let rendered: RenderResult | undefined; - await act(async () => { - rendered = render(wrapInTestApp(
), { - wrapper: ThemeProviderWrapper, - }); - }); - rendered?.getByText('Title'); + const rendered = render(wrapInTestApp(
)); + rendered.getByText('Title'); }); it('should set document title', async () => { - let rendered: RenderResult | undefined; - await act(async () => { - rendered = render(wrapInTestApp(
), { - wrapper: ThemeProviderWrapper, - }); - }); - rendered?.getByText('Title1'); - rendered?.getByText('defaultTitle: Title1 | Backstage'); + const rendered = render(wrapInTestApp(
)); + rendered.getByText('Title1'); + rendered.getByText('defaultTitle: Title1 | Backstage'); }); it('should override document title', async () => { - let rendered: RenderResult | undefined; - await act(async () => { - rendered = render( - wrapInTestApp(
), - { - wrapper: ThemeProviderWrapper, - }, - ); - }); - rendered?.getByText('Title1'); - rendered?.getByText('defaultTitle: Title2 | Backstage'); + const rendered = render( + wrapInTestApp(
), + ); + rendered.getByText('Title1'); + rendered.getByText('defaultTitle: Title2 | Backstage'); }); it('should have subtitle', async () => { - let rendered: RenderResult | undefined; - await act(async () => { - rendered = render( - wrapInTestApp(
), - { - wrapper: ThemeProviderWrapper, - }, - ); - }); - rendered?.getByText('Subtitle'); + const rendered = render( + wrapInTestApp(
), + ); + rendered.getByText('Subtitle'); }); it('should have type rendered', async () => { - let rendered: RenderResult | undefined; - await act(async () => { - rendered = render(wrapInTestApp(
), { - wrapper: ThemeProviderWrapper, - }); - }); - rendered?.getByText('tool'); + const rendered = render( + wrapInTestApp(
), + ); + rendered.getByText('tool'); }); }); diff --git a/packages/core/src/layout/Header/Header.tsx b/packages/core/src/layout/Header/Header.tsx index dc71fe333b..41840b6ff0 100644 --- a/packages/core/src/layout/Header/Header.tsx +++ b/packages/core/src/layout/Header/Header.tsx @@ -17,7 +17,11 @@ import React, { ReactNode, CSSProperties, FC } from 'react'; import { Helmet } from 'react-helmet'; import { Typography, Tooltip, makeStyles, useTheme } from '@material-ui/core'; -import { BackstageTheme, BackstagePageThemeConsumer } from '@backstage/theme'; +import { + BackstageTheme, + BackstagePageThemeConsumer, + customPageTheme, +} from '@backstage/theme'; const useStyles = makeStyles( theme => ({ @@ -163,7 +167,9 @@ export const Header: FC = ({ }) => { const theme = useTheme(); const classes = useStyles({ - backgroundImage: theme.pageTheme.backgroundImage, + backgroundImage: + theme.pageTheme?.backgroundImage ?? + customPageTheme.pageTheme.home.backgroundImage, }); const documentTitle = pageTitleOverride || title; const pageTitle = title || pageTitleOverride; From fdf090b57fc77ff98d23d41354be68203d29eb34 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 7 Oct 2020 17:20:26 +0200 Subject: [PATCH 009/323] feat(msw); refactor away the setup commands into ttestutils --- packages/test-utils/src/testUtils/index.tsx | 1 + .../test-utils/src/testUtils/msw/index.ts | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 packages/test-utils/src/testUtils/msw/index.ts diff --git a/packages/test-utils/src/testUtils/index.tsx b/packages/test-utils/src/testUtils/index.tsx index 4c5eb642bd..8206d10834 100644 --- a/packages/test-utils/src/testUtils/index.tsx +++ b/packages/test-utils/src/testUtils/index.tsx @@ -17,3 +17,4 @@ export * from './apis'; export { default as mockBreakpoint } from './mockBreakpoint'; export { wrapInTestApp, renderInTestApp } from './appWrappers'; +export * from './msw'; diff --git a/packages/test-utils/src/testUtils/msw/index.ts b/packages/test-utils/src/testUtils/msw/index.ts new file mode 100644 index 0000000000..5bae182cb1 --- /dev/null +++ b/packages/test-utils/src/testUtils/msw/index.ts @@ -0,0 +1,22 @@ +/* + * 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 const msw = { + setupDefaultHandlers: (worker: any) => { + beforeAll(() => worker.listen({ onUnhandledRequest: 'error' })); + afterAll(() => worker.close()); + afterEach(() => worker.resetHandlers()); + }, +}; From ec1ee64b738ebcedc677f8f06dab013417c0796d Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 7 Oct 2020 17:20:51 +0200 Subject: [PATCH 010/323] chore(catalog-graphql): moving to the new msw test util helper --- plugins/catalog-graphql/package.json | 1 + plugins/catalog-graphql/src/graphql/module.test.ts | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/catalog-graphql/package.json b/plugins/catalog-graphql/package.json index 0c18624e0f..6f036686de 100644 --- a/plugins/catalog-graphql/package.json +++ b/plugins/catalog-graphql/package.json @@ -33,6 +33,7 @@ }, "devDependencies": { "@backstage/cli": "^0.1.1-alpha.24", + "@backstage/test-utils": "^0.1.1-alpha.24", "@graphql-codegen/cli": "^1.17.7", "@graphql-codegen/typescript": "^1.17.7", "@graphql-codegen/typescript-resolvers": "^1.17.7", diff --git a/plugins/catalog-graphql/src/graphql/module.test.ts b/plugins/catalog-graphql/src/graphql/module.test.ts index e3e03a9b4a..b359c4396b 100644 --- a/plugins/catalog-graphql/src/graphql/module.test.ts +++ b/plugins/catalog-graphql/src/graphql/module.test.ts @@ -21,6 +21,7 @@ import { setupServer } from 'msw/node'; import { ConfigReader } from '@backstage/config'; import { ReaderEntity } from '../service/client'; import { createLogger } from 'winston'; +import { msw } from '@backstage/test-utils'; import { gql } from 'apollo-server'; describe('Catalog Module', () => { @@ -37,9 +38,7 @@ describe('Catalog Module', () => { }, ]); - beforeAll(() => worker.listen({ onUnhandledRequest: 'error' })); - afterAll(() => worker.close()); - afterEach(() => worker.resetHandlers()); + msw.setupDefaultHandlers(worker); describe('Default Entity', () => { beforeEach(() => { From cee9ca8777c9afa9dec87168a623e7ee5b7ae835 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 8 Oct 2020 21:37:45 +0200 Subject: [PATCH 011/323] chore(catalog): using msw instead of jest-fetch-mock --- plugins/catalog/package.json | 4 +--- plugins/catalog/src/api/CatalogClient.test.ts | 7 +++---- plugins/catalog/src/setupTests.ts | 4 +++- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index ea270b6fe9..e4b9fda24a 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -50,11 +50,9 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "jest-fetch-mock": "^3.0.3", "msw": "^0.20.5", "node-fetch": "^2.6.1", - "react-test-renderer": "^16.13.1", - "whatwg-fetch": "^3.4.0" + "react-test-renderer": "^16.13.1" }, "files": [ "dist" diff --git a/plugins/catalog/src/api/CatalogClient.test.ts b/plugins/catalog/src/api/CatalogClient.test.ts index 832a114276..7c0123317d 100644 --- a/plugins/catalog/src/api/CatalogClient.test.ts +++ b/plugins/catalog/src/api/CatalogClient.test.ts @@ -19,18 +19,17 @@ import { setupServer } from 'msw/node'; import { CatalogClient } from './CatalogClient'; import { Entity } from '@backstage/catalog-model'; import { UrlPatternDiscovery } from '@backstage/core'; +import { msw } from '@backstage/test-utils'; const server = setupServer(); const mockBaseUrl = 'http://backstage:9191/i-am-a-mock-base'; const discoveryApi = UrlPatternDiscovery.compile(mockBaseUrl); describe('CatalogClient', () => { - beforeAll(() => server.listen({ onUnhandledRequest: 'error' })); - afterEach(() => server.resetHandlers()); - afterAll(() => server.close()); - let client = new CatalogClient({ discoveryApi }); + msw.setupDefaultHandlers(server); + beforeEach(() => { client = new CatalogClient({ discoveryApi }); }); diff --git a/plugins/catalog/src/setupTests.ts b/plugins/catalog/src/setupTests.ts index 4016f3f38e..aef3b98817 100644 --- a/plugins/catalog/src/setupTests.ts +++ b/plugins/catalog/src/setupTests.ts @@ -14,5 +14,7 @@ * limitations under the License. */ +import fetch from 'node-fetch'; import '@testing-library/jest-dom'; -import 'whatwg-fetch'; + +global.fetch = fetch as any; From 827bb733bfc5c07e7710159c334fec454df097fc Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 8 Oct 2020 21:57:27 +0200 Subject: [PATCH 012/323] chore: reworking all deps to use cross-fetch instead --- packages/cli/templates/default-plugin/package.json.hbs | 4 ++-- packages/cli/templates/default-plugin/src/setupTests.ts | 2 +- plugins/api-docs/package.json | 1 - plugins/api-docs/src/setupTests.ts | 2 -- plugins/auth-backend/package.json | 1 - plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts | 2 +- plugins/auth-backend/src/setupTests.ts | 2 -- plugins/catalog-backend/package.json | 1 + plugins/catalog-graphql/src/service/client.ts | 2 +- plugins/catalog/src/setupTests.ts | 4 ++-- yarn.lock | 2 +- 11 files changed, 9 insertions(+), 14 deletions(-) diff --git a/packages/cli/templates/default-plugin/package.json.hbs b/packages/cli/templates/default-plugin/package.json.hbs index e024884547..cf07851f31 100644 --- a/packages/cli/templates/default-plugin/package.json.hbs +++ b/packages/cli/templates/default-plugin/package.json.hbs @@ -41,8 +41,8 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/packages/cli/templates/default-plugin/src/setupTests.ts b/packages/cli/templates/default-plugin/src/setupTests.ts index cc559f672e..ddc061ad7e 100644 --- a/packages/cli/templates/default-plugin/src/setupTests.ts +++ b/packages/cli/templates/default-plugin/src/setupTests.ts @@ -1,2 +1,2 @@ import '@testing-library/jest-dom'; -global.fetch = require('node-fetch'); +import 'cross-fetch/register' diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index a703b6afe5..ba3a21ab1f 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -49,7 +49,6 @@ "@types/node": "^12.0.0", "@types/react": "^16.9", "@types/swagger-ui-react": "^3.23.3", - "jest-fetch-mock": "^3.0.3", "msw": "^0.20.5", "node-fetch": "^2.6.1" }, diff --git a/plugins/api-docs/src/setupTests.ts b/plugins/api-docs/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/plugins/api-docs/src/setupTests.ts +++ b/plugins/api-docs/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index fca8fb7178..4579892d34 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -61,7 +61,6 @@ "@types/passport-google-oauth20": "^2.0.3", "@types/passport-microsoft": "^0.0.0", "@types/passport-saml": "^1.1.2", - "jest-fetch-mock": "^3.0.3", "msw": "^0.20.5" }, "files": [ diff --git a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts index 2c1d66e1f8..b6919a98c1 100644 --- a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts +++ b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import fetch from 'node-fetch'; +import fetch from 'cross-fetch'; import { UserEntity } from '@backstage/catalog-model'; import { ConflictError, diff --git a/plugins/auth-backend/src/setupTests.ts b/plugins/auth-backend/src/setupTests.ts index f7b6ca962d..ba33cf996b 100644 --- a/plugins/auth-backend/src/setupTests.ts +++ b/plugins/auth-backend/src/setupTests.ts @@ -14,6 +14,4 @@ * limitations under the License. */ -require('jest-fetch-mock').enableMocks(); - export {}; diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index f16f629c44..83b9391732 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -23,6 +23,7 @@ "@backstage/backend-common": "^0.1.1-alpha.24", "@backstage/catalog-model": "^0.1.1-alpha.24", "@backstage/config": "^0.1.1-alpha.24", + "@backstage/test-utils": "^0.1.1-alpha.24", "@octokit/graphql": "^4.5.6", "@types/express": "^4.17.6", "@types/node-fetch": "^2.5.7", diff --git a/plugins/catalog-graphql/src/service/client.ts b/plugins/catalog-graphql/src/service/client.ts index 8af97a89b1..59f9e90254 100644 --- a/plugins/catalog-graphql/src/service/client.ts +++ b/plugins/catalog-graphql/src/service/client.ts @@ -15,7 +15,7 @@ */ import { Entity, EntityMeta } from '@backstage/catalog-model'; -import fetch from 'node-fetch'; +import fetch from 'cross-fetch'; import { JsonObject } from '@backstage/config'; export interface ReaderEntityMeta extends EntityMeta { diff --git a/plugins/catalog/src/setupTests.ts b/plugins/catalog/src/setupTests.ts index aef3b98817..778a9dfaa4 100644 --- a/plugins/catalog/src/setupTests.ts +++ b/plugins/catalog/src/setupTests.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import fetch from 'node-fetch'; import '@testing-library/jest-dom'; +import fetch from 'node-fetch'; -global.fetch = fetch as any; +window.fetch = fetch; diff --git a/yarn.lock b/yarn.lock index b9f5733acd..2d2665fcb4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23514,7 +23514,7 @@ whatwg-fetch@^2.0.4: resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== -whatwg-fetch@^3.0.0, whatwg-fetch@^3.4.0, whatwg-fetch@^3.4.1: +whatwg-fetch@^3.0.0, whatwg-fetch@^3.4.1: version "3.4.1" resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz#e5f871572d6879663fa5674c8f833f15a8425ab3" integrity sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ== From 813504018e241ca1edf2deda014f0eb087315684 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 8 Oct 2020 21:58:24 +0200 Subject: [PATCH 013/323] chore: update deps --- plugins/api-docs/package.json | 5 +++-- plugins/catalog/package.json | 5 +++-- plugins/circleci/package.json | 5 +++-- plugins/cloudbuild/package.json | 5 +++-- plugins/cost-insights/package.json | 5 +++-- plugins/explore/package.json | 5 +++-- plugins/gcp-projects/package.json | 5 +++-- plugins/github-actions/package.json | 5 +++-- plugins/gitops-profiles/package.json | 5 +++-- plugins/graphiql/package.json | 5 +++-- plugins/jenkins/package.json | 5 +++-- plugins/kubernetes/package.json | 5 +++-- plugins/lighthouse/package.json | 5 +++-- plugins/newrelic/package.json | 5 +++-- plugins/register-component/package.json | 5 +++-- plugins/rollbar/package.json | 5 +++-- plugins/scaffolder/package.json | 5 +++-- plugins/sentry/package.json | 5 +++-- plugins/tech-radar/package.json | 5 +++-- plugins/techdocs/package.json | 5 +++-- plugins/welcome/package.json | 5 +++-- 21 files changed, 63 insertions(+), 42 deletions(-) diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index ba3a21ab1f..82faad0853 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -49,8 +49,9 @@ "@types/node": "^12.0.0", "@types/react": "^16.9", "@types/swagger-ui-react": "^3.23.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index e4b9fda24a..b57136b7db 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -50,9 +50,10 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "msw": "^0.20.5", + "msw": "^0.21.2", "node-fetch": "^2.6.1", - "react-test-renderer": "^16.13.1" + "react-test-renderer": "^16.13.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 24dc8a40e1..27ae63aae5 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -47,8 +47,9 @@ "@types/node": "^12.0.0", "@types/react-lazylog": "^4.5.0", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index 1caac1ecc5..81e7e7cc68 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -48,8 +48,9 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index a9b6a646c4..ab97e78026 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -50,8 +50,9 @@ "@types/node": "^12.0.0", "@types/recharts": "^1.8.14", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 5bd78ab088..07265bc8d1 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -42,8 +42,9 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 18a957d701..04a1b4286c 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -39,8 +39,9 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index a43e351d47..7afe674686 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -48,8 +48,9 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index 7c63ea350c..478637510d 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -40,8 +40,9 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index 654c5ab378..e8a6722167 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -53,9 +53,10 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", + "msw": "^0.21.2", "node-fetch": "^2.6.1", - "react-router-dom": "6.0.0-beta.0" + "react-router-dom": "6.0.0-beta.0", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index 186fdbcc33..53c17b8e3d 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -45,8 +45,9 @@ "@types/node": "^12.0.0", "@types/testing-library__jest-dom": "^5.9.1", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index 5dc9231c2a..da3dac6c63 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -43,8 +43,9 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 0b30e48689..2954cb7afb 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -43,8 +43,9 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index 603d01d62b..a616a810a7 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -39,8 +39,9 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/register-component/package.json b/plugins/register-component/package.json index 9dbd598dee..d459a6e815 100644 --- a/plugins/register-component/package.json +++ b/plugins/register-component/package.json @@ -44,8 +44,9 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index ba690fde64..e6574b4ae7 100644 --- a/plugins/rollbar/package.json +++ b/plugins/rollbar/package.json @@ -48,8 +48,9 @@ "@types/node": "^12.0.0", "@types/react": "^16.9", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 1e59019ad7..6bb0e88fb0 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -50,8 +50,9 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index 6972b87823..14c583f4db 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -44,8 +44,9 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index d6067ba3e2..a49bb805eb 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -46,8 +46,9 @@ "@types/node": "^12.0.0", "@types/react": "^16.9", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 27b0b0b881..79eeb8ed5f 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -49,8 +49,9 @@ "@types/node": "^12.0.0", "canvas": "^2.6.1", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/welcome/package.json b/plugins/welcome/package.json index 80f930bbc2..7c50b200e6 100644 --- a/plugins/welcome/package.json +++ b/plugins/welcome/package.json @@ -40,8 +40,9 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" From d30ef3924bfb9eea9846ffb0097ba6d75efd5e62 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 8 Oct 2020 22:38:06 +0200 Subject: [PATCH 014/323] chore(catalog-backend): updating to use msw + cross-fetch --- plugins/catalog-backend/package.json | 10 ++++------ .../ingestion/processors/AzureApiReaderProcessor.ts | 8 +++----- .../processors/BitbucketApiReaderProcessor.ts | 6 +++--- .../src/ingestion/processors/GithubReaderProcessor.ts | 6 +++--- .../ingestion/processors/GitlabApiReaderProcessor.ts | 6 +++--- .../src/ingestion/processors/GitlabReaderProcessor.ts | 6 +++--- 6 files changed, 19 insertions(+), 23 deletions(-) diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index 83b9391732..77564d1dee 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -23,10 +23,8 @@ "@backstage/backend-common": "^0.1.1-alpha.24", "@backstage/catalog-model": "^0.1.1-alpha.24", "@backstage/config": "^0.1.1-alpha.24", - "@backstage/test-utils": "^0.1.1-alpha.24", "@octokit/graphql": "^4.5.6", "@types/express": "^4.17.6", - "@types/node-fetch": "^2.5.7", "codeowners-utils": "^1.0.2", "core-js": "^3.6.5", "express": "^4.17.1", @@ -36,8 +34,8 @@ "knex": "^0.21.1", "ldapjs": "^2.2.0", "lodash": "^4.17.15", + "cross-fetch": "^3.0.6", "morgan": "^1.10.0", - "node-fetch": "^2.6.0", "sqlite3": "^5.0.0", "uuid": "^8.0.0", "winston": "^3.2.1", @@ -54,9 +52,9 @@ "@types/supertest": "^2.0.8", "@types/uuid": "^8.0.0", "@types/yup": "^0.28.2", - "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", - "supertest": "^4.0.2" + "@backstage/test-utils": "^0.1.1-alpha.24", + "supertest": "^4.0.2", + "msw": "^0.21.2" }, "files": [ "dist", diff --git a/plugins/catalog-backend/src/ingestion/processors/AzureApiReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AzureApiReaderProcessor.ts index 2a15c18c84..2e28da1d93 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AzureApiReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AzureApiReaderProcessor.ts @@ -15,7 +15,7 @@ */ import { LocationSpec } from '@backstage/catalog-model'; -import fetch, { RequestInit, HeadersInit } from 'node-fetch'; +import fetch from 'cross-fetch'; import * as result from './results'; import { LocationProcessor, LocationProcessorEmit } from './types'; import { Config } from '@backstage/config'; @@ -44,11 +44,9 @@ export class AzureApiReaderProcessor implements LocationProcessor { ).toString('base64')}`; } - const requestOptions: RequestInit = { + return { headers, }; - - return requestOptions; } async readLocation( @@ -67,7 +65,7 @@ export class AzureApiReaderProcessor implements LocationProcessor { // for private repos when PAT is not valid, Azure API returns a http status code 203 with sign in page html if (response.ok && response.status !== 203) { - const data = await response.buffer(); + const data = Buffer.from(await response.text()); emit(result.data(location, data)); } else { const message = `${location.target} could not be read as ${url}, ${response.status} ${response.statusText}`; diff --git a/plugins/catalog-backend/src/ingestion/processors/BitbucketApiReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/BitbucketApiReaderProcessor.ts index b3720a5b76..a982b4d268 100644 --- a/plugins/catalog-backend/src/ingestion/processors/BitbucketApiReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/BitbucketApiReaderProcessor.ts @@ -15,7 +15,7 @@ */ import { LocationSpec } from '@backstage/catalog-model'; -import fetch, { RequestInit, HeadersInit } from 'node-fetch'; +import fetch from 'cross-fetch'; import * as result from './results'; import { LocationProcessor, LocationProcessorEmit } from './types'; import { Config } from '@backstage/config'; @@ -70,8 +70,8 @@ export class BitbucketApiReaderProcessor implements LocationProcessor { const response = await fetch(url.toString(), this.getRequestOptions()); if (response.ok) { - const data = await response.buffer(); - emit(result.data(location, data)); + const data = await response.text(); + emit(result.data(location, Buffer.from(data))); } else { const message = `${location.target} could not be read as ${url}, ${response.status} ${response.statusText}`; if (response.status === 404) { diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GithubReaderProcessor.ts index 89d1f69860..372ef5d20b 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GithubReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GithubReaderProcessor.ts @@ -17,7 +17,7 @@ import { LocationSpec } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import parseGitUri from 'git-url-parse'; -import fetch, { HeadersInit, RequestInit } from 'node-fetch'; +import fetch from 'cross-fetch'; import { Logger } from 'winston'; import * as result from './results'; import { LocationProcessor, LocationProcessorEmit } from './types'; @@ -252,8 +252,8 @@ export class GithubReaderProcessor implements LocationProcessor { const response = await fetch(url.toString(), options); if (response.ok) { - const data = await response.buffer(); - emit(result.data(location, data)); + const data = await response.text(); + emit(result.data(location, Buffer.from(data))); } else { const message = `${location.target} could not be read as ${url}, ${response.status} ${response.statusText}`; if (response.status === 404) { diff --git a/plugins/catalog-backend/src/ingestion/processors/GitlabApiReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GitlabApiReaderProcessor.ts index aeba7a7ebe..c55c203b51 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GitlabApiReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GitlabApiReaderProcessor.ts @@ -15,7 +15,7 @@ */ import { LocationSpec } from '@backstage/catalog-model'; -import fetch, { RequestInit, HeadersInit } from 'node-fetch'; +import fetch from 'cross-fetch'; import * as result from './results'; import { LocationProcessor, LocationProcessorEmit } from './types'; import { Config } from '@backstage/config'; @@ -61,8 +61,8 @@ export class GitlabApiReaderProcessor implements LocationProcessor { const url = this.buildRawUrl(location.target, projectID); const response = await fetch(url.toString(), this.getRequestOptions()); if (response.ok) { - const data = await response.buffer(); - emit(result.data(location, data)); + const data = await response.text(); + emit(result.data(location, Buffer.from(data))); } else { const message = `${location.target} could not be read as ${url}, ${response.status} ${response.statusText}`; if (response.status === 404) { diff --git a/plugins/catalog-backend/src/ingestion/processors/GitlabReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GitlabReaderProcessor.ts index b51bf85a8e..c682300706 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GitlabReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GitlabReaderProcessor.ts @@ -15,7 +15,7 @@ */ import { LocationSpec } from '@backstage/catalog-model'; -import fetch from 'node-fetch'; +import fetch from 'cross-fetch'; import * as result from './results'; import { LocationProcessor, LocationProcessorEmit } from './types'; @@ -40,8 +40,8 @@ export class GitlabReaderProcessor implements LocationProcessor { const response = await fetch(url.toString()); if (response.ok) { - const data = await response.buffer(); - emit(result.data(location, data)); + const data = await response.text(); + emit(result.data(location, Buffer.from(data))); } else { const message = `${location.target} could not be read as ${url}, ${response.status} ${response.statusText}`; if (response.status === 404) { From 2abca02daa56e90231e6fe9e3f4019d17bfae58e Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 8 Oct 2020 22:42:09 +0200 Subject: [PATCH 015/323] chore(catalog-backend): fixing some more testsn --- plugins/catalog-backend/package.json | 8 ++++---- .../src/ingestion/processors/UrlReaderProcessor.test.ts | 6 ++---- .../src/ingestion/processors/util/github.test.ts | 5 ++--- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index 77564d1dee..4a3b2c7442 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -27,6 +27,7 @@ "@types/express": "^4.17.6", "codeowners-utils": "^1.0.2", "core-js": "^3.6.5", + "cross-fetch": "^3.0.6", "express": "^4.17.1", "express-promise-router": "^3.0.3", "fs-extra": "^9.0.0", @@ -34,7 +35,6 @@ "knex": "^0.21.1", "ldapjs": "^2.2.0", "lodash": "^4.17.15", - "cross-fetch": "^3.0.6", "morgan": "^1.10.0", "sqlite3": "^5.0.0", "uuid": "^8.0.0", @@ -45,6 +45,7 @@ }, "devDependencies": { "@backstage/cli": "^0.1.1-alpha.24", + "@backstage/test-utils": "^0.1.1-alpha.24", "@types/core-js": "^2.5.4", "@types/git-url-parse": "^9.0.0", "@types/ldapjs": "^1.0.9", @@ -52,9 +53,8 @@ "@types/supertest": "^2.0.8", "@types/uuid": "^8.0.0", "@types/yup": "^0.28.2", - "@backstage/test-utils": "^0.1.1-alpha.24", - "supertest": "^4.0.2", - "msw": "^0.21.2" + "msw": "^0.21.2", + "supertest": "^4.0.2" }, "files": [ "dist", diff --git a/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.test.ts index 009872cda3..751897bea9 100644 --- a/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.test.ts @@ -22,6 +22,7 @@ import { } from './types'; import { setupServer } from 'msw/node'; import { rest } from 'msw'; +import { msw } from '@backstage/test-utils'; import { getVoidLogger, UrlReaders } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; @@ -29,10 +30,7 @@ describe('UrlReaderProcessor', () => { const mockApiOrigin = 'http://localhost:23000'; const server = setupServer(); - beforeAll(() => server.listen({ onUnhandledRequest: 'error' })); - afterEach(() => server.resetHandlers()); - afterAll(() => server.close()); - + msw.setupDefaultHandlers(server); it('should load from url', async () => { const logger = getVoidLogger(); const reader = UrlReaders.default({ logger, config: new ConfigReader({}) }); diff --git a/plugins/catalog-backend/src/ingestion/processors/util/github.test.ts b/plugins/catalog-backend/src/ingestion/processors/util/github.test.ts index 25a37e0546..54afdd1bdc 100644 --- a/plugins/catalog-backend/src/ingestion/processors/util/github.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/util/github.test.ts @@ -17,6 +17,7 @@ import { graphql } from '@octokit/graphql'; import { graphql as graphqlMsw } from 'msw'; import { setupServer } from 'msw/node'; +import { msw } from '@backstage/test-utils'; import { getOrganizationTeams, getOrganizationUsers, @@ -26,9 +27,7 @@ import { describe('github', () => { const server = setupServer(); - beforeAll(() => server.listen({ onUnhandledRequest: 'error' })); - afterEach(() => server.resetHandlers()); - afterAll(() => server.close()); + msw.setupDefaultHandlers(server); describe('getOrganizationUsers', () => { it('reads members', async () => { From 9f1e30a3bd5d244b9777fb2e78c856aed2ff505a Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 8 Oct 2020 22:47:46 +0200 Subject: [PATCH 016/323] chore: remove some occurrences of node-fetch --- plugins/api-docs/package.json | 1 - plugins/auth-backend/package.json | 5 ++--- plugins/catalog-graphql/package.json | 4 ++-- plugins/catalog/src/setupTests.ts | 4 +--- 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index 82faad0853..d00d4497da 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -50,7 +50,6 @@ "@types/react": "^16.9", "@types/swagger-ui-react": "^3.23.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 4579892d34..513fb540f2 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -37,7 +37,6 @@ "knex": "^0.21.1", "moment": "^2.26.0", "morgan": "^1.10.0", - "node-fetch": "^2.6.1", "passport": "^0.4.1", "passport-github2": "^0.1.12", "passport-gitlab2": "^5.0.0", @@ -55,13 +54,13 @@ "@types/body-parser": "^1.19.0", "@types/cookie-parser": "^1.4.2", "@types/jwt-decode": "2.2.1", - "@types/node-fetch": "^2.5.7", "@types/passport": "^1.0.3", "@types/passport-github2": "^1.2.4", "@types/passport-google-oauth20": "^2.0.3", "@types/passport-microsoft": "^0.0.0", "@types/passport-saml": "^1.1.2", - "msw": "^0.20.5" + "msw": "^0.21.2", + "cross-fetch": "^3.0.6" }, "files": [ "dist", diff --git a/plugins/catalog-graphql/package.json b/plugins/catalog-graphql/package.json index 6f036686de..29f85005c1 100644 --- a/plugins/catalog-graphql/package.json +++ b/plugins/catalog-graphql/package.json @@ -28,7 +28,7 @@ "graphql": "^15.3.0", "graphql-tag": "^2.11.0", "graphql-type-json": "^0.3.2", - "node-fetch": "^2.6.0", + "cross-fetch": "^3.0.6", "winston": "^3.2.1" }, "devDependencies": { @@ -40,8 +40,8 @@ "@types/express": "^4.17.7", "@types/supertest": "^2.0.8", "eslint-plugin-graphql": "^4.0.0", - "msw": "^0.20.5", "supertest": "^4.0.2", + "msw": "^0.21.2", "ts-node": "^8.10.2" }, "files": [ diff --git a/plugins/catalog/src/setupTests.ts b/plugins/catalog/src/setupTests.ts index 778a9dfaa4..aea2220869 100644 --- a/plugins/catalog/src/setupTests.ts +++ b/plugins/catalog/src/setupTests.ts @@ -15,6 +15,4 @@ */ import '@testing-library/jest-dom'; -import fetch from 'node-fetch'; - -window.fetch = fetch; +import 'cross-fetch/polyfill'; From c82a87f035db9ec18d17e0e1a5120fcf119efb11 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 8 Oct 2020 22:56:14 +0200 Subject: [PATCH 017/323] chore(catalog-graphql): updating package deps and using the new way to test --- plugins/catalog-graphql/src/service/client.test.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/plugins/catalog-graphql/src/service/client.test.ts b/plugins/catalog-graphql/src/service/client.test.ts index d8cc59d1a8..c9708af2d0 100644 --- a/plugins/catalog-graphql/src/service/client.test.ts +++ b/plugins/catalog-graphql/src/service/client.test.ts @@ -16,13 +16,11 @@ import { CatalogClient } from './client'; import { rest } from 'msw'; import { setupServer } from 'msw/node'; +import { msw } from '@backstage/test-utils'; describe('Catalog GraphQL Module', () => { const worker = setupServer(); - - beforeAll(() => worker.listen({ onUnhandledRequest: 'error' })); - afterAll(() => worker.close()); - afterEach(() => worker.resetHandlers()); + msw.setupDefaultHandlers(worker); const baseUrl = 'http://localhost:1234'; From 00eaa37a1b07a9a5df2da44a8773a45a4d102b9c Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 8 Oct 2020 23:01:23 +0200 Subject: [PATCH 018/323] chore(circleci): removing jest-fetch-mock dependency --- plugins/circleci/package.json | 2 -- plugins/circleci/src/setupTests.ts | 2 -- 2 files changed, 4 deletions(-) diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 27ae63aae5..761f22f4b1 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -46,9 +46,7 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "@types/react-lazylog": "^4.5.0", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/circleci/src/setupTests.ts b/plugins/circleci/src/setupTests.ts index a838246198..8925258421 100644 --- a/plugins/circleci/src/setupTests.ts +++ b/plugins/circleci/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom/extend-expect'; - -require('jest-fetch-mock').enableMocks(); From 3cf6336a50a6deb59f60abe591961ed251178643 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 9 Oct 2020 12:04:27 +0200 Subject: [PATCH 019/323] chore(cloudbuild): removing the dependency on jest-fetch-mock and node-fetch --- plugins/cloudbuild/package.json | 2 -- plugins/cloudbuild/src/setupTests.ts | 2 -- 2 files changed, 4 deletions(-) diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index 81e7e7cc68..290e3f2e80 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -47,9 +47,7 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/cloudbuild/src/setupTests.ts b/plugins/cloudbuild/src/setupTests.ts index 4b4cdbdaaf..0bfa67b49a 100644 --- a/plugins/cloudbuild/src/setupTests.ts +++ b/plugins/cloudbuild/src/setupTests.ts @@ -14,5 +14,3 @@ * limitations under the License. */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); From b31a2ea352d5437b81e29957b4c50f7f0aeb41b0 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 9 Oct 2020 12:10:40 +0200 Subject: [PATCH 020/323] chore(cost-insigts): removing jest-fetch-mock and node-fetch dependency --- plugins/cost-insights/package.json | 2 -- plugins/cost-insights/src/setupTests.ts | 2 -- 2 files changed, 4 deletions(-) diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index ab97e78026..36e6a16218 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -49,9 +49,7 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "@types/recharts": "^1.8.14", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/cost-insights/src/setupTests.ts b/plugins/cost-insights/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/plugins/cost-insights/src/setupTests.ts +++ b/plugins/cost-insights/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); From 304a7cdaf806bed134e6cbfb244355fcd4dcb236 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 9 Oct 2020 12:12:36 +0200 Subject: [PATCH 021/323] chore(explore): removing the node-fetch and jest-fetch-mock dependency --- plugins/explore/package.json | 2 -- plugins/explore/src/setupTests.ts | 2 -- 2 files changed, 4 deletions(-) diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 07265bc8d1..5d0c139b8b 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -41,9 +41,7 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/explore/src/setupTests.ts b/plugins/explore/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/plugins/explore/src/setupTests.ts +++ b/plugins/explore/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); From 5f66d4f86b16deb0bebaa8a8e9a51f6851279e93 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 9 Oct 2020 12:56:17 +0200 Subject: [PATCH 022/323] chore(gcp-projects): removing node-fetch and jest-fetch-mock as dependencies --- plugins/gcp-projects/package.json | 2 -- plugins/gcp-projects/src/setupTests.ts | 2 -- 2 files changed, 4 deletions(-) diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 04a1b4286c..0862cdc0d4 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -38,9 +38,7 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/gcp-projects/src/setupTests.ts b/plugins/gcp-projects/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/plugins/gcp-projects/src/setupTests.ts +++ b/plugins/gcp-projects/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); From 338baece6feb11422b790bef05f91b0cb499183c Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 9 Oct 2020 12:57:58 +0200 Subject: [PATCH 023/323] chore(github-actions): removing node-fetch and jest-fetch-mock as dependencies --- plugins/github-actions/package.json | 2 -- plugins/github-actions/src/setupTests.ts | 2 -- 2 files changed, 4 deletions(-) diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 7afe674686..9a3856275a 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -47,9 +47,7 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/github-actions/src/setupTests.ts b/plugins/github-actions/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/plugins/github-actions/src/setupTests.ts +++ b/plugins/github-actions/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); From 7e71404786297bd1b099c4545a716da0919f733d Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 9 Oct 2020 13:02:21 +0200 Subject: [PATCH 024/323] chore(gitops-profiles)): removing node-fetch and jest-fetch-mock as dependencies --- plugins/gitops-profiles/package.json | 2 -- plugins/gitops-profiles/src/setupTests.ts | 2 -- 2 files changed, 4 deletions(-) diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index 478637510d..1426158ca4 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -39,9 +39,7 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/gitops-profiles/src/setupTests.ts b/plugins/gitops-profiles/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/plugins/gitops-profiles/src/setupTests.ts +++ b/plugins/gitops-profiles/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); From a584730e14b4451dca27796d44998a69dccfe564 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 9 Oct 2020 13:03:12 +0200 Subject: [PATCH 025/323] chore(graphiql): removing node-fetch and jest-fetch-mock as dependencies --- plugins/graphiql/package.json | 2 -- plugins/graphiql/src/setupTests.ts | 2 -- 2 files changed, 4 deletions(-) diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index e8a6722167..b81d78715a 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -52,9 +52,7 @@ "@types/codemirror": "^0.0.97", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "react-router-dom": "6.0.0-beta.0", "cross-fetch": "^3.0.6" }, diff --git a/plugins/graphiql/src/setupTests.ts b/plugins/graphiql/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/plugins/graphiql/src/setupTests.ts +++ b/plugins/graphiql/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); From de9840f98cfff6e8f06c4c96e1ed2a26755d3cd9 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 9 Oct 2020 13:07:26 +0200 Subject: [PATCH 026/323] chore(graphql): removing node-fetch dependnecy --- plugins/graphql/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/graphql/package.json b/plugins/graphql/package.json index edd3f2782e..6fa210f33e 100644 --- a/plugins/graphql/package.json +++ b/plugins/graphql/package.json @@ -30,7 +30,6 @@ "express-promise-router": "^3.0.3", "graphql": "^15.3.0", "helmet": "^4.0.0", - "node-fetch": "^2.6.0", "reflect-metadata": "^0.1.13", "winston": "^3.2.1", "yn": "^4.0.0" From 8f7db2ec1fe274df101b3b0053ebee1bc89cbb4b Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 9 Oct 2020 13:19:22 +0200 Subject: [PATCH 027/323] chore(yarn.lock): prune some yarn lock stuff --- .../default-backend-plugin/package.json.hbs | 3 +- yarn.lock | 29 ++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/packages/cli/templates/default-backend-plugin/package.json.hbs b/packages/cli/templates/default-backend-plugin/package.json.hbs index 40e612609a..c9c8488721 100644 --- a/packages/cli/templates/default-backend-plugin/package.json.hbs +++ b/packages/cli/templates/default-backend-plugin/package.json.hbs @@ -36,7 +36,8 @@ "@backstage/cli": "^{{version}}", "@types/supertest": "^2.0.8", "supertest": "^4.0.2", - "msw": "^0.20.5" + "msw": "^0.21.2", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/yarn.lock b/yarn.lock index 2d2665fcb4..9afd4e6e4f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8967,7 +8967,7 @@ cross-env@^7.0.0: dependencies: cross-spawn "^7.0.1" -cross-fetch@3.0.6, cross-fetch@^3.0.4, cross-fetch@^3.0.5: +cross-fetch@3.0.6, cross-fetch@^3.0.4, cross-fetch@^3.0.5, cross-fetch@^3.0.6: version "3.0.6" resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ== @@ -16308,6 +16308,24 @@ msw@^0.20.5: statuses "^2.0.0" yargs "^15.4.1" +msw@^0.21.2: + version "0.21.2" + resolved "https://registry.npmjs.org/msw/-/msw-0.21.2.tgz#74ed10b8eb224325652a3c3812b5460dac297bd8" + integrity sha512-XOJehxtJThNFdMJdVjxDAbZ8KuC3UltOlO5nQDks0Q1yzSUqqKcVUjbKrH7T+K2hckBr0KEY2fwJHv21R4BV2A== + dependencies: + "@open-draft/until" "^1.0.3" + "@types/cookie" "^0.4.0" + chalk "^4.1.0" + chokidar "^3.4.2" + cookie "^0.4.1" + graphql "^15.3.0" + headers-utils "^1.2.0" + node-fetch "^2.6.1" + node-match-path "^0.4.4" + node-request-interceptor "^0.5.1" + statuses "^2.0.0" + yargs "^16.0.3" + multicast-dns-service-types@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" @@ -16636,6 +16654,15 @@ node-request-interceptor@^0.3.5: debug "^4.1.1" headers-utils "^1.2.0" +node-request-interceptor@^0.5.1: + version "0.5.1" + resolved "https://registry.npmjs.org/node-request-interceptor/-/node-request-interceptor-0.5.1.tgz#b4757a033bde4412d9ffc4503804abb28ed962d2" + integrity sha512-ex5mlI5nGokxocomS2Rj2r1aspmt7qZoI8OvKLt24ylp1bYCzGQ+0XD911guCNDb/kKLMIGC67HHyeFrJCz7jA== + dependencies: + "@open-draft/until" "^1.0.3" + debug "^4.1.1" + headers-utils "^1.2.0" + nodegit@0.27.0, nodegit@^0.27.0: version "0.27.0" resolved "https://registry.npmjs.org/nodegit/-/nodegit-0.27.0.tgz#4e8cc236f60e1c97324a5acff99056fe116a6ebe" From 707c2751ab1228ded0b4844401f54180c062936e Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 9 Oct 2020 13:21:04 +0200 Subject: [PATCH 028/323] chore(jenkins): removing node-fetch and jest-fetch-mock as dependencies --- plugins/jenkins/package.json | 2 -- plugins/jenkins/src/setupTests.ts | 2 -- 2 files changed, 4 deletions(-) diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index 53c17b8e3d..93bcdf2247 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -44,9 +44,7 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "@types/testing-library__jest-dom": "^5.9.1", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/jenkins/src/setupTests.ts b/plugins/jenkins/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/plugins/jenkins/src/setupTests.ts +++ b/plugins/jenkins/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); From f258c5e3ff09e120074841233730c821c53e1ff0 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 9 Oct 2020 13:28:24 +0200 Subject: [PATCH 029/323] chore(kuberenetes): removing node-fetch and jest-fetch-mock as dependencies --- plugins/kubernetes/package.json | 2 -- plugins/kubernetes/src/setupTests.ts | 2 -- 2 files changed, 4 deletions(-) diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index da3dac6c63..11b2f5078d 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -42,9 +42,7 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/kubernetes/src/setupTests.ts b/plugins/kubernetes/src/setupTests.ts index 4b4cdbdaaf..0bfa67b49a 100644 --- a/plugins/kubernetes/src/setupTests.ts +++ b/plugins/kubernetes/src/setupTests.ts @@ -14,5 +14,3 @@ * limitations under the License. */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); From 54ef1eea7e14d8c7df8a91b0073d311b4cb527eb Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 9 Oct 2020 13:30:49 +0200 Subject: [PATCH 030/323] chore(kubernetes-backend): removing node-fetch and jest-fetch-mock --- plugins/kubernetes-backend/package.json | 1 - plugins/kubernetes-backend/src/setupTests.ts | 2 -- 2 files changed, 3 deletions(-) diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index a44199ec8b..c248b74482 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -38,7 +38,6 @@ }, "devDependencies": { "@backstage/cli": "^0.1.1-alpha.24", - "jest-fetch-mock": "^3.0.3", "supertest": "^4.0.2" }, "files": [ diff --git a/plugins/kubernetes-backend/src/setupTests.ts b/plugins/kubernetes-backend/src/setupTests.ts index f7b6ca962d..ba33cf996b 100644 --- a/plugins/kubernetes-backend/src/setupTests.ts +++ b/plugins/kubernetes-backend/src/setupTests.ts @@ -14,6 +14,4 @@ * limitations under the License. */ -require('jest-fetch-mock').enableMocks(); - export {}; From 97e0b6df35fc9734ce126417b5ee676009f4e914 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 9 Oct 2020 13:34:08 +0200 Subject: [PATCH 031/323] chore: removing more occurences of jest-fetch-mock and node-fetch --- plugins/lighthouse/package.json | 2 -- plugins/lighthouse/src/setupTests.ts | 2 -- plugins/newrelic/package.json | 2 -- plugins/newrelic/src/setupTests.ts | 2 -- plugins/proxy-backend/package.json | 2 -- plugins/proxy-backend/src/setupTests.ts | 2 -- plugins/register-component/package.json | 2 -- plugins/register-component/src/setupTests.ts | 2 -- plugins/rollbar-backend/package.json | 1 - plugins/rollbar-backend/src/setupTests.ts | 2 -- plugins/rollbar/package.json | 2 -- plugins/rollbar/src/setupTests.ts | 2 -- 12 files changed, 23 deletions(-) diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 2954cb7afb..6b26cf0d3b 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -42,9 +42,7 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/lighthouse/src/setupTests.ts b/plugins/lighthouse/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/plugins/lighthouse/src/setupTests.ts +++ b/plugins/lighthouse/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index a616a810a7..fbdb43fadc 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -38,9 +38,7 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/newrelic/src/setupTests.ts b/plugins/newrelic/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/plugins/newrelic/src/setupTests.ts +++ b/plugins/newrelic/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index 723c3e395e..0e6b8a3458 100644 --- a/plugins/proxy-backend/package.json +++ b/plugins/proxy-backend/package.json @@ -27,7 +27,6 @@ "express-promise-router": "^3.0.3", "http-proxy-middleware": "^0.19.1", "morgan": "^1.10.0", - "node-fetch": "^2.6.0", "uuid": "^8.0.0", "winston": "^3.2.1", "yaml": "^1.9.2", @@ -40,7 +39,6 @@ "@types/supertest": "^2.0.8", "@types/uuid": "^8.0.0", "@types/yup": "^0.28.2", - "jest-fetch-mock": "^3.0.3", "supertest": "^4.0.2" }, "files": [ diff --git a/plugins/proxy-backend/src/setupTests.ts b/plugins/proxy-backend/src/setupTests.ts index f7b6ca962d..ba33cf996b 100644 --- a/plugins/proxy-backend/src/setupTests.ts +++ b/plugins/proxy-backend/src/setupTests.ts @@ -14,6 +14,4 @@ * limitations under the License. */ -require('jest-fetch-mock').enableMocks(); - export {}; diff --git a/plugins/register-component/package.json b/plugins/register-component/package.json index d459a6e815..7d2482fcf3 100644 --- a/plugins/register-component/package.json +++ b/plugins/register-component/package.json @@ -43,9 +43,7 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/register-component/src/setupTests.ts b/plugins/register-component/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/plugins/register-component/src/setupTests.ts +++ b/plugins/register-component/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index cda105a73f..c1ea46f95e 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -39,7 +39,6 @@ "devDependencies": { "@backstage/cli": "^0.1.1-alpha.24", "@types/supertest": "^2.0.8", - "jest-fetch-mock": "^3.0.3", "supertest": "^4.0.2" }, "files": [ diff --git a/plugins/rollbar-backend/src/setupTests.ts b/plugins/rollbar-backend/src/setupTests.ts index f7b6ca962d..ba33cf996b 100644 --- a/plugins/rollbar-backend/src/setupTests.ts +++ b/plugins/rollbar-backend/src/setupTests.ts @@ -14,6 +14,4 @@ * limitations under the License. */ -require('jest-fetch-mock').enableMocks(); - export {}; diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index e6574b4ae7..7d5d72357e 100644 --- a/plugins/rollbar/package.json +++ b/plugins/rollbar/package.json @@ -47,9 +47,7 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "@types/react": "^16.9", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/rollbar/src/setupTests.ts b/plugins/rollbar/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/plugins/rollbar/src/setupTests.ts +++ b/plugins/rollbar/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); From a0604474c1b0b8af94e60e05b3f9622f1875409c Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 9 Oct 2020 13:49:10 +0200 Subject: [PATCH 032/323] chore: removing the last of the deps in the plugins --- plugins/scaffolder/package.json | 2 -- plugins/scaffolder/src/setupTests.ts | 2 -- plugins/sentry-backend/package.json | 3 +-- plugins/sentry/package.json | 2 -- plugins/sentry/src/setupTests.ts | 2 -- plugins/tech-radar/package.json | 2 -- plugins/tech-radar/src/setupTests.ts | 2 -- plugins/techdocs-backend/package.json | 2 -- plugins/techdocs/package.json | 2 -- plugins/techdocs/src/setupTests.ts | 2 -- plugins/welcome/package.json | 3 --- 11 files changed, 1 insertion(+), 23 deletions(-) diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 6bb0e88fb0..b2518d27bf 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -49,9 +49,7 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/scaffolder/src/setupTests.ts b/plugins/scaffolder/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/plugins/scaffolder/src/setupTests.ts +++ b/plugins/scaffolder/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); diff --git a/plugins/sentry-backend/package.json b/plugins/sentry-backend/package.json index c52f7176e3..91b94696ed 100644 --- a/plugins/sentry-backend/package.json +++ b/plugins/sentry-backend/package.json @@ -34,8 +34,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.1.1-alpha.24", - "jest-fetch-mock": "^3.0.3" + "@backstage/cli": "^0.1.1-alpha.24" }, "files": [ "dist" diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index 14c583f4db..126c7d0c45 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -43,9 +43,7 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/sentry/src/setupTests.ts b/plugins/sentry/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/plugins/sentry/src/setupTests.ts +++ b/plugins/sentry/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index a49bb805eb..805946c4e3 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -45,9 +45,7 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "@types/react": "^16.9", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/tech-radar/src/setupTests.ts b/plugins/tech-radar/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/plugins/tech-radar/src/setupTests.ts +++ b/plugins/tech-radar/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index 75f6071464..de50bea910 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -33,13 +33,11 @@ "fs-extra": "^9.0.1", "git-url-parse": "^11.2.0", "knex": "^0.21.1", - "node-fetch": "^2.6.0", "nodegit": "^0.27.0", "winston": "^3.2.1" }, "devDependencies": { "@backstage/cli": "^0.1.1-alpha.24", - "@types/node-fetch": "^2.5.7", "supertest": "^4.0.2" }, "files": [ diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 79eeb8ed5f..70a3535a89 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -48,9 +48,7 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "canvas": "^2.6.1", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ diff --git a/plugins/techdocs/src/setupTests.ts b/plugins/techdocs/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/plugins/techdocs/src/setupTests.ts +++ b/plugins/techdocs/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); diff --git a/plugins/welcome/package.json b/plugins/welcome/package.json index 7c50b200e6..ed99e1ee19 100644 --- a/plugins/welcome/package.json +++ b/plugins/welcome/package.json @@ -38,10 +38,7 @@ "@testing-library/react": "^10.4.1", "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", - "@types/node": "^12.0.0", - "jest-fetch-mock": "^3.0.3", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ From a45a5d941828c2a2eb6a78b86872cb006e6c7912 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 9 Oct 2020 14:02:07 +0200 Subject: [PATCH 033/323] chore(backend-common): reworking backend common to use cross-fetch and new msw --- packages/backend-common/package.json | 6 +++--- packages/backend-common/src/reading/AzureUrlReader.test.ts | 6 ++---- packages/backend-common/src/reading/AzureUrlReader.ts | 4 ++-- .../backend-common/src/reading/BitbucketUrlReader.test.ts | 5 ++--- packages/backend-common/src/reading/BitbucketUrlReader.ts | 4 ++-- packages/backend-common/src/reading/FetchUrlReader.ts | 4 ++-- packages/backend-common/src/reading/GithubUrlReader.ts | 4 ++-- packages/backend-common/src/reading/GitlabUrlReader.test.ts | 5 ++--- packages/backend-common/src/reading/GitlabUrlReader.ts | 4 ++-- 9 files changed, 19 insertions(+), 23 deletions(-) diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 1c888ab8fe..eb74546f23 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -32,10 +32,12 @@ "@backstage/cli-common": "^0.1.1-alpha.24", "@backstage/config": "^0.1.1-alpha.24", "@backstage/config-loader": "^0.1.1-alpha.24", + "@backstage/test-utils": "^0.1.1-alpha.24", "@types/cors": "^2.8.6", "@types/express": "^4.17.6", "compression": "^1.7.4", "cors": "^2.8.5", + "cross-fetch": "^3.0.6", "express": "^4.17.1", "express-prom-bundle": "^6.1.0", "express-promise-router": "^3.0.3", @@ -45,7 +47,6 @@ "lodash": "^4.17.15", "logform": "^2.1.1", "morgan": "^1.10.0", - "node-fetch": "^2.6.0", "prom-client": "^12.0.0", "selfsigned": "^1.10.7", "stoppable": "^1.1.0", @@ -72,8 +73,7 @@ "get-port": "^5.1.1", "http-errors": "^1.7.3", "jest": "^26.0.1", - "jest-fetch-mock": "^3.0.3", - "msw": "^0.20.5", + "msw": "^0.21.2", "supertest": "^4.0.2" }, "files": [ diff --git a/packages/backend-common/src/reading/AzureUrlReader.test.ts b/packages/backend-common/src/reading/AzureUrlReader.test.ts index c9e1fc5bc7..24b435006a 100644 --- a/packages/backend-common/src/reading/AzureUrlReader.test.ts +++ b/packages/backend-common/src/reading/AzureUrlReader.test.ts @@ -19,14 +19,13 @@ import { setupServer } from 'msw/node'; import { ConfigReader } from '@backstage/config'; import { getVoidLogger } from '../logging'; import { AzureUrlReader } from './AzureUrlReader'; +import { msw } from '@backstage/test-utils'; const logger = getVoidLogger(); describe('AzureUrlReader', () => { const worker = setupServer(); - - beforeAll(() => worker.listen({ onUnhandledRequest: 'error' })); - afterAll(() => worker.close()); + msw.setupDefaultHandlers(worker); beforeEach(() => { worker.use( @@ -41,7 +40,6 @@ describe('AzureUrlReader', () => { ), ); }); - afterEach(() => worker.resetHandlers()); const createConfig = (token?: string) => new ConfigReader( diff --git a/packages/backend-common/src/reading/AzureUrlReader.ts b/packages/backend-common/src/reading/AzureUrlReader.ts index 28fbf25eea..8e6e6a75df 100644 --- a/packages/backend-common/src/reading/AzureUrlReader.ts +++ b/packages/backend-common/src/reading/AzureUrlReader.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import fetch, { RequestInit, HeadersInit, Response } from 'node-fetch'; +import fetch from 'cross-fetch'; import { Config } from '@backstage/config'; import { NotFoundError } from '../errors'; import { ReaderFactory, UrlReader } from './types'; @@ -76,7 +76,7 @@ export class AzureUrlReader implements UrlReader { // for private repos when PAT is not valid, Azure API returns a http status code 203 with sign in page html if (response.ok && response.status !== 203) { - return response.buffer(); + return Buffer.from(await response.text()); } const message = `${url} could not be read as ${builtUrl}, ${response.status} ${response.statusText}`; diff --git a/packages/backend-common/src/reading/BitbucketUrlReader.test.ts b/packages/backend-common/src/reading/BitbucketUrlReader.test.ts index c3e61fb821..bd7c43d887 100644 --- a/packages/backend-common/src/reading/BitbucketUrlReader.test.ts +++ b/packages/backend-common/src/reading/BitbucketUrlReader.test.ts @@ -19,14 +19,14 @@ import { setupServer } from 'msw/node'; import { ConfigReader } from '@backstage/config'; import { getVoidLogger } from '../logging'; import { BitbucketUrlReader } from './BitbucketUrlReader'; +import { msw } from '@backstage/test-utils'; const logger = getVoidLogger(); describe('BitbucketUrlReader', () => { const worker = setupServer(); - beforeAll(() => worker.listen({ onUnhandledRequest: 'error' })); - afterAll(() => worker.close()); + msw.setupDefaultHandlers(worker); beforeEach(() => { worker.use( @@ -41,7 +41,6 @@ describe('BitbucketUrlReader', () => { ), ); }); - afterEach(() => worker.resetHandlers()); const createConfig = (username?: string, appPassword?: string) => new ConfigReader( diff --git a/packages/backend-common/src/reading/BitbucketUrlReader.ts b/packages/backend-common/src/reading/BitbucketUrlReader.ts index e2576eed47..bf07dc18a6 100644 --- a/packages/backend-common/src/reading/BitbucketUrlReader.ts +++ b/packages/backend-common/src/reading/BitbucketUrlReader.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import fetch, { RequestInit, HeadersInit, Response } from 'node-fetch'; +import fetch from 'cross-fetch'; import { Config } from '@backstage/config'; import { ReaderFactory, UrlReader } from './types'; import { NotFoundError } from '../errors'; @@ -84,7 +84,7 @@ export class BitbucketUrlReader implements UrlReader { } if (response.ok) { - return response.buffer(); + return Buffer.from(await response.text()); } const message = `${url} could not be read as ${builtUrl}, ${response.status} ${response.statusText}`; diff --git a/packages/backend-common/src/reading/FetchUrlReader.ts b/packages/backend-common/src/reading/FetchUrlReader.ts index ea56f2182d..46db3e73ee 100644 --- a/packages/backend-common/src/reading/FetchUrlReader.ts +++ b/packages/backend-common/src/reading/FetchUrlReader.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import fetch, { Response } from 'node-fetch'; +import fetch from 'cross-fetch'; import { NotFoundError } from '../errors'; import { UrlReader } from './types'; @@ -31,7 +31,7 @@ export class FetchUrlReader implements UrlReader { } if (response.ok) { - return response.buffer(); + return Buffer.from(''); } const message = `could not read ${url}, ${response.status} ${response.statusText}`; diff --git a/packages/backend-common/src/reading/GithubUrlReader.ts b/packages/backend-common/src/reading/GithubUrlReader.ts index e5bed6dd26..d12344ec91 100644 --- a/packages/backend-common/src/reading/GithubUrlReader.ts +++ b/packages/backend-common/src/reading/GithubUrlReader.ts @@ -16,7 +16,7 @@ import { Config } from '@backstage/config'; import parseGitUri from 'git-url-parse'; -import fetch, { HeadersInit, RequestInit, Response } from 'node-fetch'; +import fetch from 'cross-fetch'; import { NotFoundError } from '../errors'; import { ReaderFactory, UrlReader } from './types'; @@ -219,7 +219,7 @@ export class GithubUrlReader implements UrlReader { } if (response.ok) { - return response.buffer(); + return Buffer.from(await response.text()); } const message = `${url} could not be read as ${ghUrl}, ${response.status} ${response.statusText}`; diff --git a/packages/backend-common/src/reading/GitlabUrlReader.test.ts b/packages/backend-common/src/reading/GitlabUrlReader.test.ts index 09da9c4e0a..4b3aa471c3 100644 --- a/packages/backend-common/src/reading/GitlabUrlReader.test.ts +++ b/packages/backend-common/src/reading/GitlabUrlReader.test.ts @@ -19,14 +19,14 @@ import { setupServer } from 'msw/node'; import { ConfigReader } from '@backstage/config'; import { getVoidLogger } from '../logging'; import { GitlabUrlReader } from './GitlabUrlReader'; +import { msw } from '@backstage/test-utils'; const logger = getVoidLogger(); describe('GitlabUrlReader', () => { const worker = setupServer(); - beforeAll(() => worker.listen({ onUnhandledRequest: 'error' })); - afterAll(() => worker.close()); + msw.setupDefaultHandlers(worker); beforeEach(() => { worker.use( @@ -44,7 +44,6 @@ describe('GitlabUrlReader', () => { ), ); }); - afterEach(() => worker.resetHandlers()); const createConfig = (token?: string) => new ConfigReader( diff --git a/packages/backend-common/src/reading/GitlabUrlReader.ts b/packages/backend-common/src/reading/GitlabUrlReader.ts index 0e430d650c..378e76fb61 100644 --- a/packages/backend-common/src/reading/GitlabUrlReader.ts +++ b/packages/backend-common/src/reading/GitlabUrlReader.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import fetch, { RequestInit, Response } from 'node-fetch'; +import fetch from 'cross-fetch'; import { Config } from '@backstage/config'; import { NotFoundError } from '../errors'; import { ReaderFactory, UrlReader } from './types'; @@ -77,7 +77,7 @@ export class GitlabUrlReader implements UrlReader { } if (response.ok) { - return response.buffer(); + return Buffer.from(await response.text()); } const message = `${url} could not be read as ${builtUrl}, ${response.status} ${response.statusText}`; From f36e1e9fe772bcfdfbe55af9bd8f53f60c8f8483 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 9 Oct 2020 14:14:53 +0200 Subject: [PATCH 034/323] chore: remove node-fetch from the project --- packages/backend-common/package.json | 1 - .../cli/templates/default-backend-plugin/package.json.hbs | 5 ++--- packages/core-api/package.json | 3 +-- packages/core-api/src/setupTests.ts | 2 -- packages/core/package.json | 3 +-- packages/core/src/setupTests.ts | 2 -- packages/e2e-test/package.json | 2 +- packages/e2e-test/src/e2e-test.ts | 2 +- plugins/catalog/package.json | 1 - plugins/proxy-backend/package.json | 2 -- plugins/techdocs-backend/package.json | 1 + plugins/techdocs-backend/src/default-branch.ts | 2 +- plugins/techdocs-backend/src/service/metadata.ts | 3 ++- plugins/techdocs-backend/src/service/router.ts | 2 +- yarn.lock | 2 +- 15 files changed, 12 insertions(+), 21 deletions(-) diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index eb74546f23..ad2af992bd 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -65,7 +65,6 @@ "@types/compression": "^1.7.0", "@types/http-errors": "^1.6.3", "@types/morgan": "^1.9.0", - "@types/node-fetch": "^2.5.7", "@types/stoppable": "^1.1.0", "@types/supertest": "^2.0.8", "@types/webpack-env": "^1.15.2", diff --git a/packages/cli/templates/default-backend-plugin/package.json.hbs b/packages/cli/templates/default-backend-plugin/package.json.hbs index c9c8488721..96ceb9784d 100644 --- a/packages/cli/templates/default-backend-plugin/package.json.hbs +++ b/packages/cli/templates/default-backend-plugin/package.json.hbs @@ -29,15 +29,14 @@ "express": "^4.17.1", "express-promise-router": "^3.0.3", "winston": "^3.2.1", - "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6", "yn": "^4.0.0" }, "devDependencies": { "@backstage/cli": "^{{version}}", "@types/supertest": "^2.0.8", "supertest": "^4.0.2", - "msw": "^0.21.2", - "cross-fetch": "^3.0.6" + "msw": "^0.21.2" }, "files": [ "dist" diff --git a/packages/core-api/package.json b/packages/core-api/package.json index c925471695..d6dd492906 100644 --- a/packages/core-api/package.json +++ b/packages/core-api/package.json @@ -48,8 +48,7 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "@types/zen-observable": "^0.8.0", - "jest-fetch-mock": "^3.0.3" + "@types/zen-observable": "^0.8.0" }, "files": [ "dist" diff --git a/packages/core-api/src/setupTests.ts b/packages/core-api/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/packages/core-api/src/setupTests.ts +++ b/packages/core-api/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); diff --git a/packages/core/package.json b/packages/core/package.json index 0a0dc7576c..f125c9d67e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -64,8 +64,7 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "@types/react-helmet": "^6.1.0", - "@types/zen-observable": "^0.8.0", - "jest-fetch-mock": "^3.0.3" + "@types/zen-observable": "^0.8.0" }, "files": [ "dist" diff --git a/packages/core/src/setupTests.ts b/packages/core/src/setupTests.ts index 8553642152..825bcd4115 100644 --- a/packages/core/src/setupTests.ts +++ b/packages/core/src/setupTests.ts @@ -15,5 +15,3 @@ */ import '@testing-library/jest-dom'; - -require('jest-fetch-mock').enableMocks(); diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json index 8dcfd98ab5..6f8a952547 100644 --- a/packages/e2e-test/package.json +++ b/packages/e2e-test/package.json @@ -26,7 +26,7 @@ "@types/node": "^13.7.2", "fs-extra": "^9.0.0", "handlebars": "^4.7.3", - "node-fetch": "^2.6.0", + "cross-fetch": "^3.0.6", "pgtools": "^0.3.0", "tree-kill": "^1.2.2", "ts-node": "^8.6.2", diff --git a/packages/e2e-test/src/e2e-test.ts b/packages/e2e-test/src/e2e-test.ts index c7f6137ff1..d1529d3af2 100644 --- a/packages/e2e-test/src/e2e-test.ts +++ b/packages/e2e-test/src/e2e-test.ts @@ -16,7 +16,7 @@ import os from 'os'; import fs from 'fs-extra'; -import fetch from 'node-fetch'; +import fetch from 'cross-fetch'; import handlebars from 'handlebars'; import killTree from 'tree-kill'; import { resolve as resolvePath, join as joinPath } from 'path'; diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index b57136b7db..23eeb7c8a1 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -51,7 +51,6 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "react-test-renderer": "^16.13.1", "cross-fetch": "^3.0.6" }, diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index 0e6b8a3458..248c3a4014 100644 --- a/plugins/proxy-backend/package.json +++ b/plugins/proxy-backend/package.json @@ -35,8 +35,6 @@ }, "devDependencies": { "@backstage/cli": "^0.1.1-alpha.24", - "@types/node-fetch": "^2.5.7", - "@types/supertest": "^2.0.8", "@types/uuid": "^8.0.0", "@types/yup": "^0.28.2", "supertest": "^4.0.2" diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index de50bea910..ed2b952f16 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -34,6 +34,7 @@ "git-url-parse": "^11.2.0", "knex": "^0.21.1", "nodegit": "^0.27.0", + "cross-fetch": "^3.0.6", "winston": "^3.2.1" }, "devDependencies": { diff --git a/plugins/techdocs-backend/src/default-branch.ts b/plugins/techdocs-backend/src/default-branch.ts index 05a8f666ce..bbf40c17fc 100644 --- a/plugins/techdocs-backend/src/default-branch.ts +++ b/plugins/techdocs-backend/src/default-branch.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import fetch, { RequestInit } from 'node-fetch'; +import fetch from 'cross-fetch'; import parseGitUrl from 'git-url-parse'; import { ConfigReader, Config } from '@backstage/config'; import { loadBackendConfig } from '@backstage/backend-common'; diff --git a/plugins/techdocs-backend/src/service/metadata.ts b/plugins/techdocs-backend/src/service/metadata.ts index 671fcdda17..760180f8d2 100644 --- a/plugins/techdocs-backend/src/service/metadata.ts +++ b/plugins/techdocs-backend/src/service/metadata.ts @@ -1,4 +1,3 @@ -import fetch from 'node-fetch'; /* * Copyright 2020 Spotify AB * @@ -15,6 +14,8 @@ import fetch from 'node-fetch'; * limitations under the License. */ +import fetch from 'cross-fetch'; + export class TechDocsMetadata { private async getMetadataFile(docsUrl: String) { const metadataURL = `${docsUrl}/techdocs_metadata.json`; diff --git a/plugins/techdocs-backend/src/service/router.ts b/plugins/techdocs-backend/src/service/router.ts index 365534b9d0..ca0dbd45b4 100644 --- a/plugins/techdocs-backend/src/service/router.ts +++ b/plugins/techdocs-backend/src/service/router.ts @@ -17,7 +17,7 @@ import { Logger } from 'winston'; import Router from 'express-promise-router'; import express from 'express'; import Knex from 'knex'; -import fetch from 'node-fetch'; +import fetch from 'cross-fetch'; import { Config } from '@backstage/config'; import Docker from 'dockerode'; import { diff --git a/yarn.lock b/yarn.lock index 9afd4e6e4f..0f81798230 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5180,7 +5180,7 @@ dependencies: "@types/node" "*" -"@types/node-fetch@2.5.7", "@types/node-fetch@^2.5.4", "@types/node-fetch@^2.5.7": +"@types/node-fetch@2.5.7", "@types/node-fetch@^2.5.4": version "2.5.7" resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c" integrity sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw== From 837ae7719729c2efe89ea9cc58a816054ba37d62 Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Sun, 11 Oct 2020 19:10:41 +0530 Subject: [PATCH 035/323] feat: strategy to add page them in top level theme provider --- packages/theme/src/baseTheme.ts | 29 ++++++++++++++--------------- packages/theme/src/index.ts | 1 + packages/theme/src/themes.ts | 10 +++------- packages/theme/src/types.ts | 24 +++++++++--------------- 4 files changed, 27 insertions(+), 37 deletions(-) diff --git a/packages/theme/src/baseTheme.ts b/packages/theme/src/baseTheme.ts index a3fded7e04..1f0e01586e 100644 --- a/packages/theme/src/baseTheme.ts +++ b/packages/theme/src/baseTheme.ts @@ -19,20 +19,28 @@ import { darken, lighten } from '@material-ui/core/styles/colorManipulator'; import { Overrides } from '@material-ui/core/styles/overrides'; import { - BackstagePageTheme, - BackstagePageThemeOptions, BackstageTheme, BackstageThemeOptions, SimpleThemeOptions, } from './types'; +import { pageTheme } from './pageTheme'; + const DEFAULT_FONT_FAMILY = '"Helvetica Neue", Helvetica, Roboto, Arial, sans-serif'; export function createThemeOptions( options: SimpleThemeOptions, ): BackstageThemeOptions { - const { palette, fontFamily = DEFAULT_FONT_FAMILY } = options; + const { + palette, + fontFamily = DEFAULT_FONT_FAMILY, + defaultPageTheme, + } = options; + + if (!pageTheme[defaultPageTheme]) { + throw new Error(`${defaultPageTheme} is not defined in pageTheme.`); + } return { palette, @@ -70,6 +78,9 @@ export function createThemeOptions( marginBottom: 10, }, }, + page: pageTheme[defaultPageTheme], + getPageTheme: ({ themeId }) => + pageTheme[themeId] ?? pageTheme[defaultPageTheme], }; } @@ -244,15 +255,3 @@ export function createTheme(options: SimpleThemeOptions): BackstageTheme { const theme = { ...baseTheme, overrides }; return theme; } - -export function createPageTheme( - options: BackstagePageThemeOptions, -): BackstagePageTheme { - const baseTheme = createTheme(options); - const pageTheme = options.pageTheme; - - return { - pageTheme, - baseTheme, - }; -} diff --git a/packages/theme/src/index.ts b/packages/theme/src/index.ts index 862f9b7755..cafad3fc7c 100644 --- a/packages/theme/src/index.ts +++ b/packages/theme/src/index.ts @@ -17,3 +17,4 @@ export * from './themes'; export * from './baseTheme'; export * from './types'; +export * from './pageTheme'; diff --git a/packages/theme/src/themes.ts b/packages/theme/src/themes.ts index 78a68c8f13..3838ed01cc 100644 --- a/packages/theme/src/themes.ts +++ b/packages/theme/src/themes.ts @@ -14,8 +14,7 @@ * limitations under the License. */ -import { createTheme, createPageTheme } from './baseTheme'; -import { pageTheme } from './pageTheme'; +import { createTheme } from './baseTheme'; import { yellow } from '@material-ui/core/colors'; export const lightTheme = createTheme({ @@ -74,6 +73,7 @@ export const lightTheme = createTheme({ indicator: '#9BF0E1', }, }, + defaultPageTheme: 'home', }); export const darkTheme = createTheme({ @@ -132,9 +132,5 @@ export const darkTheme = createTheme({ indicator: '#9BF0E1', }, }, -}); - -export const customPageTheme = createPageTheme({ - pageTheme, - palette: lightTheme.palette, + defaultPageTheme: 'home', }); diff --git a/packages/theme/src/types.ts b/packages/theme/src/types.ts index 3d3943392a..b5a07e78c5 100644 --- a/packages/theme/src/types.ts +++ b/packages/theme/src/types.ts @@ -72,12 +72,20 @@ type PaletteAdditions = { export type BackstagePalette = Palette & PaletteAdditions; export type BackstagePaletteOptions = PaletteOptions & PaletteAdditions; +export type pageThemeOptions = { + themeId: string; +}; + export interface BackstageTheme extends Theme { palette: BackstagePalette; + page: PageTheme; + getPageTheme: ({ themeId }: pageThemeOptions) => PageTheme; } export interface BackstageThemeOptions extends ThemeOptions { palette: BackstagePaletteOptions; + page: PageTheme; + getPageTheme: ({ themeId }: pageThemeOptions) => PageTheme; } /** @@ -85,6 +93,7 @@ export interface BackstageThemeOptions extends ThemeOptions { */ export type SimpleThemeOptions = { palette: BackstagePaletteOptions; + defaultPageTheme: string; fontFamily?: string; }; @@ -93,18 +102,3 @@ export type PageTheme = { shape: string; backgroundImage: string; }; - -export type BackstagePage = Record; - -export interface BackstagePageThemeOptions extends SimpleThemeOptions { - pageTheme: BackstagePage; -} - -export interface BackstagePageTheme { - pageTheme: BackstagePage; - baseTheme: BackstageTheme; -} - -export interface BackstagePageThemeConsumer extends BackstageTheme { - pageTheme: PageTheme; -} From 886bff9d44a373778ea4b92fd20887d211d63488 Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Sun, 11 Oct 2020 19:12:48 +0530 Subject: [PATCH 036/323] feat: update theme provider in Page component, to override page theme in children --- packages/core/src/layout/Page/Page.stories.tsx | 6 +++--- packages/core/src/layout/Page/Page.tsx | 11 ++++------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/packages/core/src/layout/Page/Page.stories.tsx b/packages/core/src/layout/Page/Page.stories.tsx index 427dc644d9..998f799b56 100644 --- a/packages/core/src/layout/Page/Page.stories.tsx +++ b/packages/core/src/layout/Page/Page.stories.tsx @@ -15,7 +15,7 @@ */ import React, { useState } from 'react'; -import { customPageTheme } from '@backstage/theme'; +import { pageTheme } from '@backstage/theme'; import { Header, Page, @@ -196,7 +196,7 @@ export const PluginWithData = () => { const [selectedTab, setSelectedTab] = useState(2); return (
- + { export const PluginWithTable = () => { return (
- + diff --git a/packages/core/src/layout/Page/Page.tsx b/packages/core/src/layout/Page/Page.tsx index f4dc4888ed..4bc1917659 100644 --- a/packages/core/src/layout/Page/Page.tsx +++ b/packages/core/src/layout/Page/Page.tsx @@ -15,7 +15,7 @@ */ import React, { FC } from 'react'; -import { customPageTheme, PageTheme } from '@backstage/theme'; +import { PageTheme } from '@backstage/theme'; import { makeStyles, ThemeProvider } from '@material-ui/core'; const useStyles = makeStyles(() => ({ @@ -30,16 +30,13 @@ const useStyles = makeStyles(() => ({ })); type Props = { - pageTheme?: PageTheme; + theme: PageTheme; }; -export const Page: FC = ({ - pageTheme = customPageTheme.pageTheme.home, - children, -}) => { +export const Page: FC = ({ theme, children }) => { const classes = useStyles(); return ( - + ({ ...baseTheme, page: theme })}>
{children}
); From 6d68f6fec17429764cd55d0b84fcd9f1bbde9140 Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Sun, 11 Oct 2020 19:14:23 +0530 Subject: [PATCH 037/323] feat: consume theme provided by Page theme provider --- .../core/src/layout/Header/Header.stories.tsx | 18 +++---- .../core/src/layout/Header/Header.test.tsx | 10 ++-- packages/core/src/layout/Header/Header.tsx | 12 ++--- .../core/src/layout/SignInPage/SignInPage.tsx | 6 ++- .../ApiEntityPage/ApiEntityPage.test.tsx | 33 +----------- .../ApiEntityPage/ApiEntityPage.tsx | 17 +++--- .../ApiExplorerPage/ApiExplorerLayout.tsx | 11 +++- .../components/CatalogPage/CatalogLayout.tsx | 6 ++- .../EntityPageLayout/EntityPageLayout.tsx | 19 ++++--- .../AlertInstructionsLayout.tsx | 17 ++++-- .../CostInsightsLayout/CostInsightsLayout.tsx | 11 ++-- .../src/components/ExplorePluginPage.tsx | 12 +++-- .../NewProjectPage/NewProjectPage.tsx | 12 +++-- .../ProjectDetailsPage/ProjectDetailsPage.tsx | 10 +++- .../ProjectListPage/ProjectListPage.tsx | 11 +++- .../components/ClusterList/ClusterList.tsx | 11 ++-- .../components/ClusterPage/ClusterPage.tsx | 11 ++-- .../ProfileCatalog/ProfileCatalog.tsx | 12 +++-- .../components/GraphiQLPage/GraphiQLPage.tsx | 11 ++-- .../KubernetesContent/KubernetesContent.tsx | 11 ++-- .../src/components/AuditList/index.tsx | 11 ++-- .../src/components/AuditView/index.tsx | 10 +++- .../src/components/CreateAudit/index.tsx | 10 +++- .../NewRelicComponent/NewRelicComponent.tsx | 48 +++++++++-------- .../RegisterComponentPage.tsx | 11 ++-- .../components/RollbarHome/RollbarHome.tsx | 10 +++- .../RollbarProjectPage/RollbarProjectPage.tsx | 10 +++- .../ScaffolderPage/ScaffolderPage.tsx | 7 +-- .../components/TemplateCard/TemplateCard.tsx | 16 ++++-- .../components/TemplatePage/TemplatePage.tsx | 7 +-- .../SentryPluginPage/SentryPluginPage.tsx | 11 ++-- .../tech-radar/src/components/RadarPage.tsx | 54 ++++++++++--------- .../src/reader/components/TechDocsHome.tsx | 23 ++++++-- .../src/reader/components/TechDocsPage.tsx | 10 +++- .../components/WelcomePage/WelcomePage.tsx | 10 +++- 35 files changed, 320 insertions(+), 189 deletions(-) diff --git a/packages/core/src/layout/Header/Header.stories.tsx b/packages/core/src/layout/Header/Header.stories.tsx index cc0276224a..a99e9e235f 100644 --- a/packages/core/src/layout/Header/Header.stories.tsx +++ b/packages/core/src/layout/Header/Header.stories.tsx @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { customPageTheme } from '@backstage/theme'; +import { pageTheme } from '@backstage/theme'; import React from 'react'; import { Header } from '.'; import { HeaderLabel } from '../HeaderLabel'; @@ -33,7 +33,7 @@ const labels = ( ); export const Home = () => ( - +
{labels}
@@ -47,7 +47,7 @@ export const HomeWithSubtitle = () => ( ); export const Tool = () => ( - +
{labels}
@@ -55,7 +55,7 @@ export const Tool = () => ( ); export const Service = () => ( - +
{labels}
@@ -63,7 +63,7 @@ export const Service = () => ( ); export const Website = () => ( - +
{labels}
@@ -71,7 +71,7 @@ export const Website = () => ( ); export const Library = () => ( - +
{labels}
@@ -79,7 +79,7 @@ export const Library = () => ( ); export const App = () => ( - +
{labels}
@@ -87,7 +87,7 @@ export const App = () => ( ); export const Documentation = () => ( - +
{labels}
@@ -95,7 +95,7 @@ export const Documentation = () => ( ); export const Other = () => ( - +
{labels}
diff --git a/packages/core/src/layout/Header/Header.test.tsx b/packages/core/src/layout/Header/Header.test.tsx index e5dc7fec4d..5d28c6633f 100644 --- a/packages/core/src/layout/Header/Header.test.tsx +++ b/packages/core/src/layout/Header/Header.test.tsx @@ -26,18 +26,18 @@ jest.mock('react-helmet', () => { }); describe('
', () => { - it('should render with title', async () => { + it('should render with title', () => { const rendered = render(wrapInTestApp(
)); rendered.getByText('Title'); }); - it('should set document title', async () => { + it('should set document title', () => { const rendered = render(wrapInTestApp(
)); rendered.getByText('Title1'); rendered.getByText('defaultTitle: Title1 | Backstage'); }); - it('should override document title', async () => { + it('should override document title', () => { const rendered = render( wrapInTestApp(
), ); @@ -45,14 +45,14 @@ describe('
', () => { rendered.getByText('defaultTitle: Title2 | Backstage'); }); - it('should have subtitle', async () => { + it('should have subtitle', () => { const rendered = render( wrapInTestApp(
), ); rendered.getByText('Subtitle'); }); - it('should have type rendered', async () => { + it('should have type rendered', () => { const rendered = render( wrapInTestApp(
), ); diff --git a/packages/core/src/layout/Header/Header.tsx b/packages/core/src/layout/Header/Header.tsx index 41840b6ff0..6fadd0c834 100644 --- a/packages/core/src/layout/Header/Header.tsx +++ b/packages/core/src/layout/Header/Header.tsx @@ -17,11 +17,7 @@ import React, { ReactNode, CSSProperties, FC } from 'react'; import { Helmet } from 'react-helmet'; import { Typography, Tooltip, makeStyles, useTheme } from '@material-ui/core'; -import { - BackstageTheme, - BackstagePageThemeConsumer, - customPageTheme, -} from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; const useStyles = makeStyles( theme => ({ @@ -165,11 +161,9 @@ export const Header: FC = ({ type, typeLink, }) => { - const theme = useTheme(); + const backstageTheme = useTheme(); const classes = useStyles({ - backgroundImage: - theme.pageTheme?.backgroundImage ?? - customPageTheme.pageTheme.home.backgroundImage, + backgroundImage: backstageTheme.page.backgroundImage, }); const documentTitle = pageTitleOverride || title; const pageTitle = title || pageTitleOverride; diff --git a/packages/core/src/layout/SignInPage/SignInPage.tsx b/packages/core/src/layout/SignInPage/SignInPage.tsx index 8a1ff68250..b2b049d161 100644 --- a/packages/core/src/layout/SignInPage/SignInPage.tsx +++ b/packages/core/src/layout/SignInPage/SignInPage.tsx @@ -19,7 +19,8 @@ import { Page } from '../Page'; import { Header } from '../Header'; import { Content } from '../Content/Content'; import { ContentHeader } from '../ContentHeader/ContentHeader'; -import { Grid } from '@material-ui/core'; +import { BackstageTheme } from '@backstage/theme'; +import { Grid, useTheme } from '@material-ui/core'; import { SignInPageProps, useApi, configApiRef } from '@backstage/core-api'; import { useSignInProviders, getSignInProviders } from './providers'; import { IdentityProviders } from './types'; @@ -38,6 +39,7 @@ export const SignInPage: FC = ({ title, align = 'left', }) => { + const backstageTheme = useTheme(); const configApi = useApi(configApiRef); const classes = useStyles(); @@ -52,7 +54,7 @@ export const SignInPage: FC = ({ } return ( - +
{title && } diff --git a/plugins/api-docs/src/components/ApiEntityPage/ApiEntityPage.test.tsx b/plugins/api-docs/src/components/ApiEntityPage/ApiEntityPage.test.tsx index af5213e3f1..9a2bc0cfb1 100644 --- a/plugins/api-docs/src/components/ApiEntityPage/ApiEntityPage.test.tsx +++ b/plugins/api-docs/src/components/ApiEntityPage/ApiEntityPage.test.tsx @@ -13,14 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -import { Entity } from '@backstage/catalog-model'; import { ApiProvider, ApiRegistry, errorApiRef } from '@backstage/core'; import { CatalogApi, catalogApiRef } from '@backstage/plugin-catalog'; import { wrapInTestApp } from '@backstage/test-utils'; import { render, waitFor } from '@testing-library/react'; import * as React from 'react'; -import { ApiEntityPage, getPageTheme } from './ApiEntityPage'; +import { ApiEntityPage } from './ApiEntityPage'; jest.mock('react-router-dom', () => { const actual = jest.requireActual('react-router-dom'); @@ -71,32 +69,3 @@ describe('ApiEntityPage', () => { ); }); }); - -describe('getPageTheme', () => { - const defaultPageTheme = getPageTheme(); - it.each(['service', 'app', 'library', 'tool', 'documentation', 'website'])( - 'should select right theme for predefined type: %p ̰ ', - type => { - const theme = getPageTheme(({ - spec: { - type, - }, - } as any) as Entity); - expect(theme).toBeDefined(); - expect(theme).not.toBe(defaultPageTheme); - }, - ); - - it('should select default theme for unknown/unspecified types', () => { - const theme1 = getPageTheme(({ - spec: { - type: 'unknown-type', - }, - } as any) as Entity); - const theme2 = getPageTheme(({ - spec: {}, - } as any) as Entity); - expect(theme1).toBe(defaultPageTheme); - expect(theme2).toBe(defaultPageTheme); - }); -}); diff --git a/plugins/api-docs/src/components/ApiEntityPage/ApiEntityPage.tsx b/plugins/api-docs/src/components/ApiEntityPage/ApiEntityPage.tsx index edfc3ab08b..85250a8569 100644 --- a/plugins/api-docs/src/components/ApiEntityPage/ApiEntityPage.tsx +++ b/plugins/api-docs/src/components/ApiEntityPage/ApiEntityPage.tsx @@ -23,9 +23,9 @@ import { Progress, useApi, } from '@backstage/core'; -import { customPageTheme, PageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; import { catalogApiRef } from '@backstage/plugin-catalog'; -import { Box } from '@material-ui/core'; +import { Box, useTheme } from '@material-ui/core'; import { Alert } from '@material-ui/lab'; import React, { useEffect } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; @@ -53,12 +53,6 @@ function headerProps( }; } -// REUSABLE IN plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx -export const getPageTheme = (entity?: Entity): PageTheme => { - const themeKey = entity?.spec?.type?.toString() ?? 'home'; - return customPageTheme.pageTheme[themeKey] ?? customPageTheme.pageTheme.home; -}; - type EntityPageTitleProps = { title: string; entity: Entity | undefined; @@ -71,6 +65,7 @@ const EntityPageTitle = ({ title }: EntityPageTitleProps) => ( ); export const ApiEntityPage = () => { + const backstageTheme = useTheme(); const { optionalNamespaceAndName } = useParams() as { optionalNamespaceAndName: string; }; @@ -107,7 +102,11 @@ export const ApiEntityPage = () => { ); return ( - +
} pageTitleOverride={headerTitle} diff --git a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx index 53b50f1826..410432d715 100644 --- a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx +++ b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx @@ -15,7 +15,8 @@ */ import { Header, Page } from '@backstage/core'; -import { customPageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; +import { useTheme } from '@material-ui/core'; import React from 'react'; type Props = { @@ -23,8 +24,14 @@ type Props = { }; export const ApiExplorerLayout = ({ children }: Props) => { + const backstageTheme = useTheme(); + return ( - +
{ + const backstageTheme = useTheme(); const greeting = getTimeBasedGreeting(); const profile = useApi(identityApiRef).getProfile(); const userId = useApi(identityApiRef).getUserId(); return ( - +
{ - const themeKey = entity?.spec?.type?.toString() ?? 'home'; - return customPageTheme.pageTheme[themeKey] ?? customPageTheme.pageTheme.home; -}; +// const getPageTheme = (entity?: Entity): PageTheme => { +// const themeKey = entity?.spec?.type?.toString() ?? 'home'; +// return customPageTheme.pageTheme[themeKey] ?? customPageTheme.pageTheme.home; +// }; const EntityPageTitle = ({ entity, @@ -69,6 +69,7 @@ export const EntityPageLayout = ({ }: { children?: React.ReactNode; }) => { + const backstageTheme = useTheme(); const { optionalNamespaceAndName, kind } = useParams() as { optionalNamespaceAndName: string; kind: string; @@ -93,7 +94,11 @@ export const EntityPageLayout = ({ const showRemovalDialog = () => setConfirmationDialogOpen(true); return ( - +
} pageTitleOverride={headerTitle} diff --git a/plugins/cost-insights/src/components/AlertInstructionsLayout/AlertInstructionsLayout.tsx b/plugins/cost-insights/src/components/AlertInstructionsLayout/AlertInstructionsLayout.tsx index c0777fc844..d09b130b70 100644 --- a/plugins/cost-insights/src/components/AlertInstructionsLayout/AlertInstructionsLayout.tsx +++ b/plugins/cost-insights/src/components/AlertInstructionsLayout/AlertInstructionsLayout.tsx @@ -14,9 +14,15 @@ * limitations under the License. */ -import { customPageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; import React, { ReactNode } from 'react'; -import { Box, Button, Container, makeStyles } from '@material-ui/core'; +import { + Box, + Button, + Container, + makeStyles, + useTheme, +} from '@material-ui/core'; import ChevronLeftIcon from '@material-ui/icons/ChevronLeft'; import { Header, Page } from '@backstage/core'; import { CostInsightsThemeProvider } from '../CostInsightsPage/CostInsightsThemeProvider'; @@ -37,10 +43,15 @@ const AlertInstructionsLayout = ({ title, children, }: AlertInstructionsLayoutProps) => { + const backstageTheme = useTheme(); const classes = useStyles(); return ( - +
diff --git a/plugins/cost-insights/src/components/CostInsightsLayout/CostInsightsLayout.tsx b/plugins/cost-insights/src/components/CostInsightsLayout/CostInsightsLayout.tsx index c95f624bbe..068174cd68 100644 --- a/plugins/cost-insights/src/components/CostInsightsLayout/CostInsightsLayout.tsx +++ b/plugins/cost-insights/src/components/CostInsightsLayout/CostInsightsLayout.tsx @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { customPageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; import React from 'react'; -import { makeStyles } from '@material-ui/core'; +import { makeStyles, useTheme } from '@material-ui/core'; import { Header, Page } from '@backstage/core'; import { Group } from '../../types'; import CostInsightsTabs from '../CostInsightsTabs'; @@ -39,9 +39,14 @@ type CostInsightsLayoutProps = { }; const CostInsightsLayout = ({ groups, children }: CostInsightsLayoutProps) => { + const backstageTheme = useTheme(); const classes = useStyles(); return ( - +
(theme => ({ container: { @@ -115,8 +115,14 @@ const toolsCards = [ export const ExplorePluginPage = () => { const classes = useStyles(); + const backstageTheme = useTheme(); + return ( - +
{ @@ -112,8 +112,14 @@ const labels = ( ); export const NewProjectPage = () => { + const backstageTheme = useTheme(); + return ( - +
{labels}
diff --git a/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx b/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx index e310c27c68..eb86b6fd03 100644 --- a/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx +++ b/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { customPageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; import { Content, ContentHeader, @@ -36,6 +36,7 @@ import { TableRow, Theme, Typography, + useTheme, } from '@material-ui/core'; import React from 'react'; import { useAsync } from 'react-use'; @@ -147,8 +148,13 @@ const labels = ( ); export const ProjectDetailsPage = () => { + const backstageTheme = useTheme(); return ( - +
{labels}
diff --git a/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx b/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx index 5a404dbb01..33b3813c2a 100644 --- a/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx +++ b/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx @@ -15,7 +15,7 @@ */ // NEEDS WORK -import { customPageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; import { Content, ContentHeader, @@ -38,6 +38,7 @@ import { TableRow, Tooltip, Typography, + useTheme, } from '@material-ui/core'; import React from 'react'; import { useAsync } from 'react-use'; @@ -134,8 +135,14 @@ const PageContents = () => { }; export const ProjectListPage = () => { + const backstageTheme = useTheme(); + return ( - +
{labels}
diff --git a/plugins/gitops-profiles/src/components/ClusterList/ClusterList.tsx b/plugins/gitops-profiles/src/components/ClusterList/ClusterList.tsx index 8926ed3260..3b33320abe 100644 --- a/plugins/gitops-profiles/src/components/ClusterList/ClusterList.tsx +++ b/plugins/gitops-profiles/src/components/ClusterList/ClusterList.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ -import { customPageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; import React, { FC, useState } from 'react'; import { Content, @@ -29,12 +29,13 @@ import { } from '@backstage/core'; import ClusterTable from '../ClusterTable/ClusterTable'; -import { Button } from '@material-ui/core'; +import { Button, useTheme } from '@material-ui/core'; import { useAsync } from 'react-use'; import { gitOpsApiRef } from '../../api'; import { Alert } from '@material-ui/lab'; const ClusterList: FC<{}> = () => { + const backstageTheme = useTheme(); const api = useApi(gitOpsApiRef); const githubAuth = useApi(githubAuthApiRef); const [githubUsername, setGithubUsername] = useState(String); @@ -91,7 +92,11 @@ const ClusterList: FC<{}> = () => { } return ( - +
diff --git a/plugins/gitops-profiles/src/components/ClusterPage/ClusterPage.tsx b/plugins/gitops-profiles/src/components/ClusterPage/ClusterPage.tsx index d51fb7656e..f7205c3326 100644 --- a/plugins/gitops-profiles/src/components/ClusterPage/ClusterPage.tsx +++ b/plugins/gitops-profiles/src/components/ClusterPage/ClusterPage.tsx @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { customPageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; import React, { FC, useEffect, useState } from 'react'; import { Content, @@ -26,12 +26,13 @@ import { githubAuthApiRef, } from '@backstage/core'; -import { Link } from '@material-ui/core'; +import { Link, useTheme } from '@material-ui/core'; import { useParams } from 'react-router-dom'; import { gitOpsApiRef, Status } from '../../api'; import { transformRunStatus } from '../ProfileCatalog'; const ClusterPage: FC<{}> = () => { + const backstageTheme = useTheme(); const params = useParams() as { owner: string; repo: string }; const [pollingLog, setPollingLog] = useState(true); @@ -84,7 +85,11 @@ const ClusterPage: FC<{}> = () => { }, [pollingLog, api, params, githubAuth, githubAccessToken, githubUsername]); return ( - +
diff --git a/plugins/gitops-profiles/src/components/ProfileCatalog/ProfileCatalog.tsx b/plugins/gitops-profiles/src/components/ProfileCatalog/ProfileCatalog.tsx index 078e1b7601..fe1e97235a 100644 --- a/plugins/gitops-profiles/src/components/ProfileCatalog/ProfileCatalog.tsx +++ b/plugins/gitops-profiles/src/components/ProfileCatalog/ProfileCatalog.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ -import { customPageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; import React, { FC, useEffect, useState } from 'react'; import { Header, @@ -37,7 +37,7 @@ import { useApi, githubAuthApiRef, } from '@backstage/core'; -import { TextField, List, ListItem, Link } from '@material-ui/core'; +import { TextField, List, ListItem, Link, useTheme } from '@material-ui/core'; import ClusterTemplateCardList from '../ClusterTemplateCardList'; import ProfileCardList from '../ProfileCardList'; @@ -81,6 +81,8 @@ export const transformRunStatus = (x: Status[]) => { }; const ProfileCatalog: FC<{}> = () => { + const backstageTheme = useTheme(); + // TODO: get data from REST API const [clusterTemplates] = React.useState([ { @@ -259,7 +261,11 @@ const ProfileCatalog: FC<{}> = () => { ]; return ( - +
{ + const backstageTheme = useTheme(); const graphQlBrowseApi = useApi(graphQlBrowseApiRef); const endpoints = useAsync(() => graphQlBrowseApi.getEndpoints()); @@ -59,7 +60,11 @@ export const GraphiQLPage = () => { } return ( - +
diff --git a/plugins/kubernetes/src/components/KubernetesContent/KubernetesContent.tsx b/plugins/kubernetes/src/components/KubernetesContent/KubernetesContent.tsx index 381b942f3d..70edc167f3 100644 --- a/plugins/kubernetes/src/components/KubernetesContent/KubernetesContent.tsx +++ b/plugins/kubernetes/src/components/KubernetesContent/KubernetesContent.tsx @@ -14,9 +14,9 @@ * limitations under the License. */ -import { customPageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; import React, { ReactElement, useEffect, useState } from 'react'; -import { Grid, TabProps } from '@material-ui/core'; +import { Grid, TabProps, useTheme } from '@material-ui/core'; import { CardTab, Content, @@ -98,6 +98,7 @@ const groupResponses = (fetchResponse: FetchResponse[]) => { type KubernetesContentProps = { entity: Entity; children?: React.ReactNode }; export const KubernetesContent = ({ entity }: KubernetesContentProps) => { + const backstageTheme = useTheme(); const kubernetesApi = useApi(kubernetesApiRef); const [kubernetesObjects, setKubernetesObjects] = useState< @@ -120,7 +121,11 @@ export const KubernetesContent = ({ entity }: KubernetesContentProps) => { kubernetesObjects?.items.filter(r => r.errors.length > 0) ?? []; return ( - + {kubernetesObjects === undefined && error === undefined && ( diff --git a/plugins/lighthouse/src/components/AuditList/index.tsx b/plugins/lighthouse/src/components/AuditList/index.tsx index 9c38e27fe3..cae1761ecb 100644 --- a/plugins/lighthouse/src/components/AuditList/index.tsx +++ b/plugins/lighthouse/src/components/AuditList/index.tsx @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { customPageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; import React, { useState, useMemo, FC, ReactNode } from 'react'; import { useLocalStorage, useAsync } from 'react-use'; import { useNavigate } from 'react-router-dom'; -import { Grid, Button } from '@material-ui/core'; +import { Grid, Button, useTheme } from '@material-ui/core'; import Alert from '@material-ui/lab/Alert'; import Pagination from '@material-ui/lab/Pagination'; import { @@ -41,6 +41,7 @@ import { createAuditRouteRef } from '../../plugin'; export const LIMIT = 10; const AuditList: FC<{}> = () => { + const backstageTheme = useTheme(); const [dismissedStored] = useLocalStorage(LIGHTHOUSE_INTRO_LOCAL_STORAGE); const [dismissed, setDismissed] = useState(dismissedStored); @@ -94,7 +95,11 @@ const AuditList: FC<{}> = () => { } return ( - +
= ({ audit }: { audit?: Audit }) => { }; const ConnectedAuditView: FC<{}> = () => { + const backstageTheme = useTheme(); const lighthouseApi = useApi(lighthouseApiRef); const params = useParams() as { id: string }; const classes = useStyles(); @@ -173,7 +175,11 @@ const ConnectedAuditView: FC<{}> = () => { } return ( - +
({ })); const CreateAudit: FC<{}> = () => { + const backstageTheme = useTheme(); const errorApi = useApi(errorApiRef); const lighthouseApi = useApi(lighthouseApiRef); const classes = useStyles(); @@ -94,7 +96,11 @@ const CreateAudit: FC<{}> = () => { ]); return ( - +
= () => ( - -
- -
- - - - New Relic Application Performance Monitoring - - - - - +const NewRelicComponent: FC<{}> = () => { + const backstageTheme = useTheme(); + return ( + +
+ +
+ + + + New Relic Application Performance Monitoring + + + + + + -
-
-
-); - + + + ); +}; export default NewRelicComponent; diff --git a/plugins/register-component/src/components/RegisterComponentPage/RegisterComponentPage.tsx b/plugins/register-component/src/components/RegisterComponentPage/RegisterComponentPage.tsx index 5e4da3fc35..722e2e1964 100644 --- a/plugins/register-component/src/components/RegisterComponentPage/RegisterComponentPage.tsx +++ b/plugins/register-component/src/components/RegisterComponentPage/RegisterComponentPage.tsx @@ -14,9 +14,9 @@ * limitations under the License. */ -import { customPageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; import React, { useState } from 'react'; -import { Grid, makeStyles } from '@material-ui/core'; +import { Grid, makeStyles, useTheme } from '@material-ui/core'; import { InfoCard, Page, @@ -61,6 +61,7 @@ export const RegisterComponentPage = ({ }: { catalogRouteRef: RouteRef; }) => { + const backstageTheme = useTheme(); const classes = useStyles(); const catalogApi = useApi(catalogApiRef); const [formState, setFormState] = useState>( @@ -113,7 +114,11 @@ export const RegisterComponentPage = ({ }; return ( - +
diff --git a/plugins/rollbar/src/components/RollbarHome/RollbarHome.tsx b/plugins/rollbar/src/components/RollbarHome/RollbarHome.tsx index 9f0deca967..f219be9615 100644 --- a/plugins/rollbar/src/components/RollbarHome/RollbarHome.tsx +++ b/plugins/rollbar/src/components/RollbarHome/RollbarHome.tsx @@ -14,17 +14,23 @@ * limitations under the License. */ -import { customPageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; +import { useTheme } from '@material-ui/core'; import React from 'react'; import { Content, Header, Page } from '@backstage/core'; import { RollbarProjectTable } from '../RollbarProjectTable/RollbarProjectTable'; import { useRollbarEntities } from '../../hooks/useRollbarEntities'; export const RollbarHome = () => { + const backstageTheme = useTheme(); const { entities, loading, error } = useRollbarEntities(); return ( - +
{ + const backstageTheme = useTheme(); const { entity } = useCatalogEntity(); return ( - +
diff --git a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx index 1bd43ded44..bd70fd9565 100644 --- a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx +++ b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ -import { customPageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; import { TemplateEntityV1alpha1 } from '@backstage/catalog-model'; import { Content, @@ -29,7 +29,7 @@ import { WarningPanel, } from '@backstage/core'; import { catalogApiRef } from '@backstage/plugin-catalog'; -import { Button, Grid, Link, Typography } from '@material-ui/core'; +import { Button, Grid, Link, Typography, useTheme } from '@material-ui/core'; import React, { useEffect } from 'react'; import { Link as RouterLink } from 'react-router-dom'; import useStaleWhileRevalidate from 'swr'; @@ -49,6 +49,7 @@ const getTemplateCardProps = ( }; export const ScaffolderPage = () => { + const backstageTheme = useTheme(); const catalogApi = useApi(catalogApiRef); const errorApi = useApi(errorApiRef); @@ -66,7 +67,7 @@ export const ScaffolderPage = () => { }, [error, errorApi]); return ( - +
{ - const theme = - customPageTheme.pageTheme[type] ?? customPageTheme.pageTheme.other; + const backstageTheme = useTheme(); + + const themeId = pageTheme[type] ? type : 'other'; + const theme = backstageTheme.getPageTheme({ themeId }); const classes = useStyles({ backgroundImage: theme.backgroundImage }); const href = generatePath(templateRoute.path, { templateName: name }); diff --git a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx index 5067f7963d..7bfc1b78a2 100644 --- a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx +++ b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { customPageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; import { TemplateEntityV1alpha1 } from '@backstage/catalog-model'; import { Content, @@ -25,7 +25,7 @@ import { useApi, } from '@backstage/core'; import { catalogApiRef } from '@backstage/plugin-catalog'; -import { LinearProgress } from '@material-ui/core'; +import { LinearProgress, useTheme } from '@material-ui/core'; import { IChangeEvent } from '@rjsf/core'; import React, { useState } from 'react'; import { useParams } from 'react-router-dom'; @@ -80,6 +80,7 @@ const REPO_FORMAT = { }; export const TemplatePage = () => { + const backstageTheme = useTheme(); const errorApi = useApi(errorApiRef); const catalogApi = useApi(catalogApiRef); const scaffolderApi = useApi(scaffolderApiRef); @@ -145,7 +146,7 @@ export const TemplatePage = () => { } return ( - +
= () => { + const backstageTheme = useTheme(); const [statsFor, setStatsFor] = useState<'12h' | '24h'>('12h'); const toggleStatsFor = () => setStatsFor(statsFor === '12h' ? '12h' : '24h'); const sentryProjectId = 'sample-sentry-project-id'; return ( - +
diff --git a/plugins/tech-radar/src/components/RadarPage.tsx b/plugins/tech-radar/src/components/RadarPage.tsx index 58dcaec9af..d23061b094 100644 --- a/plugins/tech-radar/src/components/RadarPage.tsx +++ b/plugins/tech-radar/src/components/RadarPage.tsx @@ -14,9 +14,9 @@ * limitations under the License. */ -import { customPageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; import React from 'react'; -import { Grid } from '@material-ui/core'; +import { Grid, useTheme } from '@material-ui/core'; import { Content, ContentHeader, @@ -39,29 +39,35 @@ export const RadarPage = ({ subtitle, pageTitle, ...props -}: TechRadarPageProps): JSX.Element => ( - -
- - -
- - - - This is used for visualizing the official guidelines of different - areas of software development such as languages, frameworks, - infrastructure and processes. - - - - - +}: TechRadarPageProps): JSX.Element => { + const backstageTheme = useTheme(); + return ( + +
+ + +
+ + + + This is used for visualizing the official guidelines of different + areas of software development such as languages, frameworks, + infrastructure and processes. + + + + + + -
-
-
-); - +
+ + ); +}; RadarPage.defaultProps = { title: 'Tech Radar', subtitle: 'Pick the recommended technologies for your projects', diff --git a/plugins/techdocs/src/reader/components/TechDocsHome.tsx b/plugins/techdocs/src/reader/components/TechDocsHome.tsx index 11211e713c..149117ec00 100644 --- a/plugins/techdocs/src/reader/components/TechDocsHome.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsHome.tsx @@ -14,11 +14,11 @@ * limitations under the License. */ -import { customPageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; import React from 'react'; import { useAsync } from 'react-use'; import { useNavigate, generatePath } from 'react-router-dom'; -import { Grid } from '@material-ui/core'; +import { Grid, useTheme } from '@material-ui/core'; import { ItemCard, Progress, @@ -31,6 +31,7 @@ import { catalogApiRef } from '@backstage/plugin-catalog'; import { rootDocsRouteRef } from '../../plugin'; export const TechDocsHome = () => { + const backstageTheme = useTheme(); const catalogApi = useApi(catalogApiRef); const navigate = useNavigate(); @@ -43,7 +44,11 @@ export const TechDocsHome = () => { if (loading) { return ( - +
{ if (error) { return ( - +
{ } return ( - +
{ + const backstageTheme = useTheme(); const [documentReady, setDocumentReady] = useState(false); const { entityId } = useParams(); const [kind, namespace, name] = entityId.split(':'); @@ -47,7 +49,11 @@ export const TechDocsPage = () => { }; return ( - + { + const backstageTheme = useTheme(); const appTitle = useApi(configApiRef).getOptionalString('app.title') ?? 'Backstage'; const profile = { givenName: '' }; return ( - +
Date: Sun, 11 Oct 2020 19:27:59 +0530 Subject: [PATCH 038/323] fix: Implement new strategy consumer --- plugins/user-settings/src/components/SettingsPage.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/plugins/user-settings/src/components/SettingsPage.tsx b/plugins/user-settings/src/components/SettingsPage.tsx index 86096e9a1f..e8e5cbdbfd 100644 --- a/plugins/user-settings/src/components/SettingsPage.tsx +++ b/plugins/user-settings/src/components/SettingsPage.tsx @@ -15,7 +15,9 @@ */ import React, { useState } from 'react'; -import { Content, Header, HeaderTabs, Page, pageTheme } from '@backstage/core'; +import { Content, Header, HeaderTabs, Page } from '@backstage/core'; +import { BackstageTheme } from '@backstage/theme'; +import { useTheme } from '@material-ui/core'; import { General } from './General'; import { AuthProviders } from './AuthProviders'; import { FeatureFlags } from './FeatureFlags'; @@ -25,6 +27,7 @@ type Props = { }; export const SettingsPage = ({ providerSettings }: Props) => { + const backstageTheme = useTheme(); const [activeTab, setActiveTab] = useState(0); const onTabChange = (index: number) => { setActiveTab(index); @@ -43,7 +46,11 @@ export const SettingsPage = ({ providerSettings }: Props) => { ]; return ( - +
{content[activeTab]} From cd66aed3d1b37c1a1cba2a56ed61cb3069f08c03 Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Sun, 11 Oct 2020 19:34:16 +0530 Subject: [PATCH 039/323] chore: remove comments --- .../src/components/EntityPageLayout/EntityPageLayout.tsx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx b/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx index 68e871009a..4958a6f850 100644 --- a/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx +++ b/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx @@ -27,11 +27,6 @@ import { UnregisterEntityDialog } from '../UnregisterEntityDialog/UnregisterEnti import { Alert } from '@material-ui/lab'; import { Tabbed } from './Tabbed'; -// const getPageTheme = (entity?: Entity): PageTheme => { -// const themeKey = entity?.spec?.type?.toString() ?? 'home'; -// return customPageTheme.pageTheme[themeKey] ?? customPageTheme.pageTheme.home; -// }; - const EntityPageTitle = ({ entity, title, From a4aa277e9f4447e253bf9c58b0aabb0eeb73bea5 Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Sun, 11 Oct 2020 19:35:01 +0530 Subject: [PATCH 040/323] fix: Replace new theme strategy consumer in handlebar template & Example md file --- .../tutorials/quickstart-app-plugin/ExampleComponent.md | 7 ++++--- .../components/ExampleComponent/ExampleComponent.tsx.hbs | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/contrib/docs/tutorials/quickstart-app-plugin/ExampleComponent.md b/contrib/docs/tutorials/quickstart-app-plugin/ExampleComponent.md index ed4bfc8012..83b18bf4c2 100644 --- a/contrib/docs/tutorials/quickstart-app-plugin/ExampleComponent.md +++ b/contrib/docs/tutorials/quickstart-app-plugin/ExampleComponent.md @@ -3,9 +3,9 @@ ExampleComponent.tsx reference ```tsx -import { customPageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; import React, { FC } from 'react'; -import { Typography, Grid } from '@material-ui/core'; +import { Typography, Grid, useTheme } from '@material-ui/core'; import { InfoCard, Header, @@ -21,12 +21,13 @@ import { useApi } from '@backstage/core-api'; import ExampleFetchComponent from '../ExampleFetchComponent'; const ExampleComponent: FC<{}> = () => { + const backstageTheme = useTheme(); const identityApi = useApi(identityApiRef); const userId = identityApi.getUserId(); const profile = identityApi.getProfile(); return ( - +
= () => ( - +
From fae67f2be1aa19f2caad112df92e5b93e68de009 Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Sun, 11 Oct 2020 20:08:08 +0530 Subject: [PATCH 041/323] chore: update example component --- .../ExampleComponent/ExampleComponent.tsx.hbs | 55 ++++++++++--------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.tsx.hbs b/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.tsx.hbs index 9cdd22c0ca..d4be6d87ac 100644 --- a/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.tsx.hbs +++ b/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.tsx.hbs @@ -1,6 +1,6 @@ -import { BackstageTheme } from '@backstage/theme'; +import { pageTheme } from '@backstage/theme'; import React, { FC } from 'react'; -import { Typography, Grid, useTheme } from '@material-ui/core'; +import { Typography, Grid } from '@material-ui/core'; import { InfoCard, Header, @@ -12,30 +12,31 @@ import { } from '@backstage/core'; import ExampleFetchComponent from '../ExampleFetchComponent'; -const ExampleComponent: FC<{}> = () => ( - -
- - -
- - - A description of your plugin goes here. - - - - - - All content should be wrapped in a card like this. - - +const ExampleComponent: FC<{}> = () => { + return ( + +
+ + +
+ + + A description of your plugin goes here. + + + + + + All content should be wrapped in a card like this. + + + + + + - - - -
-
-
-); - + + + ); +} export default ExampleComponent; From b79017fd331112754e127cc48c6150cf219bec4e Mon Sep 17 00:00:00 2001 From: Jesko Steinberg Date: Thu, 1 Oct 2020 14:56:57 +0200 Subject: [PATCH 042/323] feat(githubAuth): make default scopes configurable --- .changeset/2800.md | 15 +++++++++++++++ .../implementations/auth/github/GithubAuth.ts | 4 +++- packages/core/src/api-wrappers/defaultApis.ts | 6 +++++- 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 .changeset/2800.md diff --git a/.changeset/2800.md b/.changeset/2800.md new file mode 100644 index 0000000000..0e051b0557 --- /dev/null +++ b/.changeset/2800.md @@ -0,0 +1,15 @@ +--- +'@backstage/core': minor +'@backstage/core-api': minor +--- + +Updated the `GithubAuth.create` method to configure the default scope of the Github Auth Api. As a result the +default scope is configurable when overwriting the Core Api in the app. + +``` +GithubAuth.create({ + discoveryApi, + oauthRequestApi, + defaultScopes: ['read:user', 'repo'], +}), +``` diff --git a/packages/core-api/src/apis/implementations/auth/github/GithubAuth.ts b/packages/core-api/src/apis/implementations/auth/github/GithubAuth.ts index 1d87ff3720..eb2f375ab0 100644 --- a/packages/core-api/src/apis/implementations/auth/github/GithubAuth.ts +++ b/packages/core-api/src/apis/implementations/auth/github/GithubAuth.ts @@ -41,6 +41,7 @@ type CreateOptions = { discoveryApi: DiscoveryApi; oauthRequestApi: OAuthRequestApi; + defaultScopes?: string[]; environment?: string; provider?: AuthProvider & { id: string }; }; @@ -67,6 +68,7 @@ class GithubAuth implements OAuthApi, SessionApi { environment = 'development', provider = DEFAULT_PROVIDER, oauthRequestApi, + defaultScopes = ['read:user'], }: CreateOptions) { const connector = new DefaultAuthConnector({ discoveryApi, @@ -89,7 +91,7 @@ class GithubAuth implements OAuthApi, SessionApi { const sessionManager = new StaticAuthSessionManager({ connector, - defaultScopes: new Set(['read:user']), + defaultScopes: new Set(defaultScopes), sessionScopes: (session: GithubSession) => session.providerInfo.scopes, }); diff --git a/packages/core/src/api-wrappers/defaultApis.ts b/packages/core/src/api-wrappers/defaultApis.ts index dedadf0456..e735e4d371 100644 --- a/packages/core/src/api-wrappers/defaultApis.ts +++ b/packages/core/src/api-wrappers/defaultApis.ts @@ -96,7 +96,11 @@ export const defaultApis = [ oauthRequestApi: oauthRequestApiRef, }, factory: ({ discoveryApi, oauthRequestApi }) => - GithubAuth.create({ discoveryApi, oauthRequestApi }), + GithubAuth.create({ + discoveryApi, + oauthRequestApi, + defaultScopes: ['read:user'], + }), }), createApiFactory({ api: oktaAuthApiRef, From 6109e354951a30bcabddf1c550ee70dec61249dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 9 Oct 2020 13:33:20 +0200 Subject: [PATCH 043/323] feat(catalog-backend): remove byUid and byName as special cases --- .../src/catalog/DatabaseEntitiesCatalog.ts | 17 +------ plugins/catalog-backend/src/catalog/types.ts | 4 +- .../ingestion/HigherOrderOperations.test.ts | 2 - .../src/service/router.test.ts | 46 ++++++++++--------- plugins/catalog-backend/src/service/router.ts | 22 +++++---- 5 files changed, 38 insertions(+), 53 deletions(-) diff --git a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts index 2575411e7c..c43e1b2f05 100644 --- a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts +++ b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts @@ -15,13 +15,12 @@ */ import { NotFoundError } from '@backstage/backend-common'; +import type { Entity } from '@backstage/catalog-model'; import { - EntityName, generateUpdatedEntity, getEntityName, LOCATION_ANNOTATION, } from '@backstage/catalog-model'; -import type { Entity } from '@backstage/catalog-model'; import type { Database, DbEntityResponse, EntityFilters } from '../database'; import type { EntitiesCatalog } from './types'; @@ -35,20 +34,6 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { return items.map(i => i.entity); } - async entityByUid(uid: string): Promise { - const response = await this.database.transaction(tx => - this.database.entityByUid(tx, uid), - ); - return response?.entity; - } - - async entityByName(name: EntityName): Promise { - const response = await this.database.transaction(tx => - this.database.entityByName(tx, name), - ); - return response?.entity; - } - async addOrUpdateEntity( entity: Entity, locationId?: string, diff --git a/plugins/catalog-backend/src/catalog/types.ts b/plugins/catalog-backend/src/catalog/types.ts index 5d84cbcebc..810d51a6c1 100644 --- a/plugins/catalog-backend/src/catalog/types.ts +++ b/plugins/catalog-backend/src/catalog/types.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { Entity, EntityName, Location } from '@backstage/catalog-model'; +import { Entity, Location } from '@backstage/catalog-model'; import type { EntityFilters } from '../database'; // @@ -23,8 +23,6 @@ import type { EntityFilters } from '../database'; export type EntitiesCatalog = { entities(filters?: EntityFilters): Promise; - entityByUid(uid: string): Promise; - entityByName(name: EntityName): Promise; addOrUpdateEntity(entity: Entity, locationId?: string): Promise; addEntities(entities: Entity[], locationId?: string): Promise; removeEntityByUid(uid: string): Promise; diff --git a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts index 15d9168732..81753fe6d1 100644 --- a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts +++ b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts @@ -36,8 +36,6 @@ describe('HigherOrderOperations', () => { beforeAll(() => { entitiesCatalog = { entities: jest.fn(), - entityByUid: jest.fn(), - entityByName: jest.fn(), addOrUpdateEntity: jest.fn(), addEntities: jest.fn(), removeEntityByUid: jest.fn(), diff --git a/plugins/catalog-backend/src/service/router.test.ts b/plugins/catalog-backend/src/service/router.test.ts index ecf4b0e614..ec5c11be33 100644 --- a/plugins/catalog-backend/src/service/router.test.ts +++ b/plugins/catalog-backend/src/service/router.test.ts @@ -32,8 +32,6 @@ describe('createRouter', () => { beforeAll(async () => { entitiesCatalog = { entities: jest.fn(), - entityByUid: jest.fn(), - entityByName: jest.fn(), addOrUpdateEntity: jest.fn(), addEntities: jest.fn(), removeEntityByUid: jest.fn(), @@ -100,23 +98,27 @@ describe('createRouter', () => { name: 'c', }, }; - entitiesCatalog.entityByUid.mockResolvedValue(entity); + entitiesCatalog.entities.mockResolvedValue([entity]); const response = await request(app).get('/entities/by-uid/zzz'); - expect(entitiesCatalog.entityByUid).toHaveBeenCalledTimes(1); - expect(entitiesCatalog.entityByUid).toHaveBeenCalledWith('zzz'); + expect(entitiesCatalog.entities).toHaveBeenCalledTimes(1); + expect(entitiesCatalog.entities).toHaveBeenCalledWith([ + { key: 'metadata.uid', values: ['zzz'] }, + ]); expect(response.status).toEqual(200); expect(response.body).toEqual(expect.objectContaining(entity)); }); it('responds with a 404 for missing entities', async () => { - entitiesCatalog.entityByUid.mockResolvedValue(undefined); + entitiesCatalog.entities.mockResolvedValue([]); const response = await request(app).get('/entities/by-uid/zzz'); - expect(entitiesCatalog.entityByUid).toHaveBeenCalledTimes(1); - expect(entitiesCatalog.entityByUid).toHaveBeenCalledWith('zzz'); + expect(entitiesCatalog.entities).toHaveBeenCalledTimes(1); + expect(entitiesCatalog.entities).toHaveBeenCalledWith([ + { key: 'metadata.uid', values: ['zzz'] }, + ]); expect(response.status).toEqual(404); expect(response.text).toMatch(/uid/); }); @@ -132,31 +134,31 @@ describe('createRouter', () => { namespace: 'ns', }, }; - entitiesCatalog.entityByName.mockResolvedValue(entity); + entitiesCatalog.entities.mockResolvedValue([entity]); const response = await request(app).get('/entities/by-name/k/ns/n'); - expect(entitiesCatalog.entityByName).toHaveBeenCalledTimes(1); - expect(entitiesCatalog.entityByName).toHaveBeenCalledWith({ - kind: 'k', - namespace: 'ns', - name: 'n', - }); + expect(entitiesCatalog.entities).toHaveBeenCalledTimes(1); + expect(entitiesCatalog.entities).toHaveBeenCalledWith([ + { key: 'kind', values: ['k'] }, + { key: 'metadata.namespace', values: ['ns'] }, + { key: 'metadata.name', values: ['n'] }, + ]); expect(response.status).toEqual(200); expect(response.body).toEqual(expect.objectContaining(entity)); }); it('responds with a 404 for missing entities', async () => { - entitiesCatalog.entityByName.mockResolvedValue(undefined); + entitiesCatalog.entities.mockResolvedValue([]); const response = await request(app).get('/entities/by-name/b/d/c'); - expect(entitiesCatalog.entityByName).toHaveBeenCalledTimes(1); - expect(entitiesCatalog.entityByName).toHaveBeenCalledWith({ - kind: 'b', - namespace: 'd', - name: 'c', - }); + expect(entitiesCatalog.entities).toHaveBeenCalledTimes(1); + expect(entitiesCatalog.entities).toHaveBeenCalledWith([ + { key: 'kind', values: ['b'] }, + { key: 'metadata.namespace', values: ['d'] }, + { key: 'metadata.name', values: ['c'] }, + ]); expect(response.status).toEqual(404); expect(response.text).toMatch(/name/); }); diff --git a/plugins/catalog-backend/src/service/router.ts b/plugins/catalog-backend/src/service/router.ts index 8da589c721..06a7ea43d3 100644 --- a/plugins/catalog-backend/src/service/router.ts +++ b/plugins/catalog-backend/src/service/router.ts @@ -54,11 +54,13 @@ export async function createRouter( }) .get('/entities/by-uid/:uid', async (req, res) => { const { uid } = req.params; - const entity = await entitiesCatalog.entityByUid(uid); - if (!entity) { + const entities = await entitiesCatalog.entities([ + { key: 'metadata.uid', values: [uid] }, + ]); + if (!entities.length) { res.status(404).send(`No entity with uid ${uid}`); } - res.status(200).send(entity); + res.status(200).send(entities[0]); }) .delete('/entities/by-uid/:uid', async (req, res) => { const { uid } = req.params; @@ -67,19 +69,19 @@ export async function createRouter( }) .get('/entities/by-name/:kind/:namespace/:name', async (req, res) => { const { kind, namespace, name } = req.params; - const entity = await entitiesCatalog.entityByName({ - kind, - namespace, - name, - }); - if (!entity) { + const entities = await entitiesCatalog.entities([ + { key: 'kind', values: [kind] }, + { key: 'metadata.namespace', values: [namespace] }, + { key: 'metadata.name', values: [name] }, + ]); + if (!entities.length) { res .status(404) .send( `No entity with kind ${kind} namespace ${namespace} name ${name}`, ); } - res.status(200).send(entity); + res.status(200).send(entities[0]); }); } From 67e7d476a2e653916c6e2a0cccf2d25a648914c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 9 Oct 2020 16:24:33 +0200 Subject: [PATCH 044/323] feat(catalog-backend): simplify the search filters structure --- .../src/catalog/DatabaseEntitiesCatalog.ts | 9 +- .../src/database/CommonDatabase.test.ts | 17 +--- .../src/database/CommonDatabase.ts | 99 ++++++++++--------- .../src/database/search.test.ts | 3 + .../catalog-backend/src/database/search.ts | 35 +++++-- plugins/catalog-backend/src/database/types.ts | 26 ++++- .../ingestion/HigherOrderOperations.test.ts | 13 +-- .../src/ingestion/HigherOrderOperations.ts | 11 +-- .../src/service/router.test.ts | 42 ++++---- plugins/catalog-backend/src/service/router.ts | 29 +++--- 10 files changed, 155 insertions(+), 129 deletions(-) diff --git a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts index c43e1b2f05..8619355c91 100644 --- a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts +++ b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts @@ -85,12 +85,9 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { const location = entityResponse.entity.metadata.annotations?.[LOCATION_ANNOTATION]; const colocatedEntities = location - ? await this.database.entities(tx, [ - { - key: `metadata.annotations.${LOCATION_ANNOTATION}`, - values: [location], - }, - ]) + ? await this.database.entities(tx, { + [`metadata.annotations.${LOCATION_ANNOTATION}`]: location, + }) : [entityResponse]; for (const dbResponse of colocatedEntities) { await this.database.removeEntityByUid( diff --git a/plugins/catalog-backend/src/database/CommonDatabase.test.ts b/plugins/catalog-backend/src/database/CommonDatabase.test.ts index 840af74825..f3ca212df0 100644 --- a/plugins/catalog-backend/src/database/CommonDatabase.test.ts +++ b/plugins/catalog-backend/src/database/CommonDatabase.test.ts @@ -347,7 +347,7 @@ describe('CommonDatabase', () => { await db.transaction(async tx => { await db.addEntities(tx, [{ entity: e1 }, { entity: e2 }]); }); - const result = await db.transaction(async tx => db.entities(tx, [])); + const result = await db.transaction(async tx => db.entities(tx, {})); expect(result.length).toEqual(2); expect(result).toEqual( expect.arrayContaining([ @@ -389,10 +389,7 @@ describe('CommonDatabase', () => { await expect( db.transaction(async tx => - db.entities(tx, [ - { key: 'kind', values: ['k2'] }, - { key: 'spec.c', values: ['some'] }, - ]), + db.entities(tx, { kind: 'k2', 'spec.c': 'some' }), ), ).resolves.toEqual([ { @@ -427,10 +424,7 @@ describe('CommonDatabase', () => { }); const rows = await db.transaction(async tx => - db.entities(tx, [ - { key: 'apiVersion', values: ['a'] }, - { key: 'spec.c', values: [null, 'some'] }, - ]), + db.entities(tx, { apiVersion: 'a', 'spec.c': [null, 'some'] }), ); expect(rows.length).toEqual(3); @@ -477,10 +471,7 @@ describe('CommonDatabase', () => { }); const rows = await db.transaction(async tx => - db.entities(tx, [ - { key: 'ApiVersioN', values: ['A'] }, - { key: 'spEc.C', values: [null, 'some'] }, - ]), + db.entities(tx, { ApiVersioN: 'A', 'spEc.C': [null, 'some'] }), ); expect(rows.length).toEqual(3); diff --git a/plugins/catalog-backend/src/database/CommonDatabase.ts b/plugins/catalog-backend/src/database/CommonDatabase.ts index 49b36e0933..563fd24c80 100644 --- a/plugins/catalog-backend/src/database/CommonDatabase.ts +++ b/plugins/catalog-backend/src/database/CommonDatabase.ts @@ -219,61 +219,64 @@ export class CommonDatabase implements Database { let entitiesQuery = tx('entities'); - for (const filter of filters || []) { - const key = filter.key.toLowerCase().replace(/[*]/g, '%'); - const keyOp = filter.key.includes('*') ? 'like' : '='; + if (filters && Object.keys(filters).length) { + for (const [matchKey, matchVal] of Object.entries(filters)) { + const key = matchKey.toLowerCase().replace(/[*]/g, '%'); + const keyOp = key.includes('*') ? 'like' : '='; + const values = Array.isArray(matchVal) ? matchVal : [matchVal]; - let matchNulls = false; - const matchIn: string[] = []; - const matchLike: string[] = []; + let matchNulls = false; + const matchIn: string[] = []; + const matchLike: string[] = []; - for (const value of filter.values) { - if (!value) { - matchNulls = true; - } else if (value.includes('*')) { - matchLike.push(value.toLowerCase().replace(/[*]/g, '%')); - } else { - matchIn.push(value.toLowerCase()); + for (const value of values) { + if (!value) { + matchNulls = true; + } else if (value.includes('*')) { + matchLike.push(value.toLowerCase().replace(/[*]/g, '%')); + } else { + matchIn.push(value.toLowerCase()); + } } - } - // NOTE(freben): This used to be a set of OUTER JOIN, which may seem to - // make a lot of sense. However, it had abysmal performance on sqlite - // when datasets grew large, so we're using IN instead. - const matchQuery = tx('entities_search') - .select('entity_id') - .where(function keyFilter() { - this.andWhere('key', keyOp, key); - this.andWhere(function valueFilter() { - if (matchIn.length === 1) { - this.orWhere({ value: matchIn[0] }); - } else if (matchIn.length > 1) { - this.orWhereIn('value', matchIn); - } - if (matchLike.length) { - for (const x of matchLike) { - this.orWhere('value', 'like', tx.raw('?', [x])); + // NOTE(freben): This used to be a set of OUTER JOIN, which may seem to + // make a lot of sense. However, it had abysmal performance on sqlite + // when datasets grew large, so we're using IN instead. + const matchQuery = tx('entities_search') + .select('entity_id') + .where(function keyFilter() { + this.andWhere('key', keyOp, key); + this.andWhere(function valueFilter() { + if (matchIn.length === 1) { + this.orWhere({ value: matchIn[0] }); + } else if (matchIn.length > 1) { + this.orWhereIn('value', matchIn); } - } - if (matchNulls) { - // Match explicit nulls, and then handle absence separately below - this.orWhereNull('value'); - } + if (matchLike.length) { + for (const x of matchLike) { + this.orWhere('value', 'like', tx.raw('?', [x])); + } + } + if (matchNulls) { + // Match explicit nulls, and then handle absence separately below + this.orWhereNull('value'); + } + }); }); - }); - // Handle absence as nulls as well - entitiesQuery = entitiesQuery.andWhere(function match() { - this.whereIn('id', matchQuery); - if (matchNulls) { - this.orWhereNotIn( - 'id', - tx('entities_search') - .select('entity_id') - .where('key', keyOp, key), - ); - } - }); + // Handle absence as nulls as well + entitiesQuery = entitiesQuery.andWhere(function match() { + this.whereIn('id', matchQuery); + if (matchNulls) { + this.orWhereNotIn( + 'id', + tx('entities_search') + .select('entity_id') + .where('key', keyOp, key), + ); + } + }); + } } const rows = await entitiesQuery diff --git a/plugins/catalog-backend/src/database/search.test.ts b/plugins/catalog-backend/src/database/search.test.ts index d108820ca9..c6793cbdf4 100644 --- a/plugins/catalog-backend/src/database/search.test.ts +++ b/plugins/catalog-backend/src/database/search.test.ts @@ -24,8 +24,11 @@ describe('search', () => { const output = traverse(input); expect(output).toEqual([ { key: 'a', value: 'b' }, + { key: 'a.b', value: true }, { key: 'a', value: 'c' }, + { key: 'a.c', value: true }, { key: 'a', value: 'd' }, + { key: 'a.d', value: true }, ]); }); diff --git a/plugins/catalog-backend/src/database/search.ts b/plugins/catalog-backend/src/database/search.ts index 863b86ee9a..9e58d2468b 100644 --- a/plugins/catalog-backend/src/database/search.ts +++ b/plugins/catalog-backend/src/database/search.ts @@ -35,7 +35,7 @@ const MAX_VALUE_LENGTH = 200; type Kv = { key: string; - value: any; + value: unknown; }; // Helper for traversing through a nested structure and outputting a list of @@ -58,15 +58,17 @@ type Kv = { // "a", 1 // "b.c", null // "b.e": "f" +// "b.e.f": true // "b.e": "g" +// "b.e.g": true // "h.i": 1 // "h.j": "k" // "h.i": 2 // "h.j": "l" -export function traverse(root: any): Kv[] { +export function traverse(root: unknown): Kv[] { const output: Kv[] = []; - function visit(path: string, current: any) { + function visit(path: string, current: unknown) { if (SPECIAL_KEYS.includes(path)) { return; } @@ -89,14 +91,29 @@ export function traverse(root: any): Kv[] { // array if (Array.isArray(current)) { for (const item of current) { - // keep the same path as currently + // NOTE(freben): The reason that these are output in two different ways, + // is to support use cases where you want to express that MORE than one + // tag is present in a list. Since the EntityFilters structure is a + // record, you can't have several entries of the same key. Therefore + // you will have to match on + // + // { "a.b": ["true"], "a.c": ["true"] } + // + // rather than + // + // { "a": ["b", "c"] } + // + // because the latter means EITHER b or c has to be present. visit(path, item); + if (typeof item === 'string') { + output.push({ key: `${path}.${item}`, value: true }); + } } return; } // object - for (const [key, value] of Object.entries(current)) { + for (const [key, value] of Object.entries(current!)) { visit(path ? `${path}.${key}` : key, value); } } @@ -113,12 +130,12 @@ export function mapToRows( ): DbEntitiesSearchRow[] { const result: DbEntitiesSearchRow[] = []; - for (let { key, value } of input) { - key = key.toLowerCase(); - if (value === undefined || value === null) { + for (const { key: rawKey, value: rawValue } of input) { + const key = rawKey.toLowerCase(); + if (rawValue === undefined || rawValue === null) { result.push({ entity_id: entityId, key, value: null }); } else { - value = String(value).toLowerCase(); + const value = String(rawValue).toLowerCase(); if (value.length <= MAX_VALUE_LENGTH) { result.push({ entity_id: entityId, key, value }); } diff --git a/plugins/catalog-backend/src/database/types.ts b/plugins/catalog-backend/src/database/types.ts index 20cc123c0a..14e8d5be64 100644 --- a/plugins/catalog-backend/src/database/types.ts +++ b/plugins/catalog-backend/src/database/types.ts @@ -67,11 +67,27 @@ export type DatabaseLocationUpdateLogEvent = { message?: string; }; -export type EntityFilter = { - key: string; - values: (string | null)[]; -}; -export type EntityFilters = EntityFilter[]; +/** + * Filter matcher for a single entity field. + * + * Can be either null or a string, or an array of those. Null and the empty + * string are treated equally, and match both a present field with a null or + * empty value, as well as an absent field. + * + * A filter may contain asterisks (*) that are treated as wildcards for zero + * or more arbitrary characters. + */ +export type EntityFilter = null | string | (null | string)[]; + +/** + * A set of filter matchers used for filtering entities. + * + * The keys are full dot-separated paths into the structure of an entity, for + * example "metadata.name". You can also address any item in an array the same + * way, e.g. "a.b.c": "x" works if b is an array of objects that have a c field + * and any of those have the value x. + */ +export type EntityFilters = Record; /** * An abstraction on top of the underlying database, wrapping the basic CRUD diff --git a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts index 81753fe6d1..909139d678 100644 --- a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts +++ b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts @@ -204,14 +204,11 @@ describe('HigherOrderOperations', () => { target: 'thing', }); expect(entitiesCatalog.entities).toHaveBeenCalledTimes(1); - expect(entitiesCatalog.entities).toHaveBeenNthCalledWith( - 1, - expect.arrayContaining([ - { key: 'kind', values: ['Component'] }, - { key: 'metadata.namespace', values: [ENTITY_DEFAULT_NAMESPACE] }, - { key: 'metadata.name', values: ['c1'] }, - ]), - ); + expect(entitiesCatalog.entities).toHaveBeenNthCalledWith(1, { + kind: 'Component', + 'metadata.namespace': ENTITY_DEFAULT_NAMESPACE, + 'metadata.name': ['c1'], + }); expect(entitiesCatalog.addEntities).toHaveBeenCalledTimes(1); expect(entitiesCatalog.addEntities).toHaveBeenNthCalledWith( 1, diff --git a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts index 737166436c..fa73c58348 100644 --- a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts +++ b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts @@ -277,12 +277,11 @@ export class HigherOrderOperations implements HigherOrderOperation { }> { const markTimestamp = process.hrtime(); - const names = newEntities.map(e => e.metadata.name); - const oldEntities = await this.entitiesCatalog.entities([ - { key: 'kind', values: [kind] }, - { key: 'metadata.namespace', values: [namespace] }, - { key: 'metadata.name', values: names }, - ]); + const oldEntities = await this.entitiesCatalog.entities({ + kind: kind, + 'metadata.namespace': namespace, + 'metadata.name': newEntities.map(e => e.metadata.name), + }); const oldEntitiesByName = new Map( oldEntities.map(e => [e.metadata.name, e]), diff --git a/plugins/catalog-backend/src/service/router.test.ts b/plugins/catalog-backend/src/service/router.test.ts index ec5c11be33..f7ab4878f8 100644 --- a/plugins/catalog-backend/src/service/router.test.ts +++ b/plugins/catalog-backend/src/service/router.test.ts @@ -81,11 +81,11 @@ describe('createRouter', () => { expect(response.status).toEqual(200); expect(entitiesCatalog.entities).toHaveBeenCalledTimes(1); - expect(entitiesCatalog.entities).toHaveBeenCalledWith([ - { key: 'a', values: ['1', null, '3'] }, - { key: 'b', values: ['4'] }, - { key: 'c', values: [null] }, - ]); + expect(entitiesCatalog.entities).toHaveBeenCalledWith({ + a: ['1', null, '3'], + b: ['4'], + c: [null], + }); }); }); @@ -103,9 +103,9 @@ describe('createRouter', () => { const response = await request(app).get('/entities/by-uid/zzz'); expect(entitiesCatalog.entities).toHaveBeenCalledTimes(1); - expect(entitiesCatalog.entities).toHaveBeenCalledWith([ - { key: 'metadata.uid', values: ['zzz'] }, - ]); + expect(entitiesCatalog.entities).toHaveBeenCalledWith({ + 'metadata.uid': 'zzz', + }); expect(response.status).toEqual(200); expect(response.body).toEqual(expect.objectContaining(entity)); }); @@ -116,9 +116,9 @@ describe('createRouter', () => { const response = await request(app).get('/entities/by-uid/zzz'); expect(entitiesCatalog.entities).toHaveBeenCalledTimes(1); - expect(entitiesCatalog.entities).toHaveBeenCalledWith([ - { key: 'metadata.uid', values: ['zzz'] }, - ]); + expect(entitiesCatalog.entities).toHaveBeenCalledWith({ + 'metadata.uid': 'zzz', + }); expect(response.status).toEqual(404); expect(response.text).toMatch(/uid/); }); @@ -139,11 +139,11 @@ describe('createRouter', () => { const response = await request(app).get('/entities/by-name/k/ns/n'); expect(entitiesCatalog.entities).toHaveBeenCalledTimes(1); - expect(entitiesCatalog.entities).toHaveBeenCalledWith([ - { key: 'kind', values: ['k'] }, - { key: 'metadata.namespace', values: ['ns'] }, - { key: 'metadata.name', values: ['n'] }, - ]); + expect(entitiesCatalog.entities).toHaveBeenCalledWith({ + kind: 'k', + 'metadata.namespace': 'ns', + 'metadata.name': 'n', + }); expect(response.status).toEqual(200); expect(response.body).toEqual(expect.objectContaining(entity)); }); @@ -154,11 +154,11 @@ describe('createRouter', () => { const response = await request(app).get('/entities/by-name/b/d/c'); expect(entitiesCatalog.entities).toHaveBeenCalledTimes(1); - expect(entitiesCatalog.entities).toHaveBeenCalledWith([ - { key: 'kind', values: ['b'] }, - { key: 'metadata.namespace', values: ['d'] }, - { key: 'metadata.name', values: ['c'] }, - ]); + expect(entitiesCatalog.entities).toHaveBeenCalledWith({ + kind: 'b', + 'metadata.namespace': 'd', + 'metadata.name': 'c', + }); expect(response.status).toEqual(404); expect(response.text).toMatch(/name/); }); diff --git a/plugins/catalog-backend/src/service/router.ts b/plugins/catalog-backend/src/service/router.ts index 06a7ea43d3..94dc76ab9d 100644 --- a/plugins/catalog-backend/src/service/router.ts +++ b/plugins/catalog-backend/src/service/router.ts @@ -54,9 +54,9 @@ export async function createRouter( }) .get('/entities/by-uid/:uid', async (req, res) => { const { uid } = req.params; - const entities = await entitiesCatalog.entities([ - { key: 'metadata.uid', values: [uid] }, - ]); + const entities = await entitiesCatalog.entities({ + 'metadata.uid': uid, + }); if (!entities.length) { res.status(404).send(`No entity with uid ${uid}`); } @@ -69,11 +69,11 @@ export async function createRouter( }) .get('/entities/by-name/:kind/:namespace/:name', async (req, res) => { const { kind, namespace, name } = req.params; - const entities = await entitiesCatalog.entities([ - { key: 'kind', values: [kind] }, - { key: 'metadata.namespace', values: [namespace] }, - { key: 'metadata.name', values: [name] }, - ]); + const entities = await entitiesCatalog.entities({ + kind: kind, + 'metadata.namespace': namespace, + 'metadata.name': name, + }); if (!entities.length) { res .status(404) @@ -123,7 +123,7 @@ export async function createRouter( function translateQueryToEntityFilters( request: express.Request, ): EntityFilters { - const filters: EntityFilters = []; + const filters: EntityFilters = {}; for (const [key, valueOrValues] of Object.entries(request.query)) { const values = Array.isArray(valueOrValues) @@ -134,10 +134,13 @@ function translateQueryToEntityFilters( throw new InputError('Complex query parameters are not supported'); } - filters.push({ - key, - values: values.map(v => v || null) as string[], - }); + // This one always emits arrays + let matchers = filters[key] as (string | null)[]; + if (!matchers) { + matchers = []; + filters[key] = matchers; + } + matchers.push(...(values.map(v => v || null) as (string | null)[])); } return filters; From 90461a7eac7a5a321ec59dcdf8e48bc77a358e42 Mon Sep 17 00:00:00 2001 From: lewtakm Date: Mon, 12 Oct 2020 12:50:37 +0200 Subject: [PATCH 045/323] feat: Add Pull Request plugin to sample app. --- packages/app/package.json | 2 +- .../app/src/components/catalog/EntityPage.tsx | 11 +++++++++++ yarn.lock | 16 ++++++++-------- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/packages/app/package.json b/packages/app/package.json index a3b150cef6..bc0b50eaf5 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -34,7 +34,7 @@ "@material-ui/core": "^4.11.0", "@material-ui/icons": "^4.9.1", "@octokit/rest": "^18.0.0", - "@roadiehq/backstage-plugin-github-pull-requests": "^0.4.3", + "@roadiehq/backstage-plugin-github-pull-requests": "^0.5.1", "@roadiehq/backstage-plugin-travis-ci": "^0.2.3", "dayjs": "^1.9.1", "history": "^5.0.0", diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx index 393ffe2631..e8b9a95fda 100644 --- a/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/app/src/components/catalog/EntityPage.tsx @@ -54,6 +54,7 @@ import { LastLighthouseAuditCard, isPluginApplicableToEntity as isLighthouseAvailable, } from '@backstage/plugin-lighthouse/'; +import { Router as GithubPullRequestsRouter } from '@roadiehq/backstage-plugin-github-pull-requests'; const CICDSwitcher = ({ entity }: { entity: Entity }) => { // This component is just an example of how you can implement your company's logic in entity page. @@ -160,6 +161,11 @@ const ServiceEntityPage = ({ entity }: { entity: Entity }) => ( title="Kubernetes" element={} /> + } + /> ); @@ -195,6 +201,11 @@ const WebsiteEntityPage = ({ entity }: { entity: Entity }) => ( title="Kubernetes" element={} /> + } + /> ); const DefaultEntityPage = ({ entity }: { entity: Entity }) => ( diff --git a/yarn.lock b/yarn.lock index 34d0287c42..4f76b0a66b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3639,15 +3639,15 @@ resolved "https://registry.npmjs.org/@rjsf/material-ui/-/material-ui-2.3.0.tgz#a051eb4db2ad778e39933a31ba806f415dd3ba90" integrity sha512-v/xZ4Xk18ZgBARcCe99IDqdO97GU0UC784gG8PhGGFDdy5Rbdy7ixTjHkGYttkr43PB7SX6ttohNhkKSW4nATQ== -"@roadiehq/backstage-plugin-github-pull-requests@^0.4.3": - version "0.4.3" - resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-pull-requests/-/backstage-plugin-github-pull-requests-0.4.3.tgz#720fd3c53ae8e61d8cfc727cda47e236af442b02" - integrity sha512-IJGMys5FJ512sitaMwWgACll3ZTuE3nZUX05MNXly/WXty6VBcfboiPbSB6IzLAEWMmvYlV1YUwwL7hAl/62GQ== +"@roadiehq/backstage-plugin-github-pull-requests@^0.5.1": + version "0.5.1" + resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-pull-requests/-/backstage-plugin-github-pull-requests-0.5.1.tgz#a0e3ef97de20fe87e55a26f0198d4ff80b6ecd8c" + integrity sha512-0Btg4jn7SWAp/0A7+xCuHxD4LKPoE3LSEkjMvLmWk/AIIvNA6uSWXeAv1nJZSe4JBV0Qzt+r+TS+hCcFR+vcMg== dependencies: - "@backstage/catalog-model" "^0.1.1-alpha.23" - "@backstage/core" "^0.1.1-alpha.23" - "@backstage/plugin-catalog" "^0.1.1-alpha.23" - "@backstage/theme" "^0.1.1-alpha.23" + "@backstage/catalog-model" "^0.1.1-alpha.24" + "@backstage/core" "^0.1.1-alpha.24" + "@backstage/plugin-catalog" "^0.1.1-alpha.24" + "@backstage/theme" "^0.1.1-alpha.24" "@material-ui/core" "^4.11.0" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "^4.0.0-alpha.56" From 65d7224554ab789951e327849f58d326ae3acce9 Mon Sep 17 00:00:00 2001 From: lewtakm Date: Mon, 12 Oct 2020 13:00:19 +0200 Subject: [PATCH 046/323] feat: add changeset --- .changeset/beige-apes-serve.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/beige-apes-serve.md diff --git a/.changeset/beige-apes-serve.md b/.changeset/beige-apes-serve.md new file mode 100644 index 0000000000..54ee39a85e --- /dev/null +++ b/.changeset/beige-apes-serve.md @@ -0,0 +1,5 @@ +--- +'example-app': patch +--- + +Add Pull Request tab to components view. From d9bfacffadf0fe35f5a83128ebc4bbb4450e9754 Mon Sep 17 00:00:00 2001 From: lewtakm Date: Mon, 12 Oct 2020 13:07:48 +0200 Subject: [PATCH 047/323] fix: update component name --- packages/app/src/components/catalog/EntityPage.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx index e8b9a95fda..ed63e26e79 100644 --- a/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/app/src/components/catalog/EntityPage.tsx @@ -54,7 +54,7 @@ import { LastLighthouseAuditCard, isPluginApplicableToEntity as isLighthouseAvailable, } from '@backstage/plugin-lighthouse/'; -import { Router as GithubPullRequestsRouter } from '@roadiehq/backstage-plugin-github-pull-requests'; +import { Router as PullRequestsRouter } from '@roadiehq/backstage-plugin-github-pull-requests'; const CICDSwitcher = ({ entity }: { entity: Entity }) => { // This component is just an example of how you can implement your company's logic in entity page. @@ -164,7 +164,7 @@ const ServiceEntityPage = ({ entity }: { entity: Entity }) => ( } + element={} /> ); @@ -204,7 +204,7 @@ const WebsiteEntityPage = ({ entity }: { entity: Entity }) => ( } + element={} /> ); From 69d50967e6a6f63003b6caed8d0f999a2a2d9bbf Mon Sep 17 00:00:00 2001 From: lewtakm Date: Mon, 12 Oct 2020 13:44:09 +0200 Subject: [PATCH 048/323] feat: add pull requests widget to overview page of the component --- packages/app/src/components/catalog/EntityPage.tsx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx index 393ffe2631..d3e25238c7 100644 --- a/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/app/src/components/catalog/EntityPage.tsx @@ -54,6 +54,10 @@ import { LastLighthouseAuditCard, isPluginApplicableToEntity as isLighthouseAvailable, } from '@backstage/plugin-lighthouse/'; +import { + isPluginApplicableToEntity as isPullRequestsAvailable, + PullRequestsStatsCard, +} from '@roadiehq/backstage-plugin-github-pull-requests'; const CICDSwitcher = ({ entity }: { entity: Entity }) => { // This component is just an example of how you can implement your company's logic in entity page. @@ -125,6 +129,11 @@ const OverviewContent = ({ entity }: { entity: Entity }) => ( )} + {isPullRequestsAvailable(entity) && ( + + + + )} ); From 74a29db272aa5e9cb18ef2fcfd2c298bf1477324 Mon Sep 17 00:00:00 2001 From: lewtakm Date: Mon, 12 Oct 2020 14:04:40 +0200 Subject: [PATCH 049/323] fix: bumb package version --- packages/app/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app/package.json b/packages/app/package.json index a3b150cef6..bc0b50eaf5 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -34,7 +34,7 @@ "@material-ui/core": "^4.11.0", "@material-ui/icons": "^4.9.1", "@octokit/rest": "^18.0.0", - "@roadiehq/backstage-plugin-github-pull-requests": "^0.4.3", + "@roadiehq/backstage-plugin-github-pull-requests": "^0.5.1", "@roadiehq/backstage-plugin-travis-ci": "^0.2.3", "dayjs": "^1.9.1", "history": "^5.0.0", From 689b2f50e528d45c9d2e9b31da374b8d0b580f01 Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Mon, 12 Oct 2020 14:27:59 +0200 Subject: [PATCH 050/323] Run vale linter only if vale is installed --- package.json | 3 +- scripts/check-docs-quality.js | 86 ++++++++++++++++++++--------------- yarn.lock | 5 ++ 3 files changed, 57 insertions(+), 37 deletions(-) diff --git a/package.json b/package.json index 371646074c..96e02e33f9 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "@changesets/cli": "^2.11.0", "@spotify/eslint-config-oss": "^1.0.1", "@spotify/prettier-config": "^8.0.0", + "command-exists": "^1.2.9", "concurrently": "^5.2.0", "fs-extra": "^9.0.0", "husky": "^4.2.3", @@ -65,7 +66,7 @@ "prettier --write" ], "*.md": [ - "vale" + "node ./scripts/check-docs-quality" ] }, "jest": { diff --git a/scripts/check-docs-quality.js b/scripts/check-docs-quality.js index 61968a2ac0..4f5f689105 100755 --- a/scripts/check-docs-quality.js +++ b/scripts/check-docs-quality.js @@ -16,6 +16,8 @@ */ const { execSync, spawnSync } = require('child_process'); const path = require('path'); +// eslint-disable-next-line import/no-extraneous-dependencies +const commandExists = require('command-exists'); const listFilesTrackedByGit = 'git ls-files'; @@ -23,46 +25,58 @@ const inheritStdIo = { stdio: 'inherit', }; +const LINT_SKIPPED_MESSAGE = + 'Skipping documentation quality check (vale not found). Install vale linter (https://docs.errata.ai/vale/install) to enable.\n'; const ERROR_MESSAGE = - 'Please install vale linter(https://docs.errata.ai/vale/install). Ignore this message if already installed.\n'; + 'Language linter (vale) generated errors. Please check the errors and review any markdown files that you changed.\n'; -// xargs is not supported by shx. -if (process.platform === 'win32') { - const validMDFilesCommand = `${listFilesTrackedByGit} | .\\node_modules\\.bin\\shx grep ".md"`; - try { - // get list of all md files except in directories of gitignore. - let filesToLint = execSync(validMDFilesCommand, { - stdio: ['ignore', 'pipe', 'inherit'], - }); +// Proceed with the script only if Vale linter is installed. Limit the friction and surprises caused by the script. +commandExists('vale') + .catch(() => { + console.log(LINT_SKIPPED_MESSAGE); + process.exit(0); + }) + .then(() => { + // xargs is not supported by shx. + if (process.platform === 'win32') { + const validMDFilesCommand = `${listFilesTrackedByGit} | .\\node_modules\\.bin\\shx grep ".md"`; + try { + // get list of all md files except in directories of gitignore. + let filesToLint = execSync(validMDFilesCommand, { + stdio: ['ignore', 'pipe', 'inherit'], + }); - // set all file(s) path as absolute path - filesToLint = filesToLint - .toString() - .split('\n') - .map(filepath => (filepath ? path.join(process.cwd(), filepath) : null)) - .filter(Boolean); + // set all file(s) path as absolute path + filesToLint = filesToLint + .toString() + .split('\n') + .map(filepath => + filepath ? path.join(process.cwd(), filepath) : null, + ) + .filter(Boolean); - const output = spawnSync('vale', filesToLint, inheritStdIo); + const output = spawnSync('vale', filesToLint, inheritStdIo); - // if the command does not succeed - if (output.status !== 0) { - // if it contains system level error. [in this case vale does not exist] - if (output.error) { - console.error(ERROR_MESSAGE); + // if the command does not succeed + if (output.status !== 0) { + // if it contains system level error. [in this case vale does not exist] + if (output.error) { + console.error(ERROR_MESSAGE); + } + process.exit(1); + } + } catch (e) { + console.error(e.message); + process.exit(1); + } + } else { + const validMDFilesCommand = `${listFilesTrackedByGit} | ./node_modules/.bin/shx grep ".md"`; + // use xargs + try { + execSync(`${validMDFilesCommand} | xargs vale`, inheritStdIo); + } catch (e) { + console.error(ERROR_MESSAGE); + process.exit(1); } - process.exit(1); } - } catch (e) { - console.error(e.message); - process.exit(1); - } -} else { - const validMDFilesCommand = `${listFilesTrackedByGit} | ./node_modules/.bin/shx grep ".md"`; - // use xargs - try { - execSync(`${validMDFilesCommand} | xargs vale`, inheritStdIo); - } catch (e) { - console.error(ERROR_MESSAGE); - process.exit(1); - } -} + }); diff --git a/yarn.lock b/yarn.lock index 7dbc7f964a..859c26c6c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8537,6 +8537,11 @@ command-exists-promise@^2.0.2: resolved "https://registry.npmjs.org/command-exists-promise/-/command-exists-promise-2.0.2.tgz#7beecc4b218299f3c61fa69a4047aa0b36a64a99" integrity sha512-T6PB6vdFrwnHXg/I0kivM3DqaCGZLjjYSOe0a5WgFKcz1sOnmOeIjnhQPXVXX3QjVbLyTJ85lJkX6lUpukTzaA== +command-exists@^1.2.9: + version "1.2.9" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + commander@^2.11.0, commander@^2.19.0, commander@^2.20.0, commander@^2.20.3, commander@~2.20.3: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" From 4a867ed4a4d4b68db4b02fb9f8f8d7a2145e3515 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Mon, 12 Oct 2020 15:45:19 +0200 Subject: [PATCH 051/323] chore: fix comments --- .../src/database/CommonDatabase.ts | 106 +++++++++--------- plugins/catalog-backend/src/service/router.ts | 9 +- 2 files changed, 54 insertions(+), 61 deletions(-) diff --git a/plugins/catalog-backend/src/database/CommonDatabase.ts b/plugins/catalog-backend/src/database/CommonDatabase.ts index 563fd24c80..dca5072b30 100644 --- a/plugins/catalog-backend/src/database/CommonDatabase.ts +++ b/plugins/catalog-backend/src/database/CommonDatabase.ts @@ -219,64 +219,62 @@ export class CommonDatabase implements Database { let entitiesQuery = tx('entities'); - if (filters && Object.keys(filters).length) { - for (const [matchKey, matchVal] of Object.entries(filters)) { - const key = matchKey.toLowerCase().replace(/[*]/g, '%'); - const keyOp = key.includes('*') ? 'like' : '='; - const values = Array.isArray(matchVal) ? matchVal : [matchVal]; + for (const [matchKey, matchVal] of Object.entries(filters ?? {})) { + const key = matchKey.toLowerCase().replace(/[*]/g, '%'); + const keyOp = key.includes('%') ? 'like' : '='; + const values = Array.isArray(matchVal) ? matchVal : [matchVal]; - let matchNulls = false; - const matchIn: string[] = []; - const matchLike: string[] = []; + let matchNulls = false; + const matchIn: string[] = []; + const matchLike: string[] = []; - for (const value of values) { - if (!value) { - matchNulls = true; - } else if (value.includes('*')) { - matchLike.push(value.toLowerCase().replace(/[*]/g, '%')); - } else { - matchIn.push(value.toLowerCase()); - } + for (const value of values) { + if (!value) { + matchNulls = true; + } else if (value.includes('*')) { + matchLike.push(value.toLowerCase().replace(/[*]/g, '%')); + } else { + matchIn.push(value.toLowerCase()); } - - // NOTE(freben): This used to be a set of OUTER JOIN, which may seem to - // make a lot of sense. However, it had abysmal performance on sqlite - // when datasets grew large, so we're using IN instead. - const matchQuery = tx('entities_search') - .select('entity_id') - .where(function keyFilter() { - this.andWhere('key', keyOp, key); - this.andWhere(function valueFilter() { - if (matchIn.length === 1) { - this.orWhere({ value: matchIn[0] }); - } else if (matchIn.length > 1) { - this.orWhereIn('value', matchIn); - } - if (matchLike.length) { - for (const x of matchLike) { - this.orWhere('value', 'like', tx.raw('?', [x])); - } - } - if (matchNulls) { - // Match explicit nulls, and then handle absence separately below - this.orWhereNull('value'); - } - }); - }); - - // Handle absence as nulls as well - entitiesQuery = entitiesQuery.andWhere(function match() { - this.whereIn('id', matchQuery); - if (matchNulls) { - this.orWhereNotIn( - 'id', - tx('entities_search') - .select('entity_id') - .where('key', keyOp, key), - ); - } - }); } + + // NOTE(freben): This used to be a set of OUTER JOIN, which may seem to + // make a lot of sense. However, it had abysmal performance on sqlite + // when datasets grew large, so we're using IN instead. + const matchQuery = tx('entities_search') + .select('entity_id') + .where(function keyFilter() { + this.andWhere('key', keyOp, key); + this.andWhere(function valueFilter() { + if (matchIn.length === 1) { + this.orWhere({ value: matchIn[0] }); + } else if (matchIn.length > 1) { + this.orWhereIn('value', matchIn); + } + if (matchLike.length) { + for (const x of matchLike) { + this.orWhere('value', 'like', tx.raw('?', [x])); + } + } + if (matchNulls) { + // Match explicit nulls, and then handle absence separately below + this.orWhereNull('value'); + } + }); + }); + + // Handle absence as nulls as well + entitiesQuery = entitiesQuery.andWhere(function match() { + this.whereIn('id', matchQuery); + if (matchNulls) { + this.orWhereNotIn( + 'id', + tx('entities_search') + .select('entity_id') + .where('key', keyOp, key), + ); + } + }); } const rows = await entitiesQuery diff --git a/plugins/catalog-backend/src/service/router.ts b/plugins/catalog-backend/src/service/router.ts index 94dc76ab9d..a262e9b5f4 100644 --- a/plugins/catalog-backend/src/service/router.ts +++ b/plugins/catalog-backend/src/service/router.ts @@ -123,7 +123,7 @@ export async function createRouter( function translateQueryToEntityFilters( request: express.Request, ): EntityFilters { - const filters: EntityFilters = {}; + const filters: Record = {}; for (const [key, valueOrValues] of Object.entries(request.query)) { const values = Array.isArray(valueOrValues) @@ -134,12 +134,7 @@ function translateQueryToEntityFilters( throw new InputError('Complex query parameters are not supported'); } - // This one always emits arrays - let matchers = filters[key] as (string | null)[]; - if (!matchers) { - matchers = []; - filters[key] = matchers; - } + const matchers = key in filters ? filters[key] : (filters[key] = []); matchers.push(...(values.map(v => v || null) as (string | null)[])); } From 0b2a13b5c9ef12b51f91b03253e9f9288546ce67 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 12 Oct 2020 22:19:50 +0200 Subject: [PATCH 052/323] chore(cli): backend plugins should have the backend suffix --- packages/cli/src/commands/create-plugin/createPlugin.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/commands/create-plugin/createPlugin.ts b/packages/cli/src/commands/create-plugin/createPlugin.ts index cbaf956bdb..491e399b1f 100644 --- a/packages/cli/src/commands/create-plugin/createPlugin.ts +++ b/packages/cli/src/commands/create-plugin/createPlugin.ts @@ -224,9 +224,12 @@ export default async (cmd: Command) => { } const answers: Answers = await inquirer.prompt(questions); - const name = cmd.scope + const pluginName = cmd.scope ? `@${cmd.scope.replace(/^@/, '')}/plugin-${answers.id}` : `plugin-${answers.id}`; + + const name = cmd.backend ? `${pluginName}-backend` : pluginName; + const npmRegistry = cmd.npmRegistry && cmd.scope ? cmd.npmRegistry : ''; const privatePackage = cmd.private === false ? false : true; const isMonoRepo = await fs.pathExists(paths.resolveTargetRoot('lerna.json')); From a8a4f4138035d4e141b9adeee9ca30ac6772a6fe Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 12 Oct 2020 22:27:21 +0200 Subject: [PATCH 053/323] chore(cli): folder name etc should have the suffix too --- .../commands/create-plugin/createPlugin.ts | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/packages/cli/src/commands/create-plugin/createPlugin.ts b/packages/cli/src/commands/create-plugin/createPlugin.ts index 491e399b1f..057e36ceb9 100644 --- a/packages/cli/src/commands/create-plugin/createPlugin.ts +++ b/packages/cli/src/commands/create-plugin/createPlugin.ts @@ -224,12 +224,11 @@ export default async (cmd: Command) => { } const answers: Answers = await inquirer.prompt(questions); - const pluginName = cmd.scope - ? `@${cmd.scope.replace(/^@/, '')}/plugin-${answers.id}` - : `plugin-${answers.id}`; - - const name = cmd.backend ? `${pluginName}-backend` : pluginName; + const pluginId = cmd.backend ? `${answers.id}-backend` : answers.id; + const name = cmd.scope + ? `@${cmd.scope.replace(/^@/, '')}/plugin-${pluginId}` + : `plugin-${pluginId}`; const npmRegistry = cmd.npmRegistry && cmd.scope ? cmd.npmRegistry : ''; const privatePackage = cmd.private === false ? false : true; const isMonoRepo = await fs.pathExists(paths.resolveTargetRoot('lerna.json')); @@ -239,10 +238,10 @@ export default async (cmd: Command) => { ? 'templates/default-backend-plugin' : 'templates/default-plugin', ); - const tempDir = resolvePath(os.tmpdir(), answers.id); + const tempDir = resolvePath(os.tmpdir(), pluginId); const pluginDir = isMonoRepo - ? paths.resolveTargetRoot('plugins', answers.id) - : paths.resolveTargetRoot(answers.id); + ? paths.resolveTargetRoot('plugins', pluginId) + : paths.resolveTargetRoot(pluginId); const ownerIds = parseOwnerIds(answers.owner); const { version } = isMonoRepo ? await fs.readJson(paths.resolveTargetRoot('lerna.json')) @@ -270,7 +269,7 @@ export default async (cmd: Command) => { }); Task.section('Moving to final location'); - await movePlugin(tempDir, pluginDir, answers.id); + await movePlugin(tempDir, pluginDir, pluginId); Task.section('Building the plugin'); await buildPlugin(pluginDir); @@ -280,13 +279,13 @@ export default async (cmd: Command) => { await addPluginDependencyToApp(paths.targetRoot, name, version); Task.section('Import plugin in app'); - await addPluginToApp(paths.targetRoot, answers.id, name); + await addPluginToApp(paths.targetRoot, pluginId, name); } if (ownerIds && ownerIds.length) { await addCodeownersEntry( codeownersPath!, - `/plugins/${answers.id}`, + `/plugins/${pluginId}`, ownerIds, ); } From bd3864385b3085c02d47094d40fdd0c986068bd1 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 12 Oct 2020 22:51:17 +0200 Subject: [PATCH 054/323] chore(e2e): fix the e2e test --- packages/e2e-test/src/commands/run.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/e2e-test/src/commands/run.ts b/packages/e2e-test/src/commands/run.ts index 2a0f641014..7111ff1867 100644 --- a/packages/e2e-test/src/commands/run.ts +++ b/packages/e2e-test/src/commands/run.ts @@ -56,7 +56,7 @@ export async function run() { const pluginName = await createPlugin('test-plugin', appDir); print('Creating a Backstage Backend Plugin'); - await createPlugin('test-backend-plugin', appDir, ['--backend']); + await createPlugin('test-plugin', appDir, ['--backend']); print('Starting the app'); await testAppServe(pluginName, appDir); @@ -265,13 +265,16 @@ async function createPlugin( print('Waiting for plugin create script to be done'); await waitForExit(child); - const pluginDir = resolvePath(appDir, 'plugins', pluginName); + const canonicalName = options.includes('--backend') + ? `${pluginName}-backend}` + : pluginName; + const pluginDir = resolvePath(appDir, 'plugins', canonicalName); for (const cmd of [['tsc'], ['lint'], ['test', '--no-watch']]) { print(`Running 'yarn ${cmd.join(' ')}' in newly created plugin`); await runPlain(['yarn', ...cmd], { cwd: pluginDir }); } - return pluginName; + return canonicalName; } finally { child.kill(); } From b7d15b4f1ac20a7c0abab11de272a7846b20fc03 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 13 Oct 2020 03:02:58 +0200 Subject: [PATCH 055/323] chore(cli): remove superfluous bracket that was causing all the things --- packages/e2e-test/src/commands/run.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/e2e-test/src/commands/run.ts b/packages/e2e-test/src/commands/run.ts index 7111ff1867..cfe0ad9685 100644 --- a/packages/e2e-test/src/commands/run.ts +++ b/packages/e2e-test/src/commands/run.ts @@ -266,9 +266,11 @@ async function createPlugin( await waitForExit(child); const canonicalName = options.includes('--backend') - ? `${pluginName}-backend}` + ? `${pluginName}-backend` : pluginName; + const pluginDir = resolvePath(appDir, 'plugins', canonicalName); + for (const cmd of [['tsc'], ['lint'], ['test', '--no-watch']]) { print(`Running 'yarn ${cmd.join(' ')}' in newly created plugin`); await runPlain(['yarn', ...cmd], { cwd: pluginDir }); From 3857bd85de11b7215b122c665212bc29b77f91ac Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 13 Oct 2020 04:03:16 +0200 Subject: [PATCH 056/323] chore(auth-backend): fixing dep order --- plugins/auth-backend/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index bace524383..25129f33f7 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -47,6 +47,7 @@ "passport-saml": "^1.3.3", "uuid": "^8.0.0", "winston": "^3.2.1", + "cross-fetch": "^3.0.6", "yn": "^4.0.0" }, "devDependencies": { @@ -59,8 +60,7 @@ "@types/passport-google-oauth20": "^2.0.3", "@types/passport-microsoft": "^0.0.0", "@types/passport-saml": "^1.1.2", - "msw": "^0.21.2", - "cross-fetch": "^3.0.6" + "msw": "^0.21.2" }, "files": [ "dist", From ef8304af83488013e6a9b45c8b2134209032b74f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Oct 2020 04:37:50 +0000 Subject: [PATCH 057/323] chore(deps-dev): bump @types/passport from 1.0.3 to 1.0.4 Bumps [@types/passport](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/passport) from 1.0.3 to 1.0.4. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/passport) Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4832a549b8..810dc62ea4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5354,9 +5354,9 @@ "@types/passport" "*" "@types/passport@*", "@types/passport@^1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@types/passport/-/passport-1.0.3.tgz#e459ed6c262bf0686684d1b05901be0d0b192a9c" - integrity sha512-nyztuxtDPQv9utCzU0qW7Gl8BY2Dn8BKlYAFFyxKipFxjaVd96celbkLCV/tRqqBUZ+JB8If3UfgV8347DTo3Q== + version "1.0.4" + resolved "https://registry.npmjs.org/@types/passport/-/passport-1.0.4.tgz#1b35c4e197560d3974fa5f71711b6e9cce0711f0" + integrity sha512-h5OfAbfBBYSzjeU0GTuuqYEk9McTgWeGQql9g3gUw2/NNCfD7VgExVRYJVVeU13Twn202Mvk9BT0bUrl30sEgA== dependencies: "@types/express" "*" From a0a3e6d6cacdeb2218065c6bacf6be1485bff175 Mon Sep 17 00:00:00 2001 From: J Shamsul Bahri Date: Tue, 13 Oct 2020 12:49:16 +0800 Subject: [PATCH 058/323] Fix: SAML provider postMessageResponse localhost (#2870) * make saml provider path from globalConfig * fix:(auth-backend/saml) change hardcoded localhost Co-authored-by: JShamsul --- plugins/auth-backend/src/providers/saml/provider.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/auth-backend/src/providers/saml/provider.ts b/plugins/auth-backend/src/providers/saml/provider.ts index 59e46a86d7..a8edc9a714 100644 --- a/plugins/auth-backend/src/providers/saml/provider.ts +++ b/plugins/auth-backend/src/providers/saml/provider.ts @@ -41,8 +41,10 @@ type SamlInfo = { export class SamlAuthProvider implements AuthProviderRouteHandlers { private readonly strategy: SamlStrategy; private readonly tokenIssuer: TokenIssuer; + private readonly appUrl: string; constructor(options: SAMLProviderOptions) { + this.appUrl = options.appUrl; this.tokenIssuer = options.tokenIssuer; this.strategy = new SamlStrategy({ ...options }, (( profile: SamlProfile, @@ -82,7 +84,7 @@ export class SamlAuthProvider implements AuthProviderRouteHandlers { claims: { sub: id }, }); - return postMessageResponse(res, 'http://localhost:3000', { + return postMessageResponse(res, this.appUrl, { type: 'authorization_response', response: { providerInfo: {}, @@ -91,7 +93,7 @@ export class SamlAuthProvider implements AuthProviderRouteHandlers { }, }); } catch (error) { - return postMessageResponse(res, 'http://localhost:3000', { + return postMessageResponse(res, this.appUrl, { type: 'authorization_response', error: { name: error.name, @@ -115,6 +117,7 @@ type SAMLProviderOptions = { issuer: string; path: string; tokenIssuer: TokenIssuer; + appUrl: string; }; export const createSamlProvider: AuthProviderFactory = ({ @@ -131,6 +134,7 @@ export const createSamlProvider: AuthProviderFactory = ({ issuer, path: `${url.pathname}/${providerId}/handler/frame`, tokenIssuer, + appUrl: globalConfig.appUrl, }; return new SamlAuthProvider(opts); From 321da5aff61051e080b90d90d9751006948afe0c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Oct 2020 06:52:44 +0200 Subject: [PATCH 059/323] chore(deps): bump @testing-library/jest-dom from 5.10.1 to 5.11.4 (#2792) Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 5.10.1 to 5.11.4. - [Release notes](https://github.com/testing-library/jest-dom/releases) - [Changelog](https://github.com/testing-library/jest-dom/blob/master/CHANGELOG.md) - [Commits](https://github.com/testing-library/jest-dom/compare/v5.10.1...v5.11.4) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 50 +++++++++++++++++++++++--------------------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4832a549b8..c0630e742b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4545,17 +4545,16 @@ pretty-format "^26.4.2" "@testing-library/jest-dom@^5.10.1": - version "5.10.1" - resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.10.1.tgz#6508a9f007bd74e5d3c0b3135b668027ab663989" - integrity sha512-uv9lLAnEFRzwUTN/y9lVVXVXlEzazDkelJtM5u92PsGkEasmdI+sfzhZHxSDzlhZVTrlLfuMh2safMr8YmzXLg== + version "5.11.4" + resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.11.4.tgz#f325c600db352afb92995c2576022b35621ddc99" + integrity sha512-6RRn3epuweBODDIv3dAlWjOEHQLpGJHB2i912VS3JQtsD22+ENInhdDNl4ZZQiViLlIfFinkSET/J736ytV9sw== dependencies: "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" + aria-query "^4.2.2" chalk "^3.0.0" - css "^2.2.4" + css "^3.0.0" css.escape "^1.5.1" - jest-diff "^25.1.0" - jest-matcher-utils "^25.1.0" lodash "^4.17.15" redent "^3.0.0" @@ -9227,15 +9226,14 @@ css.escape@1.5.1, css.escape@^1.5.1: resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= -css@^2.2.4: - version "2.2.4" - resolved "https://registry.npmjs.org/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== +css@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" + integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== dependencies: - inherits "^2.0.3" + inherits "^2.0.4" source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" + source-map-resolve "^0.6.0" cssesc@^3.0.0: version "3.0.0" @@ -14121,7 +14119,7 @@ jest-css-modules@^2.1.0: dependencies: identity-obj-proxy "3.0.0" -jest-diff@^25.1.0, jest-diff@^25.2.1: +jest-diff@^25.2.1: version "25.5.0" resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== @@ -14200,7 +14198,7 @@ jest-fetch-mock@^3.0.3: cross-fetch "^3.0.4" promise-polyfill "^8.1.3" -jest-get-type@^25.1.0, jest-get-type@^25.2.6: +jest-get-type@^25.2.6: version "25.2.6" resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== @@ -14263,16 +14261,6 @@ jest-leak-detector@^26.5.2: jest-get-type "^26.3.0" pretty-format "^26.5.2" -jest-matcher-utils@^25.1.0: - version "25.1.0" - resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.1.0.tgz#fa5996c45c7193a3c24e73066fc14acdee020220" - integrity sha512-KGOAFcSFbclXIFE7bS4C53iYobKI20ZWleAdAFun4W1Wz1Kkej8Ng6RRbhL8leaEvIOjGXhGf/a1JjO8bkxIWQ== - dependencies: - chalk "^3.0.0" - jest-diff "^25.1.0" - jest-get-type "^25.1.0" - pretty-format "^25.1.0" - jest-matcher-utils@^26.5.2: version "26.5.2" resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.5.2.tgz#6aa2c76ce8b9c33e66f8856ff3a52bab59e6c85a" @@ -18557,7 +18545,7 @@ pretty-error@^2.1.1: renderkid "^2.0.1" utila "~0.4" -pretty-format@^25.1.0, pretty-format@^25.2.1, pretty-format@^25.5.0: +pretty-format@^25.2.1, pretty-format@^25.5.0: version "25.5.0" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== @@ -21036,7 +21024,7 @@ source-list-map@^2.0.0: resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: +source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== @@ -21047,6 +21035,14 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: source-map-url "^0.4.0" urix "^0.1.0" +source-map-resolve@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.12: version "0.5.19" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" From b041aab8adea2e199564011cdb0f445a0a614479 Mon Sep 17 00:00:00 2001 From: Sebastian Qvarfordt Date: Tue, 13 Oct 2020 09:07:14 +0200 Subject: [PATCH 060/323] [TechDocs] Remove all git preparers and use a commonGit preparer instead (#2856) * Remove all git preparers and use a commonGit preparer instead * Added more tests * Updated default-app template --- packages/backend/src/plugins/techdocs.ts | 15 ++--- .../packages/backend/src/plugins/techdocs.ts | 7 +- .../src/techdocs/stages/prepare/azure.test.ts | 63 ------------------ .../src/techdocs/stages/prepare/azure.ts | 55 ---------------- .../{github.test.ts => commonGit.test.ts} | 36 ++++++++++- .../prepare/{gitlab.ts => commonGit.ts} | 9 +-- .../src/techdocs/stages/prepare/github.ts | 55 ---------------- .../techdocs/stages/prepare/gitlab.test.ts | 64 ------------------- .../src/techdocs/stages/prepare/index.ts | 4 +- 9 files changed, 46 insertions(+), 262 deletions(-) delete mode 100644 plugins/techdocs-backend/src/techdocs/stages/prepare/azure.test.ts delete mode 100644 plugins/techdocs-backend/src/techdocs/stages/prepare/azure.ts rename plugins/techdocs-backend/src/techdocs/stages/prepare/{github.test.ts => commonGit.test.ts} (59%) rename plugins/techdocs-backend/src/techdocs/stages/prepare/{gitlab.ts => commonGit.ts} (83%) delete mode 100644 plugins/techdocs-backend/src/techdocs/stages/prepare/github.ts delete mode 100644 plugins/techdocs-backend/src/techdocs/stages/prepare/gitlab.test.ts diff --git a/packages/backend/src/plugins/techdocs.ts b/packages/backend/src/plugins/techdocs.ts index 6e36c26f39..dea31c763b 100644 --- a/packages/backend/src/plugins/techdocs.ts +++ b/packages/backend/src/plugins/techdocs.ts @@ -21,9 +21,7 @@ import { Generators, LocalPublish, TechdocsGenerator, - GithubPreparer, - GitlabPreparer, - AzurePreparer, + CommonGitPreparer, } from '@backstage/plugin-techdocs-backend'; import { PluginEnvironment } from '../types'; import Docker from 'dockerode'; @@ -38,14 +36,13 @@ export default async function createPlugin({ generators.register('techdocs', techdocsGenerator); const preparers = new Preparers(); - const githubPreparer = new GithubPreparer(logger); - const gitlabPreparer = new GitlabPreparer(logger); - const azurePreparer = new AzurePreparer(logger); + const commonGitPreparer = new CommonGitPreparer(logger); + const directoryPreparer = new DirectoryPreparer(logger); preparers.register('dir', directoryPreparer); - preparers.register('github', githubPreparer); - preparers.register('gitlab', gitlabPreparer); - preparers.register('azure/api', azurePreparer); + preparers.register('github', commonGitPreparer); + preparers.register('gitlab', commonGitPreparer); + preparers.register('azure/api', commonGitPreparer); const publisher = new LocalPublish(logger); diff --git a/packages/create-app/templates/default-app/packages/backend/src/plugins/techdocs.ts b/packages/create-app/templates/default-app/packages/backend/src/plugins/techdocs.ts index b522992a75..5506228962 100644 --- a/packages/create-app/templates/default-app/packages/backend/src/plugins/techdocs.ts +++ b/packages/create-app/templates/default-app/packages/backend/src/plugins/techdocs.ts @@ -1,7 +1,7 @@ import { createRouter, DirectoryPreparer, - GithubPreparer, + CommonGitPreparer, Preparers, Generators, LocalPublish, @@ -22,10 +22,11 @@ export default async function createPlugin({ const preparers = new Preparers(); const directoryPreparer = new DirectoryPreparer(logger); - const githubPreparer = new GithubPreparer(logger); + const commonGitPreparer = new CommonGitPreparer(logger); preparers.register('dir', directoryPreparer); - preparers.register('github', githubPreparer); + preparers.register('github', commonGitPreparer); + preparers.register('gitlab', commonGitPreparer); const publisher = new LocalPublish(logger); diff --git a/plugins/techdocs-backend/src/techdocs/stages/prepare/azure.test.ts b/plugins/techdocs-backend/src/techdocs/stages/prepare/azure.test.ts deleted file mode 100644 index 39a3d5c7fa..0000000000 --- a/plugins/techdocs-backend/src/techdocs/stages/prepare/azure.test.ts +++ /dev/null @@ -1,63 +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 { getVoidLogger } from '@backstage/backend-common'; -import { AzurePreparer } from './azure'; -import { checkoutGitRepository } from '../../../helpers'; - -function normalizePath(path: string) { - return path - .replace(/^[a-z]:/i, '') - .split('\\') - .join('/'); -} - -jest.mock('../../../helpers', () => ({ - ...jest.requireActual<{}>('../../../helpers'), - checkoutGitRepository: jest.fn(() => '/tmp/backstage-repo/org/name/branch'), -})); - -const createMockEntity = (annotations = {}) => { - return { - apiVersion: 'version', - kind: 'TestKind', - metadata: { - name: 'test-component-name', - annotations: { - ...annotations, - }, - }, - }; -}; - -const logger = getVoidLogger(); - -describe('Azure DevOps preparer', () => { - it('should prepare temp docs path from Azure DevOps repo', async () => { - const preparer = new AzurePreparer(logger); - - const mockEntity = createMockEntity({ - 'backstage.io/techdocs-ref': - 'azure/api:https://dev.azure.com/backstage-org/backstage-project/_git/template-repo?path=%2Ftemplate.yaml', - }); - - const tempDocsPath = await preparer.prepare(mockEntity); - expect(checkoutGitRepository).toHaveBeenCalledTimes(1); - expect(normalizePath(tempDocsPath)).toEqual( - '/tmp/backstage-repo/org/name/branch/template.yaml', - ); - }); -}); diff --git a/plugins/techdocs-backend/src/techdocs/stages/prepare/azure.ts b/plugins/techdocs-backend/src/techdocs/stages/prepare/azure.ts deleted file mode 100644 index 18e6c3c755..0000000000 --- a/plugins/techdocs-backend/src/techdocs/stages/prepare/azure.ts +++ /dev/null @@ -1,55 +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 path from 'path'; -import { Entity } from '@backstage/catalog-model'; -import { InputError } from '@backstage/backend-common'; -import { PreparerBase } from './types'; -import parseGitUrl from 'git-url-parse'; -import { - parseReferenceAnnotation, - checkoutGitRepository, -} from '../../../helpers'; - -import { Logger } from 'winston'; - -export class AzurePreparer implements PreparerBase { - private readonly logger: Logger; - - constructor(logger: Logger) { - this.logger = logger; - } - - async prepare(entity: Entity): Promise { - const { type, target } = parseReferenceAnnotation( - 'backstage.io/techdocs-ref', - entity, - ); - - if (type !== 'azure/api') { - throw new InputError(`Wrong target type: ${type}, should be 'azure/api'`); - } - - try { - const repoPath = await checkoutGitRepository(target, this.logger); - const parsedGitLocation = parseGitUrl(target); - - return path.join(repoPath, parsedGitLocation.filepath); - } catch (error) { - this.logger.debug(`Repo checkout failed with error ${error.message}`); - throw error; - } - } -} diff --git a/plugins/techdocs-backend/src/techdocs/stages/prepare/github.test.ts b/plugins/techdocs-backend/src/techdocs/stages/prepare/commonGit.test.ts similarity index 59% rename from plugins/techdocs-backend/src/techdocs/stages/prepare/github.test.ts rename to plugins/techdocs-backend/src/techdocs/stages/prepare/commonGit.test.ts index a657cd1697..cec1110f97 100644 --- a/plugins/techdocs-backend/src/techdocs/stages/prepare/github.test.ts +++ b/plugins/techdocs-backend/src/techdocs/stages/prepare/commonGit.test.ts @@ -15,7 +15,7 @@ */ import { getVoidLogger } from '@backstage/backend-common'; -import { GithubPreparer } from './github'; +import { CommonGitPreparer } from './commonGit'; import { checkoutGitRepository } from '../../../helpers'; function normalizePath(path: string) { @@ -45,9 +45,9 @@ const createMockEntity = (annotations = {}) => { const logger = getVoidLogger(); -describe('github preparer', () => { +describe('commonGit preparer', () => { it('should prepare temp docs path from github repo', async () => { - const preparer = new GithubPreparer(logger); + const preparer = new CommonGitPreparer(logger); const mockEntity = createMockEntity({ 'backstage.io/techdocs-ref': @@ -60,4 +60,34 @@ describe('github preparer', () => { '/tmp/backstage-repo/org/name/branch/plugins/techdocs-backend/examples/documented-component', ); }); + + it('should prepare temp docs path from gitlab repo', async () => { + const preparer = new CommonGitPreparer(logger); + + const mockEntity = createMockEntity({ + 'backstage.io/techdocs-ref': + 'gitlab:https://gitlab.com/xesjkeee/go-logger/blob/master/catalog-info.yaml', + }); + + const tempDocsPath = await preparer.prepare(mockEntity); + expect(checkoutGitRepository).toHaveBeenCalledTimes(2); + expect(normalizePath(tempDocsPath)).toEqual( + '/tmp/backstage-repo/org/name/branch/catalog-info.yaml', + ); + }); + + it('should prepare temp docs path from azure repo', async () => { + const preparer = new CommonGitPreparer(logger); + + const mockEntity = createMockEntity({ + 'backstage.io/techdocs-ref': + 'azure/api:https://dev.azure.com/backstage-org/backstage-project/_git/template-repo?path=%2Ftemplate.yaml', + }); + + const tempDocsPath = await preparer.prepare(mockEntity); + expect(checkoutGitRepository).toHaveBeenCalledTimes(3); + expect(normalizePath(tempDocsPath)).toEqual( + '/tmp/backstage-repo/org/name/branch/template.yaml', + ); + }); }); diff --git a/plugins/techdocs-backend/src/techdocs/stages/prepare/gitlab.ts b/plugins/techdocs-backend/src/techdocs/stages/prepare/commonGit.ts similarity index 83% rename from plugins/techdocs-backend/src/techdocs/stages/prepare/gitlab.ts rename to plugins/techdocs-backend/src/techdocs/stages/prepare/commonGit.ts index 56f3793fbb..d9ba96a031 100644 --- a/plugins/techdocs-backend/src/techdocs/stages/prepare/gitlab.ts +++ b/plugins/techdocs-backend/src/techdocs/stages/prepare/commonGit.ts @@ -15,7 +15,6 @@ */ import path from 'path'; import { Entity } from '@backstage/catalog-model'; -import { InputError } from '@backstage/backend-common'; import { PreparerBase } from './types'; import parseGitUrl from 'git-url-parse'; import { @@ -25,7 +24,7 @@ import { import { Logger } from 'winston'; -export class GitlabPreparer implements PreparerBase { +export class CommonGitPreparer implements PreparerBase { private readonly logger: Logger; constructor(logger: Logger) { @@ -33,15 +32,11 @@ export class GitlabPreparer implements PreparerBase { } async prepare(entity: Entity): Promise { - const { type, target } = parseReferenceAnnotation( + const { target } = parseReferenceAnnotation( 'backstage.io/techdocs-ref', entity, ); - if (type !== 'gitlab') { - throw new InputError(`Wrong target type: ${type}, should be 'gitlab'`); - } - try { const repoPath = await checkoutGitRepository(target, this.logger); const parsedGitLocation = parseGitUrl(target); diff --git a/plugins/techdocs-backend/src/techdocs/stages/prepare/github.ts b/plugins/techdocs-backend/src/techdocs/stages/prepare/github.ts deleted file mode 100644 index a0f91a375a..0000000000 --- a/plugins/techdocs-backend/src/techdocs/stages/prepare/github.ts +++ /dev/null @@ -1,55 +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 path from 'path'; -import { Entity } from '@backstage/catalog-model'; -import { InputError } from '@backstage/backend-common'; -import { PreparerBase } from './types'; -import parseGitUrl from 'git-url-parse'; -import { - parseReferenceAnnotation, - checkoutGitRepository, -} from '../../../helpers'; - -import { Logger } from 'winston'; - -export class GithubPreparer implements PreparerBase { - private readonly logger: Logger; - - constructor(logger: Logger) { - this.logger = logger; - } - - async prepare(entity: Entity): Promise { - const { type, target } = parseReferenceAnnotation( - 'backstage.io/techdocs-ref', - entity, - ); - - if (type !== 'github') { - throw new InputError(`Wrong target type: ${type}, should be 'github'`); - } - - try { - const repoPath = await checkoutGitRepository(target, this.logger); - - const parsedGitLocation = parseGitUrl(target); - return path.join(repoPath, parsedGitLocation.filepath); - } catch (error) { - this.logger.debug(`Repo checkout failed with error ${error.message}`); - throw error; - } - } -} diff --git a/plugins/techdocs-backend/src/techdocs/stages/prepare/gitlab.test.ts b/plugins/techdocs-backend/src/techdocs/stages/prepare/gitlab.test.ts deleted file mode 100644 index 75cad50224..0000000000 --- a/plugins/techdocs-backend/src/techdocs/stages/prepare/gitlab.test.ts +++ /dev/null @@ -1,64 +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 { getVoidLogger } from '@backstage/backend-common'; -import { GitlabPreparer } from './gitlab'; -import { checkoutGitRepository } from '../../../helpers'; - -function normalizePath(path: string) { - return path - .replace(/^[a-z]:/i, '') - .split('\\') - .join('/'); -} - -jest.mock('../../../helpers', () => ({ - ...jest.requireActual<{}>('../../../helpers'), - checkoutGitRepository: jest.fn(() => '/tmp/backstage-repo/org/name/branch'), -})); - -const createMockEntity = (annotations = {}) => { - return { - apiVersion: 'version', - kind: 'TestKind', - metadata: { - name: 'test-component-name', - annotations: { - ...annotations, - }, - }, - }; -}; - -const logger = getVoidLogger(); - -describe('gitlab preparer', () => { - it('should prepare temp docs path from gitlab repo', async () => { - const preparer = new GitlabPreparer(logger); - - // TODO: fix url repo - const mockEntity = createMockEntity({ - 'backstage.io/techdocs-ref': - 'gitlab:https://gitlab.com/xesjkeee/go-logger/blob/master/catalog-info.yaml', - }); - - const tempDocsPath = await preparer.prepare(mockEntity); - expect(checkoutGitRepository).toHaveBeenCalledTimes(1); - expect(normalizePath(tempDocsPath)).toEqual( - '/tmp/backstage-repo/org/name/branch/catalog-info.yaml', - ); - }); -}); diff --git a/plugins/techdocs-backend/src/techdocs/stages/prepare/index.ts b/plugins/techdocs-backend/src/techdocs/stages/prepare/index.ts index 249854f7ee..46e1d84c69 100644 --- a/plugins/techdocs-backend/src/techdocs/stages/prepare/index.ts +++ b/plugins/techdocs-backend/src/techdocs/stages/prepare/index.ts @@ -14,8 +14,6 @@ * limitations under the License. */ export { DirectoryPreparer } from './dir'; -export { GithubPreparer } from './github'; -export { GitlabPreparer } from './gitlab'; -export { AzurePreparer } from './azure'; +export { CommonGitPreparer } from './commonGit'; export { Preparers } from './preparers'; export type { PreparerBuilder, PreparerBase } from './types'; From 46b9ae82ba111a7f9ecfed0bcb419357ab413cc3 Mon Sep 17 00:00:00 2001 From: Oliver Sand Date: Tue, 13 Oct 2020 09:45:25 +0200 Subject: [PATCH 061/323] Add filters to API Explorer (#2830) * fix: support nested fields in table filter Add support for nested fields like metadata.name to the table filters. Previously only top-level fields were allowed. In addition, support for filtering on fields that are arrays is introduced (like tags). Filters are now distinct. * feat: introduce table filters to the api explorer * fix: allow to close select in multiple mode * fix: export TableFilter --- .../core/src/components/Select/Select.tsx | 48 ++++---- .../core/src/components/Table/Filters.tsx | 2 +- packages/core/src/components/Table/Table.tsx | 107 ++++++++++++++---- packages/core/src/components/Table/index.ts | 4 +- .../ApiExplorerPage/ApiExplorerPage.test.tsx | 2 +- .../ApiExplorerPage/ApiExplorerPage.tsx | 1 - .../ApiExplorerTable.test.tsx | 8 +- .../ApiExplorerTable/ApiExplorerTable.tsx | 27 ++++- 8 files changed, 133 insertions(+), 66 deletions(-) diff --git a/packages/core/src/components/Select/Select.tsx b/packages/core/src/components/Select/Select.tsx index a2efcc7725..1c691340b2 100644 --- a/packages/core/src/components/Select/Select.tsx +++ b/packages/core/src/components/Select/Select.tsx @@ -14,25 +14,23 @@ * limitations under the License. */ -import React, { useEffect, useState } from 'react'; +import { + Checkbox, + Chip, + ClickAwayListener, + FormControl, + InputBase, + MenuItem, + Select, + Typography, +} from '@material-ui/core'; import { createStyles, makeStyles, - withStyles, Theme, + withStyles, } from '@material-ui/core/styles'; - -import { - FormControl, - Select, - MenuItem, - InputBase, - Chip, - Typography, - Checkbox, - ClickAwayListener, -} from '@material-ui/core'; - +import React, { useEffect, useState } from 'react'; import ClosedDropdown from './static/ClosedDropdown'; import OpenedDropdown from './static/OpenedDropdown'; @@ -111,7 +109,7 @@ export const SelectComponent = (props: SelectProps) => { const [value, setValue] = useState( multiple ? [] : '', ); - const [canOpen, setCanOpen] = React.useState(false); + const [isOpen, setOpen] = useState(false); useEffect(() => { setValue(multiple ? [] : ''); @@ -122,19 +120,17 @@ export const SelectComponent = (props: SelectProps) => { onChange(event.target.value); }; - const selectHandleOnOpen = () => { - setCanOpen(previous => { - if (multiple) { + const handleClick = (event: React.ChangeEvent) => { + setOpen(previous => { + if (multiple && !(event.target instanceof HTMLElement)) { return true; } return !previous; }); }; - const handleClickAway = (event: React.ChangeEvent) => { - if (event.target.id !== 'menu-item') { - setCanOpen(false); - } + const handleClickAway = () => { + setOpen(false); }; const handleDelete = (selectedValue: string | number) => () => { @@ -154,8 +150,8 @@ export const SelectComponent = (props: SelectProps) => { displayEmpty multiple={multiple} onChange={handleChange} - onClick={selectHandleOnOpen} - open={canOpen} + onClick={handleClick} + open={isOpen} input={} renderValue={selected => multiple && (value as any[]).length !== 0 ? ( @@ -181,7 +177,7 @@ export const SelectComponent = (props: SelectProps) => { ) } IconComponent={() => - !canOpen ? : + !isOpen ? : } MenuProps={{ anchorOrigin: { @@ -200,7 +196,7 @@ export const SelectComponent = (props: SelectProps) => { )} {items && items.map(item => ( - + {multiple && ( (theme => ({ }, })); -type Without = Pick>; +export type Without = Pick>; export type Filter = { type: 'select' | 'checkbox-tree' | 'multiple-select'; diff --git a/packages/core/src/components/Table/Table.tsx b/packages/core/src/components/Table/Table.tsx index 5d0b7d8344..87ad50e58f 100644 --- a/packages/core/src/components/Table/Table.tsx +++ b/packages/core/src/components/Table/Table.tsx @@ -45,7 +45,9 @@ import MTable, { Options, } from 'material-table'; import React, { forwardRef, useCallback, useEffect, useState } from 'react'; -import { Filters, SelectedFilters } from './Filters'; +import { CheckboxTreeProps } from '../CheckboxTree/CheckboxTree'; +import { SelectProps } from '../Select/Select'; +import { Filter, Filters, SelectedFilters, Without } from './Filters'; const tableIcons = { Add: forwardRef((props, ref: React.Ref) => ( @@ -101,6 +103,23 @@ const tableIcons = { )), }; +// TODO: Material table might already have such a function internally that we can use? +function extractValueByField(data: any, field: string): any | undefined { + const path = field.split('.'); + let value = data[path[0]]; + + for (let i = 1; i < path.length; ++i) { + if (value === undefined) { + return value; + } + + const f = path[i]; + value = value[f]; + } + + return value; +} + const useHeaderStyles = makeStyles(theme => ({ header: { padding: theme.spacing(1, 2, 1, 2.5), @@ -234,11 +253,21 @@ export function Table({ el => !!Object.entries(selectedFilters) .filter(([, value]) => !!value.length) - .every(([key, value]) => { - if (Array.isArray(value)) { - return value.includes(el[getFieldByTitle(key)]); + .every(([key, filterValue]) => { + const fieldValue = extractValueByField( + el, + getFieldByTitle(key) as string, + ); + + if (Array.isArray(fieldValue) && Array.isArray(filterValue)) { + return fieldValue.some(v => filterValue.includes(v)); + } else if (Array.isArray(fieldValue)) { + return fieldValue.includes(filterValue); + } else if (Array.isArray(filterValue)) { + return filterValue.includes(fieldValue); } - return el[getFieldByTitle(key)] === value; + + return fieldValue === filterValue; }), ); setTableData(newData); @@ -248,29 +277,61 @@ export function Table({ setSelectedFiltersLength(selectedFiltersArray.flat().length); }, [data, selectedFilters, getFieldByTitle]); - const constructFilters = (filterConfig: TableFilter[], dataValue: any[]) => { - const extractColumnData = (column: string | keyof T) => - dataValue.map(el => ({ label: el[column], options: [] })); + const constructFilters = ( + filterConfig: TableFilter[], + dataValue: any[], + ): Filter[] => { + const extractDistinctValues = (field: string | keyof T): Set => { + const distinctValues = new Set(); + const addValue = (value: any) => { + if (value !== undefined && value !== null) { + distinctValues.add(value); + } + }; + + dataValue.forEach(el => { + const value = extractValueByField(el, getFieldByTitle(field) as string); + + if (Array.isArray(value)) { + (value as []).forEach(addValue); + } else { + addValue(value); + } + }); + + return distinctValues; + }; + + const constructCheckboxTree = ( + filter: TableFilter, + ): Without => ({ + label: filter.column, + subCategories: [...extractDistinctValues(filter.column)].map(v => ({ + label: v, + options: [], + })), + }); + + const constructSelect = ( + filter: TableFilter, + ): Without => { + return { + placeholder: 'All results', + label: filter.column, + multiple: filter.type === 'multiple-select', + items: [...extractDistinctValues(filter.column)].map(value => ({ + label: value, + value, + })), + }; + }; return filterConfig.map(filter => ({ type: filter.type, element: filter.type === 'checkbox-tree' - ? { - label: filter.column, - subCategories: extractColumnData( - getFieldByTitle(filter.column) || '', - ), - } - : { - placeholder: 'All results', - label: filter.column, - multiple: filter.type === 'multiple-select', - items: dataValue.map(el => ({ - label: el[getFieldByTitle(filter.column) || ''], - value: el[getFieldByTitle(filter.column) || ''], - })), - }, + ? constructCheckboxTree(filter) + : constructSelect(filter), })); }; diff --git a/packages/core/src/components/Table/index.ts b/packages/core/src/components/Table/index.ts index c10399dc59..9cb8478688 100644 --- a/packages/core/src/components/Table/index.ts +++ b/packages/core/src/components/Table/index.ts @@ -14,6 +14,6 @@ * limitations under the License. */ -export { Table } from './Table'; -export type { TableColumn, TableProps } from './Table'; export { SubvalueCell } from './SubvalueCell'; +export { Table } from './Table'; +export type { TableColumn, TableFilter, TableProps } from './Table'; diff --git a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerPage.test.tsx b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerPage.test.tsx index e386f281e8..46cf014134 100644 --- a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerPage.test.tsx +++ b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerPage.test.tsx @@ -72,6 +72,6 @@ describe('ApiCatalogPage', () => { // https://github.com/mbrn/material-table/issues/1293 it('should render', async () => { const { findByText } = renderWrapped(); - expect(await findByText(/APIs \(2\)/)).toBeInTheDocument(); + expect(await findByText(/Backstage API Explorer/)).toBeInTheDocument(); }); }); diff --git a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerPage.tsx b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerPage.tsx index b6440edc3a..c6a8d62b58 100644 --- a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerPage.tsx +++ b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerPage.tsx @@ -44,7 +44,6 @@ export const ApiExplorerPage = () => { All your APIs { wrapInTestApp( { const rendered = render( wrapInTestApp( - + , ), ); - expect(rendered.getByText(/APIs \(3\)/)).toBeInTheDocument(); expect(rendered.getByText(/api1/)).toBeInTheDocument(); expect(rendered.getByText(/api2/)).toBeInTheDocument(); expect(rendered.getByText(/api3/)).toBeInTheDocument(); diff --git a/plugins/api-docs/src/components/ApiExplorerTable/ApiExplorerTable.tsx b/plugins/api-docs/src/components/ApiExplorerTable/ApiExplorerTable.tsx index 485fcc216d..f3be9f664b 100644 --- a/plugins/api-docs/src/components/ApiExplorerTable/ApiExplorerTable.tsx +++ b/plugins/api-docs/src/components/ApiExplorerTable/ApiExplorerTable.tsx @@ -15,7 +15,7 @@ */ import { ApiEntityV1alpha1, Entity } from '@backstage/catalog-model'; -import { Table, TableColumn, useApi } from '@backstage/core'; +import { Table, TableFilter, TableColumn, useApi } from '@backstage/core'; import { Chip, Link } from '@material-ui/core'; import { Alert } from '@material-ui/lab'; import React from 'react'; @@ -90,9 +90,27 @@ const columns: TableColumn[] = [ }, ]; +const filters: TableFilter[] = [ + { + column: 'Owner', + type: 'select', + }, + { + column: 'Type', + type: 'multiple-select', + }, + { + column: 'Lifecycle', + type: 'multiple-select', + }, + { + column: 'Tags', + type: 'checkbox-tree', + }, +]; + type ExplorerTableProps = { entities: Entity[]; - titlePreamble: string; loading: boolean; error?: any; }; @@ -101,7 +119,6 @@ export const ApiExplorerTable = ({ entities, loading, error, - titlePreamble, }: ExplorerTableProps) => { if (error) { return ( @@ -114,7 +131,7 @@ export const ApiExplorerTable = ({ } return ( - + ); }; From d694fd5feef0439bfa723036659082ca41e486d4 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 13 Oct 2020 13:49:30 +0200 Subject: [PATCH 062/323] chore(lighthouse): need to rewrite some of these tests to remove the jest-fetch-mock dependency --- .../src/components/ProfileCatalog/ProfileCatalog.test.tsx | 2 -- .../src/components/AuditList/AuditListForEntity.test.tsx | 3 +-- .../src/components/AuditList/AuditListTable.test.tsx | 8 +++++--- .../lighthouse/src/components/AuditList/index.test.tsx | 7 +++---- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/plugins/gitops-profiles/src/components/ProfileCatalog/ProfileCatalog.test.tsx b/plugins/gitops-profiles/src/components/ProfileCatalog/ProfileCatalog.test.tsx index 06074ff84d..f01ac70e64 100644 --- a/plugins/gitops-profiles/src/components/ProfileCatalog/ProfileCatalog.test.tsx +++ b/plugins/gitops-profiles/src/components/ProfileCatalog/ProfileCatalog.test.tsx @@ -16,7 +16,6 @@ import React from 'react'; import { render } from '@testing-library/react'; -import mockFetch from 'jest-fetch-mock'; import ProfileCatalog from './ProfileCatalog'; import { ThemeProvider } from '@material-ui/core'; import { lightTheme } from '@backstage/theme'; @@ -45,7 +44,6 @@ describe('ProfileCatalog', () => { }), ], ]); - mockFetch.mockResponse(() => new Promise(() => {})); const rendered = render( diff --git a/plugins/lighthouse/src/components/AuditList/AuditListForEntity.test.tsx b/plugins/lighthouse/src/components/AuditList/AuditListForEntity.test.tsx index 7f10914d9c..15a4ba3255 100644 --- a/plugins/lighthouse/src/components/AuditList/AuditListForEntity.test.tsx +++ b/plugins/lighthouse/src/components/AuditList/AuditListForEntity.test.tsx @@ -22,7 +22,6 @@ import { LighthouseRestApi, WebsiteListResponse, } from '../../api'; -import mockFetch from 'jest-fetch-mock'; import * as data from '../../__fixtures__/website-list-response.json'; import { EntityContext } from '@backstage/plugin-catalog'; @@ -53,7 +52,7 @@ describe('', () => { [lighthouseApiRef, new LighthouseRestApi('http://lighthouse')], [errorApiRef, mockErrorApi], ]); - mockFetch.mockResponse(JSON.stringify(entityWebsite)); + (useWebsiteForEntity as jest.Mock).mockReturnValue({ value: entityWebsite, loading: false, diff --git a/plugins/lighthouse/src/components/AuditList/AuditListTable.test.tsx b/plugins/lighthouse/src/components/AuditList/AuditListTable.test.tsx index e67f939ba1..5c67fec10a 100644 --- a/plugins/lighthouse/src/components/AuditList/AuditListTable.test.tsx +++ b/plugins/lighthouse/src/components/AuditList/AuditListTable.test.tsx @@ -16,7 +16,7 @@ import React from 'react'; import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { wrapInTestApp, msw } from '@backstage/test-utils'; import { ApiRegistry, ApiProvider } from '@backstage/core'; import AuditListTable from './AuditListTable'; @@ -26,7 +26,7 @@ import { LighthouseRestApi, } from '../../api'; import { formatTime } from '../../utils'; -import mockFetch from 'jest-fetch-mock'; +import { setupServer } from 'msw/node'; import * as data from '../../__fixtures__/website-list-response.json'; @@ -35,11 +35,13 @@ const websiteListResponse = data as WebsiteListResponse; describe('AuditListTable', () => { let apis: ApiRegistry; + const server = setupServer(); + msw.setupDefaultHandlers(server); + beforeEach(() => { apis = ApiRegistry.from([ [lighthouseApiRef, new LighthouseRestApi('http://lighthouse')], ]); - mockFetch.mockResponse(JSON.stringify(websiteListResponse)); }); const auditList = (websiteList: WebsiteListResponse) => { diff --git a/plugins/lighthouse/src/components/AuditList/index.test.tsx b/plugins/lighthouse/src/components/AuditList/index.test.tsx index 34fd760801..bc75cc5d98 100644 --- a/plugins/lighthouse/src/components/AuditList/index.test.tsx +++ b/plugins/lighthouse/src/components/AuditList/index.test.tsx @@ -24,7 +24,6 @@ jest.mock('react-router-dom', () => { }); import React from 'react'; -import mockFetch from 'jest-fetch-mock'; import { render, fireEvent } from '@testing-library/react'; import { ApiRegistry, ApiProvider } from '@backstage/core'; import { wrapInTestApp } from '@backstage/test-utils'; @@ -48,7 +47,6 @@ describe('AuditList', () => { apis = ApiRegistry.from([ [lighthouseApiRef, new LighthouseRestApi('http://lighthouse')], ]); - mockFetch.mockResponse(JSON.stringify(websiteListResponse)); }); it('should render the table', async () => { @@ -74,10 +72,10 @@ describe('AuditList', () => { const button = await rendered.findByText('Create Audit'); expect(button).toBeInTheDocument(); }); - + /* need to rewrite these tests */ + /* describe('pagination', () => { it('requests the correct limit and offset from the api based on the query', () => { - mockFetch.mockClear(); render( wrapInTestApp( @@ -173,4 +171,5 @@ describe('AuditList', () => { expect(element).toBeInTheDocument(); }); }); + */ }); From 9cc95aa90f3ff2957ef7a7c782ebca091cbd0f91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 13 Oct 2020 17:12:19 +0200 Subject: [PATCH 063/323] fix(templates): add some jsonify to fix escaping issues --- .../{{cookiecutter.component_id}}/component-info.yaml | 8 ++++---- .../{{cookiecutter.component_id}}/mkdocs.yml | 6 +++--- .../{{cookiecutter.component_id}}/component-info.yaml | 8 ++++---- .../{{cookiecutter.component_id}}/mkdocs.yml | 4 ++-- .../{{cookiecutter.component_id}}/component-info.yaml | 8 ++++---- .../{{cookiecutter.component_id}}/mkdocs.yml | 4 ++-- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/plugins/scaffolder-backend/sample-templates/docs-template/{{cookiecutter.component_id}}/component-info.yaml b/plugins/scaffolder-backend/sample-templates/docs-template/{{cookiecutter.component_id}}/component-info.yaml index 854b692fcf..e39350e928 100644 --- a/plugins/scaffolder-backend/sample-templates/docs-template/{{cookiecutter.component_id}}/component-info.yaml +++ b/plugins/scaffolder-backend/sample-templates/docs-template/{{cookiecutter.component_id}}/component-info.yaml @@ -1,12 +1,12 @@ apiVersion: backstage.io/v1alpha1 kind: Component metadata: - name: {{cookiecutter.component_id}} - description: {{cookiecutter.description}} + name: {{cookiecutter.component_id | jsonify}} + description: {{cookiecutter.description | jsonify}} annotations: - github.com/project-slug: {{cookiecutter.storePath}} + github.com/project-slug: {{cookiecutter.storePath | jsonify}} backstage.io/techdocs-ref: github:https://github.com/{{cookiecutter.storePath}} spec: type: documentation lifecycle: experimental - owner: {{cookiecutter.owner}} + owner: {{cookiecutter.owner | jsonify}} diff --git a/plugins/scaffolder-backend/sample-templates/docs-template/{{cookiecutter.component_id}}/mkdocs.yml b/plugins/scaffolder-backend/sample-templates/docs-template/{{cookiecutter.component_id}}/mkdocs.yml index 2126971502..64f1e9ee8e 100644 --- a/plugins/scaffolder-backend/sample-templates/docs-template/{{cookiecutter.component_id}}/mkdocs.yml +++ b/plugins/scaffolder-backend/sample-templates/docs-template/{{cookiecutter.component_id}}/mkdocs.yml @@ -1,7 +1,7 @@ -site_name: {{cookiecutter.component_id}} -site_description: {{cookiecutter.description}} +site_name: {{cookiecutter.component_id | jsonify}} +site_description: {{cookiecutter.description | jsonify}} -nav: +nav: - Introduction: index.md plugins: diff --git a/plugins/scaffolder-backend/sample-templates/react-ssr-template/{{cookiecutter.component_id}}/component-info.yaml b/plugins/scaffolder-backend/sample-templates/react-ssr-template/{{cookiecutter.component_id}}/component-info.yaml index f6e1d2c8d9..423c8683a1 100644 --- a/plugins/scaffolder-backend/sample-templates/react-ssr-template/{{cookiecutter.component_id}}/component-info.yaml +++ b/plugins/scaffolder-backend/sample-templates/react-ssr-template/{{cookiecutter.component_id}}/component-info.yaml @@ -1,12 +1,12 @@ apiVersion: backstage.io/v1alpha1 kind: Component metadata: - name: {{cookiecutter.component_id}} - description: {{cookiecutter.description}} + name: {{cookiecutter.component_id | jsonify}} + description: {{cookiecutter.description | jsonify}} annotations: - github.com/project-slug: {{cookiecutter.storePath}} + github.com/project-slug: {{cookiecutter.storePath | jsonify}} backstage.io/techdocs-ref: github:https://github.com/{{cookiecutter.storePath}} spec: type: website lifecycle: experimental - owner: {{cookiecutter.owner}} + owner: {{cookiecutter.owner | jsonify}} diff --git a/plugins/scaffolder-backend/sample-templates/react-ssr-template/{{cookiecutter.component_id}}/mkdocs.yml b/plugins/scaffolder-backend/sample-templates/react-ssr-template/{{cookiecutter.component_id}}/mkdocs.yml index 0d10d11063..64f1e9ee8e 100644 --- a/plugins/scaffolder-backend/sample-templates/react-ssr-template/{{cookiecutter.component_id}}/mkdocs.yml +++ b/plugins/scaffolder-backend/sample-templates/react-ssr-template/{{cookiecutter.component_id}}/mkdocs.yml @@ -1,5 +1,5 @@ -site_name: {{cookiecutter.component_id}} -site_description: {{cookiecutter.description}} +site_name: {{cookiecutter.component_id | jsonify}} +site_description: {{cookiecutter.description | jsonify}} nav: - Introduction: index.md diff --git a/plugins/scaffolder-backend/sample-templates/springboot-grpc-template/{{cookiecutter.component_id}}/component-info.yaml b/plugins/scaffolder-backend/sample-templates/springboot-grpc-template/{{cookiecutter.component_id}}/component-info.yaml index 05b87c9c0c..f4ff350d10 100644 --- a/plugins/scaffolder-backend/sample-templates/springboot-grpc-template/{{cookiecutter.component_id}}/component-info.yaml +++ b/plugins/scaffolder-backend/sample-templates/springboot-grpc-template/{{cookiecutter.component_id}}/component-info.yaml @@ -1,12 +1,12 @@ apiVersion: backstage.io/v1alpha1 kind: Component metadata: - name: {{cookiecutter.component_id}} - description: {{cookiecutter.description}} + name: {{cookiecutter.component_id | jsonify}} + description: {{cookiecutter.description | jsonify}} annotations: - github.com/project-slug: {{cookiecutter.storePath}} + github.com/project-slug: {{cookiecutter.storePath | jsonify}} backstage.io/techdocs-ref: github:https://github.com/{{cookiecutter.storePath}} spec: type: service lifecycle: experimental - owner: {{cookiecutter.owner}} + owner: {{cookiecutter.owner | jsonify}} diff --git a/plugins/scaffolder-backend/sample-templates/springboot-grpc-template/{{cookiecutter.component_id}}/mkdocs.yml b/plugins/scaffolder-backend/sample-templates/springboot-grpc-template/{{cookiecutter.component_id}}/mkdocs.yml index 0d10d11063..64f1e9ee8e 100644 --- a/plugins/scaffolder-backend/sample-templates/springboot-grpc-template/{{cookiecutter.component_id}}/mkdocs.yml +++ b/plugins/scaffolder-backend/sample-templates/springboot-grpc-template/{{cookiecutter.component_id}}/mkdocs.yml @@ -1,5 +1,5 @@ -site_name: {{cookiecutter.component_id}} -site_description: {{cookiecutter.description}} +site_name: {{cookiecutter.component_id | jsonify}} +site_description: {{cookiecutter.description | jsonify}} nav: - Introduction: index.md From 1268eadd193f7e93ba41f9781d63bdcb29582baa Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Tue, 13 Oct 2020 16:01:50 -0400 Subject: [PATCH 064/323] add metric comparison to top panel --- app-config.yaml | 7 +- .../ExampleCostInsightsClient.ts | 44 ++-- .../cost-insights/src/api/CostInsightsApi.ts | 29 +-- .../CostInsightsPage/CostInsightsPage.tsx | 41 ++-- .../CostOverviewCard/CostOverviewCard.tsx | 94 ++++++--- .../CostOverviewCard/CostOverviewChart.tsx | 188 ++++++++++++++++++ .../CostOverviewTooltip.tsx | 21 +- .../CostOverviewChart.test.tsx | 50 ----- .../CostOverviewChart/CostOverviewChart.tsx | 120 ----------- .../src/components/CostOverviewChart/index.ts | 17 -- .../CostOverviewChartLegend.test.tsx | 40 ---- .../CostOverviewChartLegend.tsx | 48 ----- plugins/cost-insights/src/hooks/useConfig.tsx | 29 ++- .../cost-insights/src/hooks/useFilters.tsx | 5 +- .../src/types/ChangeStatistic.ts | 13 ++ .../index.ts => types/ChartData.tsx} | 7 +- plugins/cost-insights/src/types/Cost.ts | 4 + plugins/cost-insights/src/types/Filters.ts | 2 +- plugins/cost-insights/src/types/Metric.ts | 3 +- plugins/cost-insights/src/types/index.ts | 1 + plugins/cost-insights/src/utils/charts.ts | 39 ++++ plugins/cost-insights/src/utils/graphs.tsx | 7 +- 22 files changed, 417 insertions(+), 392 deletions(-) create mode 100644 plugins/cost-insights/src/components/CostOverviewCard/CostOverviewChart.tsx rename plugins/cost-insights/src/components/{CostOverviewChart => CostOverviewCard}/CostOverviewTooltip.tsx (72%) delete mode 100644 plugins/cost-insights/src/components/CostOverviewChart/CostOverviewChart.test.tsx delete mode 100644 plugins/cost-insights/src/components/CostOverviewChart/CostOverviewChart.tsx delete mode 100644 plugins/cost-insights/src/components/CostOverviewChart/index.ts delete mode 100644 plugins/cost-insights/src/components/CostOverviewChartLegend/CostOverviewChartLegend.test.tsx delete mode 100644 plugins/cost-insights/src/components/CostOverviewChartLegend/CostOverviewChartLegend.tsx rename plugins/cost-insights/src/{components/CostOverviewChartLegend/index.ts => types/ChartData.tsx} (84%) create mode 100644 plugins/cost-insights/src/utils/charts.ts diff --git a/app-config.yaml b/app-config.yaml index 228eafc588..aad474ea33 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -237,9 +237,12 @@ costInsights: icon: search metrics: dailyCost: - name: Your Company's Daily Cost + name: Pied Piper's Daily Cost + compare: DAU DAU: - name: Cost Per DAU + name: Daily Active Users + MSC: + name: Monthly Active Subscribers homepage: clocks: - label: UTC diff --git a/packages/app/src/plugins/cost-insights/ExampleCostInsightsClient.ts b/packages/app/src/plugins/cost-insights/ExampleCostInsightsClient.ts index aa795e9eee..fc2249fadc 100644 --- a/packages/app/src/plugins/cost-insights/ExampleCostInsightsClient.ts +++ b/packages/app/src/plugins/cost-insights/ExampleCostInsightsClient.ts @@ -28,6 +28,7 @@ import { Group, inclusiveStartDateOf, Maybe, + MetricData, ProductCost, Project, ProjectGrowthAlert, @@ -116,19 +117,33 @@ export class ExampleCostInsightsClient implements CostInsightsApi { return projects; } - async getGroupDailyCost( - group: string, + async getMetricData( metric: string | null, intervals: string, - ): Promise { + ): Promise { const aggregation = aggregationFor( durationOf(intervals), - metric ? 0.3 : 8_000, - ); - const groupDailyCost: Cost = await this.request( - { group, metric, intervals }, + 100_000, + ).map(entry => ({ ...entry, amount: Math.round(entry.amount) })); + + const cost: MetricData = await this.request( + { metric, intervals }, + { + format: 'number', + aggregation: aggregation, + change: changeOf(aggregation), + trendline: trendlineOf(aggregation), + }, + ); + + return cost; + } + + async getGroupDailyCost(group: string, intervals: string): Promise { + const aggregation = aggregationFor(durationOf(intervals), 8_000); + const groupDailyCost: Cost = await this.request( + { group, intervals }, { - id: metric, // costs with null ids will appear as "All Projects" in Cost Overview panel aggregation: aggregation, change: changeOf(aggregation), trendline: trendlineOf(aggregation), @@ -138,17 +153,10 @@ export class ExampleCostInsightsClient implements CostInsightsApi { return groupDailyCost; } - async getProjectDailyCost( - project: string, - metric: string | null, - intervals: string, - ): Promise { - const aggregation = aggregationFor( - durationOf(intervals), - metric ? 0.1 : 1_500, - ); + async getProjectDailyCost(project: string, intervals: string): Promise { + const aggregation = aggregationFor(durationOf(intervals), 1_500); const projectDailyCost: Cost = await this.request( - { project, metric, intervals }, + { project, intervals }, { id: 'project-a', aggregation: aggregation, diff --git a/plugins/cost-insights/src/api/CostInsightsApi.ts b/plugins/cost-insights/src/api/CostInsightsApi.ts index bdf673b7d1..52b3f335d9 100644 --- a/plugins/cost-insights/src/api/CostInsightsApi.ts +++ b/plugins/cost-insights/src/api/CostInsightsApi.ts @@ -23,6 +23,7 @@ import { Project, ProductCost, Maybe, + MetricData, } from '../types'; export type CostInsightsApi = { @@ -54,16 +55,10 @@ export type CostInsightsApi = { * reduction) and compare it to metrics important to the business. * * @param group The group id from getUserGroups or query parameters - * @param metric A metric from the cost-insights configuration in app-config.yaml. The backend - * should divide the actual daily cost by the corresponding metric for the same date. * @param intervals An ISO 8601 repeating interval string, such as R2/P1M/2020-09-01 * https://en.wikipedia.org/wiki/ISO_8601#Repeating_intervals */ - getGroupDailyCost( - group: string, - metric: string | null, - intervals: string, - ): Promise; + getGroupDailyCost(group: string, intervals: string): Promise; /** * Get daily cost aggregations for a given billing entity (project in GCP, AWS has a similar @@ -78,16 +73,21 @@ export type CostInsightsApi = { * (or reduction) and compare it to metrics important to the business. * * @param project The project id from getGroupProjects or query parameters - * @param metric A metric from the cost-insights configuration in app-config.yaml. The backend - * should divide the actual daily cost by the corresponding metric for the same date. * @param intervals An ISO 8601 repeating interval string, such as R2/P1M/2020-09-01 * https://en.wikipedia.org/wiki/ISO_8601#Repeating_intervals */ - getProjectDailyCost( - project: string, - metric: string | null, - intervals: string, - ): Promise; + getProjectDailyCost(project: string, intervals: string): Promise; + + /** + * Get aggregations for a particular metric and interval timeframe. Teams + * can see metrics important to their business in comparison to the growth + * (or reduction) of a project or group's daily costs. + * + * @param metric A metric from the cost-insights configuration in app-config.yaml. + * @param intervals An ISO 8601 repeating interval string, such as R2/P1M/2020-09-01 + * https://en.wikipedia.org/wiki/ISO_8601#Repeating_intervals + */ + getMetricData(metric: string | null, intervals: string): Promise; /** * Get cost aggregations for a particular cloud product and interval timeframe. This includes @@ -107,6 +107,7 @@ export type CostInsightsApi = { * of how the durations are interpreted in Cost Insights. * @param project (optional) The project id from getGroupProjects or query parameters */ + getProductInsights( product: string, group: string, diff --git a/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsPage.tsx b/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsPage.tsx index 8922ac31e0..9bc396537b 100644 --- a/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsPage.tsx +++ b/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsPage.tsx @@ -39,7 +39,14 @@ import { useCurrency, useConfig, } from '../../hooks'; -import { Alert, Cost, intervalsOf, Maybe, Project } from '../../types'; +import { + Alert, + Cost, + intervalsOf, + Maybe, + MetricData, + Project, +} from '../../types'; import { mapLoadingToProps } from './selector'; import ProjectSelect from '../ProjectSelect'; @@ -48,15 +55,17 @@ const CostInsightsPage = () => { // There is not currently a UI to set feature flags // flags.set('cost-insights-currencies', FeatureFlagState.On); const client = useApi(costInsightsApiRef); - const { currencies } = useConfig(); + const config = useConfig(); const groups = useGroups(); const [currency, setCurrency] = useCurrency(); const [projects, setProjects] = useState>(null); const [dailyCost, setDailyCost] = useState>(null); + const [metricData, setMetricData] = useState>(null); const [alerts, setAlerts] = useState>(null); const [error, setError] = useState>(null); const { pageFilters, setPageFilters } = useFilters(p => p); + const { loadingActions, loadingGroups, @@ -94,26 +103,32 @@ const CostInsightsPage = () => { dispatchLoadingInsights(true); const [ fetchedProjects, - fetchedCosts, fetchedAlerts, + fetchedMetricData, + fetchedCosts, ] = await Promise.all([ client.getGroupProjects(pageFilters.group), + client.getAlerts(pageFilters.group), + pageFilters.metric + ? client.getMetricData( + pageFilters.metric, + intervalsOf(pageFilters.duration), + ) + : null, pageFilters.project ? client.getProjectDailyCost( pageFilters.project, - pageFilters.metric, intervalsOf(pageFilters.duration), ) : client.getGroupDailyCost( pageFilters.group, - pageFilters.metric, intervalsOf(pageFilters.duration), ), - client.getAlerts(pageFilters.group), ]); setProjects(fetchedProjects); - setDailyCost(fetchedCosts); setAlerts(fetchedAlerts); + setMetricData(fetchedMetricData); + setDailyCost(fetchedCosts); } else { dispatchLoadingNone(loadingActions); } @@ -133,11 +148,11 @@ const CostInsightsPage = () => { }, [ client, pageFilters, + loadingActions, loadingGroups, dispatchLoadingInsights, dispatchLoadingInitial, dispatchLoadingNone, - loadingActions, ]); if (loadingInitial) { @@ -166,7 +181,6 @@ const CostInsightsPage = () => { ); } - // These should be defined, alerts can be an empty array but that's truthy if (!dailyCost || !alerts) { return ( @@ -195,7 +209,7 @@ const CostInsightsPage = () => { @@ -253,12 +267,7 @@ const CostInsightsPage = () => { {!!dailyCost.aggregation.length && ( - + )} diff --git a/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewCard.tsx b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewCard.tsx index b8d1be5d01..7f270e2374 100644 --- a/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewCard.tsx +++ b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewCard.tsx @@ -15,42 +15,41 @@ */ import React from 'react'; -import { Box, Card, CardContent, Divider } from '@material-ui/core'; -import CostOverviewChart from '../CostOverviewChart'; -import CostOverviewChartLegend from '../CostOverviewChartLegend'; +import { Box, Card, CardContent, Divider, useTheme } from '@material-ui/core'; +import CostGrowth from '../CostGrowth'; +import CostOverviewChart from './CostOverviewChart'; import CostOverviewHeader from './CostOverviewHeader'; +import LegendItem from '../LegendItem'; import MetricSelect from '../MetricSelect'; import PeriodSelect from '../PeriodSelect'; import { useScroll, useFilters, useConfig } from '../../hooks'; import { mapFiltersToProps } from './selector'; import { DefaultNavigation } from '../../utils/navigation'; +import { formatPercent } from '../../utils/formatters'; import { - ChangeStatistic, - DateAggregation, - Project, - Trendline, + Cost, + CostInsightsTheme, + MetricData, findAlways, + getComparedChange, } from '../../types'; -type CostOverviewCardProps = { - change: ChangeStatistic; - aggregation: Array; - trendline: Trendline; - projects: Array; +export type CostOverviewCardProps = { + data: [Cost, MetricData | null]; }; -const CostOverviewCard = ({ - change, - aggregation, - trendline, -}: CostOverviewCardProps) => { - const { metrics } = useConfig(); +const CostOverviewCard = ({ data }: CostOverviewCardProps) => { + const theme = useTheme(); + const config = useConfig(); const { ScrollAnchor } = useScroll(DefaultNavigation.CostOverviewCard); - const { setDuration, setProject, metric, setMetric, ...filters } = useFilters( + const { setDuration, setProject, setMetric, ...filters } = useFilters( mapFiltersToProps, ); - const { name } = findAlways(metrics, m => m.kind === metric); + // There should always be a daily cost metric but a comparison metric is optional. + const dailyCost = findAlways(config.metrics, m => m.kind === null); + const metric = config.metrics.find(m => m.kind === filters.metric); + const comparedChange = data[1] ? getComparedChange(data[0], data[1]) : null; return ( @@ -60,22 +59,53 @@ const CostOverviewCard = ({ - - + + + + + {formatPercent(data[0].change.ratio)} + + + {metric && metric.kind && data[1] && comparedChange && ( + <> + + + {formatPercent(data[1].change.ratio)} + + + + + + + )} + - + {config.metrics.length > 1 && ( + + )} diff --git a/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewChart.tsx b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewChart.tsx new file mode 100644 index 0000000000..40cefbb589 --- /dev/null +++ b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewChart.tsx @@ -0,0 +1,188 @@ +/* + * 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 { useTheme } from '@material-ui/core'; +import { + AxisDomain, + ComposedChart, + XAxis, + YAxis, + Tooltip, + CartesianGrid, + Area, + Line, + ResponsiveContainer, + TooltipPayload, +} from 'recharts'; +import { + ChartData, + Cost, + Metric, + MetricData, + CostInsightsTheme, +} from '../../types'; +import { + overviewGraphTickFormatter, + formatGraphValue, +} from '../../utils/graphs'; +import CostOverviewTooltip from './CostOverviewTooltip'; +import { TooltipItemProps } from '../Tooltip'; +import { NULL_METRIC } from '../../hooks/useConfig'; +import { useCostOverviewStyles as useStyles } from '../../utils/styles'; +import { groupByDate, toDataMax, trendFrom } from '../../utils/charts'; +import { aggregationSort } from '../../utils/sort'; + +type CostOverviewChartProps = { + data: [Cost, MetricData | null]; + name: string; + compare?: Metric; + responsive?: boolean; +}; + +const CostOverviewChart = ({ + data, + name, + compare, + responsive = true, +}: CostOverviewChartProps) => { + const theme = useTheme(); + const styles = useStyles(theme); + + const { dailyCost, metric } = { + dailyCost: { + id: NULL_METRIC, + name: name, + format: 'number', + data: data[0], + }, + metric: { + id: compare?.kind ?? 'Unknown', + name: compare?.name ?? 'Unknown', + format: data[1]?.format ?? 'number', + data: data[1], + }, + }; + + const metricsByDate = metric.data + ? metric.data.aggregation.reduce(groupByDate, {}) + : {}; + + const chartData: ChartData[] = dailyCost + .data!.aggregation.slice() + .sort(aggregationSort) + .map(entry => ({ + date: Date.parse(entry.date), + trend: trendFrom(dailyCost.data!.trendline, Date.parse(entry.date)), + dailyCost: entry.amount, + ...(metric && metric.data + ? { [metric.id]: metricsByDate[`${entry.date}`] } + : {}), + })); + + const metricDataMax: AxisDomain = metric + ? toDataMax(metric.id, chartData) + : 'dataMax'; + + function tooltipFormatter(payload: TooltipPayload): TooltipItemProps { + return { + label: payload.dataKey === dailyCost.id ? dailyCost.name : metric.name, + value: + payload.dataKey === dailyCost.id + ? formatGraphValue(payload.value as number, dailyCost.format) + : formatGraphValue(payload.value as number, metric.format), + fill: + payload.dataKey === dailyCost.id + ? theme.palette.blue + : theme.palette.magenta, + }; + } + + return ( + + + + + 0, 'dataMax']} + tick={{ fill: styles.axis.fill }} + tickFormatter={formatGraphValue} + width={styles.yAxis.width} + yAxisId={dailyCost.id} + /> + {metric && ( + 0, metricDataMax]} + width={styles.yAxis.width} + yAxisId={metric.id} + /> + )} + + + {metric && ( + + )} + + } + animationDuration={100} + /> + + + ); +}; + +export default CostOverviewChart; diff --git a/plugins/cost-insights/src/components/CostOverviewChart/CostOverviewTooltip.tsx b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewTooltip.tsx similarity index 72% rename from plugins/cost-insights/src/components/CostOverviewChart/CostOverviewTooltip.tsx rename to plugins/cost-insights/src/components/CostOverviewCard/CostOverviewTooltip.tsx index 17d466441d..a30f370166 100644 --- a/plugins/cost-insights/src/components/CostOverviewChart/CostOverviewTooltip.tsx +++ b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewTooltip.tsx @@ -16,29 +16,24 @@ import React from 'react'; import moment from 'moment'; import { TooltipPayload, TooltipProps } from 'recharts'; -import Tooltip from '../../components/Tooltip'; +import Tooltip, { TooltipItemProps } from '../../components/Tooltip'; import { DEFAULT_DATE_FORMAT } from '../../types'; -import { formatGraphValue } from '../../utils/graphs'; -type CostOverviewTooltipProps = TooltipProps & { - metric: string; - name: string; +export type CostOverviewTooltipProps = TooltipProps & { + dataKeys: Array; + format: (payload: TooltipPayload) => TooltipItemProps; }; const CostOverviewTooltip = ({ label, payload, - metric, - name, + dataKeys, + format, }: CostOverviewTooltipProps) => { const tooltipLabel = moment(label).format(DEFAULT_DATE_FORMAT); const items = payload - ?.filter(data => data.name === metric) - .map((data: TooltipPayload) => ({ - label: name, - value: formatGraphValue(data.value as number), - fill: data.fill as string, - })); + ?.filter((p: TooltipPayload) => dataKeys.includes(p.dataKey as string)) + .map(p => format(p)); return ; }; diff --git a/plugins/cost-insights/src/components/CostOverviewChart/CostOverviewChart.test.tsx b/plugins/cost-insights/src/components/CostOverviewChart/CostOverviewChart.test.tsx deleted file mode 100644 index e6311d147a..0000000000 --- a/plugins/cost-insights/src/components/CostOverviewChart/CostOverviewChart.test.tsx +++ /dev/null @@ -1,50 +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 CostOverviewChart from './CostOverviewChart'; -import { renderInTestApp } from '@backstage/test-utils'; -import React from 'react'; -import { DateAggregation, Trendline } from '../../types'; -import { CostInsightsThemeProvider } from '../CostInsightsPage/CostInsightsThemeProvider'; - -const mockAggregation = [ - { date: '2020-04-01', amount: 100 }, - { date: '2020-04-02', amount: 101 }, - { date: '2020-04-03', amount: 102 }, - { date: '2020-04-04', amount: 103 }, -] as Array; - -const mockTrendline = { slope: 0.3, intercept: 101.5 } as Trendline; -const mockMetric = 'mock-metric'; - -describe('', () => { - it('Renders without exploding', async () => { - const rendered = await renderInTestApp( - - - , - ); - expect( - rendered.container.querySelector('.cost-overview-chart'), - ).toBeInTheDocument(); - }); -}); diff --git a/plugins/cost-insights/src/components/CostOverviewChart/CostOverviewChart.tsx b/plugins/cost-insights/src/components/CostOverviewChart/CostOverviewChart.tsx deleted file mode 100644 index 2b40668409..0000000000 --- a/plugins/cost-insights/src/components/CostOverviewChart/CostOverviewChart.tsx +++ /dev/null @@ -1,120 +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 { - ComposedChart, - XAxis, - YAxis, - Tooltip, - CartesianGrid, - Area, - Line, - ResponsiveContainer, -} from 'recharts'; -import { - Maybe, - DateAggregation, - Trendline, - CostInsightsTheme, -} from '../../types'; -import { - overviewGraphTickFormatter, - formatGraphValue, -} from '../../utils/graphs'; -import CostOverviewTooltip from './CostOverviewTooltip'; -import { useTheme } from '@material-ui/core'; -import { useCostOverviewStyles as useStyles } from '../../utils/styles'; -import { NULL_METRIC } from '../../hooks/useConfig'; - -type CostOverviewChartProps = { - responsive: boolean; - aggregation: Array; - trendline?: Maybe; - metric: string | null; - tooltip: string; -}; - -const CostOverviewChart = ({ - responsive = true, - aggregation, - trendline, - metric, - tooltip, -}: CostOverviewChartProps) => { - const theme = useTheme(); - const styles = useStyles(theme); - - const id = metric ? metric : NULL_METRIC; - - const dailyCostData = aggregation.map((entry: DateAggregation) => ({ - date: Date.parse(entry.date), - [id]: entry.amount, - trend: trendline - ? trendline.slope * (Date.parse(entry.date) / 1000) + trendline.intercept - : null, - })); - - return ( - - - - - 0, 'dataMax']} - tick={{ fill: styles.axis.fill }} - tickFormatter={formatGraphValue} - width={styles.yAxis.width} - yAxisId={id} - /> - - - } - animationDuration={100} - /> - - - ); -}; - -export default CostOverviewChart; diff --git a/plugins/cost-insights/src/components/CostOverviewChart/index.ts b/plugins/cost-insights/src/components/CostOverviewChart/index.ts deleted file mode 100644 index 21f345a282..0000000000 --- a/plugins/cost-insights/src/components/CostOverviewChart/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 { default } from './CostOverviewChart'; diff --git a/plugins/cost-insights/src/components/CostOverviewChartLegend/CostOverviewChartLegend.test.tsx b/plugins/cost-insights/src/components/CostOverviewChartLegend/CostOverviewChartLegend.test.tsx deleted file mode 100644 index a40ff58ec1..0000000000 --- a/plugins/cost-insights/src/components/CostOverviewChartLegend/CostOverviewChartLegend.test.tsx +++ /dev/null @@ -1,40 +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 { renderInTestApp } from '@backstage/test-utils'; -import CostOverviewChartLegend from './CostOverviewChartLegend'; -import React from 'react'; -import { ChangeStatistic } from '../../types'; - -describe('', () => { - it('Correctly displays text if change is not supplied', async () => { - const rendered = await renderInTestApp( - , - ); - expect(rendered.queryByText('Unclear')).toBeInTheDocument(); - }); - it('Correctly displays formatted change percentage', async () => { - const change = { - ratio: 0.3456, - amount: 40000, - } as ChangeStatistic; - const rendered = await renderInTestApp( - , - ); - expect(rendered.queryByText('Unclear')).not.toBeInTheDocument(); - expect(rendered.queryByText('35%')).toBeInTheDocument(); - }); -}); diff --git a/plugins/cost-insights/src/components/CostOverviewChartLegend/CostOverviewChartLegend.tsx b/plugins/cost-insights/src/components/CostOverviewChartLegend/CostOverviewChartLegend.tsx deleted file mode 100644 index 538cd2a63a..0000000000 --- a/plugins/cost-insights/src/components/CostOverviewChartLegend/CostOverviewChartLegend.tsx +++ /dev/null @@ -1,48 +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 { Box, useTheme } from '@material-ui/core'; -import LegendItem from '../LegendItem'; -import { formatPercent } from '../../utils/formatters'; -import { ChangeStatistic, CostInsightsTheme } from '../../types'; - -type CostOverviewChartLegendProps = { - change?: ChangeStatistic; - title: string; - tooltip?: string; -}; - -const CostOverviewChartLegend = ({ - change, - title, - tooltip, -}: CostOverviewChartLegendProps) => { - const theme = useTheme(); - - return ( - - - {change ? formatPercent(change.ratio) : 'Unclear'} - - - ); -}; - -export default CostOverviewChartLegend; diff --git a/plugins/cost-insights/src/hooks/useConfig.tsx b/plugins/cost-insights/src/hooks/useConfig.tsx index aee6567056..a73a7bf301 100644 --- a/plugins/cost-insights/src/hooks/useConfig.tsx +++ b/plugins/cost-insights/src/hooks/useConfig.tsx @@ -42,6 +42,9 @@ export const NULL_METRIC_NAME = 'Daily Cost'; * name: Product B * icon: data * metrics: + * dailyCost: + * name: Daily Cost + * compare: metricA * metricA: * name: Metric A * metricB: @@ -89,6 +92,7 @@ export const ConfigProvider = ({ children }: { children: ReactNode }) => { return metrics.keys().map(key => ({ kind: key === NULL_METRIC ? null : key, name: metrics.getString(`${key}.name`), + compare: metrics.getOptionalString(`${key}.compare`), })); } @@ -115,23 +119,14 @@ export const ConfigProvider = ({ children }: { children: ReactNode }) => { const engineerCost = getEngineerCost(); const icons = getIcons(); - if (metrics.find((m: Metric) => m.kind === null)) { - setConfig(prevState => ({ - ...prevState, - metrics, - products, - engineerCost, - icons, - })); - } else { - setConfig(prevState => ({ - ...prevState, - metrics: [...prevState.metrics, ...metrics], - products, - engineerCost, - icons, - })); - } + setConfig(prevState => ({ + ...prevState, + metrics, + products, + engineerCost, + icons, + })); + setLoading(false); } diff --git a/plugins/cost-insights/src/hooks/useFilters.tsx b/plugins/cost-insights/src/hooks/useFilters.tsx index c2053d6b0f..0ad4c24267 100644 --- a/plugins/cost-insights/src/hooks/useFilters.tsx +++ b/plugins/cost-insights/src/hooks/useFilters.tsx @@ -69,6 +69,7 @@ export const FilterContext = React.createContext< >(undefined); export const FilterProvider = ({ children }: FilterProviderProps) => { + const config = useConfig(); const navigate = useNavigate(); const location = useLocation(); const queryParams = useQueryParams(); @@ -101,7 +102,9 @@ export const FilterProvider = ({ children }: FilterProviderProps) => { // TODO: Figure out why pageFilters doesn't get updated by the above when groups are loaded. useEffect(() => { - setPageFilters(getInitialPageState(groups, queryParams.pageFilters)); + const initialState = getInitialPageState(groups, queryParams.pageFilters); + const compared = config.metrics.find(m => m.kind === null)?.compare; + setPageFilters({ ...initialState, metric: compared || null }); }, [groups]); // eslint-disable-line react-hooks/exhaustive-deps useEffect(() => { diff --git a/plugins/cost-insights/src/types/ChangeStatistic.ts b/plugins/cost-insights/src/types/ChangeStatistic.ts index 538692bb1d..cf7310ef97 100644 --- a/plugins/cost-insights/src/types/ChangeStatistic.ts +++ b/plugins/cost-insights/src/types/ChangeStatistic.ts @@ -14,6 +14,9 @@ * limitations under the License. */ +import { Cost } from './Cost'; +import { aggregationSort } from '../utils/sort'; + export interface ChangeStatistic { // The ratio of change from one duration to another, expressed as: (newSum - oldSum) / oldSum ratio: number; @@ -46,3 +49,13 @@ export function growthOf(amount: number, ratio: number) { return Growth.Negligible; } + +// Used by for displaying engineer totals +export function getComparedChange(a: Cost, b: Cost): ChangeStatistic { + const ratio = a.change.ratio - b.change.ratio; + const amount = a.aggregation.slice().sort(aggregationSort)[0].amount; + return { + ratio: ratio, + amount: amount * ratio, + }; +} diff --git a/plugins/cost-insights/src/components/CostOverviewChartLegend/index.ts b/plugins/cost-insights/src/types/ChartData.tsx similarity index 84% rename from plugins/cost-insights/src/components/CostOverviewChartLegend/index.ts rename to plugins/cost-insights/src/types/ChartData.tsx index 1b6c1fe975..d99e9d9bc3 100644 --- a/plugins/cost-insights/src/components/CostOverviewChartLegend/index.ts +++ b/plugins/cost-insights/src/types/ChartData.tsx @@ -14,4 +14,9 @@ * limitations under the License. */ -export { default } from './CostOverviewChartLegend'; +export type ChartData = { + date: number; + trend: number; + dailyCost: number; + [key: string]: number; +}; diff --git a/plugins/cost-insights/src/types/Cost.ts b/plugins/cost-insights/src/types/Cost.ts index 84a8bfae51..8a9ce3c69b 100644 --- a/plugins/cost-insights/src/types/Cost.ts +++ b/plugins/cost-insights/src/types/Cost.ts @@ -24,3 +24,7 @@ export interface Cost { change: ChangeStatistic; trendline: Trendline; } + +export interface MetricData extends Cost { + format: 'number' | 'currency'; +} diff --git a/plugins/cost-insights/src/types/Filters.ts b/plugins/cost-insights/src/types/Filters.ts index def1d74d1a..f90b9b4c78 100644 --- a/plugins/cost-insights/src/types/Filters.ts +++ b/plugins/cost-insights/src/types/Filters.ts @@ -22,7 +22,7 @@ export interface PageFilters { group: Maybe; project: Maybe; duration: Duration; - metric: Maybe; + metric: string | null; } export type ProductFilters = Array; diff --git a/plugins/cost-insights/src/types/Metric.ts b/plugins/cost-insights/src/types/Metric.ts index 5a440a8d1f..4fa9cd189b 100644 --- a/plugins/cost-insights/src/types/Metric.ts +++ b/plugins/cost-insights/src/types/Metric.ts @@ -14,9 +14,10 @@ * limitations under the License. */ -import { Maybe } from './Maybe'; +import { Maybe } from '../types'; export type Metric = { kind: Maybe; name: string; + compare?: string; }; diff --git a/plugins/cost-insights/src/types/index.ts b/plugins/cost-insights/src/types/index.ts index c3d9a87886..8523c7db7b 100644 --- a/plugins/cost-insights/src/types/index.ts +++ b/plugins/cost-insights/src/types/index.ts @@ -16,6 +16,7 @@ export * from './Alert'; export * from './ChangeStatistic'; +export * from './ChartData'; export * from './Cost'; export * from './DateAggregation'; export * from './Duration'; diff --git a/plugins/cost-insights/src/utils/charts.ts b/plugins/cost-insights/src/utils/charts.ts new file mode 100644 index 0000000000..60a8e85816 --- /dev/null +++ b/plugins/cost-insights/src/utils/charts.ts @@ -0,0 +1,39 @@ +/* + * 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 { DateAggregation, Trendline, ChartData } from '../types'; + +export function trendFrom(trendline: Trendline, date: number): number { + return trendline.slope * (date / 1000) + trendline.intercept; +} + +export function groupByDate( + acc: Record, + entry: DateAggregation, +): Record { + return { ...acc, [entry.date]: entry.amount }; +} + +export function toMaxCost(acc: ChartData, entry: ChartData): ChartData { + return acc.dailyCost > entry.dailyCost ? acc : entry; +} + +export function toDataMax(metric: string, data: ChartData[]): number { + return ( + (data.reduce(toMaxCost).dailyCost / Math.abs(data[0].trend)) * + data[0][metric] + ); +} diff --git a/plugins/cost-insights/src/utils/graphs.tsx b/plugins/cost-insights/src/utils/graphs.tsx index 5200b14b1f..167132cb36 100644 --- a/plugins/cost-insights/src/utils/graphs.tsx +++ b/plugins/cost-insights/src/utils/graphs.tsx @@ -20,10 +20,15 @@ import { lengthyCurrencyFormatter, } from './formatters'; -export function formatGraphValue(value: number) { +export function formatGraphValue(value: number, format?: string) { + if (format === 'number') { + return value.toLocaleString(); + } + if (value < 1) { return lengthyCurrencyFormatter.format(value); } + return currencyFormatter.format(value); } From 94b248e6826bfb9301b2312601e8743e578c94b2 Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Tue, 13 Oct 2020 16:25:24 -0400 Subject: [PATCH 065/323] set default null metric --- plugins/cost-insights/src/hooks/useConfig.tsx | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/plugins/cost-insights/src/hooks/useConfig.tsx b/plugins/cost-insights/src/hooks/useConfig.tsx index a73a7bf301..830cafc4f1 100644 --- a/plugins/cost-insights/src/hooks/useConfig.tsx +++ b/plugins/cost-insights/src/hooks/useConfig.tsx @@ -119,13 +119,23 @@ export const ConfigProvider = ({ children }: { children: ReactNode }) => { const engineerCost = getEngineerCost(); const icons = getIcons(); - setConfig(prevState => ({ - ...prevState, - metrics, - products, - engineerCost, - icons, - })); + if (metrics.find((m: Metric) => m.kind === null)) { + setConfig(prevState => ({ + ...prevState, + metrics, + products, + engineerCost, + icons, + })); + } else { + setConfig(prevState => ({ + ...prevState, + metrics: [...prevState.metrics, ...metrics], + products, + engineerCost, + icons, + })); + } setLoading(false); } From 54504deb135ce71395ad8a5b5505575dac7e220f Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Tue, 13 Oct 2020 16:43:45 -0400 Subject: [PATCH 066/323] tweak custom metric verbiage --- app-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app-config.yaml b/app-config.yaml index aad474ea33..d1414582ed 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -242,7 +242,7 @@ costInsights: DAU: name: Daily Active Users MSC: - name: Monthly Active Subscribers + name: Monthly Subscribers homepage: clocks: - label: UTC From 01876a713a2da98b941d6665a951a027a5bc4582 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Wed, 14 Oct 2020 01:26:19 -0400 Subject: [PATCH 067/323] Fix typo (#2888) --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 85834076d4..7edbc6d17b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -87,7 +87,7 @@ We use [changesets](https://github.com/atlassian/changesets) to help us prepare 1. Run `yarn changeset` 2. Select which packages you want to include a changeset for 3. Select impact of change that you're introducing (minor, major or patch) -4. Add generated changset to Git +4. Add generated changeset to Git 5. Push the commit with your changeset to the branch associated with your PR 6. Accept our gratitude for making the release process easier on the maintainer From c926765a2ceff1beaf7f16ffa186ac1e7023ea37 Mon Sep 17 00:00:00 2001 From: Taras Mankovski Date: Wed, 14 Oct 2020 02:24:41 -0400 Subject: [PATCH 068/323] Allow templates to be located on non-default branch (#2839) * Checkout branch if not on default * Use checkout Ref * Get first directory instead of relying on component_id * Checkout branch when clonning * Update test * Default to empty string * Added changeset * Added test for Cookie Cutter installed & nothing generated * Added comment --- .changeset/happy-ads-behave.md | 5 ++ .../scaffolder/stages/prepare/github.test.ts | 9 ++- .../src/scaffolder/stages/prepare/github.ts | 25 +++--- .../stages/templater/cookiecutter.test.ts | 81 ++++++++++++++++++- .../stages/templater/cookiecutter.ts | 10 ++- 5 files changed, 115 insertions(+), 15 deletions(-) create mode 100644 .changeset/happy-ads-behave.md diff --git a/.changeset/happy-ads-behave.md b/.changeset/happy-ads-behave.md new file mode 100644 index 0000000000..f8b889f85c --- /dev/null +++ b/.changeset/happy-ads-behave.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +Allow templates to be located on non-default branch diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.test.ts b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.test.ts index babdd65c04..de57043a50 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.test.ts @@ -76,7 +76,9 @@ describe('GitHubPreparer', () => { 1, 'https://github.com/benjdlambert/backstage-graphql-template', expect.any(String), - {}, + { + checkoutBranch: 'master', + }, ); }); it('calls the clone command with the correct arguments for a repository when no path is provided', async () => { @@ -87,7 +89,9 @@ describe('GitHubPreparer', () => { 1, 'https://github.com/benjdlambert/backstage-graphql-template', expect.any(String), - {}, + { + checkoutBranch: 'master', + }, ); }); it('return the temp directory with the path to the folder if it is specified', async () => { @@ -107,6 +111,7 @@ describe('GitHubPreparer', () => { 'https://github.com/benjdlambert/backstage-graphql-template', expect.any(String), { + checkoutBranch: 'master', fetchOpts: { callbacks: { credentials: expect.any(Function), diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts index 49703c5616..6eee00f9cb 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/prepare/github.ts @@ -21,7 +21,7 @@ import { parseLocationAnnotation } from '../helpers'; import { InputError } from '@backstage/backend-common'; import { PreparerBase } from './types'; import GitUriParser from 'git-url-parse'; -import { Clone, Cred } from 'nodegit'; +import { Clone, CloneOptions, Cred } from 'nodegit'; export class GithubPreparer implements PreparerBase { token?: string; @@ -52,17 +52,22 @@ export class GithubPreparer implements PreparerBase { template.spec.path ?? '.', ); - const cloneOptions = token - ? { - fetchOpts: { - callbacks: { - credentials() { - return Cred.userpassPlaintextNew(token, 'x-oauth-basic'); - }, + let cloneOptions: CloneOptions = { + checkoutBranch: parsedGitLocation.ref, + }; + + if (token) { + cloneOptions = { + ...cloneOptions, + fetchOpts: { + callbacks: { + credentials() { + return Cred.userpassPlaintextNew(token, 'x-oauth-basic'); }, }, - } - : {}; + }, + }; + } await Clone.clone(repositoryCheckoutUrl, tempDir, cloneOptions); 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 31bcdf189b..106a448d7c 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.test.ts @@ -13,16 +13,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -jest.mock('./helpers', () => ({ runDockerContainer: jest.fn() })); +jest.mock('./helpers', () => ({ + runDockerContainer: jest.fn(), + runCommand: jest.fn(), +})); +jest.mock('command-exists-promise', () => jest.fn()); import { CookieCutter } from './cookiecutter'; import fs from 'fs-extra'; import os from 'os'; import path from 'path'; -import { RunDockerContainerOptions } from './helpers'; +import { RunDockerContainerOptions, RunCommandOptions } from './helpers'; import { PassThrough } from 'stream'; import Docker from 'dockerode'; +const commandExists = require('command-exists-promise'); + describe('CookieCutter Templater', () => { const cookie = new CookieCutter(); const mockDocker = {} as Docker; @@ -32,6 +38,10 @@ describe('CookieCutter Templater', () => { runDockerContainer: jest.Mock; } = require('./helpers'); + jest + .spyOn(fs, 'readdir') + .mockImplementation(() => Promise.resolve(['newthing'])); + beforeEach(async () => { jest.clearAllMocks(); }); @@ -174,4 +184,71 @@ describe('CookieCutter Templater', () => { dockerClient: mockDocker, }); }); + + describe('when cookiecutter is available', () => { + beforeAll(() => { + commandExists.mockImplementation(() => () => true); + }); + + it('use the binary', async () => { + const { + runCommand, + }: { + runCommand: jest.Mock; + } = require('./helpers'); + + const stream = new PassThrough(); + + const tempdir = await mkTemp(); + + const values = { + owner: 'blobby', + storePath: 'spotify/end-repo', + component_id: 'newthing', + }; + + await cookie.run({ + directory: tempdir, + values, + logStream: stream, + dockerClient: mockDocker, + }); + + expect(runCommand).toHaveBeenCalledWith({ + command: 'cookiecutter', + args: expect.arrayContaining([ + '--no-input', + '-o', + tempdir, + expect.stringContaining(`${tempdir}-result`), + '--verbose', + ]), + logStream: stream, + }); + }); + }); + + describe('when nothing was generated', () => { + beforeEach(() => { + jest.spyOn(fs, 'readdir').mockImplementation(() => Promise.resolve([])); + }); + + it('throws an error', async () => { + const stream = new PassThrough(); + + const tempdir = await mkTemp(); + + return expect( + cookie.run({ + directory: tempdir, + values: { + owner: 'blobby', + storePath: 'spotify/end-repo', + }, + logStream: stream, + dockerClient: mockDocker, + }), + ).rejects.toThrow(/Cookie Cutter did not generate anything/); + }); + }); }); diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.ts b/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.ts index 21b6fc3dde..7be8730bd9 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/templater/cookiecutter.ts @@ -78,8 +78,16 @@ export class CookieCutter implements TemplaterBase { }); } + // if cookiecutter was successful, resultDir will contain + // exactly one directory. + const [generated] = await fs.readdir(resultDir); + + if (generated === undefined) { + throw new Error('Cookie Cutter did not generate anything'); + } + return { - resultDir: path.resolve(resultDir, options.values.component_id as string), + resultDir: path.resolve(resultDir, generated), }; } } From 99710b102de57b688bb94e46b4d3e39f333e5a6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Mon, 12 Oct 2020 15:38:12 +0200 Subject: [PATCH 069/323] feat(catalog-backend): make a builder to help wire up the catalog --- .changeset/2874.md | 12 + .../backend-common/src/database/postgres.ts | 2 +- packages/backend/src/plugins/catalog.ts | 32 +- .../catalog-model/src/EntityPolicies.test.ts | 110 ++++ packages/catalog-model/src/EntityPolicies.ts | 60 +- .../packages/backend/src/plugins/catalog.ts | 34 +- .../src/database/DatabaseManager.ts | 24 +- plugins/catalog-backend/src/index.ts | 2 +- .../src/ingestion/LocationReaders.ts | 141 ++--- .../processors/PlaceholderProcessor.test.ts | 39 +- .../processors/PlaceholderProcessor.ts | 11 - .../src/ingestion/processors/YamlProcessor.ts | 5 + .../src/ingestion/processors/index.ts | 1 + .../src/service/CatalogBuilder.test.ts | 139 +++++ .../src/service/CatalogBuilder.ts | 523 ++++++++++++++++++ plugins/catalog-backend/src/service/index.ts | 19 + .../src/service/standaloneServer.ts | 28 +- 17 files changed, 925 insertions(+), 257 deletions(-) create mode 100644 .changeset/2874.md create mode 100644 packages/catalog-model/src/EntityPolicies.test.ts create mode 100644 plugins/catalog-backend/src/service/CatalogBuilder.test.ts create mode 100644 plugins/catalog-backend/src/service/CatalogBuilder.ts create mode 100644 plugins/catalog-backend/src/service/index.ts diff --git a/.changeset/2874.md b/.changeset/2874.md new file mode 100644 index 0000000000..693962314f --- /dev/null +++ b/.changeset/2874.md @@ -0,0 +1,12 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +The way that wiring together a catalog happens, has changed drastically. Now +there is a new class `CatalogBuilder` that does almost all of the heavy lifting +of how to augment/replace pieces of catalog functionality, such as adding +support for custom entities or adding additional processors. + +As the builder was added, a lot of the static methods and builders for default +setups have been removed from classes deep in the hierarchy. Instead, the +builder contains the knowledge of what the defaults are. diff --git a/packages/backend-common/src/database/postgres.ts b/packages/backend-common/src/database/postgres.ts index 82e971f081..04bd3615b6 100644 --- a/packages/backend-common/src/database/postgres.ts +++ b/packages/backend-common/src/database/postgres.ts @@ -57,7 +57,7 @@ export function buildPgDatabaseConfig( * Gets the postgres connection config * * @param dbConfig The database config - * @param parseConnectionString Flag to explictly control connection string parsing + * @param parseConnectionString Flag to explicitly control connection string parsing */ export function getPgConnectionConfig( dbConfig: Config, diff --git a/packages/backend/src/plugins/catalog.ts b/packages/backend/src/plugins/catalog.ts index b8e99e6398..3c205a3800 100644 --- a/packages/backend/src/plugins/catalog.ts +++ b/packages/backend/src/plugins/catalog.ts @@ -14,37 +14,21 @@ * limitations under the License. */ +import { useHotCleanup } from '@backstage/backend-common'; import { + CatalogBuilder, createRouter, - DatabaseEntitiesCatalog, - DatabaseLocationsCatalog, - DatabaseManager, - HigherOrderOperations, - LocationReaders, runPeriodically, } from '@backstage/plugin-catalog-backend'; import { PluginEnvironment } from '../types'; -import { useHotCleanup } from '@backstage/backend-common'; -export default async function createPlugin({ - logger, - config, - reader, - database, -}: PluginEnvironment) { - const locationReader = new LocationReaders({ logger, reader, config }); - - const db = await DatabaseManager.createDatabase(await database.getClient(), { - logger, - }); - const entitiesCatalog = new DatabaseEntitiesCatalog(db); - const locationsCatalog = new DatabaseLocationsCatalog(db); - const higherOrderOperation = new HigherOrderOperations( +export default async function createPlugin(env: PluginEnvironment) { + const builder = new CatalogBuilder(env); + const { entitiesCatalog, locationsCatalog, - locationReader, - logger, - ); + higherOrderOperation, + } = await builder.build(); useHotCleanup( module, @@ -55,6 +39,6 @@ export default async function createPlugin({ entitiesCatalog, locationsCatalog, higherOrderOperation, - logger, + logger: env.logger, }); } diff --git a/packages/catalog-model/src/EntityPolicies.test.ts b/packages/catalog-model/src/EntityPolicies.test.ts new file mode 100644 index 0000000000..cd869f798c --- /dev/null +++ b/packages/catalog-model/src/EntityPolicies.test.ts @@ -0,0 +1,110 @@ +import { Entity } from './entity'; +/* + * 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 { EntityPolicies } from './EntityPolicies'; +import { EntityPolicy } from './types'; + +describe('EntityPolicies', () => { + const p1: jest.Mocked = { enforce: jest.fn() }; + const p2: jest.Mocked = { enforce: jest.fn() }; + const entity1: Entity = { + apiVersion: 'a1', + kind: 'k1', + metadata: { name: 'n1' }, + }; + const entity2: Entity = { + apiVersion: 'a2', + kind: 'k2', + metadata: { name: 'n2' }, + }; + + afterEach(() => jest.resetAllMocks()); + + describe('allOf', () => { + it('resolves when no policies', async () => { + const policy = EntityPolicies.allOf([]); + await expect(policy.enforce(entity1)).resolves.toBe(entity1); + }); + + it('resolves when all resolve', async () => { + p1.enforce.mockResolvedValue(entity1); + p2.enforce.mockResolvedValue(entity1); + const policy = EntityPolicies.allOf([p1, p2]); + await expect(policy.enforce(entity1)).resolves.toBe(entity1); + }); + + it('rejects when any rejects', async () => { + p1.enforce.mockResolvedValue(entity1); + p2.enforce.mockRejectedValue(new Error('a')); + const policy = EntityPolicies.allOf([p1, p2]); + await expect(policy.enforce(entity1)).rejects.toThrow('a'); + }); + + it('rejects when any ignores', async () => { + p1.enforce.mockResolvedValue(entity1); + p2.enforce.mockResolvedValue(undefined); + const policy = EntityPolicies.allOf([p1, p2]); + await expect(policy.enforce(entity1)).rejects.toThrow( + /did not return a result/, + ); + }); + + it('passes through transforms properly', async () => { + p1.enforce.mockResolvedValue(entity2); + p2.enforce.mockResolvedValue(entity2); + const policy = EntityPolicies.allOf([p1, p2]); + await expect(policy.enforce(entity1)).resolves.toBe(entity2); + expect(p1.enforce).toBeCalledWith(entity1); + expect(p2.enforce).toBeCalledWith(entity2); + }); + }); + + describe('oneOf', () => { + it('rejects when no policies', async () => { + const policy = EntityPolicies.oneOf([]); + await expect(policy.enforce(entity1)).rejects.toThrow(/did not match/); + }); + + it('resolves when one resolves', async () => { + p1.enforce.mockResolvedValue(undefined); + p2.enforce.mockResolvedValue(entity1); + const policy = EntityPolicies.oneOf([p1, p2]); + await expect(policy.enforce(entity1)).resolves.toBe(entity1); + }); + + it('rejects when one rejects first', async () => { + p1.enforce.mockRejectedValue(new Error('a')); + p2.enforce.mockResolvedValue(entity1); + const policy = EntityPolicies.oneOf([p1, p2]); + await expect(policy.enforce(entity1)).rejects.toThrow('a'); + }); + + it('resolves first resolution when several resolve', async () => { + p1.enforce.mockResolvedValue(entity1); + p2.enforce.mockResolvedValue(entity2); + const policy = EntityPolicies.oneOf([p1, p2]); + await expect(policy.enforce(entity1)).resolves.toBe(entity1); + }); + + it('rejects when all ignore', async () => { + p1.enforce.mockResolvedValue(undefined); + p2.enforce.mockResolvedValue(undefined); + const policy = EntityPolicies.oneOf([p1, p2]); + await expect(policy.enforce(entity1)).rejects.toThrow(/did not match/); + }); + }); +}); diff --git a/packages/catalog-model/src/EntityPolicies.ts b/packages/catalog-model/src/EntityPolicies.ts index acdfb4df2a..1f304f8f27 100644 --- a/packages/catalog-model/src/EntityPolicies.ts +++ b/packages/catalog-model/src/EntityPolicies.ts @@ -14,22 +14,7 @@ * limitations under the License. */ -import { - DefaultNamespaceEntityPolicy, - Entity, - FieldFormatEntityPolicy, - NoForeignRootFieldsEntityPolicy, - ReservedFieldsEntityPolicy, - SchemaValidEntityPolicy, -} from './entity'; -import { - apiEntityV1alpha1Policy, - componentEntityV1alpha1Policy, - groupEntityV1alpha1Policy, - locationEntityV1alpha1Policy, - templateEntityV1alpha1Policy, - userEntityV1alpha1Policy, -} from './kinds'; +import { Entity } from './entity'; import { EntityPolicy } from './types'; // Helper that requires that all of a set of policies can be successfully @@ -68,42 +53,11 @@ class AnyEntityPolicy implements EntityPolicy { } } -export class EntityPolicies implements EntityPolicy { - private readonly policy: EntityPolicy; - - static defaultPolicies(): EntityPolicy { - return EntityPolicies.allOf([ - EntityPolicies.allOf([ - new SchemaValidEntityPolicy(), - new DefaultNamespaceEntityPolicy(), - new NoForeignRootFieldsEntityPolicy(), - new FieldFormatEntityPolicy(), - new ReservedFieldsEntityPolicy(), - ]), - EntityPolicies.anyOf([ - componentEntityV1alpha1Policy, - groupEntityV1alpha1Policy, - userEntityV1alpha1Policy, - locationEntityV1alpha1Policy, - templateEntityV1alpha1Policy, - apiEntityV1alpha1Policy, - ]), - ]); - } - - static allOf(policies: EntityPolicy[]): EntityPolicy { +export const EntityPolicies = { + allOf(policies: EntityPolicy[]) { return new AllEntityPolicies(policies); - } - - static anyOf(policies: EntityPolicy[]): EntityPolicy { + }, + oneOf(policies: EntityPolicy[]) { return new AnyEntityPolicy(policies); - } - - constructor(policy: EntityPolicy = EntityPolicies.defaultPolicies()) { - this.policy = policy; - } - - enforce(entity: Entity): Promise { - return this.policy.enforce(entity); - } -} + }, +}; diff --git a/packages/create-app/templates/default-app/packages/backend/src/plugins/catalog.ts b/packages/create-app/templates/default-app/packages/backend/src/plugins/catalog.ts index aee38a5fa0..10ac116ded 100644 --- a/packages/create-app/templates/default-app/packages/backend/src/plugins/catalog.ts +++ b/packages/create-app/templates/default-app/packages/backend/src/plugins/catalog.ts @@ -1,44 +1,28 @@ +import { useHotCleanup } from '@backstage/backend-common'; import { + CatalogBuilder, createRouter, - DatabaseEntitiesCatalog, - DatabaseLocationsCatalog, - DatabaseManager, - HigherOrderOperations, - LocationReaders, runPeriodically, } from '@backstage/plugin-catalog-backend'; import { PluginEnvironment } from '../types'; -import { useHotCleanup } from '@backstage/backend-common'; -export default async function createPlugin({ - logger, - config, - reader, - database, -}: PluginEnvironment) { - const locationReader = new LocationReaders({ logger, reader, config }); - - const db = await DatabaseManager.createDatabase(await database.getClient(), - { logger }, - ); - const entitiesCatalog = new DatabaseEntitiesCatalog(db); - const locationsCatalog = new DatabaseLocationsCatalog(db); - const higherOrderOperation = new HigherOrderOperations( +export default async function createPlugin(env: PluginEnvironment) { + const builder = new CatalogBuilder(env); + const { entitiesCatalog, locationsCatalog, - locationReader, - logger, - ); + higherOrderOperation, + } = await builder.build(); useHotCleanup( module, - runPeriodically(() => higherOrderOperation.refreshAllLocations(), 10000), + runPeriodically(() => higherOrderOperation.refreshAllLocations(), 100000), ); return await createRouter({ entitiesCatalog, locationsCatalog, higherOrderOperation, - logger, + logger: env.logger, }); } diff --git a/plugins/catalog-backend/src/database/DatabaseManager.ts b/plugins/catalog-backend/src/database/DatabaseManager.ts index eb307c9478..465bf654f2 100644 --- a/plugins/catalog-backend/src/database/DatabaseManager.ts +++ b/plugins/catalog-backend/src/database/DatabaseManager.ts @@ -46,21 +46,31 @@ export class DatabaseManager { return new CommonDatabase(knex, logger); } - public static async createInMemoryDatabase( - options: Partial = {}, - ): Promise { + public static async createInMemoryDatabase(): Promise { + const knex = await this.createInMemoryDatabaseConnection(); + return await this.createDatabase(knex); + } + + public static async createInMemoryDatabaseConnection(): Promise { const knex = Knex({ client: 'sqlite3', connection: ':memory:', useNullAsDefault: true, }); + knex.client.pool.on('createSuccess', (_eventId: any, resource: any) => { resource.run('PRAGMA foreign_keys = ON', () => {}); }); - return DatabaseManager.createDatabase(knex, options); + + return knex; } public static async createTestDatabase(): Promise { + const knex = await this.createTestDatabaseConnection(); + return await this.createDatabase(knex); + } + + public static async createTestDatabaseConnection(): Promise { const config: Knex.Config = { /* client: 'pg', @@ -91,11 +101,7 @@ export class DatabaseManager { knex.client.pool.on('createSuccess', (_eventId: any, resource: any) => { resource.run('PRAGMA foreign_keys = ON', () => {}); }); - await knex.migrate.latest({ - directory: migrationsDir, - }); - const { logger } = defaultOptions; - return new CommonDatabase(knex, logger); + return knex; } } diff --git a/plugins/catalog-backend/src/index.ts b/plugins/catalog-backend/src/index.ts index 89fd4d37ed..f621930d10 100644 --- a/plugins/catalog-backend/src/index.ts +++ b/plugins/catalog-backend/src/index.ts @@ -17,5 +17,5 @@ export * from './catalog'; export * from './database'; export * from './ingestion'; -export * from './service/router'; +export * from './service'; export * from './util'; diff --git a/plugins/catalog-backend/src/ingestion/LocationReaders.ts b/plugins/catalog-backend/src/ingestion/LocationReaders.ts index 87c75e21e5..0f6ad18f97 100644 --- a/plugins/catalog-backend/src/ingestion/LocationReaders.ts +++ b/plugins/catalog-backend/src/ingestion/LocationReaders.ts @@ -14,32 +14,16 @@ * limitations under the License. */ -import { getVoidLogger, UrlReader } from '@backstage/backend-common'; +import { UrlReader } from '@backstage/backend-common'; import { Entity, - EntityPolicies, - EntityPolicy, ENTITY_DEFAULT_NAMESPACE, LocationSpec, } from '@backstage/catalog-model'; -import { Config, ConfigReader } from '@backstage/config'; +import { Config } from '@backstage/config'; import { Logger } from 'winston'; import { CatalogRulesEnforcer } from './CatalogRules'; -import { AnnotateLocationEntityProcessor } from './processors/AnnotateLocationEntityProcessor'; -import { AzureApiReaderProcessor } from './processors/AzureApiReaderProcessor'; -import { BitbucketApiReaderProcessor } from './processors/BitbucketApiReaderProcessor'; -import { CodeOwnersProcessor } from './processors/CodeOwnersProcessor'; -import { EntityPolicyProcessor } from './processors/EntityPolicyProcessor'; -import { FileReaderProcessor } from './processors/FileReaderProcessor'; -import { GithubOrgReaderProcessor } from './processors/GithubOrgReaderProcessor'; -import { GithubReaderProcessor } from './processors/GithubReaderProcessor'; -import { GitlabApiReaderProcessor } from './processors/GitlabApiReaderProcessor'; -import { GitlabReaderProcessor } from './processors/GitlabReaderProcessor'; -import { LdapOrgReaderProcessor } from './processors/LdapOrgReaderProcessor'; -import { LocationRefProcessor } from './processors/LocationEntityProcessor'; -import { PlaceholderProcessor } from './processors/PlaceholderProcessor'; import * as result from './processors/results'; -import { StaticLocationProcessor } from './processors/StaticLocationProcessor'; import { LocationProcessor, LocationProcessorDataResult, @@ -49,8 +33,6 @@ import { LocationProcessorLocationResult, LocationProcessorResult, } from './processors/types'; -import { UrlReaderProcessor } from './processors/UrlReaderProcessor'; -import { YamlProcessor } from './processors/YamlProcessor'; import { LocationReader, ReadLocationResult } from './types'; // The max amount of nesting depth of generated work items @@ -58,94 +40,25 @@ const MAX_DEPTH = 10; type Options = { reader: UrlReader; - logger?: Logger; - config?: Config; - processors?: LocationProcessor[]; + logger: Logger; + config: Config; + processors: LocationProcessor[]; + rulesEnforcer: CatalogRulesEnforcer; }; /** * Implements the reading of a location through a series of processor tasks. */ export class LocationReaders implements LocationReader { - private readonly logger: Logger; - private readonly processors: LocationProcessor[]; - private readonly rulesEnforcer: CatalogRulesEnforcer; + private readonly options: Options; - static defaultProcessors(options: { - logger: Logger; - reader: UrlReader; - config?: Config; - entityPolicy?: EntityPolicy; - }): LocationProcessor[] { - const { - logger, - config = new ConfigReader({}, 'missing-config'), - entityPolicy = new EntityPolicies(), - } = options; - - // TODO(Rugvip): These are added for backwards compatibility if config exists - // The idea is to have everyone migrate from using the old processors to the new - // integration config driven UrlReaders. In an upcoming release we can then completely - // remove support for the old processors, but still keep handling the deprecated location - // types for a while, but with a warning. - const oldProcessors = []; - const pc = config.getOptionalConfig('catalog.processors'); - if (pc?.has('github')) { - logger.warn( - `Using deprecated configuration for catalog.processors.github, move to using integrations.github instead`, - ); - oldProcessors.push(GithubReaderProcessor.fromConfig(config, logger)); - } - if (pc?.has('gitlabApi')) { - logger.warn( - `Using deprecated configuration for catalog.processors.gitlabApi, move to using integrations.gitlab instead`, - ); - oldProcessors.push(new GitlabApiReaderProcessor(config)); - oldProcessors.push(new GitlabReaderProcessor()); - } - if (pc?.has('bitbucketApi')) { - logger.warn( - `Using deprecated configuration for catalog.processors.bitbucketApi, move to using integrations.bitbucket instead`, - ); - oldProcessors.push(new BitbucketApiReaderProcessor(config)); - } - if (pc?.has('azureApi')) { - logger.warn( - `Using deprecated configuration for catalog.processors.azureApi, move to using integrations.azure instead`, - ); - oldProcessors.push(new AzureApiReaderProcessor(config)); - } - - return [ - StaticLocationProcessor.fromConfig(config), - new FileReaderProcessor(), - ...oldProcessors, - GithubOrgReaderProcessor.fromConfig(config, { logger }), - LdapOrgReaderProcessor.fromConfig(config, { logger }), - new UrlReaderProcessor(options), - new YamlProcessor(), - PlaceholderProcessor.default({ reader: options.reader }), - new CodeOwnersProcessor({ reader: options.reader }), - new EntityPolicyProcessor(entityPolicy), - new LocationRefProcessor(), - new AnnotateLocationEntityProcessor(), - ]; - } - - constructor({ - logger = getVoidLogger(), - config, - reader, - processors = LocationReaders.defaultProcessors({ logger, reader, config }), - }: Options) { - this.logger = logger; - this.processors = processors; - this.rulesEnforcer = config - ? CatalogRulesEnforcer.fromConfig(config) - : new CatalogRulesEnforcer(CatalogRulesEnforcer.defaultRules); + constructor(options: Options) { + this.options = options; } async read(location: LocationSpec): Promise { + const { rulesEnforcer, logger } = this.options; + const output: ReadLocationResult = { entities: [], errors: [] }; let items: LocationProcessorResult[] = [result.location(location, false)]; @@ -159,7 +72,7 @@ export class LocationReaders implements LocationReader { } else if (item.type === 'data') { await this.handleData(item, emit); } else if (item.type === 'entity') { - if (this.rulesEnforcer.isAllowed(item.entity, item.location)) { + if (rulesEnforcer.isAllowed(item.entity, item.location)) { const entity = await this.handleEntity(item, emit); output.entities.push({ entity, @@ -190,7 +103,7 @@ export class LocationReaders implements LocationReader { } const message = `Max recursion depth ${MAX_DEPTH} reached for ${location.type} ${location.target}`; - this.logger.warn(message); + logger.warn(message); output.errors.push({ location, error: new Error(message) }); return output; } @@ -199,7 +112,9 @@ export class LocationReaders implements LocationReader { item: LocationProcessorLocationResult, emit: LocationProcessorEmit, ) { - for (const processor of this.processors) { + const { processors, logger } = this.options; + + for (const processor of processors) { if (processor.readLocation) { try { if ( @@ -210,21 +125,23 @@ export class LocationReaders implements LocationReader { } catch (e) { const message = `Processor ${processor.constructor.name} threw an error while reading location ${item.location.type} ${item.location.target}, ${e}`; emit(result.generalError(item.location, message)); - this.logger.warn(message); + logger.warn(message); } } } const message = `No processor was able to read location ${item.location.type} ${item.location.target}`; emit(result.inputError(item.location, message)); - this.logger.warn(message); + logger.warn(message); } private async handleData( item: LocationProcessorDataResult, emit: LocationProcessorEmit, ) { - for (const processor of this.processors) { + const { processors, logger } = this.options; + + for (const processor of processors) { if (processor.parseData) { try { if (await processor.parseData(item.data, item.location, emit)) { @@ -233,7 +150,7 @@ export class LocationReaders implements LocationReader { } catch (e) { const message = `Processor ${processor.constructor.name} threw an error while parsing ${item.location.type} ${item.location.target}, ${e}`; emit(result.generalError(item.location, message)); - this.logger.warn(message); + logger.warn(message); } } } @@ -246,9 +163,11 @@ export class LocationReaders implements LocationReader { item: LocationProcessorEntityResult, emit: LocationProcessorEmit, ): Promise { + const { processors, logger } = this.options; + let current = item.entity; - for (const processor of this.processors) { + for (const processor of processors) { if (processor.processEntity) { try { current = await processor.processEntity(current, item.location, emit); @@ -261,7 +180,7 @@ export class LocationReaders implements LocationReader { const name = !current.metadata ? '' : current.metadata.name; const message = `Processor ${processor.constructor.name} threw an error while processing entity ${current.kind}:${namespace}/${name} at ${item.location.type} ${item.location.target}, ${e}`; emit(result.generalError(item.location, message)); - this.logger.warn(message); + logger.warn(message); } } } @@ -273,18 +192,20 @@ export class LocationReaders implements LocationReader { item: LocationProcessorErrorResult, emit: LocationProcessorEmit, ) { - this.logger.debug( + const { processors, logger } = this.options; + + logger.debug( `Encountered error at location ${item.location.type} ${item.location.target}, ${item.error}`, ); - for (const processor of this.processors) { + for (const processor of processors) { if (processor.handleError) { try { await processor.handleError(item.error, item.location, emit); } catch (e) { const message = `Processor ${processor.constructor.name} threw an error while handling another error at ${item.location.type} ${item.location.target}, ${e}`; emit(result.generalError(item.location, message)); - this.logger.warn(message); + logger.warn(message); } } } diff --git a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.test.ts index c196458e2a..294cb10f29 100644 --- a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.test.ts @@ -21,6 +21,7 @@ import { PlaceholderResolver, ResolverParams, ResolverRead, + textPlaceholderResolver, yamlPlaceholderResolver, } from './PlaceholderProcessor'; @@ -134,9 +135,12 @@ describe('PlaceholderProcessor', () => { expect(read).not.toBeCalled(); }); - it('has builtin text support', async () => { + it('works with the text resolver', async () => { read.mockResolvedValue(Buffer.from('TEXT', 'utf-8')); - const processor = PlaceholderProcessor.default({ reader }); + const processor = new PlaceholderProcessor({ + resolvers: { text: textPlaceholderResolver }, + reader, + }); await expect( processor.processEntity( @@ -163,11 +167,14 @@ describe('PlaceholderProcessor', () => { ); }); - it('has builtin json support', async () => { + it('works with the json resolver', async () => { read.mockResolvedValue( Buffer.from(JSON.stringify({ a: ['b', 7] }), 'utf-8'), ); - const processor = PlaceholderProcessor.default({ reader }); + const processor = new PlaceholderProcessor({ + resolvers: { json: jsonPlaceholderResolver }, + reader, + }); await expect( processor.processEntity( @@ -194,9 +201,12 @@ describe('PlaceholderProcessor', () => { ); }); - it('has builtin yaml support', async () => { + it('works with the yaml resolver', async () => { read.mockResolvedValue(Buffer.from('foo:\n - bar: 7', 'utf-8')); - const processor = PlaceholderProcessor.default({ reader }); + const processor = new PlaceholderProcessor({ + resolvers: { yaml: yamlPlaceholderResolver }, + reader, + }); await expect( processor.processEntity( @@ -225,7 +235,10 @@ describe('PlaceholderProcessor', () => { it('resolves absolute path for absolute location', async () => { read.mockResolvedValue(Buffer.from('TEXT', 'utf-8')); - const processor = PlaceholderProcessor.default({ reader }); + const processor = new PlaceholderProcessor({ + resolvers: { text: textPlaceholderResolver }, + reader, + }); await expect( processor.processEntity( @@ -258,7 +271,10 @@ describe('PlaceholderProcessor', () => { it('resolves absolute path for relative file location', async () => { read.mockResolvedValue(Buffer.from('TEXT', 'utf-8')); - const processor = PlaceholderProcessor.default({ reader }); + const processor = new PlaceholderProcessor({ + resolvers: { text: textPlaceholderResolver }, + reader, + }); await expect( processor.processEntity( @@ -291,10 +307,13 @@ describe('PlaceholderProcessor', () => { it('not resolves relative file path for relative file location', async () => { // We explicitly don't support this case, as it would allow for file system - // traversel attacks. If we want to implement this, we need to have additional + // traversal attacks. If we want to implement this, we need to have additional // security measures in place! read.mockResolvedValue(Buffer.from('TEXT', 'utf-8')); - const processor = PlaceholderProcessor.default({ reader }); + const processor = new PlaceholderProcessor({ + resolvers: { text: textPlaceholderResolver }, + reader, + }); await expect( processor.processEntity( diff --git a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts index 91257b68a4..630c78d600 100644 --- a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts @@ -43,17 +43,6 @@ type Options = { * that it then fills in with actual data. */ export class PlaceholderProcessor implements LocationProcessor { - static default({ reader }: { reader: UrlReader }) { - return new PlaceholderProcessor({ - resolvers: { - json: jsonPlaceholderResolver, - yaml: yamlPlaceholderResolver, - text: textPlaceholderResolver, - }, - reader, - }); - } - constructor(private readonly options: Options) {} async processEntity(entity: Entity, location: LocationSpec): Promise { diff --git a/plugins/catalog-backend/src/ingestion/processors/YamlProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/YamlProcessor.ts index 79ae55fae1..860f9ff752 100644 --- a/plugins/catalog-backend/src/ingestion/processors/YamlProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/YamlProcessor.ts @@ -20,6 +20,11 @@ import yaml from 'yaml'; import * as result from './results'; import { LocationProcessor, LocationProcessorEmit } from './types'; +/** + * Handles incoming raw data buffers, and if they have a yaml extension, + * attempts to parse them into structured data and emitting them as un- + * validated entities. + */ export class YamlProcessor implements LocationProcessor { async parseData( data: Buffer, diff --git a/plugins/catalog-backend/src/ingestion/processors/index.ts b/plugins/catalog-backend/src/ingestion/processors/index.ts index c9453d0247..f966ef3348 100644 --- a/plugins/catalog-backend/src/ingestion/processors/index.ts +++ b/plugins/catalog-backend/src/ingestion/processors/index.ts @@ -31,6 +31,7 @@ export { GitlabApiReaderProcessor } from './GitlabApiReaderProcessor'; export { GitlabReaderProcessor } from './GitlabReaderProcessor'; export { LocationRefProcessor } from './LocationEntityProcessor'; export { PlaceholderProcessor } from './PlaceholderProcessor'; +export type { PlaceholderResolver } from './PlaceholderProcessor'; export { StaticLocationProcessor } from './StaticLocationProcessor'; export { UrlReaderProcessor } from './UrlReaderProcessor'; export { YamlProcessor } from './YamlProcessor'; diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.test.ts b/plugins/catalog-backend/src/service/CatalogBuilder.test.ts new file mode 100644 index 0000000000..e2467654d8 --- /dev/null +++ b/plugins/catalog-backend/src/service/CatalogBuilder.test.ts @@ -0,0 +1,139 @@ +/* + * 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, UrlReader } from '@backstage/backend-common'; +import { Entity, LocationSpec } from '@backstage/catalog-model'; +import { ConfigReader } from '@backstage/config'; +import { DatabaseManager } from '../database'; +import { LocationProcessorEmit } from '../ingestion'; +import { CatalogBuilder, CatalogEnvironment } from './CatalogBuilder'; +import * as result from '../ingestion/processors/results'; + +describe('CatalogBuilder', () => { + const db = DatabaseManager.createTestDatabaseConnection(); + const reader: jest.Mocked = { read: jest.fn() }; + const env: CatalogEnvironment = { + logger: getVoidLogger(), + database: { getClient: () => db }, + config: ConfigReader.fromConfigs([]), + reader, + }; + + afterEach(() => jest.resetAllMocks()); + + it('works with no changes', async () => { + const builder = new CatalogBuilder(env); + const built = await builder.build(); + await expect(built.entitiesCatalog.entities()).resolves.toEqual([]); + await expect(built.locationsCatalog.locations()).resolves.toEqual([ + expect.objectContaining({ + data: expect.objectContaining({ type: 'bootstrap' }), + }), + ]); + }); + + it('works with everything replaced', async () => { + reader.read.mockResolvedValue(Buffer.from('junk')); + + const builder = new CatalogBuilder(env) + .replaceReaderProcessors([ + { + async readLocation( + location: LocationSpec, + _optional: boolean, + emit: LocationProcessorEmit, + ) { + expect(location.type).toBe('test'); + emit(result.data(location, await reader.read('ignored'))); + return true; + }, + }, + ]) + .replaceParserProcessors([ + { + async parseData( + data: Buffer, + location: LocationSpec, + emit: LocationProcessorEmit, + ) { + expect(data.toString()).toEqual('junk'); + emit( + result.entity(location, { + apiVersion: 'av', + kind: 'Component', + metadata: { name: 'n' }, + }), + ); + return true; + }, + }, + ]) + .replacePreProcessors([ + { + async processEntity(entity: Entity) { + expect(entity.apiVersion).toBe('av'); + return { + ...entity, + metadata: { ...entity.metadata, namespace: 'ns' }, + }; + }, + }, + ]) + .replaceEntityPolicies([ + { + async enforce(entity: Entity) { + expect(entity.metadata.namespace).toBe('ns'); + return entity; + }, + }, + ]) + .replaceEntityKinds([ + { + async enforce(entity: Entity) { + expect(entity.metadata.namespace).toBe('ns'); + return entity; + }, + }, + ]) + .replacePostProcessors([ + { + async processEntity(entity: Entity) { + return { + ...entity, + metadata: { ...entity.metadata, post: 'p' }, + }; + }, + }, + ]); + const out = await builder.build(); + + const added = await out.higherOrderOperation.addLocation({ + type: 'test', + target: '', + }); + expect(added.entities).toEqual([ + { + apiVersion: 'av', + kind: 'Component', + metadata: expect.objectContaining({ + name: 'n', + namespace: 'ns', + post: 'p', + }), + }, + ]); + }); +}); diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.ts b/plugins/catalog-backend/src/service/CatalogBuilder.ts new file mode 100644 index 0000000000..e02005b817 --- /dev/null +++ b/plugins/catalog-backend/src/service/CatalogBuilder.ts @@ -0,0 +1,523 @@ +/* + * 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 { PluginDatabaseManager, UrlReader } from '@backstage/backend-common'; +import { + apiEntityV1alpha1Policy, + componentEntityV1alpha1Policy, + DefaultNamespaceEntityPolicy, + EntityPolicies, + EntityPolicy, + FieldFormatEntityPolicy, + groupEntityV1alpha1Policy, + locationEntityV1alpha1Policy, + makeValidator, + NoForeignRootFieldsEntityPolicy, + ReservedFieldsEntityPolicy, + SchemaValidEntityPolicy, + templateEntityV1alpha1Policy, + userEntityV1alpha1Policy, + Validators, +} from '@backstage/catalog-model'; +import { Config } from '@backstage/config'; +import lodash from 'lodash'; +import { Logger } from 'winston'; +import { + DatabaseEntitiesCatalog, + DatabaseLocationsCatalog, + EntitiesCatalog, + LocationsCatalog, +} from '../catalog'; +import { DatabaseManager } from '../database'; +import { + AnnotateLocationEntityProcessor, + AzureApiReaderProcessor, + BitbucketApiReaderProcessor, + CodeOwnersProcessor, + EntityPolicyProcessor, + FileReaderProcessor, + GithubOrgReaderProcessor, + GithubReaderProcessor, + GitlabApiReaderProcessor, + GitlabReaderProcessor, + HigherOrderOperation, + HigherOrderOperations, + LocationProcessor, + LocationReaders, + LocationRefProcessor, + PlaceholderProcessor, + PlaceholderResolver, + StaticLocationProcessor, + UrlReaderProcessor, + YamlProcessor, +} from '../ingestion'; +import { CatalogRulesEnforcer } from '../ingestion/CatalogRules'; +import { LdapOrgReaderProcessor } from '../ingestion/processors/LdapOrgReaderProcessor'; +import { + jsonPlaceholderResolver, + textPlaceholderResolver, + yamlPlaceholderResolver, +} from '../ingestion/processors/PlaceholderProcessor'; + +export type CatalogEnvironment = { + logger: Logger; + database: PluginDatabaseManager; + config: Config; + reader: UrlReader; +}; + +/** + * A builder that helps wire up all of the component parts of the catalog. + * + * The touch points where you can replace or extend behavior are as follows: + * + * - Reader processors can be added or replaced. These implement the + * functionality of reading raw data from a location, in the form of an + * entity definition file. + * - Parser processors can be added or replaced. These accept the raw data as + * read by the previous processors and parse it into raw structured data + * (for example, from a binary buffer containing yaml text, to a JS object + * structure). + * - Placeholder resolvers can be replaced or added. These run on the raw + * structured data between the parsing and pre-processing steps, to replace + * dollar-prefixed entries with their actual values (like $file). + * - Pre-processors can be added or replaced. These take the raw unvalidated + * data from the parser processors and can enrich or extend it before + * validation. This is the place where for example codeowners data can be + * injected into partial entity definitions. + * - Entity policies can be added or replaced. These are the first line of + * validation from the output of the pre-processing step. All policies are + * given the chance to inspect the entity, and all of them have to pass in + * order for the entity to be considered valid from an overall point of + * view. + * - Field format validators can be replaced. These check the format of + * individual core fields such as metadata.name, such that they adhere to + * certain rules. + * - Entity kinds can be added or replaced. These are the second line of + * validation that is applied after the entity policies, which add additional + * kind-specific validation (usually based on a schema). Only one of the + * entity kinds has to accept the entity, but if none of them do, the + * entity is rejected as a whole. + * - Post-processors can be added or replaced. These take the validated + * entities out of the validation step and can perform additional actions on + * them. + */ +export class CatalogBuilder { + private readonly env: CatalogEnvironment; + private entityPolicies: EntityPolicy[]; + private entityPoliciesReplace: boolean; + private entityKinds: EntityPolicy[]; + private entityKindsReplace: boolean; + private readerProcessors: LocationProcessor[]; + private readerProcessorsReplace: boolean; + private parserProcessors: LocationProcessor[]; + private parserProcessorsReplace: boolean; + private preProcessors: LocationProcessor[]; + private preProcessorsReplace: boolean; + private postProcessors: LocationProcessor[]; + private postProcessorsReplace: boolean; + private placeholderResolvers: Record; + private fieldFormatValidators: Partial; + + constructor(env: CatalogEnvironment) { + this.env = env; + this.entityPolicies = []; + this.entityPoliciesReplace = false; + this.entityKinds = []; + this.entityKindsReplace = false; + this.readerProcessors = []; + this.readerProcessorsReplace = false; + this.parserProcessors = []; + this.parserProcessorsReplace = false; + this.preProcessors = []; + this.preProcessorsReplace = false; + this.postProcessors = []; + this.postProcessorsReplace = false; + this.placeholderResolvers = {}; + this.fieldFormatValidators = {}; + } + + /** + * Adds policies that are used to validate entities between the pre- + * processing and post-processing stages. All such policies must pass for the + * entity to be considered valid. + * + * If what you want to do is to replace the rules for what format is allowed + * in various core entity fields (such as metadata.name), you may want to use + * {@link CatalogBuilder#setFieldFormatValidators} instead. + * + * @param policies One or more policies + */ + addEntityPolicy(...policies: EntityPolicy[]): CatalogBuilder { + this.entityPolicies.push(...policies); + return this; + } + + /** + * Sets what policies to use for validation of entities between the pre- + * processing and post-processing stages. All such policies must pass for the + * entity to be considered valid. + * + * If what you want to do is to replace the rules for what format is allowed + * in various core entity fields (such as metadata.name), you may want to use + * {@link CatalogBuilder#setFieldFormatValidators} instead. + * + * This function replaces the default set of policies; use with care. + * + * @param policies One or more policies + */ + replaceEntityPolicies(policies: EntityPolicy[]): CatalogBuilder { + this.entityPolicies = [...policies]; + this.entityPoliciesReplace = true; + return this; + } + + /** + * Adds entity kinds that are used to validate a certain apiVersion/kind. One + * of the entity kind policies must match a given entity for it to be + * considered valid. + * + * @param policies One or more policies + */ + addEntityKind(...policies: EntityPolicy[]): CatalogBuilder { + this.entityKinds.push(...policies); + return this; + } + + /** + * Sets what entity policies that are used to validate a certain apiVersion/ + * kind. One of the entity kind policies must match a given entity for it to + * be considered valid. + * + * This function replaces the default set of kinds; use with care. + * + * @param policies One or more policies + */ + replaceEntityKinds(policies: EntityPolicy[]): CatalogBuilder { + this.entityKinds = [...policies]; + this.entityKindsReplace = true; + return this; + } + + /** + * Adds processors that support reading of definition files. These are run + * before the entities are parsed, pre-processed, validated and post- + * processed. + * + * @param processors One or more processors + */ + addReaderProcessor(...processors: LocationProcessor[]): CatalogBuilder { + this.readerProcessors.push(...processors); + return this; + } + + /** + * Sets what processors to use for the reading of definition files. These are + * run before the entities are parsed, pre-processed, validated and post- + * processed. + * + * This function replaces the default set of processors in this stage; use + * with care. + * + * @param processors One or more processors + */ + replaceReaderProcessors(processors: LocationProcessor[]): CatalogBuilder { + this.readerProcessors = [...processors]; + this.readerProcessorsReplace = true; + return this; + } + + /** + * Adds processors that run after each definition file has been read, in + * order to parse the raw data. These are run before the entities are + * pre-processed, validated and post-processed. + * + * @param processors One or more processors + */ + addParserProcessor(...processors: LocationProcessor[]): CatalogBuilder { + this.parserProcessors.push(...processors); + return this; + } + + /** + * Sets what processors to run after each definition file has been read, in + * order to parse the raw data. These are run before the entities are + * pre-processed, validated and post-processed. + * + * This function replaces the default set of processors in this stage; use + * with care. + * + * @param processors One or more processors + */ + replaceParserProcessors(processors: LocationProcessor[]): CatalogBuilder { + this.parserProcessors = [...processors]; + this.parserProcessorsReplace = true; + return this; + } + + /** + * Adds processors that run after each entity has been read and parsed, + * but before being validated and post-processed. + * + * @param processors One or more processors + */ + addPreProcessor(...processors: LocationProcessor[]): CatalogBuilder { + this.preProcessors.push(...processors); + return this; + } + + /** + * Sets what processors to run after each entity has been read and parsed, + * but before being validated and post-processed. + * + * This function replaces the default set of processors in this stage; use + * with care. + * + * @param processors One or more processors + */ + replacePreProcessors(processors: LocationProcessor[]): CatalogBuilder { + this.preProcessors = [...processors]; + this.preProcessorsReplace = true; + return this; + } + + /** + * Adds processors that run after each entity has been read, parsed, + * run through the pre-processors, and validated. + * + * @param processors One or more processors + */ + addPostProcessor(...processors: LocationProcessor[]): CatalogBuilder { + this.postProcessors.push(...processors); + return this; + } + + /** + * Sets what processors to run after each entity has been read, parsed, + * run through the pre-processors, and validated. + * + * This function replaces the default set of processors in this stage; use + * with care. + * + * @param processors One or more processors + */ + replacePostProcessors(processors: LocationProcessor[]): CatalogBuilder { + this.postProcessors = [...processors]; + this.postProcessorsReplace = true; + return this; + } + + /** + * Adds, or overwrites, a handler for placeholders (e.g. $file) in entity + * definition files. + * + * @param key The key that identifies the placeholder, e.g. "file" + * @param resolver The resolver that gets values for this placeholder + */ + setPlaceholderResolver(key: string, resolver: PlaceholderResolver) { + this.placeholderResolvers[key] = resolver; + } + + /** + * Sets the validator function to use for one or more special fields of an + * entity. This is useful if the default rules for formatting of fields are + * not sufficient. + * + * This function has no effect if used together with + * {@link CatalogBuilder#replaceEntityPolicies}. + * + * @param validators The (subset of) validators to set + */ + setFieldFormatValidators(validators: Partial) { + lodash.merge(this.fieldFormatValidators, validators); + } + + /** + * Wires up and returns all of the component parts of the catalog + */ + async build(): Promise<{ + entitiesCatalog: EntitiesCatalog; + locationsCatalog: LocationsCatalog; + higherOrderOperation: HigherOrderOperation; + }> { + const { config, database, logger } = this.env; + + const entityPolicy = this.buildEntityPolicy(); + const processors = this.buildProcessors(entityPolicy); + const rulesEnforcer = CatalogRulesEnforcer.fromConfig(config); + + const locationReader = new LocationReaders({ + ...this.env, + processors, + rulesEnforcer, + }); + + const db = await DatabaseManager.createDatabase( + await database.getClient(), + { logger }, + ); + + const entitiesCatalog = new DatabaseEntitiesCatalog(db); + const locationsCatalog = new DatabaseLocationsCatalog(db); + const higherOrderOperation = new HigherOrderOperations( + entitiesCatalog, + locationsCatalog, + locationReader, + logger, + ); + + return { + entitiesCatalog, + locationsCatalog, + higherOrderOperation, + }; + } + + private buildEntityPolicy(): EntityPolicy { + const entityPolicies: EntityPolicy[] = this.entityPoliciesReplace + ? [new SchemaValidEntityPolicy(), ...this.entityPolicies] + : [ + new SchemaValidEntityPolicy(), + new DefaultNamespaceEntityPolicy(), + new NoForeignRootFieldsEntityPolicy(), + new FieldFormatEntityPolicy( + makeValidator(this.fieldFormatValidators), + ), + new ReservedFieldsEntityPolicy(), + ...this.entityPolicies, + ]; + + const entityKinds: EntityPolicy[] = this.entityKindsReplace + ? this.entityKinds + : [ + componentEntityV1alpha1Policy, + groupEntityV1alpha1Policy, + userEntityV1alpha1Policy, + locationEntityV1alpha1Policy, + templateEntityV1alpha1Policy, + apiEntityV1alpha1Policy, + ...this.entityKinds, + ]; + + return EntityPolicies.allOf([ + EntityPolicies.allOf(entityPolicies), + EntityPolicies.oneOf(entityKinds), + ]); + } + + private buildProcessors(entityPolicy: EntityPolicy): LocationProcessor[] { + const { config, reader } = this.env; + + const placeholderResolvers = lodash.merge( + { + json: jsonPlaceholderResolver, + yaml: yamlPlaceholderResolver, + text: textPlaceholderResolver, + }, + this.placeholderResolvers, + ); + + return [ + StaticLocationProcessor.fromConfig(config), + ...this.buildReaderProcessors(), + ...this.buildParserProcessors(), + new PlaceholderProcessor({ resolvers: placeholderResolvers, reader }), + ...this.buildPreProcessors(), + new EntityPolicyProcessor(entityPolicy), + ...this.buildPostProcessors(), + ]; + } + + private buildReaderProcessors(): LocationProcessor[] { + const { config, logger, reader } = this.env; + + if (this.readerProcessorsReplace) { + return this.readerProcessors; + } + + // TODO(Rugvip): These are added for backwards compatibility if config exists + // The idea is to have everyone migrate from using the old processors to the new + // integration config driven UrlReaders. In an upcoming release we can then completely + // remove support for the old processors, but still keep handling the deprecated location + // types for a while, but with a warning. + const oldProcessors = []; + const pc = config.getOptionalConfig('catalog.processors'); + if (pc?.has('github')) { + logger.warn( + `Using deprecated configuration for catalog.processors.github, move to using integrations.github instead`, + ); + oldProcessors.push(GithubReaderProcessor.fromConfig(config, logger)); + } + if (pc?.has('gitlabApi')) { + logger.warn( + `Using deprecated configuration for catalog.processors.gitlabApi, move to using integrations.gitlab instead`, + ); + oldProcessors.push(new GitlabApiReaderProcessor(config)); + oldProcessors.push(new GitlabReaderProcessor()); + } + if (pc?.has('bitbucketApi')) { + logger.warn( + `Using deprecated configuration for catalog.processors.bitbucketApi, move to using integrations.bitbucket instead`, + ); + oldProcessors.push(new BitbucketApiReaderProcessor(config)); + } + if (pc?.has('azureApi')) { + logger.warn( + `Using deprecated configuration for catalog.processors.azureApi, move to using integrations.azure instead`, + ); + oldProcessors.push(new AzureApiReaderProcessor(config)); + } + + return [ + new FileReaderProcessor(), + ...oldProcessors, + GithubOrgReaderProcessor.fromConfig(config, { logger }), + LdapOrgReaderProcessor.fromConfig(config, { logger }), + new UrlReaderProcessor({ reader, logger }), + ...this.readerProcessors, + ]; + } + + private buildParserProcessors(): LocationProcessor[] { + if (this.parserProcessorsReplace) { + return this.parserProcessors; + } + + return [new YamlProcessor(), ...this.parserProcessors]; + } + + private buildPreProcessors(): LocationProcessor[] { + const { reader } = this.env; + + if (this.preProcessorsReplace) { + return this.preProcessors; + } + + return [new CodeOwnersProcessor({ reader }), ...this.preProcessors]; + } + + private buildPostProcessors(): LocationProcessor[] { + if (this.postProcessorsReplace) { + return this.postProcessors; + } + + return [ + new LocationRefProcessor(), + new AnnotateLocationEntityProcessor(), + ...this.postProcessors, + ]; + } +} diff --git a/plugins/catalog-backend/src/service/index.ts b/plugins/catalog-backend/src/service/index.ts new file mode 100644 index 0000000000..c6da8db486 --- /dev/null +++ b/plugins/catalog-backend/src/service/index.ts @@ -0,0 +1,19 @@ +/* + * 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 { CatalogBuilder } from './CatalogBuilder'; +export { createRouter } from './router'; +export type { RouterOptions } from './router'; diff --git a/plugins/catalog-backend/src/service/standaloneServer.ts b/plugins/catalog-backend/src/service/standaloneServer.ts index 5939c7eb58..713a5783ba 100644 --- a/plugins/catalog-backend/src/service/standaloneServer.ts +++ b/plugins/catalog-backend/src/service/standaloneServer.ts @@ -18,16 +18,14 @@ import { createServiceBuilder, loadBackendConfig, UrlReaders, + useHotMemoize, } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { Server } from 'http'; import { Logger } from 'winston'; -import { HigherOrderOperations } from '..'; -import { DatabaseEntitiesCatalog } from '../catalog/DatabaseEntitiesCatalog'; -import { DatabaseLocationsCatalog } from '../catalog/DatabaseLocationsCatalog'; -import { DatabaseManager } from '../database/DatabaseManager'; +import { DatabaseManager } from '../database'; +import { CatalogBuilder } from './CatalogBuilder'; import { createRouter } from './router'; -import { LocationReaders } from '../ingestion'; export interface ServerOptions { port: number; @@ -41,18 +39,22 @@ export async function startStandaloneServer( const logger = options.logger.child({ service: 'catalog-backend' }); const config = ConfigReader.fromConfigs(await loadBackendConfig()); const reader = UrlReaders.default({ logger, config }); + const db = useHotMemoize(module, () => + DatabaseManager.createInMemoryDatabaseConnection(), + ); logger.debug('Creating application...'); - const db = await DatabaseManager.createInMemoryDatabase({ logger }); - const entitiesCatalog = new DatabaseEntitiesCatalog(db); - const locationsCatalog = new DatabaseLocationsCatalog(db); - const locationReader = new LocationReaders({ logger, config, reader }); - const higherOrderOperation = new HigherOrderOperations( + const builder = new CatalogBuilder({ + logger, + database: { getClient: () => db }, + config, + reader, + }); + const { entitiesCatalog, locationsCatalog, - locationReader, - logger, - ); + higherOrderOperation, + } = await builder.build(); logger.debug('Starting application server...'); const router = await createRouter({ From 612dbf66aa71d9d4436f9ec2b53d5c9ecd9b8c09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 14 Oct 2020 09:39:08 +0200 Subject: [PATCH 070/323] chore(catalog-model): add missing fields to the swapi def --- packages/catalog-model/examples/swapi-graphql.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/catalog-model/examples/swapi-graphql.yaml b/packages/catalog-model/examples/swapi-graphql.yaml index 152d9c0afa..bc5e8e60ac 100644 --- a/packages/catalog-model/examples/swapi-graphql.yaml +++ b/packages/catalog-model/examples/swapi-graphql.yaml @@ -5,6 +5,8 @@ metadata: description: SWAPI GraphQL Schema spec: type: graphql + lifecycle: production + owner: yoda@dagobah.space definition: | schema { query: Root From 7f48256f76366d8fc34436410ff1a61c56d80b90 Mon Sep 17 00:00:00 2001 From: David Tuite Date: Wed, 14 Oct 2020 08:45:45 +0100 Subject: [PATCH 071/323] Add newrelic rest api key to helm charts (#2875) --- contrib/chart/backstage/Chart.yaml | 2 +- contrib/chart/backstage/templates/backend-secret.yaml | 1 + contrib/chart/backstage/values.yaml | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/contrib/chart/backstage/Chart.yaml b/contrib/chart/backstage/Chart.yaml index 7d2a489199..24c6f2a4d7 100644 --- a/contrib/chart/backstage/Chart.yaml +++ b/contrib/chart/backstage/Chart.yaml @@ -5,7 +5,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. -version: 0.1.0 +version: 0.1.1 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. diff --git a/contrib/chart/backstage/templates/backend-secret.yaml b/contrib/chart/backstage/templates/backend-secret.yaml index 63eddc2742..dc65f5777a 100644 --- a/contrib/chart/backstage/templates/backend-secret.yaml +++ b/contrib/chart/backstage/templates/backend-secret.yaml @@ -18,4 +18,5 @@ stringData: GITHUB_TOKEN: {{ .Values.auth.githubToken }} GITLAB_TOKEN: {{ .Values.auth.gitlabToken }} AZURE_TOKEN: {{ .Values.auth.azure.api.token }} + NEW_RELIC_REST_API_KEY: {{ .Values.auth.newRelicRestApiKey }} {{- end }} diff --git a/contrib/chart/backstage/values.yaml b/contrib/chart/backstage/values.yaml index 3ce45c5330..eec9c8fbe9 100644 --- a/contrib/chart/backstage/values.yaml +++ b/contrib/chart/backstage/values.yaml @@ -243,3 +243,4 @@ auth: # Used by the scaffolder to create GitHub repos. Must have 'repo' scope. githubToken: g gitlabToken: g + newRelicRestApiKey: r From ae183f96b3bba24bc4d297d18ec9cfb23b9ec76f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 14 Oct 2020 09:46:31 +0200 Subject: [PATCH 072/323] chore(catalog-model): use unknown instead of any for validators --- .../CommonValidatorFunctions.test.ts | 2 +- .../src/validation/CommonValidatorFunctions.ts | 8 ++++---- .../validation/KubernetesValidatorFunctions.ts | 16 ++++++++-------- packages/catalog-model/src/validation/types.ts | 18 +++++++++--------- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts b/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts index 457ef64611..129fdd2b62 100644 --- a/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts +++ b/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts @@ -113,7 +113,7 @@ describe('CommonValidatorFunctions', () => { [{}, true], [{ a: 1 }, true], [{ a: undefined }, false], - ] as [any, boolean][])(`isJsonSafe %p ? %p`, (value, result) => { + ] as [unknown, boolean][])(`isJsonSafe %p ? %p`, (value, result) => { expect(CommonValidatorFunctions.isJsonSafe(value)).toBe(result); }); diff --git a/packages/catalog-model/src/validation/CommonValidatorFunctions.ts b/packages/catalog-model/src/validation/CommonValidatorFunctions.ts index 349d6d7f72..90b4e1a611 100644 --- a/packages/catalog-model/src/validation/CommonValidatorFunctions.ts +++ b/packages/catalog-model/src/validation/CommonValidatorFunctions.ts @@ -31,7 +31,7 @@ export class CommonValidatorFunctions { * @param isValidSuffix Checks that the part after the separator (or the entire value if there is no separator) is valid */ static isValidPrefixAndOrSuffix( - value: any, + value: unknown, separator: string, isValidPrefix: (value: string) => boolean, isValidSuffix: (value: string) => boolean, @@ -55,7 +55,7 @@ export class CommonValidatorFunctions { * * @param value The value to check */ - static isJsonSafe(value: any): boolean { + static isJsonSafe(value: unknown): boolean { try { return lodash.isEqual(value, JSON.parse(JSON.stringify(value))); } catch { @@ -69,7 +69,7 @@ export class CommonValidatorFunctions { * @param value The value to check * @see https://tools.ietf.org/html/rfc1123 */ - static isValidDnsSubdomain(value: any): boolean { + static isValidDnsSubdomain(value: unknown): boolean { return ( typeof value === 'string' && value.length >= 1 && @@ -84,7 +84,7 @@ export class CommonValidatorFunctions { * @param value The value to check * @see https://tools.ietf.org/html/rfc1123 */ - static isValidDnsLabel(value: any): boolean { + static isValidDnsLabel(value: unknown): boolean { return ( typeof value === 'string' && value.length >= 1 && diff --git a/packages/catalog-model/src/validation/KubernetesValidatorFunctions.ts b/packages/catalog-model/src/validation/KubernetesValidatorFunctions.ts index fa938f5fcb..ada0aa71ff 100644 --- a/packages/catalog-model/src/validation/KubernetesValidatorFunctions.ts +++ b/packages/catalog-model/src/validation/KubernetesValidatorFunctions.ts @@ -25,7 +25,7 @@ import { CommonValidatorFunctions } from './CommonValidatorFunctions'; * @see https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/#syntax-and-character-set */ export class KubernetesValidatorFunctions { - static isValidApiVersion(value: any): boolean { + static isValidApiVersion(value: unknown): boolean { return CommonValidatorFunctions.isValidPrefixAndOrSuffix( value, '/', @@ -34,7 +34,7 @@ export class KubernetesValidatorFunctions { ); } - static isValidKind(value: any): boolean { + static isValidKind(value: unknown): boolean { return ( typeof value === 'string' && value.length >= 1 && @@ -43,7 +43,7 @@ export class KubernetesValidatorFunctions { ); } - static isValidObjectName(value: any): boolean { + static isValidObjectName(value: unknown): boolean { return ( typeof value === 'string' && value.length >= 1 && @@ -52,11 +52,11 @@ export class KubernetesValidatorFunctions { ); } - static isValidNamespace(value: any): boolean { + static isValidNamespace(value: unknown): boolean { return CommonValidatorFunctions.isValidDnsLabel(value); } - static isValidLabelKey(value: any): boolean { + static isValidLabelKey(value: unknown): boolean { return CommonValidatorFunctions.isValidPrefixAndOrSuffix( value, '/', @@ -65,13 +65,13 @@ export class KubernetesValidatorFunctions { ); } - static isValidLabelValue(value: any): boolean { + static isValidLabelValue(value: unknown): boolean { return ( value === '' || KubernetesValidatorFunctions.isValidObjectName(value) ); } - static isValidAnnotationKey(value: any): boolean { + static isValidAnnotationKey(value: unknown): boolean { return CommonValidatorFunctions.isValidPrefixAndOrSuffix( value, '/', @@ -80,7 +80,7 @@ export class KubernetesValidatorFunctions { ); } - static isValidAnnotationValue(value: any): boolean { + static isValidAnnotationValue(value: unknown): boolean { return typeof value === 'string'; } } diff --git a/packages/catalog-model/src/validation/types.ts b/packages/catalog-model/src/validation/types.ts index 14706485ca..a4475c4809 100644 --- a/packages/catalog-model/src/validation/types.ts +++ b/packages/catalog-model/src/validation/types.ts @@ -15,13 +15,13 @@ */ export type Validators = { - isValidApiVersion(value: any): boolean; - isValidKind(value: any): boolean; - isValidEntityName(value: any): boolean; - isValidNamespace(value: any): boolean; - isValidLabelKey(value: any): boolean; - isValidLabelValue(value: any): boolean; - isValidAnnotationKey(value: any): boolean; - isValidAnnotationValue(value: any): boolean; - isValidTag(value: any): boolean; + isValidApiVersion(value: unknown): boolean; + isValidKind(value: unknown): boolean; + isValidEntityName(value: unknown): boolean; + isValidNamespace(value: unknown): boolean; + isValidLabelKey(value: unknown): boolean; + isValidLabelValue(value: unknown): boolean; + isValidAnnotationKey(value: unknown): boolean; + isValidAnnotationValue(value: unknown): boolean; + isValidTag(value: unknown): boolean; }; From c805350b727a98f32e7067adc6c073987fdc3fd0 Mon Sep 17 00:00:00 2001 From: Marcus Eide Date: Wed, 14 Oct 2020 09:50:41 +0200 Subject: [PATCH 073/323] Add documentation section about the project structure (#2880) --- docs/support/project-structure.md | 239 ++++++++++++++++++++++++++ docs/{overview => support}/support.md | 0 microsite/sidebars.json | 2 +- mkdocs.yml | 4 +- 4 files changed, 243 insertions(+), 2 deletions(-) create mode 100644 docs/support/project-structure.md rename docs/{overview => support}/support.md (100%) diff --git a/docs/support/project-structure.md b/docs/support/project-structure.md new file mode 100644 index 0000000000..277ca3929f --- /dev/null +++ b/docs/support/project-structure.md @@ -0,0 +1,239 @@ +--- +id: project-structure +title: Backstage Project Structure +description: + Introduction to files and folders in the Backstage Project repository +--- + +Backstage is a complex project, and the GitHub repository contains many +different files and folders. This document aims to clarify what purpose of those +files and folders are. + +## General purpose files and folders + +In the project root, there are a set of files and folders which are not part of +the project as such, and may or may not be familiar to someone looking through +the code. + +- [`.changeset/`](https://github.com/spotify/backstage/tree/master/.changeset) - + This folder contains files outlining which changes occurred in the project + since the last release. These files are added manually, but managed by + [changesets](https://github.com/atlassian/changesets) and will be removed at + every new release. They are essentially building-blocks of a CHANGELOG. + +- [`.github/`](https://github.com/spotify/backstage/tree/master/.github) - + Standard GitHub folder. It contains - amongst other things - our workflow + definitions and templates. Worth noting is the + [styles](https://github.com/spotify/backstage/tree/master/.github/styles) + folder which is used for a markdown spellchecker. + +- [`.yarn/`](https://github.com/spotify/backstage/tree/master/.yarn) - Backstage + ships with it's own `yarn` implementation. This allows us to have better + control over our `yarn.lock` file and hopefully avoid problems due to yarn + versioning differences. + +- [`docker/`](https://github.com/spotify/backstage/tree/master/docker) - Files + related to our root Dockerfile. We are planning to refactor this, so expect + this folder to be moved in the future. + +- [`contrib/`](https://github.com/spotify/backstage/tree/master/contrib) - + Collection of examples or resources provided by the community. We really + appreciate contributions in here and encourage them being kept up to date. + +- [`docs/`](https://github.com/spotify/backstage/tree/master/docs) - This is + where we keep all of our documentation markdown files. These ends up on + http://backstage.io/docs. Just keep in mind that changes to + [this](https://github.com/spotify/backstage/blob/master/microsite/sidebars.json) + file also needs to be updated. + +- [`.editorconfig`](https://github.com/spotify/backstage/tree/master/.editorconfig) - + A configuration file used by most common code editors. + +- [`.imgbotconfig`](https://github.com/spotify/backstage/tree/master/.imgbotconfig) - + Configuration for a [bot](https://imgbot.net/) + +## Monorepo packages + +Every folder in both `packages/` and `plugins/` is within our monorepo setup, as +defined in +[`package.json`](https://github.com/spotify/backstage/blob/master/package.json): + +```json + "workspaces": { + "packages": [ + "packages/*", + "plugins/*" + ] + }, +``` + +Let's look at them individually. + +### `packages/` + +These are all the packages that is we use within the project. +[Plugins](#plugins) are separated out into their own folder, see further down. + +- [`app/`](https://github.com/spotify/backstage/tree/master/packages/app) - This + is our take on how an App could look like, bringing together a set of packages + and plugins into a working Backstage App. This is not a published package, and + the main goals is to provide a demo of what an App could look like, and also + enabling local development. + +- [`backend/`](https://github.com/spotify/backstage/tree/master/packages/backend) - + Every standalone backstage project will have both an `app` _and_ a `backend` + package. The `backend` uses plugins to construct a working backend that the + frontend (`app`) can use. + +- [`backend-common/`](https://github.com/spotify/backstage/tree/master/packages/backend-common) - + There are no "core" packages in the backend. Instead we have `backend-common` + which contains helper middleware´s and other utils. + +- [`catalog-model/`](https://github.com/spotify/backstage/tree/master/packages/catalog-model) - + You can considers this to be a library for working with the catalog of sorts. + It contains the definition of an + [Entity](https://backstage.io/docs/features/software-catalog/references#docsNav), + as well as validation an other logic related to it. This package can be used + in both the frontend and the backend. + +- [`cli/`](https://github.com/spotify/backstage/tree/master/packages/cli) - One + of the biggest packages in our project, the `cli` is used to build, serve, + diff, create-plugins and more. In the early days of this project, we started + out with calling tools directly - such as `eslint` - through package.json. But + as it was tricky to have a good development experience around that when we + change named tooling, we opted for wrapping those in our own cli. That way + everything looks the same in package.json. Much like + [react-scripts](https://github.com/facebook/create-react-app/tree/master/packages/react-scripts). + +- [`cli-common/`](https://github.com/spotify/backstage/tree/master/packages/cli-common) - + This package mainly handles path resolving. It is a separate package to reduce + bugs in [cli](https://github.com/spotify/backstage/tree/master/packages/cli). + We also want as few dependencies as possible to reduce download time when + running the cli which is another reason this is a separate package. + +* [`config/`](https://github.com/spotify/backstage/tree/master/packages/config) - + The way we read configuration data. This package can take a bunch of config + objects and merge them together. + [app-config.yaml](https://github.com/spotify/backstage/blob/master/app-config.yaml) + is an example of an config object. + +* [`config-loader/`](https://github.com/spotify/backstage/tree/master/packages/config-loader) - + This package is used to read config objects. It does not know how to merge, + this only reads files and passes them on to the config. As this part os only + used by the backend, we chose to separate `config` and `config-loader` into + two different packages. + +- [`core/`](https://github.com/spotify/backstage/tree/master/packages/core) - + This package contains our visual React components, some of which you can find + [here](https://backstage.io/storybook/?path=/story/plugins-examples--plugin-with-data). + Apart from that it re-exports everything from [`core-api`] so that users only + need to rely on one package. + +* [`core-api/`](https://github.com/spotify/backstage/tree/master/packages/core-api) - + This package contains apis and definitions of such. It is it's own package + because we needed to split our `test-utils` package. It's an implementation + detail that we try to hide from our users, and no-one should have to depend on + it directly. + +* [`test-utils/`](https://github.com/spotify/backstage/tree/master/packages/test-utils) - + This package contains specific testing facilities used when testing + `core-api`. + +* [`test-utils-core/`](https://github.com/spotify/backstage/tree/master/packages/test-utils-core) - + This package contains more general purpose testing facilities for testing an + Backstage App. + +* [`create-app/`](https://github.com/spotify/backstage/tree/master/packages/create-app) - + An CLI to specifically scaffold a new Backstage App. It does so by using a + [template](https://github.com/spotify/backstage/tree/master/packages/create-app/templates/default-app). + +- [`dev-utils/`](https://github.com/spotify/backstage/tree/master/packages/dev-utils) - + Helps you setup a plugin for isolated development so that it can be served + separately. + +* [`docgen/`](https://github.com/spotify/backstage/tree/master/packages/docgen) - + Uses the + [Typescript Compiler API](https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API) + to read out definitions and generate documentation for it. + +* [`e2e-test/`](https://github.com/spotify/backstage/tree/master/packages/e2e-test) - + Another CLI that can be run to try out what would happen if you built all the + packages, publish them, created a new app, and the run it. CI uses this for + e2e-tests. + +* [`storybook/`](https://github.com/spotify/backstage/tree/master/packages/storybook) - + This folder contains only the storybook config. Stories are within the core + package. The Backstage Storybook is found + [here](https://backstage.io/storybook) + +* [`techdocs-cli/`](https://github.com/spotify/backstage/tree/master/packages/techdocs-cli) - + Used for verifying TechDocs locally. + +* [`techdocs-container/`](https://github.com/spotify/backstage/tree/master/packages/techdocs-container) - + Used by the `techdocs-cli` + +* [`test-utils-core/`](https://github.com/spotify/backstage/tree/master/packages/test-utils-core) + +* [`test-utils/`](https://github.com/spotify/backstage/tree/master/packages/test-utils) + +* [`theme/`](https://github.com/spotify/backstage/tree/master/packages/theme) - + Holds the Backstage Theme. + +### `plugins/` + +Most of the functionality of an Backstage App comes from plugins. Even core +features can be plugins, take the +[catalog](https://github.com/spotify/backstage/tree/master/plugins/catalog) as +an example. + +We can categorize plugins into three different types; **Frontend**, **Backend** +and **GraphQL**. We differentiate these types of plugins when we name them, with +a dash-suffix. `-backend` means it’s a backend plugin and so on. + +One reason for splitting a plugin is because of to it's dependencies. Another +reason is for clear separation of concerns. + +Take a look at our [Plugin Gallery](https://backstage.io/plugins) or browse +through the +[`plugins/`](https://github.com/spotify/backstage/tree/master/plugins) folder. + +## Packages outside of the monorepo + +For convenience we include packages in our project that is not part of our +monorepo setup. + +- [`microsite/`](https://github.com/spotify/backstage/blob/master/microsite) - + This folder contains the source code for backstage.io. It is built with + [Docusaurus](https://docusaurus.io/). This folder is not part of the monorepo + due to dependency reasons. Look at the + [README](https://github.com/spotify/backstage/blob/master/microsite/README.md) + for instructions on how to run it locally. + +## Root files specifically used by the `app` + +These files are kept in the root of the project mostly by historical reasons. +Some of these files may be subject to be moved out of the root sometime in the +future. + +- [`.npmrc`](https://github.com/spotify/backstage/tree/master/.npmrc) - It's + common for companies to have their own npm registry, this files makes sure + that this folder use the public registry. + +- [`.vale.ini`](https://github.com/spotify/backstage/tree/master/.vale.ini) - + [Spell checker](https://github.com/errata-ai/vale) for markdown files + +- [`.yarnrc`](https://github.com/spotify/backstage/tree/master/.yarnrc) - + Enforces "our" version of yarn. + +- [`app-config.yaml`](https://github.com/spotify/backstage/tree/master/app-config.yaml) - + Configuration for the app, both frontend and backend + +- [`app-config.development.yaml`](https://github.com/spotify/backstage/tree/master/app-config.development.yaml) - + Used for overriding configuration when developing locally. + +- [`catalog-info.yaml`](https://github.com/spotify/backstage/tree/master/catalog-info.yaml) - + Description of Backstage in the Backstage Entity format. + +- [`lerna.json`](https://github.com/spotify/backstage/tree/master/lerna.json) - + [lerna](https://github.com/lerna/lerna) monorepo config. We are using + `yarn workspaces`, so this will only be used for executing scripts. diff --git a/docs/overview/support.md b/docs/support/support.md similarity index 100% rename from docs/overview/support.md rename to docs/support/support.md diff --git a/microsite/sidebars.json b/microsite/sidebars.json index 7081e2bb1c..ad48fb1e7c 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -163,7 +163,7 @@ "architecture-decisions/adrs-adr009" ], "Contribute": ["../CONTRIBUTING"], - "Support": ["overview/support"], + "Support": ["support/support", "support/project-structure"], "FAQ": ["FAQ"] } } diff --git a/mkdocs.yml b/mkdocs.yml index 4fbec4650d..b4606131a7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -107,7 +107,9 @@ nav: - ADR008 - Default Catalog File Name: 'architecture-decisions/adr008-default-catalog-file-name.md' - ADR009 - Entity References: 'architecture-decisions/adr009-entity-references.md' - Contribute: '../CONTRIBUTING.md' - - Support: 'overview/support.md' + - Support: + - 'support/support.md' + - 'support/project-structure.md' - FAQ: FAQ.md plugins: From 3727322ecd4645431d62f6c261080f35d56f04a9 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Wed, 14 Oct 2020 09:58:21 +0200 Subject: [PATCH 074/323] Clarify catalog info YAML, TechDocs (#2882) * Add note about catalog-info.yaml convention to format docs. * Improve TechDocs Create & Publish Docs: - Clarify the two paths to getting started - Clarify `catalog-info.yaml` / component registration - Minor grammar cleanup * Correct link to software catalog overview --- .../software-catalog/descriptor-format.md | 3 +++ .../techdocs/creating-and-publishing.md | 18 +++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/docs/features/software-catalog/descriptor-format.md b/docs/features/software-catalog/descriptor-format.md index 0c50e3669a..3a1db235a0 100644 --- a/docs/features/software-catalog/descriptor-format.md +++ b/docs/features/software-catalog/descriptor-format.md @@ -14,6 +14,9 @@ natively. In the API request/response cycle, a JSON representation is used, while the descriptor files are on YAML format to be more easily maintainable by humans. However, the structure and semantics is the same in both cases. +Although it's possible to name catalog entity descriptor files however you wish, +we recommend that you name them `catalog-info.yaml`. + ## Contents - [Overall Shape Of An Entity](#overall-shape-of-an-entity) diff --git a/docs/features/techdocs/creating-and-publishing.md b/docs/features/techdocs/creating-and-publishing.md index e1adedf25e..947e6de371 100644 --- a/docs/features/techdocs/creating-and-publishing.md +++ b/docs/features/techdocs/creating-and-publishing.md @@ -19,6 +19,12 @@ This section will guide you through: ## Create a basic documentation setup +If you have an existing repository that you'd like to add documentation to, skip +to the +[Manually add documentation setup](#manually-add-documentation-setup-to-already-existing-repository) +section below. Otherwise, continue reading to start a documentation repo from +scratch. + ### Use the documentation template Your working Backstage instance should by default have a documentation template @@ -35,9 +41,11 @@ setup for free. Prerequisities: -- `catalog-info.yml` file registered to Backstage. +- An existing component + [registered in backstage](../software-catalog/index.md#adding-components-to-the-catalog) + (e.g. via a `catalog-info.yaml` file). -Create a `mkdocs.yml` file in the root of the repository with the following +Create an `mkdocs.yml` file in the root of your repository with the following content: ```yaml @@ -50,8 +58,8 @@ plugins: - techdocs-core ``` -Update your `catalog-info.yaml` file in the root of the repository with the -following content: +Update your component's entity description by adding the following lines to its +`catalog-info.yaml` in the root of its repository: ```yaml metadata: @@ -59,7 +67,7 @@ metadata: backstage.io/techdocs-ref: dir:./ ``` -Create a `/docs` folder in the root of the project with at least a `index.md` +Create a `/docs` folder in the root of the project with at least an `index.md` file. _(If you add more markdown files, make sure to update the nav in the mkdocs.yml file to get a proper navigation for your documentation.)_ From 7eb4ec9919f62b12f5dc6fb8fdead693d1a790b1 Mon Sep 17 00:00:00 2001 From: Eric Nilsson Date: Wed, 14 Oct 2020 10:24:31 +0200 Subject: [PATCH 075/323] TechDocsPageHeader: Changed repo location icon --- plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx b/plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx index c59cce2b11..a7db342544 100644 --- a/plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx @@ -15,7 +15,7 @@ */ import React from 'react'; -import GitHubIcon from '@material-ui/icons/GitHub'; +import CodeIcon from '@material-ui/icons/Code'; import { Header, HeaderLabel, Link } from '@backstage/core'; import { CircularProgress } from '@material-ui/core'; import { ParsedEntityId } from '../../types'; @@ -73,7 +73,7 @@ export const TechDocsPageHeader = ({ target="_blank" rel="noopener noreferrer" > - + } /> From 08f5e0311fa7e7b577a9ef10f7943d65110c538f Mon Sep 17 00:00:00 2001 From: Eric Nilsson Date: Wed, 14 Oct 2020 11:03:41 +0200 Subject: [PATCH 076/323] TechDocsPageHeader: Changed repo location icon (#2895) --- plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx b/plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx index c59cce2b11..a7db342544 100644 --- a/plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx @@ -15,7 +15,7 @@ */ import React from 'react'; -import GitHubIcon from '@material-ui/icons/GitHub'; +import CodeIcon from '@material-ui/icons/Code'; import { Header, HeaderLabel, Link } from '@backstage/core'; import { CircularProgress } from '@material-ui/core'; import { ParsedEntityId } from '../../types'; @@ -73,7 +73,7 @@ export const TechDocsPageHeader = ({ target="_blank" rel="noopener noreferrer" > - + } /> From 3b17fa02f87eef8c3ea0a7a5ccf18ba43737e4ce Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Wed, 14 Oct 2020 11:07:56 +0200 Subject: [PATCH 077/323] Vale: Use files provided by lint staged to check --- scripts/check-docs-quality.js | 63 ++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/scripts/check-docs-quality.js b/scripts/check-docs-quality.js index 4f5f689105..cd41fa25c2 100755 --- a/scripts/check-docs-quality.js +++ b/scripts/check-docs-quality.js @@ -1,4 +1,3 @@ -#!/usr/bin/env node /* * Copyright 2020 Spotify AB * @@ -15,67 +14,71 @@ * limitations under the License. */ const { execSync, spawnSync } = require('child_process'); -const path = require('path'); // eslint-disable-next-line import/no-extraneous-dependencies const commandExists = require('command-exists'); -const listFilesTrackedByGit = 'git ls-files'; - const inheritStdIo = { stdio: 'inherit', }; const LINT_SKIPPED_MESSAGE = 'Skipping documentation quality check (vale not found). Install vale linter (https://docs.errata.ai/vale/install) to enable.\n'; -const ERROR_MESSAGE = - 'Language linter (vale) generated errors. Please check the errors and review any markdown files that you changed.\n'; +const ERROR_MESSAGE = `Language linter (vale) generated errors. Please check the errors and review any markdown files that you changed. + Possibly update .github/styles/vocab.txt to add new valid words.\n`; + +// Note: Make sure the script is run as `node check-docs-quality.js [FILES]` instead of `./check-docs-quality.js [FILES]` +// If the script receives arguments (file paths), the script is run exclusively on them. (e.g. when run via pre-commit hook) +const getFilesToLint = () => { + // Files have been provided as arguments + if (process.argv.length > 2) { + return process.argv.slice(2); + } + + let command = `git ls-files | ./node_modules/.bin/shx grep ".md"`; + if (process.platform === 'win32') { + command = `git ls-files | .\\node_modules\\.bin\\shx grep ".md"`; + } + + return execSync(command, { + stdio: ['ignore', 'pipe', 'inherit'], + }) + .toString() + .split('\n'); +}; // Proceed with the script only if Vale linter is installed. Limit the friction and surprises caused by the script. commandExists('vale') .catch(() => { console.log(LINT_SKIPPED_MESSAGE); - process.exit(0); + // process.exit(0); + process.exit(1); }) .then(() => { + const filesToLint = getFilesToLint(); + console.log('files to lint'); + console.log(filesToLint); + // xargs is not supported by shx. if (process.platform === 'win32') { - const validMDFilesCommand = `${listFilesTrackedByGit} | .\\node_modules\\.bin\\shx grep ".md"`; try { - // get list of all md files except in directories of gitignore. - let filesToLint = execSync(validMDFilesCommand, { - stdio: ['ignore', 'pipe', 'inherit'], - }); - - // set all file(s) path as absolute path - filesToLint = filesToLint - .toString() - .split('\n') - .map(filepath => - filepath ? path.join(process.cwd(), filepath) : null, - ) - .filter(Boolean); - const output = spawnSync('vale', filesToLint, inheritStdIo); // if the command does not succeed if (output.status !== 0) { // if it contains system level error. [in this case vale does not exist] if (output.error) { - console.error(ERROR_MESSAGE); + console.log(ERROR_MESSAGE); } process.exit(1); } } catch (e) { - console.error(e.message); + console.log(e.message); process.exit(1); } } else { - const validMDFilesCommand = `${listFilesTrackedByGit} | ./node_modules/.bin/shx grep ".md"`; - // use xargs - try { - execSync(`${validMDFilesCommand} | xargs vale`, inheritStdIo); - } catch (e) { - console.error(ERROR_MESSAGE); + const output = spawnSync('vale', filesToLint, inheritStdIo); + if (output.status !== 0) { + console.log(ERROR_MESSAGE); process.exit(1); } } From c1d6bc03f6ac7722987fcde48a8e89359149260f Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Wed, 14 Oct 2020 11:16:23 +0200 Subject: [PATCH 078/323] Vale: Enforce vale to be run on CI --- scripts/check-docs-quality.js | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/scripts/check-docs-quality.js b/scripts/check-docs-quality.js index cd41fa25c2..f29463939b 100755 --- a/scripts/check-docs-quality.js +++ b/scripts/check-docs-quality.js @@ -23,8 +23,9 @@ const inheritStdIo = { const LINT_SKIPPED_MESSAGE = 'Skipping documentation quality check (vale not found). Install vale linter (https://docs.errata.ai/vale/install) to enable.\n'; -const ERROR_MESSAGE = `Language linter (vale) generated errors. Please check the errors and review any markdown files that you changed. +const LINT_ERROR_MESSAGE = `Language linter (vale) generated errors. Please check the errors and review any markdown files that you changed. Possibly update .github/styles/vocab.txt to add new valid words.\n`; +const VALE_NOT_FOUND_MESSAGE = `Language linter (vale) was not found. Please install vale linter (https://docs.errata.ai/vale/install).\n`; // Note: Make sure the script is run as `node check-docs-quality.js [FILES]` instead of `./check-docs-quality.js [FILES]` // If the script receives arguments (file paths), the script is run exclusively on them. (e.g. when run via pre-commit hook) @@ -47,27 +48,29 @@ const getFilesToLint = () => { }; // Proceed with the script only if Vale linter is installed. Limit the friction and surprises caused by the script. +// On CI, we want to ensure vale linter is run. commandExists('vale') .catch(() => { + if (process.env.CI) { + console.log(VALE_NOT_FOUND_MESSAGE); + process.exit(1); + } console.log(LINT_SKIPPED_MESSAGE); - // process.exit(0); - process.exit(1); + process.exit(0); }) .then(() => { const filesToLint = getFilesToLint(); - console.log('files to lint'); - console.log(filesToLint); - // xargs is not supported by shx. if (process.platform === 'win32') { + // Windows try { const output = spawnSync('vale', filesToLint, inheritStdIo); - // if the command does not succeed + // If the command does not succeed if (output.status !== 0) { - // if it contains system level error. [in this case vale does not exist] + // If it contains system level error. In this case vale does not exist. if (output.error) { - console.log(ERROR_MESSAGE); + console.log(LINT_ERROR_MESSAGE); } process.exit(1); } @@ -76,9 +79,10 @@ commandExists('vale') process.exit(1); } } else { + // Unix const output = spawnSync('vale', filesToLint, inheritStdIo); if (output.status !== 0) { - console.log(ERROR_MESSAGE); + console.log(LINT_ERROR_MESSAGE); process.exit(1); } } From e4f53f0e30354e52ab6718418d4f59c62098b757 Mon Sep 17 00:00:00 2001 From: Nicholas Chew <52598569+niccheww@users.noreply.github.com> Date: Wed, 14 Oct 2020 18:42:19 +0800 Subject: [PATCH 079/323] customisation design for navbar (#2873) Co-authored-by: nicholas.chew --- packages/core/src/layout/Sidebar/Items.tsx | 4 ++-- packages/theme/src/themes.ts | 4 ++++ packages/theme/src/types.ts | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/core/src/layout/Sidebar/Items.tsx b/packages/core/src/layout/Sidebar/Items.tsx index 5a476e2209..2eca89f873 100644 --- a/packages/core/src/layout/Sidebar/Items.tsx +++ b/packages/core/src/layout/Sidebar/Items.tsx @@ -40,7 +40,7 @@ const useStyles = makeStyles(theme => { return { root: { - color: '#b5b5b5', + color: theme.palette.navigation.color, display: 'flex', flexFlow: 'row nowrap', alignItems: 'center', @@ -96,7 +96,7 @@ const useStyles = makeStyles(theme => { selected: { '&$root': { borderLeft: `solid ${selectedIndicatorWidth}px ${theme.palette.navigation.indicator}`, - color: '#ffffff', + color: theme.palette.navigation.selectedColor, }, '&$closed': { width: drawerWidthClosed - selectedIndicatorWidth, diff --git a/packages/theme/src/themes.ts b/packages/theme/src/themes.ts index 0ec3304ac5..82076aec3c 100644 --- a/packages/theme/src/themes.ts +++ b/packages/theme/src/themes.ts @@ -64,6 +64,8 @@ export const lightTheme = createTheme({ navigation: { background: '#171717', indicator: '#9BF0E1', + color: '#b5b5b5', + selectedColor: '#FFF', }, pinSidebarButton: { icon: '#181818', @@ -122,6 +124,8 @@ export const darkTheme = createTheme({ navigation: { background: '#424242', indicator: '#9BF0E1', + color: '#b5b5b5', + selectedColor: '#FFF', }, pinSidebarButton: { icon: '#404040', diff --git a/packages/theme/src/types.ts b/packages/theme/src/types.ts index 1d244f8cd4..8eeeddd17d 100644 --- a/packages/theme/src/types.ts +++ b/packages/theme/src/types.ts @@ -46,6 +46,8 @@ type PaletteAdditions = { navigation: { background: string; indicator: string; + color: string; + selectedColor: string; }; tabbar: { indicator: string; From d4f221bee223e9f86cb1684eba39ff549a97a60b Mon Sep 17 00:00:00 2001 From: Althaf Hameez Date: Wed, 14 Oct 2020 19:26:58 +0800 Subject: [PATCH 080/323] Update techdocs url to the new default --- docs/features/techdocs/getting-started.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/techdocs/getting-started.md b/docs/features/techdocs/getting-started.md index 2e5c8d000d..72efb6eee0 100644 --- a/docs/features/techdocs/getting-started.md +++ b/docs/features/techdocs/getting-started.md @@ -58,7 +58,7 @@ The default storage and request URLs: ```yaml techdocs: storageUrl: http://localhost:7000/api/techdocs/static/docs - requestUrl: http://localhost:7000/api/techdocs/docs + requestUrl: http://localhost:7000/api/techdocs/ ``` If you want `techdocs-backend` to manage building and publishing, you want From cb867d885445cf204a59e1758b447f0a857647d1 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Wed, 14 Oct 2020 13:36:12 +0200 Subject: [PATCH 081/323] Friendlier error when NR APM API Key isn't configured. --- .../NewRelicFetchComponent/NewRelicFetchComponent.tsx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/plugins/newrelic/src/components/NewRelicFetchComponent/NewRelicFetchComponent.tsx b/plugins/newrelic/src/components/NewRelicFetchComponent/NewRelicFetchComponent.tsx index 9b3791e062..4322bba10b 100644 --- a/plugins/newrelic/src/components/NewRelicFetchComponent/NewRelicFetchComponent.tsx +++ b/plugins/newrelic/src/components/NewRelicFetchComponent/NewRelicFetchComponent.tsx @@ -107,10 +107,15 @@ const NewRelicFetchComponent: FC<{}> = () => { const configApi = useApi(configApiRef); const apiBaseUrl = configApi.getString('newrelic.api.baseUrl'); const apiKey = configApi.getString('newrelic.api.key'); + const apiKeyIsSet = apiKey && apiKey !== 'NEW_RELIC_REST_API_KEY'; const { value, loading, error } = useAsync(async (): Promise< NewRelicApplication[] > => { + if (!apiKeyIsSet) { + return []; + } + const response = await fetch(`${apiBaseUrl}/applications.json`, { headers: { 'X-Api-Key': apiKey, @@ -126,6 +131,12 @@ const NewRelicFetchComponent: FC<{}> = () => { return ; } else if (error) { return {error.message}; + } else if (!apiKeyIsSet) { + return ( + + No REST API Key configured. Check your app-config.yaml. + + ); } return ; From 179a960b15b71d2f699f76c3e35b71377b4e5728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Wed, 14 Oct 2020 16:43:39 +0200 Subject: [PATCH 082/323] Tweak missing annotation emptystate (#2897) --- packages/core/src/components/EmptyState/EmptyState.tsx | 2 +- .../components/EmptyState/MissingAnnotationEmptyState.tsx | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/core/src/components/EmptyState/EmptyState.tsx b/packages/core/src/components/EmptyState/EmptyState.tsx index 1af5ff6dd5..fdd9738735 100644 --- a/packages/core/src/components/EmptyState/EmptyState.tsx +++ b/packages/core/src/components/EmptyState/EmptyState.tsx @@ -33,7 +33,7 @@ const useStyles = makeStyles(theme => ({ type Props = { title: string; - description?: string; + description?: string | JSX.Element; missing: 'field' | 'info' | 'content' | 'data'; action?: JSX.Element; }; diff --git a/packages/core/src/components/EmptyState/MissingAnnotationEmptyState.tsx b/packages/core/src/components/EmptyState/MissingAnnotationEmptyState.tsx index d8847fdf47..1c27ba27d3 100644 --- a/packages/core/src/components/EmptyState/MissingAnnotationEmptyState.tsx +++ b/packages/core/src/components/EmptyState/MissingAnnotationEmptyState.tsx @@ -48,11 +48,17 @@ const useStyles = makeStyles(theme => ({ export const MissingAnnotationEmptyState = ({ annotation }: Props) => { const classes = useStyles(); + const description = ( + + The {annotation} annotation is missing. You need to add the + annotation to your component if you want to enable this tool. + + ); return ( From 0ede39fd085307ddc72ff4daf43736651a220e16 Mon Sep 17 00:00:00 2001 From: Matthew Clarke Date: Wed, 14 Oct 2020 15:46:11 +0100 Subject: [PATCH 083/323] split service locator and cluster locators (#2900) * split service locator and cluster locators * fix test --- app-config.yaml | 4 +- plugins/kubernetes-backend/README.md | 22 +++-- .../examples/dice-roller/README.md | 4 +- ...r.test.ts => ConfigClusterLocator.test.ts} | 16 ++-- ...sterLocator.ts => ConfigClusterLocator.ts} | 15 ++-- .../src/cluster-locator/index.test.ts | 68 +++++++++++++++ .../src/cluster-locator/index.ts | 47 +++++++++++ .../src/cluster-locator/types.ts | 18 ---- .../MultiTenantServiceLocator.test.ts | 82 +++++++++++++++++++ .../MultiTenantServiceLocator.ts | 33 ++++++++ ...ubernetesObjectsByServiceIdHandler.test.ts | 14 ++-- .../getKubernetesObjectsByServiceIdHandler.ts | 8 +- .../src/service/router.test.ts | 10 +-- .../kubernetes-backend/src/service/router.ts | 52 +++++++----- plugins/kubernetes-backend/src/types/types.ts | 13 ++- 15 files changed, 325 insertions(+), 81 deletions(-) rename plugins/kubernetes-backend/src/cluster-locator/{MultiTenantConfigClusterLocator.test.ts => ConfigClusterLocator.test.ts} (82%) rename plugins/kubernetes-backend/src/cluster-locator/{MultiTenantConfigClusterLocator.ts => ConfigClusterLocator.ts} (65%) create mode 100644 plugins/kubernetes-backend/src/cluster-locator/index.test.ts create mode 100644 plugins/kubernetes-backend/src/cluster-locator/index.ts delete mode 100644 plugins/kubernetes-backend/src/cluster-locator/types.ts create mode 100644 plugins/kubernetes-backend/src/service-locator/MultiTenantServiceLocator.test.ts create mode 100644 plugins/kubernetes-backend/src/service-locator/MultiTenantServiceLocator.ts diff --git a/app-config.yaml b/app-config.yaml index 228eafc588..8ec43c6007 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -60,7 +60,9 @@ lighthouse: baseUrl: http://localhost:3003 kubernetes: - clusterLocatorMethod: 'configMultiTenant' + serviceLocatorMethod: 'multiTenant' + clusterLocatorMethods: + - 'config' clusters: [] integrations: diff --git a/plugins/kubernetes-backend/README.md b/plugins/kubernetes-backend/README.md index fbbde1fe65..a9fdc14707 100644 --- a/plugins/kubernetes-backend/README.md +++ b/plugins/kubernetes-backend/README.md @@ -8,21 +8,33 @@ It responds to Kubernetes requests from the frontend. ## Configuration -### clusterLocatorMethod +### serviceLocatorMethod This configures how to determine which clusters a component is running in. -Currently, the only valid locator method is: +Currently, the only valid serviceLocatorMethod is: -#### configMultiTenant +#### multiTenant This configuration assumes that all components run on all the provided clusters. +### clusterLocatorMethods + +This is used to determine where to retrieve cluster configuration from. + +Currently, the only valid serviceLocatorMethod is: + +#### config + +This clusterLocatorMethod will read cluster information in from config + Example: ```yaml kubernetes: - clusterLocatorMethod: 'configMultiTenant' + serviceLocatorMethod: 'multiTenant' + clusterLocatorMethods: + - 'config' clusters: - url: http://127.0.0.1:9999 name: minikube @@ -35,7 +47,7 @@ kubernetes: ##### clusters -Used by the `configMultiTenant` `clusterLocatorMethod` to construct Kubernetes clients. +Used by the `config` `clusterLocatorMethods` to construct Kubernetes clients. ###### url diff --git a/plugins/kubernetes-backend/examples/dice-roller/README.md b/plugins/kubernetes-backend/examples/dice-roller/README.md index f97f760c9f..774867de04 100644 --- a/plugins/kubernetes-backend/examples/dice-roller/README.md +++ b/plugins/kubernetes-backend/examples/dice-roller/README.md @@ -27,7 +27,9 @@ Update `app-config.development.yaml` as follows. ```yaml kubernetes: - clusterLocatorMethod: 'configMultiTenant' + serviceLocatorMethod: 'multiTenant' + clusterLocatorMethods: + - 'config' clusters: - url: name: minikube diff --git a/plugins/kubernetes-backend/src/cluster-locator/MultiTenantConfigClusterLocator.test.ts b/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.test.ts similarity index 82% rename from plugins/kubernetes-backend/src/cluster-locator/MultiTenantConfigClusterLocator.test.ts rename to plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.test.ts index dd77a11bae..550703e430 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/MultiTenantConfigClusterLocator.test.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.test.ts @@ -15,10 +15,10 @@ */ import '@backstage/backend-common'; -import { MultiTenantConfigClusterLocator } from './MultiTenantConfigClusterLocator'; import { ConfigReader, Config } from '@backstage/config'; +import { ConfigClusterLocator } from './ConfigClusterLocator'; -describe('MultiTenantConfigClusterLocator', () => { +describe('ConfigClusterLocator', () => { it('empty clusters returns empty cluster details', async () => { const config: Config = new ConfigReader( { @@ -27,11 +27,11 @@ describe('MultiTenantConfigClusterLocator', () => { 'ctx', ); - const sut = MultiTenantConfigClusterLocator.fromConfig( + const sut = ConfigClusterLocator.fromConfig( config.getConfigArray('clusters'), ); - const result = await sut.getClusterByServiceId('ignored'); + const result = await sut.getClusters(); expect(result).toStrictEqual([]); }); @@ -50,11 +50,11 @@ describe('MultiTenantConfigClusterLocator', () => { 'ctx', ); - const sut = MultiTenantConfigClusterLocator.fromConfig( + const sut = ConfigClusterLocator.fromConfig( config.getConfigArray('clusters'), ); - const result = await sut.getClusterByServiceId('ignored'); + const result = await sut.getClusters(); expect(result).toStrictEqual([ { @@ -86,11 +86,11 @@ describe('MultiTenantConfigClusterLocator', () => { 'ctx', ); - const sut = MultiTenantConfigClusterLocator.fromConfig( + const sut = ConfigClusterLocator.fromConfig( config.getConfigArray('clusters'), ); - const result = await sut.getClusterByServiceId('ignored'); + const result = await sut.getClusters(); expect(result).toStrictEqual([ { diff --git a/plugins/kubernetes-backend/src/cluster-locator/MultiTenantConfigClusterLocator.ts b/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.ts similarity index 65% rename from plugins/kubernetes-backend/src/cluster-locator/MultiTenantConfigClusterLocator.ts rename to plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.ts index 5a1f0f3839..5ff4581f71 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/MultiTenantConfigClusterLocator.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.ts @@ -14,23 +14,20 @@ * limitations under the License. */ +import { ClusterDetails, KubernetesClustersSupplier } from '..'; import { Config } from '@backstage/config'; -import { ClusterDetails, KubernetesClusterLocator } from '..'; -// This cluster locator assumes that every service is located on every cluster -// Therefore it will always return all clusters in an app configuration file -export class MultiTenantConfigClusterLocator - implements KubernetesClusterLocator { +export class ConfigClusterLocator implements KubernetesClustersSupplier { private readonly clusterDetails: ClusterDetails[]; constructor(clusterDetails: ClusterDetails[]) { this.clusterDetails = clusterDetails; } - static fromConfig(config: Config[]): MultiTenantConfigClusterLocator { + static fromConfig(config: Config[]): ConfigClusterLocator { // TODO: Add validation that authProvider is required and serviceAccountToken // is required if authProvider is serviceAccount - return new MultiTenantConfigClusterLocator( + return new ConfigClusterLocator( config.map(c => { return { name: c.getString('name'), @@ -42,9 +39,7 @@ export class MultiTenantConfigClusterLocator ); } - // As this implementation always returns all clusters serviceId is ignored here - // eslint-disable-next-line @typescript-eslint/no-unused-vars - async getClusterByServiceId(_serviceId: string): Promise { + async getClusters(): Promise { return this.clusterDetails; } } diff --git a/plugins/kubernetes-backend/src/cluster-locator/index.test.ts b/plugins/kubernetes-backend/src/cluster-locator/index.test.ts new file mode 100644 index 0000000000..32a09cb496 --- /dev/null +++ b/plugins/kubernetes-backend/src/cluster-locator/index.test.ts @@ -0,0 +1,68 @@ +/* + * 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 { Config, ConfigReader } from '../../../../packages/config/src'; +import { getCombinedClusterDetails } from './index'; + +describe('getCombinedClusterDetails', () => { + it('should retrieve cluster details from config', async () => { + const config: Config = new ConfigReader( + { + kubernetes: { + clusters: [ + { + name: 'cluster1', + serviceAccountToken: 'token', + url: 'http://localhost:8080', + authProvider: 'serviceAccount', + }, + { + name: 'cluster2', + url: 'http://localhost:8081', + authProvider: 'google', + }, + ], + }, + }, + 'ctx', + ); + + const result = await getCombinedClusterDetails(['config'], config); + + expect(result).toStrictEqual([ + { + name: 'cluster1', + serviceAccountToken: 'token', + url: 'http://localhost:8080', + authProvider: 'serviceAccount', + }, + { + name: 'cluster2', + serviceAccountToken: undefined, + url: 'http://localhost:8081', + authProvider: 'google', + }, + ]); + }); + + it('throws an error when using an unsupported cluster locator', async () => { + await expect( + getCombinedClusterDetails(['magic' as any], new ConfigReader({}, 'ctx')), + ).rejects.toStrictEqual( + new Error('Unsupported kubernetes.clusterLocatorMethods: "magic"'), + ); + }); +}); diff --git a/plugins/kubernetes-backend/src/cluster-locator/index.ts b/plugins/kubernetes-backend/src/cluster-locator/index.ts new file mode 100644 index 0000000000..ea418768b4 --- /dev/null +++ b/plugins/kubernetes-backend/src/cluster-locator/index.ts @@ -0,0 +1,47 @@ +/* + * 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 { ClusterDetails, ClusterLocatorMethod } from '..'; +import { Config } from '../../../../packages/config/src'; +import { ConfigClusterLocator } from './ConfigClusterLocator'; + +export { ConfigClusterLocator } from './ConfigClusterLocator'; + +export const getCombinedClusterDetails = async ( + clusterLocatorMethods: ClusterLocatorMethod[], + rootConfig: Config, +): Promise => { + return Promise.all( + clusterLocatorMethods.map(clusterLocatorMethod => { + switch (clusterLocatorMethod) { + case 'config': + return ConfigClusterLocator.fromConfig( + rootConfig.getConfigArray('kubernetes.clusters'), + ).getClusters(); + default: + throw new Error( + `Unsupported kubernetes.clusterLocatorMethods: "${clusterLocatorMethod}"`, + ); + } + }), + ) + .then(res => { + return res.flat(); + }) + .catch(e => { + throw e; + }); +}; diff --git a/plugins/kubernetes-backend/src/cluster-locator/types.ts b/plugins/kubernetes-backend/src/cluster-locator/types.ts deleted file mode 100644 index dae8eb6d60..0000000000 --- a/plugins/kubernetes-backend/src/cluster-locator/types.ts +++ /dev/null @@ -1,18 +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 type ClusterLocatorMethod = 'configMultiTenant' | 'http'; -export type AuthProviderType = 'google' | 'serviceAccount'; diff --git a/plugins/kubernetes-backend/src/service-locator/MultiTenantServiceLocator.test.ts b/plugins/kubernetes-backend/src/service-locator/MultiTenantServiceLocator.test.ts new file mode 100644 index 0000000000..13761e2671 --- /dev/null +++ b/plugins/kubernetes-backend/src/service-locator/MultiTenantServiceLocator.test.ts @@ -0,0 +1,82 @@ +/* + * 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 '@backstage/backend-common'; +import { MultiTenantServiceLocator } from './MultiTenantServiceLocator'; + +describe('MultiTenantConfigClusterLocator', () => { + it('empty clusters returns empty cluster details', async () => { + const sut = new MultiTenantServiceLocator([]); + + const result = await sut.getClustersByServiceId('ignored'); + + expect(result).toStrictEqual([]); + }); + + it('one clusters returns one cluster details', async () => { + const sut = new MultiTenantServiceLocator([ + { + name: 'cluster1', + url: 'http://localhost:8080', + authProvider: 'serviceAccount', + serviceAccountToken: '12345', + }, + ]); + + const result = await sut.getClustersByServiceId('ignored'); + + expect(result).toStrictEqual([ + { + name: 'cluster1', + serviceAccountToken: '12345', + url: 'http://localhost:8080', + authProvider: 'serviceAccount', + }, + ]); + }); + + it('two clusters returns two cluster details', async () => { + const sut = new MultiTenantServiceLocator([ + { + name: 'cluster1', + serviceAccountToken: 'token', + url: 'http://localhost:8080', + authProvider: 'serviceAccount', + }, + { + name: 'cluster2', + url: 'http://localhost:8081', + authProvider: 'google', + }, + ]); + + const result = await sut.getClustersByServiceId('ignored'); + + expect(result).toStrictEqual([ + { + name: 'cluster1', + serviceAccountToken: 'token', + url: 'http://localhost:8080', + authProvider: 'serviceAccount', + }, + { + name: 'cluster2', + url: 'http://localhost:8081', + authProvider: 'google', + }, + ]); + }); +}); diff --git a/plugins/kubernetes-backend/src/service-locator/MultiTenantServiceLocator.ts b/plugins/kubernetes-backend/src/service-locator/MultiTenantServiceLocator.ts new file mode 100644 index 0000000000..a5822a2078 --- /dev/null +++ b/plugins/kubernetes-backend/src/service-locator/MultiTenantServiceLocator.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 { ClusterDetails, KubernetesServiceLocator } from '..'; + +// This locator assumes that every service is located on every cluster +// Therefore it will always return all clusters provided +export class MultiTenantServiceLocator implements KubernetesServiceLocator { + private readonly clusterDetails: ClusterDetails[]; + + constructor(clusterDetails: ClusterDetails[]) { + this.clusterDetails = clusterDetails; + } + + // As this implementation always returns all clusters serviceId is ignored here + // eslint-disable-next-line @typescript-eslint/no-unused-vars + async getClustersByServiceId(_serviceId: string): Promise { + return this.clusterDetails; + } +} diff --git a/plugins/kubernetes-backend/src/service/getKubernetesObjectsByServiceIdHandler.test.ts b/plugins/kubernetes-backend/src/service/getKubernetesObjectsByServiceIdHandler.test.ts index 4218c64e80..8c26ded2d4 100644 --- a/plugins/kubernetes-backend/src/service/getKubernetesObjectsByServiceIdHandler.test.ts +++ b/plugins/kubernetes-backend/src/service/getKubernetesObjectsByServiceIdHandler.test.ts @@ -22,7 +22,7 @@ const TEST_SERVICE_ID = 'my-service'; const fetchObjectsByServiceId = jest.fn(); -const getClusterByServiceId = jest.fn(); +const getClustersByServiceId = jest.fn(); const mockFetch = (mock: jest.Mock) => { mock.mockImplementation((serviceId: string, clusterDetails: ClusterDetails) => @@ -70,7 +70,7 @@ describe('handleGetKubernetesObjectsByServiceId', () => { }); it('retrieve objects for one cluster', async () => { - getClusterByServiceId.mockImplementation(() => + getClustersByServiceId.mockImplementation(() => Promise.resolve([ { name: 'test-cluster', @@ -87,13 +87,13 @@ describe('handleGetKubernetesObjectsByServiceId', () => { fetchObjectsByServiceId, }, { - getClusterByServiceId, + getClustersByServiceId, }, getVoidLogger(), {}, ); - expect(getClusterByServiceId.mock.calls.length).toBe(1); + expect(getClustersByServiceId.mock.calls.length).toBe(1); expect(fetchObjectsByServiceId.mock.calls.length).toBe(1); expect(result).toStrictEqual({ items: [ @@ -140,7 +140,7 @@ describe('handleGetKubernetesObjectsByServiceId', () => { }); it('retrieve objects for two clusters', async () => { - getClusterByServiceId.mockImplementation(() => + getClustersByServiceId.mockImplementation(() => Promise.resolve([ { name: 'test-cluster', @@ -161,7 +161,7 @@ describe('handleGetKubernetesObjectsByServiceId', () => { fetchObjectsByServiceId, }, { - getClusterByServiceId, + getClustersByServiceId, }, getVoidLogger(), { @@ -171,7 +171,7 @@ describe('handleGetKubernetesObjectsByServiceId', () => { }, ); - expect(getClusterByServiceId.mock.calls.length).toBe(1); + expect(getClustersByServiceId.mock.calls.length).toBe(1); expect(fetchObjectsByServiceId.mock.calls.length).toBe(2); expect(result).toStrictEqual({ items: [ diff --git a/plugins/kubernetes-backend/src/service/getKubernetesObjectsByServiceIdHandler.ts b/plugins/kubernetes-backend/src/service/getKubernetesObjectsByServiceIdHandler.ts index f0b21cbc0c..6fc6092bd6 100644 --- a/plugins/kubernetes-backend/src/service/getKubernetesObjectsByServiceIdHandler.ts +++ b/plugins/kubernetes-backend/src/service/getKubernetesObjectsByServiceIdHandler.ts @@ -18,7 +18,7 @@ import { Logger } from 'winston'; import { AuthRequestBody, ClusterDetails, - KubernetesClusterLocator, + KubernetesServiceLocator, KubernetesFetcher, KubernetesObjectTypes, ObjectsByServiceIdResponse, @@ -29,7 +29,7 @@ import { KubernetesAuthTranslatorGenerator } from '../kubernetes-auth-translator export type GetKubernetesObjectsByServiceIdHandler = ( serviceId: string, fetcher: KubernetesFetcher, - clusterLocator: KubernetesClusterLocator, + serviceLocator: KubernetesServiceLocator, logger: Logger, requestBody: AuthRequestBody, objectsToFetch?: Set, @@ -49,12 +49,12 @@ const DEFAULT_OBJECTS = new Set([ export const handleGetKubernetesObjectsByServiceId: GetKubernetesObjectsByServiceIdHandler = async ( serviceId, fetcher, - clusterLocator, + serviceLocator, logger, requestBody, objectsToFetch = DEFAULT_OBJECTS, ) => { - const clusterDetails: ClusterDetails[] = await clusterLocator.getClusterByServiceId( + const clusterDetails: ClusterDetails[] = await serviceLocator.getClustersByServiceId( serviceId, ); diff --git a/plugins/kubernetes-backend/src/service/router.test.ts b/plugins/kubernetes-backend/src/service/router.test.ts index 4e9a206eb4..6f9fbbf70f 100644 --- a/plugins/kubernetes-backend/src/service/router.test.ts +++ b/plugins/kubernetes-backend/src/service/router.test.ts @@ -19,7 +19,7 @@ import express from 'express'; import request from 'supertest'; import { makeRouter } from './router'; import { - KubernetesClusterLocator, + KubernetesServiceLocator, KubernetesFetcher, ObjectsByServiceIdResponse, } from '..'; @@ -27,7 +27,7 @@ import { describe('router', () => { let app: express.Express; let kubernetesFetcher: jest.Mocked; - let kubernetesClusterLocator: jest.Mocked; + let kubernetesServiceLocator: jest.Mocked; let handleGetByServiceId: jest.Mock>; beforeAll(async () => { @@ -35,8 +35,8 @@ describe('router', () => { fetchObjectsByServiceId: jest.fn(), }; - kubernetesClusterLocator = { - getClusterByServiceId: jest.fn(), + kubernetesServiceLocator = { + getClustersByServiceId: jest.fn(), }; handleGetByServiceId = jest.fn(); @@ -44,7 +44,7 @@ describe('router', () => { const router = makeRouter( getVoidLogger(), kubernetesFetcher, - kubernetesClusterLocator, + kubernetesServiceLocator, handleGetByServiceId as any, ); app = express().use(router); diff --git a/plugins/kubernetes-backend/src/service/router.ts b/plugins/kubernetes-backend/src/service/router.ts index 9e9b4ab2f5..b73115e1e4 100644 --- a/plugins/kubernetes-backend/src/service/router.ts +++ b/plugins/kubernetes-backend/src/service/router.ts @@ -18,8 +18,7 @@ import express from 'express'; import Router from 'express-promise-router'; import { Logger } from 'winston'; import { Config } from '@backstage/config'; -import { ClusterLocatorMethod } from '../cluster-locator/types'; -import { MultiTenantConfigClusterLocator } from '../cluster-locator/MultiTenantConfigClusterLocator'; +import { MultiTenantServiceLocator } from '../service-locator/MultiTenantServiceLocator'; import { KubernetesClientBasedFetcher } from './KubernetesFetcher'; import { KubernetesClientProvider } from './KubernetesClientProvider'; import { @@ -28,30 +27,35 @@ import { } from './getKubernetesObjectsByServiceIdHandler'; import { AuthRequestBody, - KubernetesClusterLocator, + KubernetesServiceLocator, KubernetesFetcher, -} from '../types/types'; + ServiceLocatorMethod, + ClusterLocatorMethod, + ClusterDetails, +} from '..'; +import { getCombinedClusterDetails } from '../cluster-locator'; export interface RouterOptions { logger: Logger; config: Config; } -const getClusterLocator = (config: Config): KubernetesClusterLocator => { - const clusterLocatorMethod = config.getString( - 'kubernetes.clusterLocatorMethod', - ) as ClusterLocatorMethod; +const getServiceLocator = ( + config: Config, + clusterDetails: ClusterDetails[], +): KubernetesServiceLocator => { + const serviceLocatorMethod = config.getString( + 'kubernetes.serviceLocatorMethod', + ) as ServiceLocatorMethod; - switch (clusterLocatorMethod) { - case 'configMultiTenant': - return MultiTenantConfigClusterLocator.fromConfig( - config.getConfigArray('kubernetes.clusters'), - ); + switch (serviceLocatorMethod) { + case 'multiTenant': + return new MultiTenantServiceLocator(clusterDetails); case 'http': throw new Error('not implemented'); default: throw new Error( - `Unsupported kubernetes.clusterLocatorMethod "${clusterLocatorMethod}"`, + `Unsupported kubernetes.clusterLocatorMethod "${serviceLocatorMethod}"`, ); } }; @@ -59,13 +63,12 @@ const getClusterLocator = (config: Config): KubernetesClusterLocator => { export const makeRouter = ( logger: Logger, fetcher: KubernetesFetcher, - clusterLocator: KubernetesClusterLocator, + serviceLocator: KubernetesServiceLocator, handleGetByServiceId: GetKubernetesObjectsByServiceIdHandler, ): express.Router => { const router = Router(); router.use(express.json()); - // TODO error handling router.post('/services/:serviceId', async (req, res) => { const serviceId = req.params.serviceId; const requestBody: AuthRequestBody = req.body; @@ -73,7 +76,7 @@ export const makeRouter = ( const response = await handleGetByServiceId( serviceId, fetcher, - clusterLocator, + serviceLocator, logger, requestBody, ); @@ -96,17 +99,26 @@ export async function createRouter( logger.info('Initializing Kubernetes backend'); - const clusterLocator = getClusterLocator(options.config); - const fetcher = new KubernetesClientBasedFetcher({ kubernetesClientProvider: new KubernetesClientProvider(), logger, }); + const clusterLocatorMethods = options.config.getStringArray( + 'kubernetes.clusterLocatorMethods', + ) as ClusterLocatorMethod[]; + + const clusterDetails = await getCombinedClusterDetails( + clusterLocatorMethods, + options.config, + ); + + const serviceLocator = getServiceLocator(options.config, clusterDetails); + return makeRouter( logger, fetcher, - clusterLocator, + serviceLocator, handleGetKubernetesObjectsByServiceId, ); } diff --git a/plugins/kubernetes-backend/src/types/types.ts b/plugins/kubernetes-backend/src/types/types.ts index eb2817f268..1422511c21 100644 --- a/plugins/kubernetes-backend/src/types/types.ts +++ b/plugins/kubernetes-backend/src/types/types.ts @@ -118,8 +118,13 @@ export interface KubernetesFetcher { } // Used to locate which cluster(s) a service is running on -export interface KubernetesClusterLocator { - getClusterByServiceId(serviceId: string): Promise; +export interface KubernetesServiceLocator { + getClustersByServiceId(serviceId: string): Promise; +} + +// Used to load cluster details from different sources +export interface KubernetesClustersSupplier { + getClusters(): Promise; } export type KubernetesErrorTypes = @@ -132,3 +137,7 @@ export interface KubernetesFetchError { statusCode?: number; resourcePath?: string; } + +export type ServiceLocatorMethod = 'multiTenant' | 'http'; // TODO implement http +export type ClusterLocatorMethod = 'config'; +export type AuthProviderType = 'google' | 'serviceAccount'; From 8e0016f7ad3d80681e95c7afcbce57d0a1485046 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Wed, 14 Oct 2020 17:49:41 +0200 Subject: [PATCH 084/323] Introduce a New Relic API class for future expansion. --- plugins/newrelic/src/api/index.ts | 96 +++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 plugins/newrelic/src/api/index.ts diff --git a/plugins/newrelic/src/api/index.ts b/plugins/newrelic/src/api/index.ts new file mode 100644 index 0000000000..692cb19e6f --- /dev/null +++ b/plugins/newrelic/src/api/index.ts @@ -0,0 +1,96 @@ +/* + * 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 { createApiRef, DiscoveryApi } from '@backstage/core'; + +export type NewRelicApplication = { + id: number; + application_summary: NewRelicApplicationSummary; + name: string; + language: string; + health_status: string; + reporting: boolean; + settings: NewRelicApplicationSettings; + links?: NewRelicApplicationLinks; +}; + +export type NewRelicApplicationSummary = { + apdex_score: number; + error_rate: number; + host_count: number; + instance_count: number; + response_time: number; + throughput: number; +}; + +export type NewRelicApplicationSettings = { + app_apdex_threshold: number; + end_user_apdex_threshold: number; + enable_real_user_monitoring: boolean; + use_server_side_config: boolean; +}; + +export type NewRelicApplicationLinks = { + application_instances: Array; + servers: Array; + application_hosts: Array; +}; + +export type NewRelicApplications = { + applications: NewRelicApplication[]; +}; + +export const newRelicApiRef = createApiRef({ + id: 'plugin.newrelic.service', + description: 'Used by the NewRelic plugin to make requests', +}); + +const DEFAULT_PROXY_PATH_BASE = '/newrelic'; + +type Options = { + discoveryApi: DiscoveryApi; + /** + * Path to use for requests via the proxy, defaults to /newrelic + */ + proxyPathBase?: string; +}; + +export class NewRelicApi { + private readonly discoveryApi: DiscoveryApi; + private readonly proxyPathBase: string; + + constructor(options: Options) { + this.discoveryApi = options.discoveryApi; + this.proxyPathBase = options.proxyPathBase ?? DEFAULT_PROXY_PATH_BASE; + } + + async getApplications(): Promise { + const url = await this.getApiUrl('apm', 'applications.json'); + const response = await fetch(url); + const responseJson = await response.json(); + + if (response.status !== 200) { + throw new Error(responseJson?.error?.title || response.statusText); + } + + return responseJson; + } + + private async getApiUrl(product: string, path: string) { + const proxyUrl = await this.discoveryApi.getBaseUrl('proxy'); + return `${proxyUrl}${this.proxyPathBase}/${product}/api/${path}`; + } +} From 2865fcf9cb017a363eec9a8d715965c5a1d78c71 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Wed, 14 Oct 2020 17:51:47 +0200 Subject: [PATCH 085/323] Make the plugin aware of the NR API. --- plugins/newrelic/src/plugin.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/plugins/newrelic/src/plugin.ts b/plugins/newrelic/src/plugin.ts index 21aac69e8f..f247158fbd 100644 --- a/plugins/newrelic/src/plugin.ts +++ b/plugins/newrelic/src/plugin.ts @@ -14,7 +14,13 @@ * limitations under the License. */ -import { createPlugin, createRouteRef } from '@backstage/core'; +import { + createApiFactory, + createPlugin, + createRouteRef, + discoveryApiRef, +} from '@backstage/core'; +import { NewRelicApi, newRelicApiRef } from './api'; import NewRelicComponent from './components/NewRelicComponent'; export const rootRouteRef = createRouteRef({ @@ -24,6 +30,13 @@ export const rootRouteRef = createRouteRef({ export const plugin = createPlugin({ id: 'newrelic', + apis: [ + createApiFactory({ + api: newRelicApiRef, + deps: { discoveryApi: discoveryApiRef }, + factory: ({ discoveryApi }) => new NewRelicApi({ discoveryApi }), + }), + ], register({ router }) { router.addRoute(rootRouteRef, NewRelicComponent); }, From 25645e25dbc8516d0cf89b3181fdca47b513d857 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Wed, 14 Oct 2020 17:52:59 +0200 Subject: [PATCH 086/323] Refactor config/type usage out of component, use new API instead. --- .../NewRelicFetchComponent.tsx | 76 ++----------------- 1 file changed, 7 insertions(+), 69 deletions(-) diff --git a/plugins/newrelic/src/components/NewRelicFetchComponent/NewRelicFetchComponent.tsx b/plugins/newrelic/src/components/NewRelicFetchComponent/NewRelicFetchComponent.tsx index 4322bba10b..62f52e7875 100644 --- a/plugins/newrelic/src/components/NewRelicFetchComponent/NewRelicFetchComponent.tsx +++ b/plugins/newrelic/src/components/NewRelicFetchComponent/NewRelicFetchComponent.tsx @@ -15,52 +15,10 @@ */ import React, { FC } from 'react'; -import { - configApiRef, - Progress, - Table, - TableColumn, - useApi, -} from '@backstage/core'; +import { Progress, Table, TableColumn, useApi } from '@backstage/core'; import Alert from '@material-ui/lab/Alert'; import { useAsync } from 'react-use'; - -type NewRelicApplication = { - id: number; - application_summary: NewRelicApplicationSummary; - name: string; - language: string; - health_status: string; - reporting: boolean; - settings: NewRelicApplicationSettings; - links?: NewRelicApplicationLinks; -}; - -type NewRelicApplicationSummary = { - apdex_score: number; - error_rate: number; - host_count: number; - instance_count: number; - response_time: number; - throughput: number; -}; - -type NewRelicApplicationSettings = { - app_apdex_threshold: number; - end_user_apdex_threshold: number; - enable_real_user_monitoring: boolean; - use_server_side_config: boolean; -}; - -type NewRelicApplicationLinks = { - application_instances: Array; - servers: Array; - application_hosts: Array; -}; - -type NewRelicApplications = { - applications: NewRelicApplication[]; -}; +import { newRelicApiRef, NewRelicApplications } from '../../api'; export const NewRelicAPMTable: FC = ({ applications, @@ -73,7 +31,7 @@ export const NewRelicAPMTable: FC = ({ { title: 'Instance Count', field: 'instanceCount' }, { title: 'Apdex', field: 'apdexScore' }, ]; - const data = applications.map((app: NewRelicApplication) => { + const data = applications.map(app => { const { name, application_summary: applicationSummary } = app; const { response_time: responseTime, @@ -104,25 +62,11 @@ export const NewRelicAPMTable: FC = ({ }; const NewRelicFetchComponent: FC<{}> = () => { - const configApi = useApi(configApiRef); - const apiBaseUrl = configApi.getString('newrelic.api.baseUrl'); - const apiKey = configApi.getString('newrelic.api.key'); - const apiKeyIsSet = apiKey && apiKey !== 'NEW_RELIC_REST_API_KEY'; + const api = useApi(newRelicApiRef); - const { value, loading, error } = useAsync(async (): Promise< - NewRelicApplication[] - > => { - if (!apiKeyIsSet) { - return []; - } - - const response = await fetch(`${apiBaseUrl}/applications.json`, { - headers: { - 'X-Api-Key': apiKey, - }, - }); - const data: NewRelicApplications = await response.json(); - return data.applications.filter((application: NewRelicApplication) => { + const { value, loading, error } = useAsync(async () => { + const data = await api.getApplications(); + return data.applications.filter(application => { return application.hasOwnProperty('application_summary'); }); }, []); @@ -131,12 +75,6 @@ const NewRelicFetchComponent: FC<{}> = () => { return ; } else if (error) { return {error.message}; - } else if (!apiKeyIsSet) { - return ( - - No REST API Key configured. Check your app-config.yaml. - - ); } return ; From c64a0a47ea0898eebc6f99b1eadd5db0ae806c84 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Wed, 14 Oct 2020 17:54:15 +0200 Subject: [PATCH 087/323] Use new expected proxy configs to hit New Relic API. --- app-config.yaml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app-config.yaml b/app-config.yaml index 228eafc588..7dee71534f 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -34,6 +34,12 @@ proxy: $env: TRAVISCI_AUTH_TOKEN travis-api-version: 3 + '/newrelic/apm/api': + target: https://api.newrelic.com/v2 + headers: + X-Api-Key: + $env: NEW_RELIC_REST_API_KEY + organization: name: Spotify @@ -51,11 +57,6 @@ rollbar: accountToken: $env: ROLLBAR_ACCOUNT_TOKEN -newrelic: - api: - baseUrl: 'https://api.newrelic.com/v2' - key: NEW_RELIC_REST_API_KEY - lighthouse: baseUrl: http://localhost:3003 From 78fea5041efef33abdeeaff53142e914eb5ef93c Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Wed, 14 Oct 2020 17:54:48 +0200 Subject: [PATCH 088/323] Update README with new instructions on how to configure the plugin. --- plugins/newrelic/README.md | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/plugins/newrelic/README.md b/plugins/newrelic/README.md index 19bd24950c..e787d9c91f 100644 --- a/plugins/newrelic/README.md +++ b/plugins/newrelic/README.md @@ -7,16 +7,38 @@ Website: [https://newrelic.com](https://newrelic.com) ## Getting Started -Add New Relic REST API Key to `app-config.yaml` +This plugin uses the Backstage proxy to securely communicate with New Relic's +APIs. Add the following to your `app-config.yaml` to enable this configuration: ```yaml -newrelic: - api: - baseUrl: 'https://api.newrelic.com/v2' - key: +proxy: + '/newrelic/apm/api': + target: https://api.newrelic.com/v2 + headers: + X-Api-Key: + $env: NEW_RELIC_REST_API_KEY ``` -New Relic Plugin Path: [/newrelic](http://localhost:3000/newrelic) +In your production deployment of Backstage, you would also need to ensure that +you've set the `NEW_RELIC_REST_API_KEY` environment variable before starting +the backend. + +While working locally, you may wish to hard-code your API key in your +`app-config.local.yaml` like this: + +```yaml +# app-config.local.yaml +proxy: + 'newrelic/apm/api': + headers: + X-Api-Key: NRRA-YourActualApiKey +``` + +Read more about how to find or generate this key in +[New Relic's Documentation](https://docs.newrelic.com/docs/apis/get-started/intro-apis/types-new-relic-api-keys#rest-api-key). + +See if it's working by visiting the New Relic Plugin Path: +[/newrelic](http://localhost:3000/newrelic) ## Features From 4512b9967889ec6299742cae5c66494c3b7b5806 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Wed, 14 Oct 2020 18:10:45 +0200 Subject: [PATCH 089/323] Marked minor, although it is major-ish... --- .changeset/old-falcons-jump.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .changeset/old-falcons-jump.md diff --git a/.changeset/old-falcons-jump.md b/.changeset/old-falcons-jump.md new file mode 100644 index 0000000000..107d75ff88 --- /dev/null +++ b/.changeset/old-falcons-jump.md @@ -0,0 +1,25 @@ +--- +'@backstage/plugin-newrelic': minor +--- + +The New Relic plugin now uses the Backstage proxy to communicate with New Relic's API. + +Please update your `app-config.yaml` as follows: + +```yaml +# Old Config +newrelic: + api: + baseUrl: 'https://api.newrelic.com/v2' + key: NEW_RELIC_REST_API_KEY +``` + +```yaml +# New Config +proxy: + '/newrelic/apm/api': + target: https://api.newrelic.com/v2 + headers: + X-Api-Key: + $env: NEW_RELIC_REST_API_KEY +``` From 72f6cda35879342bb510b78fa6d777f2b4a92cec Mon Sep 17 00:00:00 2001 From: Andrew Thauer <6507159+andrewthauer@users.noreply.github.com> Date: Wed, 14 Oct 2020 13:13:13 -0400 Subject: [PATCH 090/323] feat: add cli build parallel flag --- .changeset/cli-parallel-build-options.md | 12 ++++ .github/styles/vocab.txt | 1 + packages/cli/package.json | 1 + packages/cli/src/commands/app/build.ts | 2 + .../cli/src/commands/backend/buildImage.ts | 4 +- packages/cli/src/lib/bundler/optimization.ts | 12 ++++ packages/cli/src/lib/bundler/types.ts | 3 + packages/cli/src/lib/packager/index.ts | 17 +++++- packages/cli/src/lib/parallel.test.ts | 59 +++++++++++++++++++ packages/cli/src/lib/parallel.ts | 47 +++++++++++++++ packages/cli/src/types.d.ts | 2 + 11 files changed, 156 insertions(+), 4 deletions(-) create mode 100644 .changeset/cli-parallel-build-options.md create mode 100644 packages/cli/src/lib/parallel.test.ts create mode 100644 packages/cli/src/lib/parallel.ts diff --git a/.changeset/cli-parallel-build-options.md b/.changeset/cli-parallel-build-options.md new file mode 100644 index 0000000000..95f9360738 --- /dev/null +++ b/.changeset/cli-parallel-build-options.md @@ -0,0 +1,12 @@ +--- +'@backstage/cli': minor +--- + +Adds a new `BACKSTAGE_CLI_BUILD_PARELLEL` environment variable to control +parallelism for some build steps. + +This is useful in CI to help avoid out of memory issues when using `terser`. The +`BACKSTAGE_CLI_BUILD_PARELLEL` environment variable can be set to +`true | false | [integer]` to override the default behaviour. See +[terser-webpack-plugin](https://github.com/webpack-contrib/terser-webpack-plugin#parallel) +for more details. diff --git a/.github/styles/vocab.txt b/.github/styles/vocab.txt index c20a9862b0..6a2eecdee0 100644 --- a/.github/styles/vocab.txt +++ b/.github/styles/vocab.txt @@ -196,6 +196,7 @@ validators Voi Wealthsimple Weaveworks +Webpack xyz yaml Zalando diff --git a/packages/cli/package.json b/packages/cli/package.json index 5bd732f1d2..084254d7ff 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -86,6 +86,7 @@ "style-loader": "^1.2.1", "sucrase": "^3.14.1", "tar": "^6.0.1", + "terser-webpack-plugin": "^1.4.3", "ts-jest": "^26.0.0", "ts-loader": "^7.0.4", "typescript": "^3.9.3", diff --git a/packages/cli/src/commands/app/build.ts b/packages/cli/src/commands/app/build.ts index 9713acd233..ae67616515 100644 --- a/packages/cli/src/commands/app/build.ts +++ b/packages/cli/src/commands/app/build.ts @@ -19,6 +19,7 @@ import { loadConfig } from '@backstage/config-loader'; import { ConfigReader } from '@backstage/config'; import { paths } from '../../lib/paths'; import { buildBundle } from '../../lib/bundler'; +import { parseParallel, PARALLEL_ENV_VAR } from '../../lib/parallel'; export default async (cmd: Command) => { const appConfigs = await loadConfig({ @@ -27,6 +28,7 @@ export default async (cmd: Command) => { }); await buildBundle({ entry: 'src/index', + parallel: parseParallel(process.env[PARALLEL_ENV_VAR]), statsJsonEnabled: cmd.stats, config: ConfigReader.fromConfigs(appConfigs), appConfigs, diff --git a/packages/cli/src/commands/backend/buildImage.ts b/packages/cli/src/commands/backend/buildImage.ts index b6e9da7b39..b6ae0dd579 100644 --- a/packages/cli/src/commands/backend/buildImage.ts +++ b/packages/cli/src/commands/backend/buildImage.ts @@ -14,12 +14,13 @@ * limitations under the License. */ +import { Command } from 'commander'; import fs from 'fs-extra'; import { join as joinPath, relative as relativePath } from 'path'; import { createDistWorkspace } from '../../lib/packager'; import { paths } from '../../lib/paths'; import { run } from '../../lib/run'; -import { Command } from 'commander'; +import { parseParallel, PARALLEL_ENV_VAR } from '../../lib/parallel'; const PKG_PATH = 'package.json'; @@ -41,6 +42,7 @@ export default async (cmd: Command) => { ...appConfigs, { src: paths.resolveTarget('Dockerfile'), dest: 'Dockerfile' }, ], + parallel: parseParallel(process.env[PARALLEL_ENV_VAR]), skeleton: 'skeleton.tar', }); console.log(`Dist workspace ready at ${tempDistWorkspace}`); diff --git a/packages/cli/src/lib/bundler/optimization.ts b/packages/cli/src/lib/bundler/optimization.ts index acd6a937d9..665eb10b21 100644 --- a/packages/cli/src/lib/bundler/optimization.ts +++ b/packages/cli/src/lib/bundler/optimization.ts @@ -15,7 +15,9 @@ */ import { Options } from 'webpack'; +import TerserPlugin from 'terser-webpack-plugin'; import { BundlingOptions } from './types'; +import { isParallelDefault } from '../parallel'; export const optimization = ( options: BundlingOptions, @@ -24,6 +26,16 @@ export const optimization = ( return { minimize: !isDev, + // Only configure when parallel is explicitly overriden from the default + ...(!isParallelDefault(options.parallel) + ? { + minimizer: [ + new TerserPlugin({ + parallel: options.parallel, + }), + ], + } + : {}), runtimeChunk: 'single', splitChunks: { automaticNameDelimiter: '-', diff --git a/packages/cli/src/lib/bundler/types.ts b/packages/cli/src/lib/bundler/types.ts index 03d68d9bb8..827d517fef 100644 --- a/packages/cli/src/lib/bundler/types.ts +++ b/packages/cli/src/lib/bundler/types.ts @@ -16,6 +16,7 @@ import { AppConfig, Config } from '@backstage/config'; import { BundlingPathsOptions } from './paths'; +import { ParallelOption } from '../parallel'; export type BundlingOptions = { checksEnabled: boolean; @@ -23,6 +24,7 @@ export type BundlingOptions = { config: Config; appConfigs: AppConfig[]; baseUrl: URL; + parallel?: ParallelOption; }; export type BackendBundlingOptions = Omit & { @@ -37,6 +39,7 @@ export type ServeOptions = BundlingPathsOptions & { export type BuildOptions = BundlingPathsOptions & { statsJsonEnabled: boolean; + parallel?: ParallelOption; config: Config; appConfigs: AppConfig[]; }; diff --git a/packages/cli/src/lib/packager/index.ts b/packages/cli/src/lib/packager/index.ts index 564317e46a..56f1ee453c 100644 --- a/packages/cli/src/lib/packager/index.ts +++ b/packages/cli/src/lib/packager/index.ts @@ -20,10 +20,11 @@ import { resolve as resolvePath, relative as relativePath, } from 'path'; +import { tmpdir } from 'os'; +import tar, { CreateOptions } from 'tar'; import { paths } from '../paths'; import { run } from '../run'; -import tar, { CreateOptions } from 'tar'; -import { tmpdir } from 'os'; +import { ParallelOption } from '../parallel'; type LernaPackage = { name: string; @@ -58,6 +59,11 @@ type Options = { */ buildDependencies?: boolean; + /** + * Enable (true/false) or control amount of (number) parallelism in some build steps. + */ + parallel?: ParallelOption; + /** * If set, creates a skeleton tarball that contains all package.json files * with the same structure as the workspace dir. @@ -85,7 +91,12 @@ export async function createDistWorkspace( if (options.buildDependencies) { const scopeArgs = targets.flatMap(target => ['--scope', target.name]); - await run('yarn', ['lerna', 'run', ...scopeArgs, 'build'], { + const lernaArgs = + options.parallel && Number.isInteger(options.parallel) + ? ['--concurrency', options.parallel.toString()] + : []; + + await run('yarn', ['lerna', ...lernaArgs, 'run', ...scopeArgs, 'build'], { cwd: paths.targetRoot, }); } diff --git a/packages/cli/src/lib/parallel.test.ts b/packages/cli/src/lib/parallel.test.ts new file mode 100644 index 0000000000..c8173603d9 --- /dev/null +++ b/packages/cli/src/lib/parallel.test.ts @@ -0,0 +1,59 @@ +/* + * 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 { isParallelDefault, parseParallel } from './parallel'; + +describe('parallel', () => { + describe(parseParallel, () => { + it('coerces "false" string to boolean', () => { + expect(parseParallel('false')).toBeFalsy(); + }); + + it('coerces "true" to boolean', () => { + expect(parseParallel('true')).toBeTruthy(); + }); + + it('coerces number string to number', () => { + expect(parseParallel('2')).toBe(2); + }); + it.each([[true], [false], [2]])('returns itself for %p', value => { + expect(parseParallel(value as any)).toEqual(value); + }); + + it.each([[undefined], [null]])('returns true for %p', value => { + expect(parseParallel(value as any)).toBe(true); + }); + + it.each([['on'], [2.5], ['2.5']])('throws error for %p', value => { + expect(() => parseParallel(value as any)).toThrowError( + `Parallel option value '${value}' is not a boolean or integer`, + ); + }); + }); + + describe(isParallelDefault, () => { + it('returns true if default value', () => { + expect(isParallelDefault(undefined)).toBeTruthy(); + expect(isParallelDefault(true)).toBeTruthy(); + }); + + it('returns false if not default value', () => { + expect(isParallelDefault(false)).toBeFalsy(); + expect(isParallelDefault(2)).toBeFalsy(); + expect(isParallelDefault('true' as any)).toBeFalsy(); + }); + }); +}); diff --git a/packages/cli/src/lib/parallel.ts b/packages/cli/src/lib/parallel.ts new file mode 100644 index 0000000000..b6926115aa --- /dev/null +++ b/packages/cli/src/lib/parallel.ts @@ -0,0 +1,47 @@ +/* + * 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 const PARALLEL_ENV_VAR = 'BACKSTAGE_CLI_BUILD_PARALLEL'; + +export type ParallelOption = boolean | number | undefined; + +export function isParallelDefault(parallel: ParallelOption) { + return parallel === undefined || parallel === true; +} + +export function parseParallel( + parallel: boolean | string | number | undefined, +): ParallelOption { + if (parallel === undefined || parallel === null) { + return true; + } else if (typeof parallel === 'boolean') { + return parallel; + } else if (typeof parallel === 'number' && Number.isInteger(parallel)) { + return parallel; + } else if (typeof parallel === 'string') { + if (parallel === 'true') { + return true; + } else if (parallel === 'false') { + return false; + } else if (Number.isInteger(parseFloat(parallel.toString()))) { + return Number(parallel); + } + } + + throw Error( + `Parallel option value '${parallel}' is not a boolean or integer`, + ); +} diff --git a/packages/cli/src/types.d.ts b/packages/cli/src/types.d.ts index 94136f1dbc..828819ad17 100644 --- a/packages/cli/src/types.d.ts +++ b/packages/cli/src/types.d.ts @@ -29,3 +29,5 @@ declare module '@svgr/rollup' { } declare module '@rollup/plugin-yaml'; + +declare module 'terser-webpack-plugin'; From 22e1195419d3c39923fb46aebf85fb900a5db636 Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Wed, 14 Oct 2020 14:18:34 -0400 Subject: [PATCH 091/323] cost -> cost trend --- .../src/components/CostOverviewCard/CostOverviewCard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewCard.tsx b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewCard.tsx index 7f270e2374..e7d2bbf5be 100644 --- a/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewCard.tsx +++ b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewCard.tsx @@ -63,7 +63,7 @@ const CostOverviewCard = ({ data }: CostOverviewCardProps) => { {formatPercent(data[0].change.ratio)} From e142a2767f72cc0c1308c07a1b1b193a4501687b Mon Sep 17 00:00:00 2001 From: Mahmood Hosseini Date: Wed, 14 Oct 2020 14:21:09 -0400 Subject: [PATCH 092/323] bug(passport-strategy-helper): Better presentation of auth errors --- .changeset/spotty-apples-visit.md | 5 +++++ .../passport/PassportStrategyHelper.test.ts | 9 +++++++-- .../lib/passport/PassportStrategyHelper.ts | 19 +++++++++++++++++-- 3 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 .changeset/spotty-apples-visit.md diff --git a/.changeset/spotty-apples-visit.md b/.changeset/spotty-apples-visit.md new file mode 100644 index 0000000000..ba481fa052 --- /dev/null +++ b/.changeset/spotty-apples-visit.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +Better presentation of authentication errors diff --git a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts index d8f6d25d0f..f7a22e9ad9 100644 --- a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts +++ b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts @@ -16,6 +16,7 @@ import express from 'express'; import passport from 'passport'; +import { InternalOAuthError } from 'passport-oauth2'; import { executeRedirectStrategy, executeFrameHandlerStrategy, @@ -58,7 +59,11 @@ describe('PassportStrategyHelper', () => { } class MyCustomAuthErrorStrategy extends passport.Strategy { authenticate() { - this.error(new Error('MyCustomAuth error')); + this.error( + new InternalOAuthError('MyCustomAuth error', { + data: '{ "message": "Custom message" }', + }), + ); } } class MyCustomAuthRedirectStrategy extends passport.Strategy { @@ -97,7 +102,7 @@ describe('PassportStrategyHelper', () => { ); expect(spyAuthenticate).toBeCalledTimes(1); await expect(frameHandlerStrategyPromise).rejects.toThrow( - 'Authentication failed, Error: MyCustomAuth error', + 'Authentication failed, MyCustomAuth error - Custom message', ); }); diff --git a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts index 7bc34186f4..3264fd8faa 100644 --- a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts +++ b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts @@ -18,6 +18,7 @@ import express from 'express'; import passport from 'passport'; import jwtDecoder from 'jwt-decode'; import { ProfileInfo, RedirectInfo } from '../../providers/types'; +import { InternalOAuthError } from 'passport-oauth2'; export type PassportDoneCallback = ( err?: Error, @@ -95,8 +96,22 @@ export const executeFrameHandlerStrategy = async ( ) => { reject(new Error(`Authentication rejected, ${info.message ?? ''}`)); }; - strategy.error = (error: Error) => { - reject(new Error(`Authentication failed, ${error}`)); + strategy.error = (error: InternalOAuthError) => { + let message = `Authentication failed, ${error.message}`; + + if (error.oauthError?.data) { + try { + const errorData = JSON.parse(error.oauthError.data); + + if (errorData.message) { + message += ` - ${errorData.message}`; + } + } catch (parseError) { + message += ` - ${error.oauthError}`; + } + } + + reject(new Error(message)); }; strategy.redirect = () => { reject(new Error('Unexpected redirect')); From 921d705d510f00b6dc4c90516d478dbadb8fbaf5 Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Wed, 14 Oct 2020 14:21:33 -0400 Subject: [PATCH 093/323] use ratio for engineer cost display --- .../src/components/CostOverviewCard/CostOverviewCard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewCard.tsx b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewCard.tsx index e7d2bbf5be..daffe335c5 100644 --- a/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewCard.tsx +++ b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewCard.tsx @@ -81,7 +81,7 @@ const CostOverviewCard = ({ data }: CostOverviewCardProps) => { Date: Thu, 15 Oct 2020 09:14:15 +0530 Subject: [PATCH 094/323] chore: update naming convention for page theme options --- packages/theme/src/types.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/theme/src/types.ts b/packages/theme/src/types.ts index b5a07e78c5..e551208f3f 100644 --- a/packages/theme/src/types.ts +++ b/packages/theme/src/types.ts @@ -72,20 +72,20 @@ type PaletteAdditions = { export type BackstagePalette = Palette & PaletteAdditions; export type BackstagePaletteOptions = PaletteOptions & PaletteAdditions; -export type pageThemeOptions = { +export type PageThemeSelector = { themeId: string; }; export interface BackstageTheme extends Theme { palette: BackstagePalette; page: PageTheme; - getPageTheme: ({ themeId }: pageThemeOptions) => PageTheme; + getPageTheme: ({ themeId }: PageThemeSelector) => PageTheme; } export interface BackstageThemeOptions extends ThemeOptions { palette: BackstagePaletteOptions; page: PageTheme; - getPageTheme: ({ themeId }: pageThemeOptions) => PageTheme; + getPageTheme: ({ themeId }: PageThemeSelector) => PageTheme; } /** From 8f0608a5ed24ffc1a27cfecc9bc0f370c98966d8 Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Thu, 15 Oct 2020 09:16:39 +0530 Subject: [PATCH 095/323] chore: refactor --- .../core/src/layout/Header/Header.stories.tsx | 17 +++++++------- .../core/src/layout/Page/Page.stories.tsx | 5 ++--- packages/core/src/layout/Page/Page.tsx | 13 +++++++---- .../core/src/layout/SignInPage/SignInPage.tsx | 6 ++--- .../ApiEntityPage/ApiEntityPage.tsx | 10 ++------- .../ApiExplorerPage/ApiExplorerLayout.tsx | 10 +-------- .../components/CatalogPage/CatalogLayout.tsx | 5 +---- .../EntityPageLayout/EntityPageLayout.tsx | 10 ++------- .../AlertInstructionsLayout.tsx | 12 ++-------- .../CostInsightsLayout/CostInsightsLayout.tsx | 10 ++------- .../src/components/ExplorePluginPage.tsx | 9 ++------ .../NewProjectPage/NewProjectPage.tsx | 11 ++-------- .../ProjectDetailsPage/ProjectDetailsPage.tsx | 9 +------- .../ProjectListPage/ProjectListPage.tsx | 10 +-------- .../components/ClusterList/ClusterList.tsx | 10 ++------- .../components/ClusterPage/ClusterPage.tsx | 10 ++------- .../ProfileCatalog/ProfileCatalog.tsx | 11 ++-------- .../components/GraphiQLPage/GraphiQLPage.tsx | 10 ++------- .../KubernetesContent/KubernetesContent.tsx | 10 ++------- .../src/components/AuditList/index.tsx | 10 ++------- .../src/components/AuditView/index.tsx | 9 +------- .../src/components/CreateAudit/index.tsx | 9 +------- .../NewRelicComponent/NewRelicComponent.tsx | 10 ++------- .../RegisterComponentPage.tsx | 10 ++------- .../components/RollbarHome/RollbarHome.tsx | 9 +------- .../RollbarProjectPage/RollbarProjectPage.tsx | 9 +------- .../ScaffolderPage/ScaffolderPage.tsx | 6 ++--- .../components/TemplatePage/TemplatePage.tsx | 6 ++--- .../SentryPluginPage/SentryPluginPage.tsx | 10 ++------- .../tech-radar/src/components/RadarPage.tsx | 10 ++------- .../src/reader/components/TechDocsHome.tsx | 22 ++++--------------- .../src/reader/components/TechDocsPage.tsx | 9 +------- .../src/components/SettingsPage.tsx | 9 +------- .../components/WelcomePage/WelcomePage.tsx | 9 +------- 34 files changed, 72 insertions(+), 263 deletions(-) diff --git a/packages/core/src/layout/Header/Header.stories.tsx b/packages/core/src/layout/Header/Header.stories.tsx index f4ca74d3f8..62e6e3e52c 100644 --- a/packages/core/src/layout/Header/Header.stories.tsx +++ b/packages/core/src/layout/Header/Header.stories.tsx @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { pageTheme } from '@backstage/theme'; import React from 'react'; import { Header } from '.'; import { HeaderLabel } from '../HeaderLabel'; @@ -33,7 +32,7 @@ const labels = ( ); export const Home = () => ( - +
{labels}
@@ -47,7 +46,7 @@ export const HomeWithSubtitle = () => ( ); export const Tool = () => ( - +
{labels}
@@ -55,7 +54,7 @@ export const Tool = () => ( ); export const Service = () => ( - +
{labels}
@@ -63,7 +62,7 @@ export const Service = () => ( ); export const Website = () => ( - +
{labels}
@@ -71,7 +70,7 @@ export const Website = () => ( ); export const Library = () => ( - +
{labels}
@@ -79,7 +78,7 @@ export const Library = () => ( ); export const App = () => ( - +
{labels}
@@ -87,7 +86,7 @@ export const App = () => ( ); export const Documentation = () => ( - +
{labels}
@@ -95,7 +94,7 @@ export const Documentation = () => ( ); export const Other = () => ( - +
{labels}
diff --git a/packages/core/src/layout/Page/Page.stories.tsx b/packages/core/src/layout/Page/Page.stories.tsx index 882b989bae..b3a75c19e9 100644 --- a/packages/core/src/layout/Page/Page.stories.tsx +++ b/packages/core/src/layout/Page/Page.stories.tsx @@ -15,7 +15,6 @@ */ import React, { useState } from 'react'; -import { pageTheme } from '@backstage/theme'; import { Header, Page, @@ -196,7 +195,7 @@ export const PluginWithData = () => { const [selectedTab, setSelectedTab] = useState(2); return (
- + { export const PluginWithTable = () => { return (
- + diff --git a/packages/core/src/layout/Page/Page.tsx b/packages/core/src/layout/Page/Page.tsx index 4bc1917659..a14f772334 100644 --- a/packages/core/src/layout/Page/Page.tsx +++ b/packages/core/src/layout/Page/Page.tsx @@ -15,7 +15,7 @@ */ import React, { FC } from 'react'; -import { PageTheme } from '@backstage/theme'; +import { BackstageTheme } from '@backstage/theme'; import { makeStyles, ThemeProvider } from '@material-ui/core'; const useStyles = makeStyles(() => ({ @@ -30,13 +30,18 @@ const useStyles = makeStyles(() => ({ })); type Props = { - theme: PageTheme; + themeId: string; }; -export const Page: FC = ({ theme, children }) => { +export const Page: FC = ({ themeId, children }) => { const classes = useStyles(); return ( - ({ ...baseTheme, page: theme })}> + ({ + ...baseTheme, + page: baseTheme.getPageTheme({ themeId }), + })} + >
{children}
); diff --git a/packages/core/src/layout/SignInPage/SignInPage.tsx b/packages/core/src/layout/SignInPage/SignInPage.tsx index b2b049d161..ebc9bf278f 100644 --- a/packages/core/src/layout/SignInPage/SignInPage.tsx +++ b/packages/core/src/layout/SignInPage/SignInPage.tsx @@ -19,8 +19,7 @@ import { Page } from '../Page'; import { Header } from '../Header'; import { Content } from '../Content/Content'; import { ContentHeader } from '../ContentHeader/ContentHeader'; -import { BackstageTheme } from '@backstage/theme'; -import { Grid, useTheme } from '@material-ui/core'; +import { Grid } from '@material-ui/core'; import { SignInPageProps, useApi, configApiRef } from '@backstage/core-api'; import { useSignInProviders, getSignInProviders } from './providers'; import { IdentityProviders } from './types'; @@ -39,7 +38,6 @@ export const SignInPage: FC = ({ title, align = 'left', }) => { - const backstageTheme = useTheme(); const configApi = useApi(configApiRef); const classes = useStyles(); @@ -54,7 +52,7 @@ export const SignInPage: FC = ({ } return ( - +
{title && } diff --git a/plugins/api-docs/src/components/ApiEntityPage/ApiEntityPage.tsx b/plugins/api-docs/src/components/ApiEntityPage/ApiEntityPage.tsx index 85250a8569..f755705ac7 100644 --- a/plugins/api-docs/src/components/ApiEntityPage/ApiEntityPage.tsx +++ b/plugins/api-docs/src/components/ApiEntityPage/ApiEntityPage.tsx @@ -23,9 +23,8 @@ import { Progress, useApi, } from '@backstage/core'; -import { BackstageTheme } from '@backstage/theme'; import { catalogApiRef } from '@backstage/plugin-catalog'; -import { Box, useTheme } from '@material-ui/core'; +import { Box } from '@material-ui/core'; import { Alert } from '@material-ui/lab'; import React, { useEffect } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; @@ -65,7 +64,6 @@ const EntityPageTitle = ({ title }: EntityPageTitleProps) => ( ); export const ApiEntityPage = () => { - const backstageTheme = useTheme(); const { optionalNamespaceAndName } = useParams() as { optionalNamespaceAndName: string; }; @@ -102,11 +100,7 @@ export const ApiEntityPage = () => { ); return ( - +
} pageTitleOverride={headerTitle} diff --git a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx index 410432d715..b534489487 100644 --- a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx +++ b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx @@ -15,8 +15,6 @@ */ import { Header, Page } from '@backstage/core'; -import { BackstageTheme } from '@backstage/theme'; -import { useTheme } from '@material-ui/core'; import React from 'react'; type Props = { @@ -24,14 +22,8 @@ type Props = { }; export const ApiExplorerLayout = ({ children }: Props) => { - const backstageTheme = useTheme(); - return ( - +
{ - const backstageTheme = useTheme(); const greeting = getTimeBasedGreeting(); const profile = useApi(identityApiRef).getProfile(); const userId = useApi(identityApiRef).getUserId(); return ( - +
{ - const backstageTheme = useTheme(); const { optionalNamespaceAndName, kind } = useParams() as { optionalNamespaceAndName: string; kind: string; @@ -89,11 +87,7 @@ export const EntityPageLayout = ({ const showRemovalDialog = () => setConfirmationDialogOpen(true); return ( - +
} pageTitleOverride={headerTitle} diff --git a/plugins/cost-insights/src/components/AlertInstructionsLayout/AlertInstructionsLayout.tsx b/plugins/cost-insights/src/components/AlertInstructionsLayout/AlertInstructionsLayout.tsx index f4baf227db..82954baa86 100644 --- a/plugins/cost-insights/src/components/AlertInstructionsLayout/AlertInstructionsLayout.tsx +++ b/plugins/cost-insights/src/components/AlertInstructionsLayout/AlertInstructionsLayout.tsx @@ -14,15 +14,8 @@ * limitations under the License. */ -import { BackstageTheme } from '@backstage/theme'; import React, { ReactNode } from 'react'; -import { - Box, - Button, - Container, - makeStyles, - useTheme, -} from '@material-ui/core'; +import { Box, Button, Container, makeStyles } from '@material-ui/core'; import ChevronLeftIcon from '@material-ui/icons/ChevronLeft'; import { Header, Page } from '@backstage/core'; import { CostInsightsThemeProvider } from '../CostInsightsPage/CostInsightsThemeProvider'; @@ -44,13 +37,12 @@ const AlertInstructionsLayout = ({ title, children, }: AlertInstructionsLayoutProps) => { - const backstageTheme = useTheme(); const classes = useStyles(); return ( - +
{ - const backstageTheme = useTheme(); const classes = useStyles(); return ( - +
{ const classes = useStyles(); - const backstageTheme = useTheme(); return ( - +
{ @@ -112,14 +111,8 @@ const labels = ( ); export const NewProjectPage = () => { - const backstageTheme = useTheme(); - return ( - +
{labels}
diff --git a/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx b/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx index eb86b6fd03..7e44618441 100644 --- a/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx +++ b/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BackstageTheme } from '@backstage/theme'; import { Content, ContentHeader, @@ -36,7 +35,6 @@ import { TableRow, Theme, Typography, - useTheme, } from '@material-ui/core'; import React from 'react'; import { useAsync } from 'react-use'; @@ -148,13 +146,8 @@ const labels = ( ); export const ProjectDetailsPage = () => { - const backstageTheme = useTheme(); return ( - +
{labels}
diff --git a/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx b/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx index 33b3813c2a..b2148bcfc8 100644 --- a/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx +++ b/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx @@ -15,7 +15,6 @@ */ // NEEDS WORK -import { BackstageTheme } from '@backstage/theme'; import { Content, ContentHeader, @@ -38,7 +37,6 @@ import { TableRow, Tooltip, Typography, - useTheme, } from '@material-ui/core'; import React from 'react'; import { useAsync } from 'react-use'; @@ -135,14 +133,8 @@ const PageContents = () => { }; export const ProjectListPage = () => { - const backstageTheme = useTheme(); - return ( - +
{labels}
diff --git a/plugins/gitops-profiles/src/components/ClusterList/ClusterList.tsx b/plugins/gitops-profiles/src/components/ClusterList/ClusterList.tsx index 3b33320abe..70bf4c8c3f 100644 --- a/plugins/gitops-profiles/src/components/ClusterList/ClusterList.tsx +++ b/plugins/gitops-profiles/src/components/ClusterList/ClusterList.tsx @@ -14,7 +14,6 @@ * limitations under the License. */ -import { BackstageTheme } from '@backstage/theme'; import React, { FC, useState } from 'react'; import { Content, @@ -29,13 +28,12 @@ import { } from '@backstage/core'; import ClusterTable from '../ClusterTable/ClusterTable'; -import { Button, useTheme } from '@material-ui/core'; +import { Button } from '@material-ui/core'; import { useAsync } from 'react-use'; import { gitOpsApiRef } from '../../api'; import { Alert } from '@material-ui/lab'; const ClusterList: FC<{}> = () => { - const backstageTheme = useTheme(); const api = useApi(gitOpsApiRef); const githubAuth = useApi(githubAuthApiRef); const [githubUsername, setGithubUsername] = useState(String); @@ -92,11 +90,7 @@ const ClusterList: FC<{}> = () => { } return ( - +
diff --git a/plugins/gitops-profiles/src/components/ClusterPage/ClusterPage.tsx b/plugins/gitops-profiles/src/components/ClusterPage/ClusterPage.tsx index f7205c3326..9b6e5bdb08 100644 --- a/plugins/gitops-profiles/src/components/ClusterPage/ClusterPage.tsx +++ b/plugins/gitops-profiles/src/components/ClusterPage/ClusterPage.tsx @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BackstageTheme } from '@backstage/theme'; import React, { FC, useEffect, useState } from 'react'; import { Content, @@ -26,13 +25,12 @@ import { githubAuthApiRef, } from '@backstage/core'; -import { Link, useTheme } from '@material-ui/core'; +import { Link } from '@material-ui/core'; import { useParams } from 'react-router-dom'; import { gitOpsApiRef, Status } from '../../api'; import { transformRunStatus } from '../ProfileCatalog'; const ClusterPage: FC<{}> = () => { - const backstageTheme = useTheme(); const params = useParams() as { owner: string; repo: string }; const [pollingLog, setPollingLog] = useState(true); @@ -85,11 +83,7 @@ const ClusterPage: FC<{}> = () => { }, [pollingLog, api, params, githubAuth, githubAccessToken, githubUsername]); return ( - +
diff --git a/plugins/gitops-profiles/src/components/ProfileCatalog/ProfileCatalog.tsx b/plugins/gitops-profiles/src/components/ProfileCatalog/ProfileCatalog.tsx index fe1e97235a..a70cf97342 100644 --- a/plugins/gitops-profiles/src/components/ProfileCatalog/ProfileCatalog.tsx +++ b/plugins/gitops-profiles/src/components/ProfileCatalog/ProfileCatalog.tsx @@ -14,7 +14,6 @@ * limitations under the License. */ -import { BackstageTheme } from '@backstage/theme'; import React, { FC, useEffect, useState } from 'react'; import { Header, @@ -37,7 +36,7 @@ import { useApi, githubAuthApiRef, } from '@backstage/core'; -import { TextField, List, ListItem, Link, useTheme } from '@material-ui/core'; +import { TextField, List, ListItem, Link } from '@material-ui/core'; import ClusterTemplateCardList from '../ClusterTemplateCardList'; import ProfileCardList from '../ProfileCardList'; @@ -81,8 +80,6 @@ export const transformRunStatus = (x: Status[]) => { }; const ProfileCatalog: FC<{}> = () => { - const backstageTheme = useTheme(); - // TODO: get data from REST API const [clusterTemplates] = React.useState([ { @@ -261,11 +258,7 @@ const ProfileCatalog: FC<{}> = () => { ]; return ( - +
{ - const backstageTheme = useTheme(); const graphQlBrowseApi = useApi(graphQlBrowseApiRef); const endpoints = useAsync(() => graphQlBrowseApi.getEndpoints()); @@ -60,11 +58,7 @@ export const GraphiQLPage = () => { } return ( - +
diff --git a/plugins/kubernetes/src/components/KubernetesContent/KubernetesContent.tsx b/plugins/kubernetes/src/components/KubernetesContent/KubernetesContent.tsx index 451383df58..a3e82e79a4 100644 --- a/plugins/kubernetes/src/components/KubernetesContent/KubernetesContent.tsx +++ b/plugins/kubernetes/src/components/KubernetesContent/KubernetesContent.tsx @@ -14,9 +14,8 @@ * limitations under the License. */ -import { BackstageTheme } from '@backstage/theme'; import React, { ReactElement, useEffect, useState } from 'react'; -import { Grid, TabProps, useTheme } from '@material-ui/core'; +import { Grid, TabProps } from '@material-ui/core'; import { Config } from '@backstage/config'; import { CardTab, @@ -102,7 +101,6 @@ const groupResponses = (fetchResponse: FetchResponse[]) => { type KubernetesContentProps = { entity: Entity; children?: React.ReactNode }; export const KubernetesContent = ({ entity }: KubernetesContentProps) => { - const backstageTheme = useTheme(); const kubernetesApi = useApi(kubernetesApiRef); const [kubernetesObjects, setKubernetesObjects] = useState< @@ -149,11 +147,7 @@ export const KubernetesContent = ({ entity }: KubernetesContentProps) => { kubernetesObjects?.items.filter(r => r.errors.length > 0) ?? []; return ( - + {kubernetesObjects === undefined && error === undefined && ( diff --git a/plugins/lighthouse/src/components/AuditList/index.tsx b/plugins/lighthouse/src/components/AuditList/index.tsx index cae1761ecb..117a40a901 100644 --- a/plugins/lighthouse/src/components/AuditList/index.tsx +++ b/plugins/lighthouse/src/components/AuditList/index.tsx @@ -13,11 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { BackstageTheme } from '@backstage/theme'; import React, { useState, useMemo, FC, ReactNode } from 'react'; import { useLocalStorage, useAsync } from 'react-use'; import { useNavigate } from 'react-router-dom'; -import { Grid, Button, useTheme } from '@material-ui/core'; +import { Grid, Button } from '@material-ui/core'; import Alert from '@material-ui/lab/Alert'; import Pagination from '@material-ui/lab/Pagination'; import { @@ -41,7 +40,6 @@ import { createAuditRouteRef } from '../../plugin'; export const LIMIT = 10; const AuditList: FC<{}> = () => { - const backstageTheme = useTheme(); const [dismissedStored] = useLocalStorage(LIGHTHOUSE_INTRO_LOCAL_STORAGE); const [dismissed, setDismissed] = useState(dismissedStored); @@ -95,11 +93,7 @@ const AuditList: FC<{}> = () => { } return ( - +
= () => { }; const ConnectedAuditView = () => { - const backstageTheme = useTheme(); return ( - +
= () => { }; const CreateAudit = () => { - const backstageTheme = useTheme(); return ( - +
= () => { - const backstageTheme = useTheme(); return ( - +
diff --git a/plugins/register-component/src/components/RegisterComponentPage/RegisterComponentPage.tsx b/plugins/register-component/src/components/RegisterComponentPage/RegisterComponentPage.tsx index 722e2e1964..cd3eb1adbb 100644 --- a/plugins/register-component/src/components/RegisterComponentPage/RegisterComponentPage.tsx +++ b/plugins/register-component/src/components/RegisterComponentPage/RegisterComponentPage.tsx @@ -14,9 +14,8 @@ * limitations under the License. */ -import { BackstageTheme } from '@backstage/theme'; import React, { useState } from 'react'; -import { Grid, makeStyles, useTheme } from '@material-ui/core'; +import { Grid, makeStyles } from '@material-ui/core'; import { InfoCard, Page, @@ -61,7 +60,6 @@ export const RegisterComponentPage = ({ }: { catalogRouteRef: RouteRef; }) => { - const backstageTheme = useTheme(); const classes = useStyles(); const catalogApi = useApi(catalogApiRef); const [formState, setFormState] = useState>( @@ -114,11 +112,7 @@ export const RegisterComponentPage = ({ }; return ( - +
diff --git a/plugins/rollbar/src/components/RollbarHome/RollbarHome.tsx b/plugins/rollbar/src/components/RollbarHome/RollbarHome.tsx index f219be9615..fe99e70575 100644 --- a/plugins/rollbar/src/components/RollbarHome/RollbarHome.tsx +++ b/plugins/rollbar/src/components/RollbarHome/RollbarHome.tsx @@ -14,23 +14,16 @@ * limitations under the License. */ -import { BackstageTheme } from '@backstage/theme'; -import { useTheme } from '@material-ui/core'; import React from 'react'; import { Content, Header, Page } from '@backstage/core'; import { RollbarProjectTable } from '../RollbarProjectTable/RollbarProjectTable'; import { useRollbarEntities } from '../../hooks/useRollbarEntities'; export const RollbarHome = () => { - const backstageTheme = useTheme(); const { entities, loading, error } = useRollbarEntities(); return ( - +
{ - const backstageTheme = useTheme(); const { entity } = useCatalogEntity(); return ( - +
diff --git a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx index bd70fd9565..d0cb25f254 100644 --- a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx +++ b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx @@ -14,7 +14,6 @@ * limitations under the License. */ -import { BackstageTheme } from '@backstage/theme'; import { TemplateEntityV1alpha1 } from '@backstage/catalog-model'; import { Content, @@ -29,7 +28,7 @@ import { WarningPanel, } from '@backstage/core'; import { catalogApiRef } from '@backstage/plugin-catalog'; -import { Button, Grid, Link, Typography, useTheme } from '@material-ui/core'; +import { Button, Grid, Link, Typography } from '@material-ui/core'; import React, { useEffect } from 'react'; import { Link as RouterLink } from 'react-router-dom'; import useStaleWhileRevalidate from 'swr'; @@ -49,7 +48,6 @@ const getTemplateCardProps = ( }; export const ScaffolderPage = () => { - const backstageTheme = useTheme(); const catalogApi = useApi(catalogApiRef); const errorApi = useApi(errorApiRef); @@ -67,7 +65,7 @@ export const ScaffolderPage = () => { }, [error, errorApi]); return ( - +
{ - const backstageTheme = useTheme(); const errorApi = useApi(errorApiRef); const catalogApi = useApi(catalogApiRef); const scaffolderApi = useApi(scaffolderApiRef); @@ -146,7 +144,7 @@ export const TemplatePage = () => { } return ( - +
= () => { - const backstageTheme = useTheme(); const [statsFor, setStatsFor] = useState<'12h' | '24h'>('12h'); const toggleStatsFor = () => setStatsFor(statsFor === '12h' ? '12h' : '24h'); const sentryProjectId = 'sample-sentry-project-id'; return ( - +
diff --git a/plugins/tech-radar/src/components/RadarPage.tsx b/plugins/tech-radar/src/components/RadarPage.tsx index d23061b094..d5c4355b0e 100644 --- a/plugins/tech-radar/src/components/RadarPage.tsx +++ b/plugins/tech-radar/src/components/RadarPage.tsx @@ -14,9 +14,8 @@ * limitations under the License. */ -import { BackstageTheme } from '@backstage/theme'; import React from 'react'; -import { Grid, useTheme } from '@material-ui/core'; +import { Grid } from '@material-ui/core'; import { Content, ContentHeader, @@ -40,13 +39,8 @@ export const RadarPage = ({ pageTitle, ...props }: TechRadarPageProps): JSX.Element => { - const backstageTheme = useTheme(); return ( - +
diff --git a/plugins/techdocs/src/reader/components/TechDocsHome.tsx b/plugins/techdocs/src/reader/components/TechDocsHome.tsx index 016f6df4f0..0408a540ca 100644 --- a/plugins/techdocs/src/reader/components/TechDocsHome.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsHome.tsx @@ -14,11 +14,10 @@ * limitations under the License. */ -import { BackstageTheme } from '@backstage/theme'; import React from 'react'; import { useAsync } from 'react-use'; import { useNavigate, generatePath } from 'react-router-dom'; -import { Grid, useTheme } from '@material-ui/core'; +import { Grid } from '@material-ui/core'; import { ItemCard, Progress, @@ -31,7 +30,6 @@ import { catalogApiRef } from '@backstage/plugin-catalog'; import { rootDocsRouteRef } from '../../plugin'; export const TechDocsHome = () => { - const backstageTheme = useTheme(); const catalogApi = useApi(catalogApiRef); const navigate = useNavigate(); @@ -44,11 +42,7 @@ export const TechDocsHome = () => { if (loading) { return ( - +
{ if (error) { return ( - +
{ } return ( - +
{ - const backstageTheme = useTheme(); const [documentReady, setDocumentReady] = useState(false); const { namespace, kind, name } = useParams(); @@ -48,11 +45,7 @@ export const TechDocsPage = () => { }; return ( - + { - const backstageTheme = useTheme(); const [activeTab, setActiveTab] = useState(0); const onTabChange = (index: number) => { setActiveTab(index); @@ -46,11 +43,7 @@ export const SettingsPage = ({ providerSettings }: Props) => { ]; return ( - +
{content[activeTab]} diff --git a/plugins/welcome/src/components/WelcomePage/WelcomePage.tsx b/plugins/welcome/src/components/WelcomePage/WelcomePage.tsx index 7c68ab96bf..7b94024948 100644 --- a/plugins/welcome/src/components/WelcomePage/WelcomePage.tsx +++ b/plugins/welcome/src/components/WelcomePage/WelcomePage.tsx @@ -14,7 +14,6 @@ * limitations under the License. */ -import { BackstageTheme } from '@backstage/theme'; import React from 'react'; import { Link as RouterLink } from 'react-router-dom'; import { @@ -24,7 +23,6 @@ import { ListItem, ListItemText, Link, - useTheme, } from '@material-ui/core'; import { Content, @@ -40,17 +38,12 @@ import { } from '@backstage/core'; const WelcomePage = () => { - const backstageTheme = useTheme(); const appTitle = useApi(configApiRef).getOptionalString('app.title') ?? 'Backstage'; const profile = { givenName: '' }; return ( - +
Date: Thu, 15 Oct 2020 09:37:13 +0530 Subject: [PATCH 096/323] chore: update example component --- .../tutorials/quickstart-app-plugin/ExampleComponent.md | 7 ++----- .../components/ExampleComponent/ExampleComponent.tsx.hbs | 3 +-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/contrib/docs/tutorials/quickstart-app-plugin/ExampleComponent.md b/contrib/docs/tutorials/quickstart-app-plugin/ExampleComponent.md index 83b18bf4c2..5d633544e3 100644 --- a/contrib/docs/tutorials/quickstart-app-plugin/ExampleComponent.md +++ b/contrib/docs/tutorials/quickstart-app-plugin/ExampleComponent.md @@ -3,14 +3,12 @@ ExampleComponent.tsx reference ```tsx -import { BackstageTheme } from '@backstage/theme'; import React, { FC } from 'react'; -import { Typography, Grid, useTheme } from '@material-ui/core'; +import { Typography, Grid } from '@material-ui/core'; import { InfoCard, Header, Page, - pageTheme, Content, ContentHeader, HeaderLabel, @@ -21,13 +19,12 @@ import { useApi } from '@backstage/core-api'; import ExampleFetchComponent from '../ExampleFetchComponent'; const ExampleComponent: FC<{}> = () => { - const backstageTheme = useTheme(); const identityApi = useApi(identityApiRef); const userId = identityApi.getUserId(); const profile = identityApi.getProfile(); return ( - +
= () => { return ( - +
From c861f4415fec4c9081bd1f6f5e91aa3642918261 Mon Sep 17 00:00:00 2001 From: "althaf.hameez" Date: Thu, 15 Oct 2020 14:24:21 +0800 Subject: [PATCH 097/323] Use organization name as the prefix for Service Catalog --- plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx b/plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx index 92f51ace06..9d658d7122 100644 --- a/plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx +++ b/plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx @@ -15,6 +15,7 @@ */ import { + configApiRef, Header, HomepageTimer, identityApiRef, @@ -33,12 +34,13 @@ const CatalogLayout = ({ children }: Props) => { const greeting = getTimeBasedGreeting(); const profile = useApi(identityApiRef).getProfile(); const userId = useApi(identityApiRef).getUserId(); + const orgName = useApi(configApiRef).getOptionalString('organization.name'); return (
From 9c779c0b09e69602926f8f8aaa3f9700d31637f1 Mon Sep 17 00:00:00 2001 From: "althaf.hameez" Date: Thu, 15 Oct 2020 14:59:30 +0800 Subject: [PATCH 098/323] Fix e2e tests --- .../default-app/packages/app/cypress/integration/app.js | 2 +- packages/e2e-test/src/commands/run.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js b/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js index dde26b7b39..2d63193fbf 100644 --- a/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js +++ b/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js @@ -1,6 +1,6 @@ describe('App', () => { it('should render the catalog', () => { cy.visit('/'); - cy.contains('Backstage Service Catalog'); + cy.contains('Spotify Service Catalog'); }); }); diff --git a/packages/e2e-test/src/commands/run.ts b/packages/e2e-test/src/commands/run.ts index cfe0ad9685..7775fb29b2 100644 --- a/packages/e2e-test/src/commands/run.ts +++ b/packages/e2e-test/src/commands/run.ts @@ -301,7 +301,7 @@ async function testAppServe(pluginName: string, appDir: string) { try { const browser = new Browser(); - await waitForPageWithText(browser, '/', 'Backstage Service Catalog'); + await waitForPageWithText(browser, '/', 'Spotify Service Catalog'); await waitForPageWithText( browser, `/${pluginName}`, From bd4029b7752cbd64875f680745457200e3955263 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Thu, 15 Oct 2020 10:02:36 +0200 Subject: [PATCH 099/323] Add Lighthouse annotation to YAML (#2909) --- catalog-info.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/catalog-info.yaml b/catalog-info.yaml index 937a55bfca..405c3f31b4 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -7,6 +7,7 @@ metadata: annotations: github.com/project-slug: spotify/backstage backstage.io/techdocs-ref: github:https://github.com/spotify/backstage.git + lighthouse.com/website-url: https://backstage.io spec: type: library owner: Spotify From fe4926cb7591ab26e0fe7e930b0d421a7138bab1 Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Thu, 15 Oct 2020 13:52:18 +0530 Subject: [PATCH 100/323] chore: remove explicit return --- .../ExampleComponent/ExampleComponent.tsx.hbs | 51 ++++--- packages/core/src/layout/Header/Header.tsx | 134 +++++++++--------- .../ApiExplorerPage/ApiExplorerLayout.tsx | 22 ++- .../NewProjectPage/NewProjectPage.tsx | 32 ++--- .../ProjectDetailsPage/ProjectDetailsPage.tsx | 28 ++-- .../ProjectListPage/ProjectListPage.tsx | 34 +++-- .../src/components/AuditView/index.tsx | 28 ++-- .../src/components/CreateAudit/index.tsx | 27 ++-- .../NewRelicComponent/NewRelicComponent.tsx | 39 +++-- .../tech-radar/src/components/RadarPage.tsx | 45 +++--- 10 files changed, 207 insertions(+), 233 deletions(-) diff --git a/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.tsx.hbs b/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.tsx.hbs index 616f2cd2fc..e08f1650d5 100644 --- a/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.tsx.hbs +++ b/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.tsx.hbs @@ -11,31 +11,30 @@ import { } from '@backstage/core'; import ExampleFetchComponent from '../ExampleFetchComponent'; -const ExampleComponent: FC<{}> = () => { - return ( - -
- - -
- - - A description of your plugin goes here. - - - - - - All content should be wrapped in a card like this. - - - - - - +const ExampleComponent: FC<{}> = () => ( + +
+ + +
+ + + A description of your plugin goes here. + + + + + + All content should be wrapped in a card like this. + + - -
- ); -} + + + +
+
+
+); + export default ExampleComponent; diff --git a/packages/core/src/layout/Header/Header.tsx b/packages/core/src/layout/Header/Header.tsx index 25afb5c9d1..ec4a3db6e2 100644 --- a/packages/core/src/layout/Header/Header.tsx +++ b/packages/core/src/layout/Header/Header.tsx @@ -22,76 +22,73 @@ import { Tooltip, makeStyles, Breadcrumbs, - useTheme, } from '@material-ui/core'; import ChevronRightIcon from '@material-ui/icons/ChevronRight'; import { BackstageTheme } from '@backstage/theme'; -const useStyles = makeStyles( - theme => ({ - header: { - gridArea: 'pageHeader', - padding: theme.spacing(3), - minHeight: 118, - width: '100%', - boxShadow: '0 0 8px 3px rgba(20, 20, 20, 0.3)', - position: 'relative', - zIndex: 100, - display: 'flex', - flexDirection: 'row', - flexWrap: 'wrap', - justifyContent: 'flex-end', - alignItems: 'center', - backgroundImage: props => props.backgroundImage, - backgroundPosition: 'center', - backgroundSize: 'cover', - }, - leftItemsBox: { - flex: '1 1 auto', - }, - rightItemsBox: { - flex: '0 1 auto', - display: 'flex', - flexDirection: 'row', - flexWrap: 'wrap', - alignItems: 'center', - marginRight: theme.spacing(1), - }, - title: { - color: theme.palette.bursts.fontColor, - lineHeight: '1.0em', - wordBreak: 'break-all', - fontSize: 'calc(24px + 6 * ((100vw - 320px) / 680))', - marginBottom: theme.spacing(1), - }, - subtitle: { - color: 'rgba(255, 255, 255, 0.8)', - lineHeight: '1.0em', - }, - type: { - textTransform: 'uppercase', - fontSize: 11, - opacity: 0.8, - marginBottom: theme.spacing(1), - color: theme.palette.bursts.fontColor, - }, - breadcrumb: { - fontSize: 'calc(15px + 1 * ((100vw - 320px) / 680))', - color: theme.palette.bursts.fontColor, - }, - breadcrumbType: { - fontSize: 'inherit', - opacity: 0.7, - marginRight: -theme.spacing(0.3), - marginBottom: theme.spacing(0.3), - }, - breadcrumbTitle: { - fontSize: 'inherit', - marginLeft: -theme.spacing(0.3), - marginBottom: theme.spacing(0.3), - }, - }), -); +const useStyles = makeStyles(theme => ({ + header: { + gridArea: 'pageHeader', + padding: theme.spacing(3), + minHeight: 118, + width: '100%', + boxShadow: '0 0 8px 3px rgba(20, 20, 20, 0.3)', + position: 'relative', + zIndex: 100, + display: 'flex', + flexDirection: 'row', + flexWrap: 'wrap', + justifyContent: 'flex-end', + alignItems: 'center', + backgroundImage: theme.page.backgroundImage, + backgroundPosition: 'center', + backgroundSize: 'cover', + }, + leftItemsBox: { + flex: '1 1 auto', + }, + rightItemsBox: { + flex: '0 1 auto', + display: 'flex', + flexDirection: 'row', + flexWrap: 'wrap', + alignItems: 'center', + marginRight: theme.spacing(1), + }, + title: { + color: theme.palette.bursts.fontColor, + lineHeight: '1.0em', + wordBreak: 'break-all', + fontSize: 'calc(24px + 6 * ((100vw - 320px) / 680))', + marginBottom: theme.spacing(1), + }, + subtitle: { + color: 'rgba(255, 255, 255, 0.8)', + lineHeight: '1.0em', + }, + type: { + textTransform: 'uppercase', + fontSize: 11, + opacity: 0.8, + marginBottom: theme.spacing(1), + color: theme.palette.bursts.fontColor, + }, + breadcrumb: { + fontSize: 'calc(15px + 1 * ((100vw - 320px) / 680))', + color: theme.palette.bursts.fontColor, + }, + breadcrumbType: { + fontSize: 'inherit', + opacity: 0.7, + marginRight: -theme.spacing(0.3), + marginBottom: theme.spacing(0.3), + }, + breadcrumbTitle: { + fontSize: 'inherit', + marginLeft: -theme.spacing(0.3), + marginBottom: theme.spacing(0.3), + }, +})); type HeaderStyles = ReturnType; @@ -200,10 +197,7 @@ export const Header: FC = ({ type, typeLink, }) => { - const backstageTheme = useTheme(); - const classes = useStyles({ - backgroundImage: backstageTheme.page.backgroundImage, - }); + const classes = useStyles(); const documentTitle = pageTitleOverride || title; const pageTitle = title || pageTitleOverride; const titleTemplate = `${documentTitle} | %s | Backstage`; diff --git a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx index b534489487..0720ecf45b 100644 --- a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx +++ b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx @@ -21,15 +21,13 @@ type Props = { children?: React.ReactNode; }; -export const ApiExplorerLayout = ({ children }: Props) => { - return ( - -
- {children} - - ); -}; +export const ApiExplorerLayout = ({ children }: Props) => ( + +
+ {children} + +); diff --git a/plugins/gcp-projects/src/components/NewProjectPage/NewProjectPage.tsx b/plugins/gcp-projects/src/components/NewProjectPage/NewProjectPage.tsx index 94cf6ce920..462aa17099 100644 --- a/plugins/gcp-projects/src/components/NewProjectPage/NewProjectPage.tsx +++ b/plugins/gcp-projects/src/components/NewProjectPage/NewProjectPage.tsx @@ -110,20 +110,18 @@ const labels = ( ); -export const NewProjectPage = () => { - return ( - -
- {labels} -
- - - - This plugin allows you to view and interact with your gcp projects. - - - - -
- ); -}; +export const NewProjectPage = () => ( + +
+ {labels} +
+ + + + This plugin allows you to view and interact with your gcp projects. + + + + +
+); diff --git a/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx b/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx index 7e44618441..0c6350b849 100644 --- a/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx +++ b/plugins/gcp-projects/src/components/ProjectDetailsPage/ProjectDetailsPage.tsx @@ -145,18 +145,16 @@ const labels = ( ); -export const ProjectDetailsPage = () => { - return ( - -
- {labels} -
- - - Support Button - - - -
- ); -}; +export const ProjectDetailsPage = () => ( + +
+ {labels} +
+ + + Support Button + + + +
+); diff --git a/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx b/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx index b2148bcfc8..b911040535 100644 --- a/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx +++ b/plugins/gcp-projects/src/components/ProjectListPage/ProjectListPage.tsx @@ -132,21 +132,19 @@ const PageContents = () => { ); }; -export const ProjectListPage = () => { - return ( - -
- {labels} -
- - - - All your software catalog entities - - - -
- ); -}; +export const ProjectListPage = () => ( + +
+ {labels} +
+ + + + All your software catalog entities + + + +
+); diff --git a/plugins/lighthouse/src/components/AuditView/index.tsx b/plugins/lighthouse/src/components/AuditView/index.tsx index 4813be8bff..ac38a329f1 100644 --- a/plugins/lighthouse/src/components/AuditView/index.tsx +++ b/plugins/lighthouse/src/components/AuditView/index.tsx @@ -191,20 +191,16 @@ export const AuditViewContent: FC<{}> = () => { ); }; -const ConnectedAuditView = () => { - return ( - -
- - -
- - - -
- ); -}; +const ConnectedAuditView = () => ( + +
+ + +
+ + + +
+); + export default ConnectedAuditView; diff --git a/plugins/lighthouse/src/components/CreateAudit/index.tsx b/plugins/lighthouse/src/components/CreateAudit/index.tsx index ac4d2a2e3c..372992a718 100644 --- a/plugins/lighthouse/src/components/CreateAudit/index.tsx +++ b/plugins/lighthouse/src/components/CreateAudit/index.tsx @@ -168,21 +168,16 @@ export const CreateAuditContent: FC<{}> = () => { ); }; -const CreateAudit = () => { - return ( - -
- - -
- - - -
- ); -}; +const CreateAudit = () => ( + +
+ + +
+ + + +
+); export default CreateAudit; diff --git a/plugins/newrelic/src/components/NewRelicComponent/NewRelicComponent.tsx b/plugins/newrelic/src/components/NewRelicComponent/NewRelicComponent.tsx index 5dea8b7ee6..81e28a8c80 100644 --- a/plugins/newrelic/src/components/NewRelicComponent/NewRelicComponent.tsx +++ b/plugins/newrelic/src/components/NewRelicComponent/NewRelicComponent.tsx @@ -26,25 +26,24 @@ import { } from '@backstage/core'; import NewRelicFetchComponent from '../NewRelicFetchComponent'; -const NewRelicComponent: FC<{}> = () => { - return ( - -
- -
- - - - New Relic Application Performance Monitoring - - - - - - +const NewRelicComponent: FC<{}> = () => ( + +
+ +
+ + + + New Relic Application Performance Monitoring + + + + + - -
- ); -}; +
+
+
+); + export default NewRelicComponent; diff --git a/plugins/tech-radar/src/components/RadarPage.tsx b/plugins/tech-radar/src/components/RadarPage.tsx index d5c4355b0e..84cfef3213 100644 --- a/plugins/tech-radar/src/components/RadarPage.tsx +++ b/plugins/tech-radar/src/components/RadarPage.tsx @@ -38,30 +38,29 @@ export const RadarPage = ({ subtitle, pageTitle, ...props -}: TechRadarPageProps): JSX.Element => { - return ( - -
- - -
- - - - This is used for visualizing the official guidelines of different - areas of software development such as languages, frameworks, - infrastructure and processes. - - - - - - +}: TechRadarPageProps): JSX.Element => ( + +
+ + +
+ + + + This is used for visualizing the official guidelines of different + areas of software development such as languages, frameworks, + infrastructure and processes. + + + + + - -
- ); -}; +
+
+
+); + RadarPage.defaultProps = { title: 'Tech Radar', subtitle: 'Pick the recommended technologies for your projects', From 1f4f856cd4ae8d62d45d374b82a04f18fccf8d34 Mon Sep 17 00:00:00 2001 From: "althaf.hameez" Date: Thu, 15 Oct 2020 16:25:15 +0800 Subject: [PATCH 101/323] Revert --- .../default-app/packages/app/cypress/integration/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js b/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js index 2d63193fbf..dde26b7b39 100644 --- a/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js +++ b/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js @@ -1,6 +1,6 @@ describe('App', () => { it('should render the catalog', () => { cy.visit('/'); - cy.contains('Spotify Service Catalog'); + cy.contains('Backstage Service Catalog'); }); }); From 53104074ee594c02c083c10f3b17c38759157c35 Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Thu, 15 Oct 2020 14:04:20 +0530 Subject: [PATCH 102/323] feat: allow passing pageTheme in createThemeOptions --- packages/theme/src/baseTheme.ts | 3 +-- packages/theme/src/themes.ts | 3 +++ packages/theme/src/types.ts | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/theme/src/baseTheme.ts b/packages/theme/src/baseTheme.ts index 1f0e01586e..640476c487 100644 --- a/packages/theme/src/baseTheme.ts +++ b/packages/theme/src/baseTheme.ts @@ -24,8 +24,6 @@ import { SimpleThemeOptions, } from './types'; -import { pageTheme } from './pageTheme'; - const DEFAULT_FONT_FAMILY = '"Helvetica Neue", Helvetica, Roboto, Arial, sans-serif'; @@ -36,6 +34,7 @@ export function createThemeOptions( palette, fontFamily = DEFAULT_FONT_FAMILY, defaultPageTheme, + pageTheme, } = options; if (!pageTheme[defaultPageTheme]) { diff --git a/packages/theme/src/themes.ts b/packages/theme/src/themes.ts index 3838ed01cc..2c06f387b8 100644 --- a/packages/theme/src/themes.ts +++ b/packages/theme/src/themes.ts @@ -15,6 +15,7 @@ */ import { createTheme } from './baseTheme'; +import { pageTheme } from './pageTheme'; import { yellow } from '@material-ui/core/colors'; export const lightTheme = createTheme({ @@ -74,6 +75,7 @@ export const lightTheme = createTheme({ }, }, defaultPageTheme: 'home', + pageTheme, }); export const darkTheme = createTheme({ @@ -133,4 +135,5 @@ export const darkTheme = createTheme({ }, }, defaultPageTheme: 'home', + pageTheme, }); diff --git a/packages/theme/src/types.ts b/packages/theme/src/types.ts index e551208f3f..696ccf586f 100644 --- a/packages/theme/src/types.ts +++ b/packages/theme/src/types.ts @@ -94,6 +94,7 @@ export interface BackstageThemeOptions extends ThemeOptions { export type SimpleThemeOptions = { palette: BackstagePaletteOptions; defaultPageTheme: string; + pageTheme: Record; fontFamily?: string; }; From fecd2d4001dfdf798db911d7cb940e542fe63cd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 14 Oct 2020 11:23:49 +0200 Subject: [PATCH 103/323] fix(catalog-backend): move batch write to EntitiesCatalog where it belongs --- .../catalog/DatabaseEntitiesCatalog.test.ts | 43 +++- .../src/catalog/DatabaseEntitiesCatalog.ts | 167 +++++++++++++- plugins/catalog-backend/src/catalog/types.ts | 11 + .../ingestion/HigherOrderOperations.test.ts | 21 +- .../src/ingestion/HigherOrderOperations.ts | 204 +++--------------- .../src/service/CatalogBuilder.ts | 2 +- .../src/service/router.test.ts | 1 + 7 files changed, 248 insertions(+), 201 deletions(-) diff --git a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts index 8ef685e6b0..3d1f887e1f 100644 --- a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts +++ b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts @@ -14,8 +14,9 @@ * limitations under the License. */ +import { getVoidLogger } from '@backstage/backend-common'; import type { Entity } from '@backstage/catalog-model'; -import type { Database } from '../database'; +import { Database, DatabaseManager } from '../database'; import { DatabaseEntitiesCatalog } from './DatabaseEntitiesCatalog'; describe('DatabaseEntitiesCatalog', () => { @@ -58,7 +59,7 @@ describe('DatabaseEntitiesCatalog', () => { db.entities.mockResolvedValue([]); db.addEntities.mockResolvedValue([{ entity }]); - const catalog = new DatabaseEntitiesCatalog(db); + const catalog = new DatabaseEntitiesCatalog(db, getVoidLogger()); const result = await catalog.addOrUpdateEntity(entity); expect(db.entityByName).toHaveBeenCalledTimes(1); @@ -97,7 +98,7 @@ describe('DatabaseEntitiesCatalog', () => { }); db.updateEntity.mockResolvedValue({ entity }); - const catalog = new DatabaseEntitiesCatalog(db); + const catalog = new DatabaseEntitiesCatalog(db, getVoidLogger()); const result = await catalog.addOrUpdateEntity(entity); expect(db.entities).toHaveBeenCalledTimes(0); @@ -149,7 +150,7 @@ describe('DatabaseEntitiesCatalog', () => { db.entityByName.mockResolvedValue({ entity: existing }); db.updateEntity.mockResolvedValue({ entity: existing }); - const catalog = new DatabaseEntitiesCatalog(db); + const catalog = new DatabaseEntitiesCatalog(db, getVoidLogger()); const result = await catalog.addOrUpdateEntity(added); expect(db.entityByName).toHaveBeenCalledTimes(1); @@ -180,4 +181,38 @@ describe('DatabaseEntitiesCatalog', () => { expect(result).toEqual(existing); }); }); + + describe('batchAddOrUpdateEntities', () => { + it('both adds and updates', async () => { + const catalog = new DatabaseEntitiesCatalog( + await DatabaseManager.createTestDatabase(), + getVoidLogger(), + ); + const entities: Entity[] = []; + for (let i = 0; i < 500; ++i) { + entities.push({ + apiVersion: 'a', + kind: 'k', + metadata: { name: `n${i}` }, + }); + } + + await catalog.batchAddOrUpdateEntities(entities); + const afterFirst = await catalog.entities(); + expect(afterFirst.length).toBe(500); + + entities[40].metadata.op = 'changed'; + entities.push({ + apiVersion: 'a', + kind: 'k', + metadata: { name: `n500`, op: 'added' }, + }); + + await catalog.batchAddOrUpdateEntities(entities); + const afterSecond = await catalog.entities(); + expect(afterSecond.length).toBe(501); + expect(afterSecond.find(e => e.metadata.op === 'changed')).toBeDefined(); + expect(afterSecond.find(e => e.metadata.op === 'added')).toBeDefined(); + }); + }); }); diff --git a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts index 8619355c91..0a213dd186 100644 --- a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts +++ b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts @@ -14,18 +14,46 @@ * limitations under the License. */ -import { NotFoundError } from '@backstage/backend-common'; +import { ConflictError, NotFoundError } from '@backstage/backend-common'; import type { Entity } from '@backstage/catalog-model'; import { + entityHasChanges, generateUpdatedEntity, getEntityName, LOCATION_ANNOTATION, + serializeEntityRef, } from '@backstage/catalog-model'; +import { chunk, groupBy } from 'lodash'; +import limiterFactory from 'p-limit'; +import { Logger } from 'winston'; import type { Database, DbEntityResponse, EntityFilters } from '../database'; +import { durationText } from '../util/timing'; import type { EntitiesCatalog } from './types'; +type BatchContext = { + kind: string; + namespace: string; + locationId?: string; +}; + +// Some locations return tens or hundreds of thousands of entities. To make +// those payloads more manageable, we break work apart in batches of this +// many entities and write them to storage per batch. +const BATCH_SIZE = 100; + +// When writing large batches, there's an increasing chance of contention in +// the form of conflicts where we compete with other writes. Each batch gets +// this many attempts at being written before giving up. +const BATCH_ATTEMPTS = 3; + +// The number of batches that may be ongoing at the same time. +const BATCH_CONCURRENCY = 3; + export class DatabaseEntitiesCatalog implements EntitiesCatalog { - constructor(private readonly database: Database) {} + constructor( + private readonly database: Database, + private readonly logger: Logger, + ) {} async entities(filters?: EntityFilters): Promise { const items = await this.database.transaction(tx => @@ -102,4 +130,139 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { return undefined; }); } + + /** + * Writes a number of entities efficiently to storage. + * + * @param entities Some entities + * @param locationId The location that they all belong to + */ + async batchAddOrUpdateEntities(entities: Entity[], locationId?: string) { + // Group the entities by unique kind+namespace combinations + const entitiesByKindAndNamespace = groupBy(entities, entity => { + const name = getEntityName(entity); + return `${name.kind}:${name.namespace}`.toLowerCase(); + }); + + const limiter = limiterFactory(BATCH_CONCURRENCY); + const tasks: Promise[] = []; + + for (const groupEntities of Object.values(entitiesByKindAndNamespace)) { + const { kind, namespace } = getEntityName(groupEntities[0]); + + // Go through the new entities in reasonable chunk sizes (sometimes, + // sources produce tens of thousands of entities, and those are too large + // batch sizes to reasonably send to the database) + for (const batch of chunk(groupEntities, BATCH_SIZE)) { + tasks.push( + limiter(async () => { + const first = serializeEntityRef(batch[0]); + const last = serializeEntityRef(batch[batch.length - 1]); + this.logger.debug( + `Considering batch ${first}-${last} (${batch.length} entries)`, + ); + + // Retry the batch write a few times to deal with contention + const context = { kind, namespace, locationId }; + for (let attempt = 1; attempt <= BATCH_ATTEMPTS; ++attempt) { + try { + const { toAdd, toUpdate } = await this.analyzeBatch( + batch, + context, + ); + if (toAdd.length) await this.batchAdd(toAdd, context); + if (toUpdate.length) await this.batchUpdate(toUpdate, context); + break; + } catch (e) { + if (e instanceof ConflictError && attempt < BATCH_ATTEMPTS) { + this.logger.warn( + `Failed to write batch at attempt ${attempt}/${BATCH_ATTEMPTS}, ${e}`, + ); + } else { + throw e; + } + } + } + }), + ); + } + } + + await Promise.all(tasks); + } + + // Given a batch of entities that were just read from a location, take them + // into consideration by comparing against the existing catalog entities and + // produce the list of entities to be added, and the list of entities to be + // updated + private async analyzeBatch( + newEntities: Entity[], + { kind, namespace }: BatchContext, + ): Promise<{ + toAdd: Entity[]; + toUpdate: Entity[]; + }> { + const markTimestamp = process.hrtime(); + + const names = newEntities.map(e => e.metadata.name); + const oldEntities = await this.entities({ + kind: kind, + 'metadata.namespace': namespace, + 'metadata.name': names, + }); + + const oldEntitiesByName = new Map( + oldEntities.map(e => [e.metadata.name, e]), + ); + + const toAdd: Entity[] = []; + const toUpdate: Entity[] = []; + + for (const newEntity of newEntities) { + const oldEntity = oldEntitiesByName.get(newEntity.metadata.name); + if (!oldEntity) { + toAdd.push(newEntity); + } else if (entityHasChanges(oldEntity, newEntity)) { + // TODO(freben): This currently uses addOrUpdateEntity under the hood, + // but should probably calculate the end result entity right here + // instead and call a dedicated batch update database method instead + toUpdate.push(newEntity); + } + } + + this.logger.debug( + `Found ${toAdd.length} entities to add, ${ + toUpdate.length + } entities to update in ${durationText(markTimestamp)}`, + ); + + return { toAdd, toUpdate }; + } + + // Efficiently adds the given entities to storage, under the assumption that + // they do not conflict with any existing entities + private async batchAdd(entities: Entity[], { locationId }: BatchContext) { + const markTimestamp = process.hrtime(); + + await this.addEntities(entities, locationId); + + this.logger.debug( + `Added ${entities.length} entities in ${durationText(markTimestamp)}`, + ); + } + + // Efficiently updates the given entities into storage, under the assumption + // that there already exist entities with the same names + private async batchUpdate(entities: Entity[], { locationId }: BatchContext) { + const markTimestamp = process.hrtime(); + + // TODO(freben): Still not batched + for (const entity of entities) { + await this.addOrUpdateEntity(entity, locationId); + } + + this.logger.debug( + `Updated ${entities.length} entities in ${durationText(markTimestamp)}`, + ); + } } diff --git a/plugins/catalog-backend/src/catalog/types.ts b/plugins/catalog-backend/src/catalog/types.ts index 810d51a6c1..ca73eddce9 100644 --- a/plugins/catalog-backend/src/catalog/types.ts +++ b/plugins/catalog-backend/src/catalog/types.ts @@ -26,6 +26,17 @@ export type EntitiesCatalog = { addOrUpdateEntity(entity: Entity, locationId?: string): Promise; addEntities(entities: Entity[], locationId?: string): Promise; removeEntityByUid(uid: string): Promise; + + /** + * Writes a number of entities efficiently to storage. + * + * @param entities Some entities + * @param locationId The location that they all belong to + */ + batchAddOrUpdateEntities( + entities: Entity[], + locationId?: string, + ): Promise; }; // diff --git a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts index 909139d678..7fe164d05f 100644 --- a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts +++ b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts @@ -15,12 +15,7 @@ */ import { getVoidLogger } from '@backstage/backend-common'; -import { - Entity, - ENTITY_DEFAULT_NAMESPACE, - Location, - LocationSpec, -} from '@backstage/catalog-model'; +import { Entity, Location, LocationSpec } from '@backstage/catalog-model'; import { EntitiesCatalog, LocationsCatalog } from '../catalog'; import { LocationUpdateStatus } from '../catalog/types'; import { DatabaseLocationUpdateLogStatus } from '../database/types'; @@ -39,6 +34,7 @@ describe('HigherOrderOperations', () => { addOrUpdateEntity: jest.fn(), addEntities: jest.fn(), removeEntityByUid: jest.fn(), + batchAddOrUpdateEntities: jest.fn(), }; locationsCatalog = { addLocation: jest.fn(), @@ -190,8 +186,7 @@ describe('HigherOrderOperations', () => { entities: [{ entity: desc, location }], errors: [], }); - entitiesCatalog.entities.mockResolvedValue([]); - entitiesCatalog.addEntities.mockResolvedValue(undefined); + entitiesCatalog.batchAddOrUpdateEntities.mockResolvedValue(undefined); await expect( higherOrderOperation.refreshAllLocations(), @@ -203,14 +198,8 @@ describe('HigherOrderOperations', () => { type: 'some', target: 'thing', }); - expect(entitiesCatalog.entities).toHaveBeenCalledTimes(1); - expect(entitiesCatalog.entities).toHaveBeenNthCalledWith(1, { - kind: 'Component', - 'metadata.namespace': ENTITY_DEFAULT_NAMESPACE, - 'metadata.name': ['c1'], - }); - expect(entitiesCatalog.addEntities).toHaveBeenCalledTimes(1); - expect(entitiesCatalog.addEntities).toHaveBeenNthCalledWith( + expect(entitiesCatalog.batchAddOrUpdateEntities).toHaveBeenCalledTimes(1); + expect(entitiesCatalog.batchAddOrUpdateEntities).toHaveBeenNthCalledWith( 1, [expect.objectContaining({ metadata: { name: 'c1' } })], '123', diff --git a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts index fa73c58348..6df6d9b4b7 100644 --- a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts +++ b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts @@ -14,17 +14,8 @@ * limitations under the License. */ -import { ConflictError, InputError } from '@backstage/backend-common'; -import { - Entity, - entityHasChanges, - getEntityName, - Location, - LocationSpec, - serializeEntityRef, -} from '@backstage/catalog-model'; -import { chunk, groupBy } from 'lodash'; -import limiterFactory from 'p-limit'; +import { InputError } from '@backstage/backend-common'; +import { Entity, Location, LocationSpec } from '@backstage/catalog-model'; import { v4 as uuidv4 } from 'uuid'; import { Logger } from 'winston'; import { EntitiesCatalog, LocationsCatalog } from '../catalog'; @@ -35,25 +26,6 @@ import { LocationReader, } from './types'; -type BatchContext = { - kind: string; - namespace: string; - location: Location; -}; - -// Some locations return tens or hundreds of thousands of entities. To make -// those payloads more manageable, we break work apart in batches of this -// many entities and write them to storage per batch. -const BATCH_SIZE = 100; - -// When writing large batches, there's an increasing chance of contention in -// the form of conflicts where we compete with other writes. Each batch gets -// this many attempts at being written before giving up. -const BATCH_ATTEMPTS = 3; - -// The number of batches that may be ongoing at the same time. -const BATCH_CONCURRENCY = 3; - /** * Placeholder for operations that span several catalogs and/or stretches out * in time. @@ -192,10 +164,30 @@ export class HigherOrderOperations implements HigherOrderOperation { startTimestamp = process.hrtime(); - await this.batchAddOrUpdateEntities( - readerOutput.entities.map(e => e.entity), - location, - ); + try { + await this.entitiesCatalog.batchAddOrUpdateEntities( + readerOutput.entities.map(e => e.entity), + location.id, + ); + } catch (e) { + for (const entity of readerOutput.entities) { + await this.locationsCatalog.logUpdateFailure( + location.id, + e, + entity.entity.metadata.name, + ); + } + throw e; + } + + this.logger.info(`Posting update success markers`); + + for (const entity of readerOutput.entities) { + await this.locationsCatalog.logUpdateSuccess( + location.id, + entity.entity.metadata.name, + ); + } this.logger.info( `Wrote ${readerOutput.entities.length} entities from location ${ @@ -203,148 +195,4 @@ export class HigherOrderOperations implements HigherOrderOperation { }:${location.target} in ${durationText(startTimestamp)}`, ); } - - /** - * Writes a number of entities efficiently to storage. - * - * @param entities Some entities - * @param location The location that they all belong to - */ - async batchAddOrUpdateEntities(entities: Entity[], location: Location) { - // Group the entities by unique kind+namespace combinations - const entitiesByKindAndNamespace = groupBy(entities, entity => { - const name = getEntityName(entity); - return `${name.kind}:${name.namespace}`.toLowerCase(); - }); - - const limiter = limiterFactory(BATCH_CONCURRENCY); - const tasks: Promise[] = []; - - for (const groupEntities of Object.values(entitiesByKindAndNamespace)) { - const { kind, namespace } = getEntityName(groupEntities[0]); - - // Go through the new entities in reasonable chunk sizes (sometimes, - // sources produce tens of thousands of entities, and those are too large - // batch sizes to reasonably send to the database) - for (const batch of chunk(groupEntities, BATCH_SIZE)) { - tasks.push( - limiter(async () => { - const first = serializeEntityRef(batch[0]); - const last = serializeEntityRef(batch[batch.length - 1]); - this.logger.debug( - `Considering batch ${first}-${last} (${batch.length} entries)`, - ); - - // Retry the batch write a few times to deal with contention - const context = { kind, namespace, location }; - for (let attempt = 1; attempt <= BATCH_ATTEMPTS; ++attempt) { - try { - const { toAdd, toUpdate } = await this.analyzeBatch( - batch, - context, - ); - if (toAdd.length) await this.batchAdd(toAdd, context); - if (toUpdate.length) await this.batchUpdate(toUpdate, context); - break; - } catch (e) { - if (e instanceof ConflictError && attempt < BATCH_ATTEMPTS) { - this.logger.warn( - `Failed to write batch at attempt ${attempt}/${BATCH_ATTEMPTS}, ${e}`, - ); - } else { - throw e; - } - } - } - }), - ); - } - } - - await Promise.all(tasks); - } - - // Given a batch of entities that were just read from a location, take them - // into consideration by comparing against the existing catalog entities and - // produce the list of entities to be added, and the list of entities to be - // updated - private async analyzeBatch( - newEntities: Entity[], - { kind, namespace }: BatchContext, - ): Promise<{ - toAdd: Entity[]; - toUpdate: Entity[]; - }> { - const markTimestamp = process.hrtime(); - - const oldEntities = await this.entitiesCatalog.entities({ - kind: kind, - 'metadata.namespace': namespace, - 'metadata.name': newEntities.map(e => e.metadata.name), - }); - - const oldEntitiesByName = new Map( - oldEntities.map(e => [e.metadata.name, e]), - ); - - const toAdd: Entity[] = []; - const toUpdate: Entity[] = []; - - for (const newEntity of newEntities) { - const oldEntity = oldEntitiesByName.get(newEntity.metadata.name); - if (!oldEntity) { - toAdd.push(newEntity); - } else if (entityHasChanges(oldEntity, newEntity)) { - toUpdate.push(newEntity); - } - } - - this.logger.debug( - `Found ${toAdd.length} entities to add, ${ - toUpdate.length - } entities to update in ${durationText(markTimestamp)}`, - ); - - return { toAdd, toUpdate }; - } - - // Efficiently adds the given entities to storage, under the assumption that - // they do not conflict with any existing entities - private async batchAdd(entities: Entity[], { location }: BatchContext) { - const markTimestamp = process.hrtime(); - - await this.entitiesCatalog.addEntities(entities, location.id); - - // TODO(freben): Still not batched - for (const entity of entities) { - await this.locationsCatalog.logUpdateSuccess( - location.id, - entity.metadata.name, - ); - } - - this.logger.debug( - `Added ${entities.length} entities in ${durationText(markTimestamp)}`, - ); - } - - // Efficiently updates the given entities into storage, under the assumption - // that there already exist entities with the same names - private async batchUpdate(entities: Entity[], { location }: BatchContext) { - const markTimestamp = process.hrtime(); - - // TODO(freben): Still not batched - for (const entity of entities) { - await this.entitiesCatalog.addOrUpdateEntity(entity); - - await this.locationsCatalog.logUpdateSuccess( - location.id, - entity.metadata.name, - ); - } - - this.logger.debug( - `Updated ${entities.length} entities in ${durationText(markTimestamp)}`, - ); - } } diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.ts b/plugins/catalog-backend/src/service/CatalogBuilder.ts index e02005b817..e1d76bc3cd 100644 --- a/plugins/catalog-backend/src/service/CatalogBuilder.ts +++ b/plugins/catalog-backend/src/service/CatalogBuilder.ts @@ -370,7 +370,7 @@ export class CatalogBuilder { { logger }, ); - const entitiesCatalog = new DatabaseEntitiesCatalog(db); + const entitiesCatalog = new DatabaseEntitiesCatalog(db, this.env.logger); const locationsCatalog = new DatabaseLocationsCatalog(db); const higherOrderOperation = new HigherOrderOperations( entitiesCatalog, diff --git a/plugins/catalog-backend/src/service/router.test.ts b/plugins/catalog-backend/src/service/router.test.ts index f7ab4878f8..414f8a93de 100644 --- a/plugins/catalog-backend/src/service/router.test.ts +++ b/plugins/catalog-backend/src/service/router.test.ts @@ -35,6 +35,7 @@ describe('createRouter', () => { addOrUpdateEntity: jest.fn(), addEntities: jest.fn(), removeEntityByUid: jest.fn(), + batchAddOrUpdateEntities: jest.fn(), }; locationsCatalog = { addLocation: jest.fn(), From 0d67d11eb349f810a0069588a2496a47a04a1718 Mon Sep 17 00:00:00 2001 From: "althaf.hameez" Date: Thu, 15 Oct 2020 16:54:36 +0800 Subject: [PATCH 104/323] fix --- .../default-app/packages/app/cypress/integration/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js b/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js index dde26b7b39..2d63193fbf 100644 --- a/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js +++ b/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js @@ -1,6 +1,6 @@ describe('App', () => { it('should render the catalog', () => { cy.visit('/'); - cy.contains('Backstage Service Catalog'); + cy.contains('Spotify Service Catalog'); }); }); From a6c0d9803ecde293b82a0464375a7dad6669ee52 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Thu, 15 Oct 2020 11:08:16 +0200 Subject: [PATCH 105/323] Type with interface instead of class. --- plugins/newrelic/src/api/index.ts | 6 +++++- plugins/newrelic/src/plugin.ts | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/plugins/newrelic/src/api/index.ts b/plugins/newrelic/src/api/index.ts index 692cb19e6f..eb94acdbd1 100644 --- a/plugins/newrelic/src/api/index.ts +++ b/plugins/newrelic/src/api/index.ts @@ -68,7 +68,11 @@ type Options = { proxyPathBase?: string; }; -export class NewRelicApi { +export interface NewRelicApi { + getApplications(): Promise; +} + +export class NewRelicClient implements NewRelicApi { private readonly discoveryApi: DiscoveryApi; private readonly proxyPathBase: string; diff --git a/plugins/newrelic/src/plugin.ts b/plugins/newrelic/src/plugin.ts index f247158fbd..5f5ba88617 100644 --- a/plugins/newrelic/src/plugin.ts +++ b/plugins/newrelic/src/plugin.ts @@ -20,7 +20,7 @@ import { createRouteRef, discoveryApiRef, } from '@backstage/core'; -import { NewRelicApi, newRelicApiRef } from './api'; +import { NewRelicClient, newRelicApiRef } from './api'; import NewRelicComponent from './components/NewRelicComponent'; export const rootRouteRef = createRouteRef({ @@ -34,7 +34,7 @@ export const plugin = createPlugin({ createApiFactory({ api: newRelicApiRef, deps: { discoveryApi: discoveryApiRef }, - factory: ({ discoveryApi }) => new NewRelicApi({ discoveryApi }), + factory: ({ discoveryApi }) => new NewRelicClient({ discoveryApi }), }), ], register({ router }) { From 7ff2f1c0f0c63b8be5712a56569b83743b79f980 Mon Sep 17 00:00:00 2001 From: Martina Iglesias Date: Thu, 15 Oct 2020 11:30:39 +0200 Subject: [PATCH 106/323] [charts] Add certificate issuer (#2877) --- contrib/chart/backstage/README.md | 27 +++++++++++++++---- .../chart/backstage/templates/ingress.yaml | 26 +++++++++++++----- contrib/chart/backstage/templates/issuer.yaml | 19 +++++++++++++ contrib/chart/backstage/values.yaml | 4 +++ 4 files changed, 65 insertions(+), 11 deletions(-) create mode 100644 contrib/chart/backstage/templates/issuer.yaml diff --git a/contrib/chart/backstage/README.md b/contrib/chart/backstage/README.md index 4f247252b1..9d1c93765b 100644 --- a/contrib/chart/backstage/README.md +++ b/contrib/chart/backstage/README.md @@ -62,13 +62,30 @@ backstage-ingress * 123.1.2.3 80 17m > **NOTE**: this is not a production ready deployment. -## Caveats - -The current implementation does not generate certificates for the ingress which means the browser will alert that the -site is insecure and using self-signed certificates. - ## Customization +### Issue certificates + +These charts can install or reuse a `clusterIssuer` to generate certificates for the backstage `ingress`. To do that: + +1. [Install][install-cert-manager] or make sure [cert-manager][cert-manager] is installed in the cluster. +2. Enable the issuer in the charts. This will first check if there is a `letsencrypt` issuer already deployed in your + cluster and deploy one if it doesn't exist. + +To enable it you need to provide a valid email address in the chart's values: + +``` +issuer: + email: me@example.com + clusterIssuer: "letsencrypt-prod" +``` + +By default, the charts use `letsencrypt-staging` so in the above example we instruct helm to use the production issuer +instead. + +[cert-manager]: https://cert-manager.io/docs/ +[install-cert-manager]: https://cert-manager.io/docs/installation/kubernetes/#installing-with-helm + ### Custom PostgreSQL instance Configuring a connection to an existing PostgreSQL instance is possible through the chart's values. diff --git a/contrib/chart/backstage/templates/ingress.yaml b/contrib/chart/backstage/templates/ingress.yaml index 034862ef75..7231afda13 100644 --- a/contrib/chart/backstage/templates/ingress.yaml +++ b/contrib/chart/backstage/templates/ingress.yaml @@ -5,16 +5,25 @@ apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: {{ include "backstage.fullname" . }}-ingress - {{- with .Values.ingress.annotations }} annotations: + {{- if .Values.issuer.email }} + cert-manager.io/cluster-issuer: {{ .Values.issuer.clusterIssuer }} + {{- end }} + kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/ssl-redirect: "false" nginx.ingress.kubernetes.io/configuration-snippet: | if ($scheme = https) { add_header Strict-Transport-Security "max-age=0;"; } - {{- toYaml . | nindent 4 }} - {{- end }} + {{- toYaml .Values.ingress.annotations | nindent 4 }} spec: + tls: + - secretName: {{ include "backstage.fullname" . }}-tls + hosts: + - {{ $frontendUrl.host }} + - {{ $backendUrl.host }} + - {{ $lighthouseUrl.host }} + rules: - host: {{ $frontendUrl.host }} http: @@ -56,17 +65,22 @@ apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: {{ include "backstage.fullname" . }}-ingress-lighthouse - {{- with .Values.ingress.annotations }} annotations: + {{- if .Values.issuer.email }} + cert-manager.io/cluster-issuer: {{ .Values.issuer.clusterIssuer }} + {{- end }} nginx.ingress.kubernetes.io/rewrite-target: /$2 nginx.ingress.kubernetes.io/ssl-redirect: "false" nginx.ingress.kubernetes.io/configuration-snippet: | if ($scheme = https) { add_header Strict-Transport-Security "max-age=0;"; } - {{- toYaml . | nindent 4 }} - {{- end }} + {{- toYaml .Values.ingress.annotations | nindent 4 }} spec: + tls: + - secretName: {{ include "backstage.fullname" . }}-tls + hosts: + - {{ $lighthouseUrl.host }} rules: - host: {{ $frontendUrl.host }} http: diff --git a/contrib/chart/backstage/templates/issuer.yaml b/contrib/chart/backstage/templates/issuer.yaml new file mode 100644 index 0000000000..d129c8c701 --- /dev/null +++ b/contrib/chart/backstage/templates/issuer.yaml @@ -0,0 +1,19 @@ +{{- if (and (.Capabilities.APIVersions.Has "cert-manager.io/v1alpha2") .Values.issuer.email ) -}} +{{/* Only install issuer if it doesn't already exist in the cluster */}} +{{- if not ( lookup "cert-manager.io/v1alpha2" "ClusterIssuer" "" .Values.issuer.clusterIssuer ) }} +apiVersion: cert-manager.io/v1alpha2 +kind: ClusterIssuer +metadata: + name: {{ .Values.issuer.clusterIssuer }} +spec: + acme: + server: https://acme-v02.api.letsencrypt.org/directory + email: {{ required "expected a valid .Values.issuer.email to enable ClusterIssuer" .Values.issuer.email }} + privateKeySecretRef: + name: {{ required "expected .Values.issuer.cluster-issuer to not be empty (letsencrypt-prod | letsencrypt-staging)" .Values.issuer.clusterIssuer }} + solvers: + - http01: + ingress: + class: nginx +{{- end -}} +{{- end -}} diff --git a/contrib/chart/backstage/values.yaml b/contrib/chart/backstage/values.yaml index eec9c8fbe9..d51f1016d9 100644 --- a/contrib/chart/backstage/values.yaml +++ b/contrib/chart/backstage/values.yaml @@ -61,6 +61,10 @@ ingress: annotations: kubernetes.io/ingress.class: nginx +issuer: + email: + clusterIssuer: 'letsencrypt-staging' + global: postgresql: postgresqlUsername: backend-user From 94e8a38953397f3b69bef54880d6d20375c05e01 Mon Sep 17 00:00:00 2001 From: "althaf.hameez" Date: Thu, 15 Oct 2020 18:08:22 +0800 Subject: [PATCH 107/323] Acme corporation fix --- .../default-app/packages/app/cypress/integration/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js b/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js index 2d63193fbf..227e218fe6 100644 --- a/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js +++ b/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js @@ -1,6 +1,6 @@ describe('App', () => { it('should render the catalog', () => { cy.visit('/'); - cy.contains('Spotify Service Catalog'); + cy.contains('Acme Corporation Service Catalog'); }); }); From 37015caeb9679197dbdb4aa887168ab8e9399fef Mon Sep 17 00:00:00 2001 From: "althaf.hameez" Date: Thu, 15 Oct 2020 18:25:48 +0800 Subject: [PATCH 108/323] Revert to backstage --- packages/e2e-test/src/commands/run.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/e2e-test/src/commands/run.ts b/packages/e2e-test/src/commands/run.ts index 7775fb29b2..cfe0ad9685 100644 --- a/packages/e2e-test/src/commands/run.ts +++ b/packages/e2e-test/src/commands/run.ts @@ -301,7 +301,7 @@ async function testAppServe(pluginName: string, appDir: string) { try { const browser = new Browser(); - await waitForPageWithText(browser, '/', 'Spotify Service Catalog'); + await waitForPageWithText(browser, '/', 'Backstage Service Catalog'); await waitForPageWithText( browser, `/${pluginName}`, From 1af3dbdb5ebaa8c283d4b2cb6eecd04aeb1949ba Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Thu, 15 Oct 2020 12:37:50 +0200 Subject: [PATCH 109/323] Provide more context. Handle more edge cases. --- plugins/newrelic/src/api/index.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/plugins/newrelic/src/api/index.ts b/plugins/newrelic/src/api/index.ts index eb94acdbd1..d76a87875c 100644 --- a/plugins/newrelic/src/api/index.ts +++ b/plugins/newrelic/src/api/index.ts @@ -84,10 +84,20 @@ export class NewRelicClient implements NewRelicApi { async getApplications(): Promise { const url = await this.getApiUrl('apm', 'applications.json'); const response = await fetch(url); - const responseJson = await response.json(); + let responseJson; + + try { + responseJson = await response.json(); + } catch (e) { + responseJson = { applications: [] }; + } if (response.status !== 200) { - throw new Error(responseJson?.error?.title || response.statusText); + throw new Error( + `Error communicating with New Relic: ${ + responseJson?.error?.title || response.statusText + }`, + ); } return responseJson; From a6c47b3d180e12dbf05d58c3097c025954165d95 Mon Sep 17 00:00:00 2001 From: "althaf.hameez" Date: Thu, 15 Oct 2020 18:42:26 +0800 Subject: [PATCH 110/323] Acme --- packages/e2e-test/src/commands/run.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/e2e-test/src/commands/run.ts b/packages/e2e-test/src/commands/run.ts index cfe0ad9685..e7e23f4825 100644 --- a/packages/e2e-test/src/commands/run.ts +++ b/packages/e2e-test/src/commands/run.ts @@ -301,7 +301,7 @@ async function testAppServe(pluginName: string, appDir: string) { try { const browser = new Browser(); - await waitForPageWithText(browser, '/', 'Backstage Service Catalog'); + await waitForPageWithText(browser, '/', 'Acme Corporation Service Catalog'); await waitForPageWithText( browser, `/${pluginName}`, From 4e5d8b28ac54b0bdba1dc443ffeeb57c911f02ff Mon Sep 17 00:00:00 2001 From: "althaf.hameez" Date: Thu, 15 Oct 2020 18:53:46 +0800 Subject: [PATCH 111/323] Fix prettier --- packages/e2e-test/src/commands/run.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/e2e-test/src/commands/run.ts b/packages/e2e-test/src/commands/run.ts index e7e23f4825..c05aed0b83 100644 --- a/packages/e2e-test/src/commands/run.ts +++ b/packages/e2e-test/src/commands/run.ts @@ -301,7 +301,11 @@ async function testAppServe(pluginName: string, appDir: string) { try { const browser = new Browser(); - await waitForPageWithText(browser, '/', 'Acme Corporation Service Catalog'); + await waitForPageWithText( + browser, + '/', + 'Acme Corporation Service Catalog', + ); await waitForPageWithText( browser, `/${pluginName}`, From 6943ead4c644958245974304306fec8918e7a995 Mon Sep 17 00:00:00 2001 From: Markus Heinemann Date: Thu, 15 Oct 2020 13:04:12 +0000 Subject: [PATCH 112/323] feat: add base url config property to github scaffholders --- app-config.yaml | 1 + packages/backend/src/plugins/scaffolder.ts | 6 +++++- .../default-app/packages/backend/src/plugins/scaffolder.ts | 3 ++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app-config.yaml b/app-config.yaml index 8ec43c6007..b527069c15 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -147,6 +147,7 @@ catalog: scaffolder: github: + baseUrl: https://github.com token: $env: GITHUB_TOKEN visibility: public # or 'internal' or 'private' diff --git a/packages/backend/src/plugins/scaffolder.ts b/packages/backend/src/plugins/scaffolder.ts index 90667bfb16..7ba90ed8b5 100644 --- a/packages/backend/src/plugins/scaffolder.ts +++ b/packages/backend/src/plugins/scaffolder.ts @@ -68,7 +68,11 @@ export default async function createPlugin({ ) as RepoVisibilityOptions; const githubToken = githubConfig.getString('token'); - const githubClient = new Octokit({ auth: githubToken }); + const githubBaseUrl = githubConfig.getString('baseUrl'); + const githubClient = new Octokit({ + auth: githubToken, + baseUrl: githubBaseUrl, + }); const githubPublisher = new GithubPublisher({ client: githubClient, token: githubToken, diff --git a/packages/create-app/templates/default-app/packages/backend/src/plugins/scaffolder.ts b/packages/create-app/templates/default-app/packages/backend/src/plugins/scaffolder.ts index ed16d766f1..9f59412036 100644 --- a/packages/create-app/templates/default-app/packages/backend/src/plugins/scaffolder.ts +++ b/packages/create-app/templates/default-app/packages/backend/src/plugins/scaffolder.ts @@ -48,7 +48,8 @@ export default async function createPlugin({ ) as RepoVisibilityOptions; const githubToken = githubConfig.getString('token'); - const githubClient = new Octokit({ auth: githubToken }); + const githubBaseUrl = githubConfig.getString('baseUrl'); + const githubClient = new Octokit({ auth: githubToken, baseUrl: githubBaseUrl }); const githubPublisher = new GithubPublisher({ client: githubClient, token: githubToken, From 1c8c437562e7945b6fe887e4e3a9f35301d30389 Mon Sep 17 00:00:00 2001 From: Markus Heinemann Date: Thu, 15 Oct 2020 13:18:14 +0000 Subject: [PATCH 113/323] Add changeset --- .changeset/selfish-bats-perform.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/selfish-bats-perform.md diff --git a/.changeset/selfish-bats-perform.md b/.changeset/selfish-bats-perform.md new file mode 100644 index 0000000000..e4d05c088c --- /dev/null +++ b/.changeset/selfish-bats-perform.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-scaffolder-backend': patch +--- + +The new `scaffolder.github.baseUrl` config property allows to specify a custom base url for GitHub enterprise instances From 1797d4924c198ec37dabb92edcc61c8f4b9cb886 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Thu, 15 Oct 2020 15:38:34 +0200 Subject: [PATCH 114/323] Update create-app to use expected techdocs api origin url. (#2911) --- packages/create-app/templates/default-app/app-config.yaml.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-app/templates/default-app/app-config.yaml.hbs b/packages/create-app/templates/default-app/app-config.yaml.hbs index 7175ea0e4f..347bbaa29c 100644 --- a/packages/create-app/templates/default-app/app-config.yaml.hbs +++ b/packages/create-app/templates/default-app/app-config.yaml.hbs @@ -42,7 +42,7 @@ proxy: techdocs: storageUrl: http://localhost:7000/api/techdocs/static/docs - requestUrl: http://localhost:7000/api/techdocs/docs + requestUrl: http://localhost:7000/api/techdocs generators: techdocs: 'docker' From a5cb46bac95b4e181e6a86a14608c7d47b83a29b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 15 Oct 2020 15:48:03 +0200 Subject: [PATCH 115/323] chore(catalog-backend): rename locationprocessor to catalogprocessor --- .changeset/raghu-is-great.md | 10 +++++ .../src/ingestion/LocationReaders.ts | 38 +++++++++---------- .../AnnotateLocationEntityProcessor.ts | 4 +- .../processors/AzureApiReaderProcessor.ts | 10 ++--- .../processors/BitbucketApiReaderProcessor.ts | 10 ++--- .../processors/CodeOwnersProcessor.ts | 9 ++--- .../processors/EntityPolicyProcessor.ts | 4 +- .../processors/FileReaderProcessor.ts | 6 +-- .../processors/GithubOrgReaderProcessor.ts | 6 +-- .../processors/GithubReaderProcessor.ts | 6 +-- .../processors/GitlabApiReaderProcessor.ts | 10 ++--- .../processors/GitlabReaderProcessor.ts | 6 +-- .../processors/LdapOrgReaderProcessor.ts | 6 +-- .../processors/LocationEntityProcessor.ts | 6 +-- .../processors/PlaceholderProcessor.ts | 4 +- .../processors/StaticLocationProcessor.ts | 6 +-- .../processors/UrlReaderProcessor.test.ts | 24 ++++++------ .../processors/UrlReaderProcessor.ts | 8 ++-- .../processors/YamlProcessor.test.ts | 18 ++++----- .../src/ingestion/processors/YamlProcessor.ts | 6 +-- .../src/ingestion/processors/results.ts | 14 +++---- .../src/ingestion/processors/types.ts | 32 ++++++++-------- .../src/service/CatalogBuilder.test.ts | 8 ++-- .../src/service/CatalogBuilder.ts | 36 +++++++++--------- 24 files changed, 147 insertions(+), 140 deletions(-) create mode 100644 .changeset/raghu-is-great.md diff --git a/.changeset/raghu-is-great.md b/.changeset/raghu-is-great.md new file mode 100644 index 0000000000..805e49f3e8 --- /dev/null +++ b/.changeset/raghu-is-great.md @@ -0,0 +1,10 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +Renamed the `LocationProcessor` class to `CatalogProcessor`. + +Likewise, renamed `LocationProcessorResult`, `LocationProcessorLocationResult`, +`LocationProcessorDataResult`, `LocationProcessorEntityResult`, +`LocationProcessorErrorResult`, and `LocationProcessorEmit` to their `Catalog*` +counterparts. diff --git a/plugins/catalog-backend/src/ingestion/LocationReaders.ts b/plugins/catalog-backend/src/ingestion/LocationReaders.ts index 0f6ad18f97..c36b3d2b05 100644 --- a/plugins/catalog-backend/src/ingestion/LocationReaders.ts +++ b/plugins/catalog-backend/src/ingestion/LocationReaders.ts @@ -25,13 +25,13 @@ import { Logger } from 'winston'; import { CatalogRulesEnforcer } from './CatalogRules'; import * as result from './processors/results'; import { - LocationProcessor, - LocationProcessorDataResult, - LocationProcessorEmit, - LocationProcessorEntityResult, - LocationProcessorErrorResult, - LocationProcessorLocationResult, - LocationProcessorResult, + CatalogProcessor, + CatalogProcessorDataResult, + CatalogProcessorEmit, + CatalogProcessorEntityResult, + CatalogProcessorErrorResult, + CatalogProcessorLocationResult, + CatalogProcessorResult, } from './processors/types'; import { LocationReader, ReadLocationResult } from './types'; @@ -42,7 +42,7 @@ type Options = { reader: UrlReader; logger: Logger; config: Config; - processors: LocationProcessor[]; + processors: CatalogProcessor[]; rulesEnforcer: CatalogRulesEnforcer; }; @@ -60,11 +60,11 @@ export class LocationReaders implements LocationReader { const { rulesEnforcer, logger } = this.options; const output: ReadLocationResult = { entities: [], errors: [] }; - let items: LocationProcessorResult[] = [result.location(location, false)]; + let items: CatalogProcessorResult[] = [result.location(location, false)]; for (let depth = 0; depth < MAX_DEPTH; ++depth) { - const newItems: LocationProcessorResult[] = []; - const emit: LocationProcessorEmit = i => newItems.push(i); + const newItems: CatalogProcessorResult[] = []; + const emit: CatalogProcessorEmit = i => newItems.push(i); for (const item of items) { if (item.type === 'location') { @@ -109,8 +109,8 @@ export class LocationReaders implements LocationReader { } private async handleLocation( - item: LocationProcessorLocationResult, - emit: LocationProcessorEmit, + item: CatalogProcessorLocationResult, + emit: CatalogProcessorEmit, ) { const { processors, logger } = this.options; @@ -136,8 +136,8 @@ export class LocationReaders implements LocationReader { } private async handleData( - item: LocationProcessorDataResult, - emit: LocationProcessorEmit, + item: CatalogProcessorDataResult, + emit: CatalogProcessorEmit, ) { const { processors, logger } = this.options; @@ -160,8 +160,8 @@ export class LocationReaders implements LocationReader { } private async handleEntity( - item: LocationProcessorEntityResult, - emit: LocationProcessorEmit, + item: CatalogProcessorEntityResult, + emit: CatalogProcessorEmit, ): Promise { const { processors, logger } = this.options; @@ -189,8 +189,8 @@ export class LocationReaders implements LocationReader { } private async handleError( - item: LocationProcessorErrorResult, - emit: LocationProcessorEmit, + item: CatalogProcessorErrorResult, + emit: CatalogProcessorEmit, ) { const { processors, logger } = this.options; diff --git a/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts index ec7e59281e..fea70b6c5e 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts @@ -16,9 +16,9 @@ import { Entity, LocationSpec } from '@backstage/catalog-model'; import lodash from 'lodash'; -import { LocationProcessor } from './types'; +import { CatalogProcessor } from './types'; -export class AnnotateLocationEntityProcessor implements LocationProcessor { +export class AnnotateLocationEntityProcessor implements CatalogProcessor { async processEntity(entity: Entity, location: LocationSpec): Promise { return lodash.merge( { diff --git a/plugins/catalog-backend/src/ingestion/processors/AzureApiReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AzureApiReaderProcessor.ts index 2a15c18c84..b6e65a7d7a 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AzureApiReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AzureApiReaderProcessor.ts @@ -15,17 +15,17 @@ */ import { LocationSpec } from '@backstage/catalog-model'; -import fetch, { RequestInit, HeadersInit } from 'node-fetch'; -import * as result from './results'; -import { LocationProcessor, LocationProcessorEmit } from './types'; import { Config } from '@backstage/config'; +import fetch, { HeadersInit, RequestInit } from 'node-fetch'; +import * as result from './results'; +import { CatalogProcessor, CatalogProcessorEmit } from './types'; // *********************************************************************** // * NOTE: This has been replaced by packages/backend-common/src/reading * // * Don't implement new functionality here as this file will be removed * // *********************************************************************** -export class AzureApiReaderProcessor implements LocationProcessor { +export class AzureApiReaderProcessor implements CatalogProcessor { private privateToken: string; constructor(config: Config) { @@ -54,7 +54,7 @@ export class AzureApiReaderProcessor implements LocationProcessor { async readLocation( location: LocationSpec, optional: boolean, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ): Promise { if (location.type !== 'azure/api') { return false; diff --git a/plugins/catalog-backend/src/ingestion/processors/BitbucketApiReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/BitbucketApiReaderProcessor.ts index b3720a5b76..4efcec2884 100644 --- a/plugins/catalog-backend/src/ingestion/processors/BitbucketApiReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/BitbucketApiReaderProcessor.ts @@ -15,17 +15,17 @@ */ import { LocationSpec } from '@backstage/catalog-model'; -import fetch, { RequestInit, HeadersInit } from 'node-fetch'; -import * as result from './results'; -import { LocationProcessor, LocationProcessorEmit } from './types'; import { Config } from '@backstage/config'; +import fetch, { HeadersInit, RequestInit } from 'node-fetch'; +import * as result from './results'; +import { CatalogProcessor, CatalogProcessorEmit } from './types'; // *********************************************************************** // * NOTE: This has been replaced by packages/backend-common/src/reading * // * Don't implement new functionality here as this file will be removed * // *********************************************************************** -export class BitbucketApiReaderProcessor implements LocationProcessor { +export class BitbucketApiReaderProcessor implements CatalogProcessor { private username: string; private password: string; @@ -58,7 +58,7 @@ export class BitbucketApiReaderProcessor implements LocationProcessor { async readLocation( location: LocationSpec, optional: boolean, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ): Promise { if (location.type !== 'bitbucket/api') { return false; diff --git a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts index e624af91ee..1802e01d99 100644 --- a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts @@ -16,14 +16,13 @@ import { UrlReader } from '@backstage/backend-common'; import { Entity, LocationSpec } from '@backstage/catalog-model'; -import { LocationProcessor } from './types'; import * as codeowners from 'codeowners-utils'; import { CodeOwnersEntry } from 'codeowners-utils'; -import parseGitUri from 'git-url-parse'; -import { filter, head, get, pipe, reverse } from 'lodash/fp'; - // NOTE: This can be removed when ES2021 is implemented import 'core-js/features/promise'; +import parseGitUri from 'git-url-parse'; +import { filter, get, head, pipe, reverse } from 'lodash/fp'; +import { CatalogProcessor } from './types'; const ALLOWED_LOCATION_TYPES = [ 'azure/api', @@ -38,7 +37,7 @@ type Options = { reader: UrlReader; }; -export class CodeOwnersProcessor implements LocationProcessor { +export class CodeOwnersProcessor implements CatalogProcessor { constructor(private readonly options: Options) {} async processEntity(entity: Entity, location: LocationSpec): Promise { diff --git a/plugins/catalog-backend/src/ingestion/processors/EntityPolicyProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/EntityPolicyProcessor.ts index 67da9a6705..87543d91f4 100644 --- a/plugins/catalog-backend/src/ingestion/processors/EntityPolicyProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/EntityPolicyProcessor.ts @@ -15,9 +15,9 @@ */ import { Entity, EntityPolicy } from '@backstage/catalog-model'; -import { LocationProcessor } from './types'; +import { CatalogProcessor } from './types'; -export class EntityPolicyProcessor implements LocationProcessor { +export class EntityPolicyProcessor implements CatalogProcessor { private readonly policy: EntityPolicy; constructor(policy: EntityPolicy) { diff --git a/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts index b95e2ddb58..83fc01185b 100644 --- a/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts @@ -17,13 +17,13 @@ import { LocationSpec } from '@backstage/catalog-model'; import fs from 'fs-extra'; import * as result from './results'; -import { LocationProcessor, LocationProcessorEmit } from './types'; +import { CatalogProcessor, CatalogProcessorEmit } from './types'; -export class FileReaderProcessor implements LocationProcessor { +export class FileReaderProcessor implements CatalogProcessor { async readLocation( location: LocationSpec, optional: boolean, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ): Promise { if (location.type !== 'file') { return false; diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts index b8a6f6c43f..bef57a6e5c 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts @@ -19,14 +19,14 @@ import { Config } from '@backstage/config'; import { graphql } from '@octokit/graphql'; import { Logger } from 'winston'; import * as results from './results'; -import { LocationProcessor, LocationProcessorEmit } from './types'; +import { CatalogProcessor, CatalogProcessorEmit } from './types'; import { getOrganizationTeams, getOrganizationUsers } from './util/github'; import { buildOrgHierarchy } from './util/org'; /** * Extracts teams and users out of a GitHub org. */ -export class GithubOrgReaderProcessor implements LocationProcessor { +export class GithubOrgReaderProcessor implements CatalogProcessor { private readonly providers: ProviderConfig[]; private readonly logger: Logger; @@ -45,7 +45,7 @@ export class GithubOrgReaderProcessor implements LocationProcessor { async readLocation( location: LocationSpec, _optional: boolean, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ): Promise { if (location.type !== 'github-org') { return false; diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GithubReaderProcessor.ts index 89d1f69860..2f03900cdb 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GithubReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GithubReaderProcessor.ts @@ -20,7 +20,7 @@ import parseGitUri from 'git-url-parse'; import fetch, { HeadersInit, RequestInit } from 'node-fetch'; import { Logger } from 'winston'; import * as result from './results'; -import { LocationProcessor, LocationProcessorEmit } from './types'; +import { CatalogProcessor, CatalogProcessorEmit } from './types'; // *********************************************************************** // * NOTE: This has been replaced by packages/backend-common/src/reading * @@ -210,7 +210,7 @@ export function readConfig(config: Config, logger: Logger): ProviderConfig[] { * A processor that adds the ability to read files from GitHub v3 APIs, such as * the one exposed by GitHub itself. */ -export class GithubReaderProcessor implements LocationProcessor { +export class GithubReaderProcessor implements CatalogProcessor { private providers: ProviderConfig[]; static fromConfig(config: Config, logger: Logger) { @@ -224,7 +224,7 @@ export class GithubReaderProcessor implements LocationProcessor { async readLocation( location: LocationSpec, optional: boolean, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ): Promise { // The github/api type is for backward compatibility if (location.type !== 'github' && location.type !== 'github/api') { diff --git a/plugins/catalog-backend/src/ingestion/processors/GitlabApiReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GitlabApiReaderProcessor.ts index aeba7a7ebe..e47b7d1aad 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GitlabApiReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GitlabApiReaderProcessor.ts @@ -15,17 +15,17 @@ */ import { LocationSpec } from '@backstage/catalog-model'; -import fetch, { RequestInit, HeadersInit } from 'node-fetch'; -import * as result from './results'; -import { LocationProcessor, LocationProcessorEmit } from './types'; import { Config } from '@backstage/config'; +import fetch, { HeadersInit, RequestInit } from 'node-fetch'; +import * as result from './results'; +import { CatalogProcessor, CatalogProcessorEmit } from './types'; // *********************************************************************** // * NOTE: This has been replaced by packages/backend-common/src/reading * // * Don't implement new functionality here as this file will be removed * // *********************************************************************** -export class GitlabApiReaderProcessor implements LocationProcessor { +export class GitlabApiReaderProcessor implements CatalogProcessor { private privateToken: string; constructor(config: Config) { @@ -50,7 +50,7 @@ export class GitlabApiReaderProcessor implements LocationProcessor { async readLocation( location: LocationSpec, optional: boolean, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ): Promise { if (location.type !== 'gitlab/api') { return false; diff --git a/plugins/catalog-backend/src/ingestion/processors/GitlabReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GitlabReaderProcessor.ts index b51bf85a8e..2c58a6d43e 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GitlabReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/GitlabReaderProcessor.ts @@ -17,18 +17,18 @@ import { LocationSpec } from '@backstage/catalog-model'; import fetch from 'node-fetch'; import * as result from './results'; -import { LocationProcessor, LocationProcessorEmit } from './types'; +import { CatalogProcessor, CatalogProcessorEmit } from './types'; // *********************************************************************** // * NOTE: This has been replaced by packages/backend-common/src/reading * // * Don't implement new functionality here as this file will be removed * // *********************************************************************** -export class GitlabReaderProcessor implements LocationProcessor { +export class GitlabReaderProcessor implements CatalogProcessor { async readLocation( location: LocationSpec, optional: boolean, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ): Promise { if (location.type !== 'gitlab') { return false; diff --git a/plugins/catalog-backend/src/ingestion/processors/LdapOrgReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/LdapOrgReaderProcessor.ts index a32c96480f..d863142169 100644 --- a/plugins/catalog-backend/src/ingestion/processors/LdapOrgReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/LdapOrgReaderProcessor.ts @@ -24,12 +24,12 @@ import { readLdapOrg, } from './ldap'; import * as results from './results'; -import { LocationProcessor, LocationProcessorEmit } from './types'; +import { CatalogProcessor, CatalogProcessorEmit } from './types'; /** * Extracts teams and users out of an LDAP server. */ -export class LdapOrgReaderProcessor implements LocationProcessor { +export class LdapOrgReaderProcessor implements CatalogProcessor { private readonly providers: LdapProviderConfig[]; private readonly logger: Logger; @@ -49,7 +49,7 @@ export class LdapOrgReaderProcessor implements LocationProcessor { async readLocation( location: LocationSpec, _optional: boolean, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ): Promise { if (location.type !== 'ldap-org') { return false; diff --git a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts index a5c9718574..1917f58fbd 100644 --- a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts @@ -16,13 +16,13 @@ import { Entity, LocationEntity, LocationSpec } from '@backstage/catalog-model'; import * as result from './results'; -import { LocationProcessor, LocationProcessorEmit } from './types'; +import { CatalogProcessor, CatalogProcessorEmit } from './types'; -export class LocationRefProcessor implements LocationProcessor { +export class LocationRefProcessor implements CatalogProcessor { async processEntity( entity: Entity, _location: LocationSpec, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ): Promise { if (entity.kind === 'Location') { const location = entity as LocationEntity; diff --git a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts index 630c78d600..3941a2bedc 100644 --- a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts @@ -18,7 +18,7 @@ import { UrlReader } from '@backstage/backend-common'; import { Entity, LocationSpec } from '@backstage/catalog-model'; import { JsonValue } from '@backstage/config'; import yaml from 'yaml'; -import { LocationProcessor } from './types'; +import { CatalogProcessor } from './types'; export type ResolverRead = (url: string) => Promise; @@ -42,7 +42,7 @@ type Options = { * Traverses raw entity JSON looking for occurrences of $-prefixed placeholders * that it then fills in with actual data. */ -export class PlaceholderProcessor implements LocationProcessor { +export class PlaceholderProcessor implements CatalogProcessor { constructor(private readonly options: Options) {} async processEntity(entity: Entity, location: LocationSpec): Promise { diff --git a/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts index 6a2d1096cc..f34b672183 100644 --- a/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts @@ -15,9 +15,9 @@ */ import { LocationSpec } from '@backstage/catalog-model'; -import * as result from './results'; import { Config } from '@backstage/config'; -import { LocationProcessorEmit } from './types'; +import * as result from './results'; +import { CatalogProcessorEmit } from './types'; export class StaticLocationProcessor implements StaticLocationProcessor { static fromConfig(config: Config): StaticLocationProcessor { @@ -38,7 +38,7 @@ export class StaticLocationProcessor implements StaticLocationProcessor { async readLocation( location: LocationSpec, _optional: boolean, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ): Promise { if (location.type !== 'bootstrap') { return false; diff --git a/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.test.ts index 009872cda3..a2b9678ba0 100644 --- a/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.test.ts @@ -14,16 +14,16 @@ * limitations under the License. */ -import { UrlReaderProcessor } from './UrlReaderProcessor'; -import { - LocationProcessorDataResult, - LocationProcessorResult, - LocationProcessorErrorResult, -} from './types'; -import { setupServer } from 'msw/node'; -import { rest } from 'msw'; import { getVoidLogger, UrlReaders } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; +import { rest } from 'msw'; +import { setupServer } from 'msw/node'; +import { + CatalogProcessorDataResult, + CatalogProcessorErrorResult, + CatalogProcessorResult, +} from './types'; +import { UrlReaderProcessor } from './UrlReaderProcessor'; describe('UrlReaderProcessor', () => { const mockApiOrigin = 'http://localhost:23000'; @@ -48,9 +48,9 @@ describe('UrlReaderProcessor', () => { ), ); - const generated = (await new Promise(emit => + const generated = (await new Promise(emit => processor.readLocation(spec, false, emit), - )) as LocationProcessorDataResult; + )) as CatalogProcessorDataResult; expect(generated.type).toBe('data'); expect(generated.location).toBe(spec); @@ -72,9 +72,9 @@ describe('UrlReaderProcessor', () => { }), ); - const generated = (await new Promise(emit => + const generated = (await new Promise(emit => processor.readLocation(spec, false, emit), - )) as LocationProcessorErrorResult; + )) as CatalogProcessorErrorResult; expect(generated.type).toBe('error'); expect(generated.location).toBe(spec); diff --git a/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.ts index 2bc05bf1cb..0169abbbe3 100644 --- a/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.ts @@ -14,11 +14,11 @@ * limitations under the License. */ -import { Logger } from 'winston'; import { UrlReader } from '@backstage/backend-common'; import { LocationSpec } from '@backstage/catalog-model'; +import { Logger } from 'winston'; import * as result from './results'; -import { LocationProcessor, LocationProcessorEmit } from './types'; +import { CatalogProcessor, CatalogProcessorEmit } from './types'; // TODO(Rugvip): Added for backwards compatibility when moving to UrlReader, this // can be removed in a bit @@ -35,13 +35,13 @@ type Options = { logger: Logger; }; -export class UrlReaderProcessor implements LocationProcessor { +export class UrlReaderProcessor implements CatalogProcessor { constructor(private readonly options: Options) {} async readLocation( location: LocationSpec, optional: boolean, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ): Promise { if (deprecatedTypes.includes(location.type)) { // TODO(Rugvip): Let's not enable this warning yet, as we want to move over the example YAMLs diff --git a/plugins/catalog-backend/src/ingestion/processors/YamlProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/YamlProcessor.test.ts index 9f1ede3f9e..f5d2dfea38 100644 --- a/plugins/catalog-backend/src/ingestion/processors/YamlProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/YamlProcessor.test.ts @@ -14,14 +14,14 @@ * limitations under the License. */ -import { YamlProcessor } from './YamlProcessor'; import { Entity } from '@backstage/catalog-model'; -import yaml from 'yaml'; import { TextEncoder } from 'util'; +import yaml from 'yaml'; import { - LocationProcessorEntityResult, - LocationProcessorErrorResult, + CatalogProcessorEntityResult, + CatalogProcessorErrorResult, } from './types'; +import { YamlProcessor } from './YamlProcessor'; describe('YamlProcessor', () => { const processor = new YamlProcessor(); @@ -82,7 +82,7 @@ describe('YamlProcessor', () => { expect(await processor.parseData(buffer, locationSpec, emit)).toBe(true); - const e = emit.mock.calls[0][0] as LocationProcessorEntityResult; + const e = emit.mock.calls[0][0] as CatalogProcessorEntityResult; expect(e.type).toBe('entity'); expect(e.location).toBe(locationSpec); expect(e.entity).toEqual(entity); @@ -114,12 +114,12 @@ describe('YamlProcessor', () => { expect(await processor.parseData(buffer, locationSpec, emit)).toBe(true); - const eComponent = emit.mock.calls[0][0] as LocationProcessorEntityResult; + const eComponent = emit.mock.calls[0][0] as CatalogProcessorEntityResult; expect(eComponent.type).toBe('entity'); expect(eComponent.location).toBe(locationSpec); expect(eComponent.entity).toEqual(entityComponent); - const eApi = emit.mock.calls[1][0] as LocationProcessorEntityResult; + const eApi = emit.mock.calls[1][0] as CatalogProcessorEntityResult; expect(eApi.type).toBe('entity'); expect(eApi.location).toBe(locationSpec); expect(eApi.entity).toEqual(entityApi); @@ -131,7 +131,7 @@ describe('YamlProcessor', () => { expect(await processor.parseData(buffer, locationSpec, emit)).toBe(true); - const e = emit.mock.calls[0][0] as LocationProcessorErrorResult; + const e = emit.mock.calls[0][0] as CatalogProcessorErrorResult; expect(e.error.message).toMatch(/^YAML error, /); expect(e.type).toBe('error'); expect(e.location).toBe(locationSpec); @@ -143,7 +143,7 @@ describe('YamlProcessor', () => { expect(await processor.parseData(buffer, locationSpec, emit)).toBe(true); - const e = emit.mock.calls[0][0] as LocationProcessorErrorResult; + const e = emit.mock.calls[0][0] as CatalogProcessorErrorResult; expect(e.error.message).toMatch(/^Expected object at root, got /); expect(e.type).toBe('error'); expect(e.location).toBe(locationSpec); diff --git a/plugins/catalog-backend/src/ingestion/processors/YamlProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/YamlProcessor.ts index 860f9ff752..46df4e6a2b 100644 --- a/plugins/catalog-backend/src/ingestion/processors/YamlProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/YamlProcessor.ts @@ -18,18 +18,18 @@ import { Entity, LocationSpec } from '@backstage/catalog-model'; import lodash from 'lodash'; import yaml from 'yaml'; import * as result from './results'; -import { LocationProcessor, LocationProcessorEmit } from './types'; +import { CatalogProcessor, CatalogProcessorEmit } from './types'; /** * Handles incoming raw data buffers, and if they have a yaml extension, * attempts to parse them into structured data and emitting them as un- * validated entities. */ -export class YamlProcessor implements LocationProcessor { +export class YamlProcessor implements CatalogProcessor { async parseData( data: Buffer, location: LocationSpec, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ): Promise { if (!location.target.match(/\.ya?ml/)) { return false; diff --git a/plugins/catalog-backend/src/ingestion/processors/results.ts b/plugins/catalog-backend/src/ingestion/processors/results.ts index 9c6a7fc2b3..2718d871dd 100644 --- a/plugins/catalog-backend/src/ingestion/processors/results.ts +++ b/plugins/catalog-backend/src/ingestion/processors/results.ts @@ -16,12 +16,12 @@ import { InputError, NotFoundError } from '@backstage/backend-common'; import { Entity, LocationSpec } from '@backstage/catalog-model'; -import { LocationProcessorResult } from './types'; +import { CatalogProcessorResult } from './types'; export function notFoundError( atLocation: LocationSpec, message: string, -): LocationProcessorResult { +): CatalogProcessorResult { return { type: 'error', location: atLocation, @@ -32,7 +32,7 @@ export function notFoundError( export function inputError( atLocation: LocationSpec, message: string, -): LocationProcessorResult { +): CatalogProcessorResult { return { type: 'error', location: atLocation, @@ -43,27 +43,27 @@ export function inputError( export function generalError( atLocation: LocationSpec, message: string, -): LocationProcessorResult { +): CatalogProcessorResult { return { type: 'error', location: atLocation, error: new Error(message) }; } export function data( atLocation: LocationSpec, newData: Buffer, -): LocationProcessorResult { +): CatalogProcessorResult { return { type: 'data', location: atLocation, data: newData }; } export function location( newLocation: LocationSpec, optional: boolean, -): LocationProcessorResult { +): CatalogProcessorResult { return { type: 'location', location: newLocation, optional }; } export function entity( atLocation: LocationSpec, newEntity: Entity, -): LocationProcessorResult { +): CatalogProcessorResult { return { type: 'entity', location: atLocation, entity: newEntity }; } diff --git a/plugins/catalog-backend/src/ingestion/processors/types.ts b/plugins/catalog-backend/src/ingestion/processors/types.ts index cd2c423423..0e6b1491a6 100644 --- a/plugins/catalog-backend/src/ingestion/processors/types.ts +++ b/plugins/catalog-backend/src/ingestion/processors/types.ts @@ -16,7 +16,7 @@ import { Entity, LocationSpec } from '@backstage/catalog-model'; -export type LocationProcessor = { +export type CatalogProcessor = { /** * Reads the contents of a location. * @@ -28,7 +28,7 @@ export type LocationProcessor = { readLocation?( location: LocationSpec, optional: boolean, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ): Promise; /** @@ -42,7 +42,7 @@ export type LocationProcessor = { parseData?( data: Buffer, location: LocationSpec, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ): Promise; /** @@ -57,7 +57,7 @@ export type LocationProcessor = { processEntity?( entity: Entity, location: LocationSpec, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ): Promise; /** @@ -71,40 +71,38 @@ export type LocationProcessor = { handleError?( error: Error, location: LocationSpec, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ): Promise; }; -export type LocationProcessorEmit = ( - generated: LocationProcessorResult, -) => void; +export type CatalogProcessorEmit = (generated: CatalogProcessorResult) => void; -export type LocationProcessorLocationResult = { +export type CatalogProcessorLocationResult = { type: 'location'; location: LocationSpec; optional: boolean; }; -export type LocationProcessorDataResult = { +export type CatalogProcessorDataResult = { type: 'data'; data: Buffer; location: LocationSpec; }; -export type LocationProcessorEntityResult = { +export type CatalogProcessorEntityResult = { type: 'entity'; entity: Entity; location: LocationSpec; }; -export type LocationProcessorErrorResult = { +export type CatalogProcessorErrorResult = { type: 'error'; error: Error; location: LocationSpec; }; -export type LocationProcessorResult = - | LocationProcessorLocationResult - | LocationProcessorDataResult - | LocationProcessorEntityResult - | LocationProcessorErrorResult; +export type CatalogProcessorResult = + | CatalogProcessorLocationResult + | CatalogProcessorDataResult + | CatalogProcessorEntityResult + | CatalogProcessorErrorResult; diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.test.ts b/plugins/catalog-backend/src/service/CatalogBuilder.test.ts index e2467654d8..66e7dba682 100644 --- a/plugins/catalog-backend/src/service/CatalogBuilder.test.ts +++ b/plugins/catalog-backend/src/service/CatalogBuilder.test.ts @@ -18,9 +18,9 @@ import { getVoidLogger, UrlReader } from '@backstage/backend-common'; import { Entity, LocationSpec } from '@backstage/catalog-model'; import { ConfigReader } from '@backstage/config'; import { DatabaseManager } from '../database'; -import { LocationProcessorEmit } from '../ingestion'; -import { CatalogBuilder, CatalogEnvironment } from './CatalogBuilder'; +import { CatalogProcessorEmit } from '../ingestion'; import * as result from '../ingestion/processors/results'; +import { CatalogBuilder, CatalogEnvironment } from './CatalogBuilder'; describe('CatalogBuilder', () => { const db = DatabaseManager.createTestDatabaseConnection(); @@ -54,7 +54,7 @@ describe('CatalogBuilder', () => { async readLocation( location: LocationSpec, _optional: boolean, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ) { expect(location.type).toBe('test'); emit(result.data(location, await reader.read('ignored'))); @@ -67,7 +67,7 @@ describe('CatalogBuilder', () => { async parseData( data: Buffer, location: LocationSpec, - emit: LocationProcessorEmit, + emit: CatalogProcessorEmit, ) { expect(data.toString()).toEqual('junk'); emit( diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.ts b/plugins/catalog-backend/src/service/CatalogBuilder.ts index e1d76bc3cd..aa4f97258d 100644 --- a/plugins/catalog-backend/src/service/CatalogBuilder.ts +++ b/plugins/catalog-backend/src/service/CatalogBuilder.ts @@ -46,6 +46,7 @@ import { AnnotateLocationEntityProcessor, AzureApiReaderProcessor, BitbucketApiReaderProcessor, + CatalogProcessor, CodeOwnersProcessor, EntityPolicyProcessor, FileReaderProcessor, @@ -55,7 +56,6 @@ import { GitlabReaderProcessor, HigherOrderOperation, HigherOrderOperations, - LocationProcessor, LocationReaders, LocationRefProcessor, PlaceholderProcessor, @@ -121,13 +121,13 @@ export class CatalogBuilder { private entityPoliciesReplace: boolean; private entityKinds: EntityPolicy[]; private entityKindsReplace: boolean; - private readerProcessors: LocationProcessor[]; + private readerProcessors: CatalogProcessor[]; private readerProcessorsReplace: boolean; - private parserProcessors: LocationProcessor[]; + private parserProcessors: CatalogProcessor[]; private parserProcessorsReplace: boolean; - private preProcessors: LocationProcessor[]; + private preProcessors: CatalogProcessor[]; private preProcessorsReplace: boolean; - private postProcessors: LocationProcessor[]; + private postProcessors: CatalogProcessor[]; private postProcessorsReplace: boolean; private placeholderResolvers: Record; private fieldFormatValidators: Partial; @@ -219,7 +219,7 @@ export class CatalogBuilder { * * @param processors One or more processors */ - addReaderProcessor(...processors: LocationProcessor[]): CatalogBuilder { + addReaderProcessor(...processors: CatalogProcessor[]): CatalogBuilder { this.readerProcessors.push(...processors); return this; } @@ -234,7 +234,7 @@ export class CatalogBuilder { * * @param processors One or more processors */ - replaceReaderProcessors(processors: LocationProcessor[]): CatalogBuilder { + replaceReaderProcessors(processors: CatalogProcessor[]): CatalogBuilder { this.readerProcessors = [...processors]; this.readerProcessorsReplace = true; return this; @@ -247,7 +247,7 @@ export class CatalogBuilder { * * @param processors One or more processors */ - addParserProcessor(...processors: LocationProcessor[]): CatalogBuilder { + addParserProcessor(...processors: CatalogProcessor[]): CatalogBuilder { this.parserProcessors.push(...processors); return this; } @@ -262,7 +262,7 @@ export class CatalogBuilder { * * @param processors One or more processors */ - replaceParserProcessors(processors: LocationProcessor[]): CatalogBuilder { + replaceParserProcessors(processors: CatalogProcessor[]): CatalogBuilder { this.parserProcessors = [...processors]; this.parserProcessorsReplace = true; return this; @@ -274,7 +274,7 @@ export class CatalogBuilder { * * @param processors One or more processors */ - addPreProcessor(...processors: LocationProcessor[]): CatalogBuilder { + addPreProcessor(...processors: CatalogProcessor[]): CatalogBuilder { this.preProcessors.push(...processors); return this; } @@ -288,7 +288,7 @@ export class CatalogBuilder { * * @param processors One or more processors */ - replacePreProcessors(processors: LocationProcessor[]): CatalogBuilder { + replacePreProcessors(processors: CatalogProcessor[]): CatalogBuilder { this.preProcessors = [...processors]; this.preProcessorsReplace = true; return this; @@ -300,7 +300,7 @@ export class CatalogBuilder { * * @param processors One or more processors */ - addPostProcessor(...processors: LocationProcessor[]): CatalogBuilder { + addPostProcessor(...processors: CatalogProcessor[]): CatalogBuilder { this.postProcessors.push(...processors); return this; } @@ -314,7 +314,7 @@ export class CatalogBuilder { * * @param processors One or more processors */ - replacePostProcessors(processors: LocationProcessor[]): CatalogBuilder { + replacePostProcessors(processors: CatalogProcessor[]): CatalogBuilder { this.postProcessors = [...processors]; this.postProcessorsReplace = true; return this; @@ -418,7 +418,7 @@ export class CatalogBuilder { ]); } - private buildProcessors(entityPolicy: EntityPolicy): LocationProcessor[] { + private buildProcessors(entityPolicy: EntityPolicy): CatalogProcessor[] { const { config, reader } = this.env; const placeholderResolvers = lodash.merge( @@ -441,7 +441,7 @@ export class CatalogBuilder { ]; } - private buildReaderProcessors(): LocationProcessor[] { + private buildReaderProcessors(): CatalogProcessor[] { const { config, logger, reader } = this.env; if (this.readerProcessorsReplace) { @@ -491,7 +491,7 @@ export class CatalogBuilder { ]; } - private buildParserProcessors(): LocationProcessor[] { + private buildParserProcessors(): CatalogProcessor[] { if (this.parserProcessorsReplace) { return this.parserProcessors; } @@ -499,7 +499,7 @@ export class CatalogBuilder { return [new YamlProcessor(), ...this.parserProcessors]; } - private buildPreProcessors(): LocationProcessor[] { + private buildPreProcessors(): CatalogProcessor[] { const { reader } = this.env; if (this.preProcessorsReplace) { @@ -509,7 +509,7 @@ export class CatalogBuilder { return [new CodeOwnersProcessor({ reader }), ...this.preProcessors]; } - private buildPostProcessors(): LocationProcessor[] { + private buildPostProcessors(): CatalogProcessor[] { if (this.postProcessorsReplace) { return this.postProcessors; } From 973500dd8ddfa2c3f638f9cfbf54ab87426138b6 Mon Sep 17 00:00:00 2001 From: Marvin9 Date: Thu, 15 Oct 2020 19:34:57 +0530 Subject: [PATCH 116/323] chore: make pageTheme optional & provide default value --- packages/theme/src/baseTheme.ts | 3 ++- packages/theme/src/types.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/theme/src/baseTheme.ts b/packages/theme/src/baseTheme.ts index 640476c487..b0797c6506 100644 --- a/packages/theme/src/baseTheme.ts +++ b/packages/theme/src/baseTheme.ts @@ -23,6 +23,7 @@ import { BackstageThemeOptions, SimpleThemeOptions, } from './types'; +import { pageTheme as defaultPageThemes } from './pageTheme'; const DEFAULT_FONT_FAMILY = '"Helvetica Neue", Helvetica, Roboto, Arial, sans-serif'; @@ -34,7 +35,7 @@ export function createThemeOptions( palette, fontFamily = DEFAULT_FONT_FAMILY, defaultPageTheme, - pageTheme, + pageTheme = defaultPageThemes, } = options; if (!pageTheme[defaultPageTheme]) { diff --git a/packages/theme/src/types.ts b/packages/theme/src/types.ts index 696ccf586f..1c6ccc0754 100644 --- a/packages/theme/src/types.ts +++ b/packages/theme/src/types.ts @@ -94,7 +94,7 @@ export interface BackstageThemeOptions extends ThemeOptions { export type SimpleThemeOptions = { palette: BackstagePaletteOptions; defaultPageTheme: string; - pageTheme: Record; + pageTheme?: Record; fontFamily?: string; }; From 9af34d30f17027d0471551c8f86dad587c72e670 Mon Sep 17 00:00:00 2001 From: David Tuite Date: Thu, 15 Oct 2020 15:53:29 +0100 Subject: [PATCH 117/323] Upgrade GitHub Insights plugin to 0.2.6 Fixes issue with entities backed to private repos not rendering when the GitHub insights plugin is installed. --- packages/app/package.json | 2 +- yarn.lock | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/app/package.json b/packages/app/package.json index baa273fd08..65ba6140b2 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -34,8 +34,8 @@ "@material-ui/core": "^4.11.0", "@material-ui/icons": "^4.9.1", "@octokit/rest": "^18.0.0", + "@roadiehq/backstage-plugin-github-insights": "^0.2.6", "@roadiehq/backstage-plugin-github-pull-requests": "^0.5.1", - "@roadiehq/backstage-plugin-github-insights": "^0.2.2", "@roadiehq/backstage-plugin-travis-ci": "^0.2.3", "dayjs": "^1.9.1", "history": "^5.0.0", diff --git a/yarn.lock b/yarn.lock index c47977b4f4..574c0f65a4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3650,10 +3650,10 @@ resolved "https://registry.npmjs.org/@rjsf/material-ui/-/material-ui-2.3.0.tgz#a051eb4db2ad778e39933a31ba806f415dd3ba90" integrity sha512-v/xZ4Xk18ZgBARcCe99IDqdO97GU0UC784gG8PhGGFDdy5Rbdy7ixTjHkGYttkr43PB7SX6ttohNhkKSW4nATQ== -"@roadiehq/backstage-plugin-github-insights@^0.2.2": - version "0.2.2" - resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-insights/-/backstage-plugin-github-insights-0.2.2.tgz#1647aec22f1f8bc40268f075ae307abf660ae75c" - integrity sha512-m4j1kUmoj+ZCRyaisXVBkLW9kaI/OGMq8xzthm4adOb12mS0s2p2P9AMa4T+bRyLgHpQ0vB75qhw4p6sHJAvWA== +"@roadiehq/backstage-plugin-github-insights@^0.2.6": + version "0.2.6" + resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-insights/-/backstage-plugin-github-insights-0.2.6.tgz#7c854cc6b107ff30b0f03b1a5e1ca5e04723dd99" + integrity sha512-d3CmA2B0iOB2jKFK3z4q1ehl9nCfh2yrCb6byOvsIyV2xlm3cnt3Uq5hLlQekTYLWRvBWw2ULQVC8+wk2Uq6gg== dependencies: "@backstage/catalog-model" "^0.1.1-alpha.24" "@backstage/core" "^0.1.1-alpha.24" @@ -3661,6 +3661,8 @@ "@material-ui/core" "^4.11.0" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.45" + "@octokit/rest" "^18.0.0" + "@octokit/types" "^5.0.1" history "^5.0.0" react "^16.13.1" react-dom "^16.13.1" From 130c827e50086626d0b956ccaa4eca9ae4fd7e9a Mon Sep 17 00:00:00 2001 From: Marek Calus Date: Thu, 15 Oct 2020 19:26:25 +0200 Subject: [PATCH 118/323] Enable possibility of creating pending locations --- packages/catalog-model/src/location/types.ts | 3 +++ packages/catalog-model/src/location/validation.ts | 1 + .../src/ingestion/HigherOrderOperations.ts | 2 +- plugins/catalog/src/api/CatalogClient.ts | 8 ++++++-- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/catalog-model/src/location/types.ts b/packages/catalog-model/src/location/types.ts index 50e6e82a54..43a0d3c692 100644 --- a/packages/catalog-model/src/location/types.ts +++ b/packages/catalog-model/src/location/types.ts @@ -17,6 +17,9 @@ export type LocationSpec = { type: string; target: string; + // When using repo importer plugin, leocation is being created before the component yaml file is merged to the main branch. + // This flag is then set to disable validation that prevents creation of location if target file does not yet exist. + pendingLocation?: true; }; export type Location = { diff --git a/packages/catalog-model/src/location/validation.ts b/packages/catalog-model/src/location/validation.ts index 5fad47bdd0..adadd3b18f 100644 --- a/packages/catalog-model/src/location/validation.ts +++ b/packages/catalog-model/src/location/validation.ts @@ -21,6 +21,7 @@ export const locationSpecSchema = yup .object({ type: yup.string().required(), target: yup.string().required(), + pendingLocation: yup.bool().oneOf([true]), }) .noUnknown(); diff --git a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts index 6df6d9b4b7..8da65dbd85 100644 --- a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts +++ b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts @@ -79,7 +79,7 @@ export class HigherOrderOperations implements HigherOrderOperation { // Read the location fully, bailing on any errors const readerOutput = await this.locationReader.read(spec); - if (readerOutput.errors.length) { + if (!spec.pendingLocation && readerOutput.errors.length) { const item = readerOutput.errors[0]; throw new InputError( `Failed to read location ${item.location.type}:${item.location.target}, ${item.error}`, diff --git a/plugins/catalog/src/api/CatalogClient.ts b/plugins/catalog/src/api/CatalogClient.ts index d5ff033caa..9ba0e56bc1 100644 --- a/plugins/catalog/src/api/CatalogClient.ts +++ b/plugins/catalog/src/api/CatalogClient.ts @@ -109,8 +109,12 @@ export class CatalogClient implements CatalogApi { const { location, entities } = await response.json(); - if (!location || entities.length === 0) - throw new Error(`Location wasn't added: ${target}`); + if (!location) throw new Error(`Location wasn't added: ${target}`); + + if (entities.length === 0) + throw new Error( + `Location was added but has no entities specified yet: ${target}`, + ); return { location, From 5c46f0d337cfb937dc4e47286a427cc88b96ffcd Mon Sep 17 00:00:00 2001 From: Markus Heinemann Date: Thu, 15 Oct 2020 20:35:43 +0000 Subject: [PATCH 119/323] Rename config property for custom github scaffolder host --- app-config.yaml | 2 +- packages/backend/src/plugins/scaffolder.ts | 5 +++-- .../default-app/packages/backend/src/plugins/scaffolder.ts | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app-config.yaml b/app-config.yaml index b527069c15..768e60a346 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -147,7 +147,7 @@ catalog: scaffolder: github: - baseUrl: https://github.com + host: https://github.com token: $env: GITHUB_TOKEN visibility: public # or 'internal' or 'private' diff --git a/packages/backend/src/plugins/scaffolder.ts b/packages/backend/src/plugins/scaffolder.ts index 7ba90ed8b5..24bd4e942f 100644 --- a/packages/backend/src/plugins/scaffolder.ts +++ b/packages/backend/src/plugins/scaffolder.ts @@ -68,10 +68,11 @@ export default async function createPlugin({ ) as RepoVisibilityOptions; const githubToken = githubConfig.getString('token'); - const githubBaseUrl = githubConfig.getString('baseUrl'); + const githubHost = + githubConfig.getOptionalString('host') ?? 'https://github.com'; const githubClient = new Octokit({ auth: githubToken, - baseUrl: githubBaseUrl, + baseUrl: githubHost, }); const githubPublisher = new GithubPublisher({ client: githubClient, diff --git a/packages/create-app/templates/default-app/packages/backend/src/plugins/scaffolder.ts b/packages/create-app/templates/default-app/packages/backend/src/plugins/scaffolder.ts index 9f59412036..240309fbd1 100644 --- a/packages/create-app/templates/default-app/packages/backend/src/plugins/scaffolder.ts +++ b/packages/create-app/templates/default-app/packages/backend/src/plugins/scaffolder.ts @@ -48,8 +48,8 @@ export default async function createPlugin({ ) as RepoVisibilityOptions; const githubToken = githubConfig.getString('token'); - const githubBaseUrl = githubConfig.getString('baseUrl'); - const githubClient = new Octokit({ auth: githubToken, baseUrl: githubBaseUrl }); + const githubHost = githubConfig.getOptionalString('host'); + const githubClient = new Octokit({ auth: githubToken, baseUrl: githubHost }); const githubPublisher = new GithubPublisher({ client: githubClient, token: githubToken, From ee88f6d21023f9949248daf565057f22bb3e21ee Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Thu, 15 Oct 2020 22:44:15 +0200 Subject: [PATCH 120/323] Fix example in README. --- plugins/newrelic/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/newrelic/README.md b/plugins/newrelic/README.md index e787d9c91f..e14acedef2 100644 --- a/plugins/newrelic/README.md +++ b/plugins/newrelic/README.md @@ -29,7 +29,7 @@ While working locally, you may wish to hard-code your API key in your ```yaml # app-config.local.yaml proxy: - 'newrelic/apm/api': + '/newrelic/apm/api': headers: X-Api-Key: NRRA-YourActualApiKey ``` From d553996bf27dba5fb7fb85728a92acb04442f628 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 16 Oct 2020 04:28:40 +0000 Subject: [PATCH 121/323] chore(deps): bump dayjs from 1.9.1 to 1.9.3 Bumps [dayjs](https://github.com/iamkun/dayjs) from 1.9.1 to 1.9.3. - [Release notes](https://github.com/iamkun/dayjs/releases) - [Changelog](https://github.com/iamkun/dayjs/blob/dev/CHANGELOG.md) - [Commits](https://github.com/iamkun/dayjs/compare/v1.9.1...v1.9.3) Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index adc0e7a8f1..4d28072207 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9594,9 +9594,9 @@ dateformat@^3.0.0: integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== dayjs@^1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.9.1.tgz#201a755f7db5103ed6de63ba93a984141c754541" - integrity sha512-01NCTBg8cuMJG1OQc6PR7T66+AFYiPwgDvdJmvJBn29NGzIG+DIFxPLNjHzwz3cpFIvG+NcwIjP9hSaPVoOaDg== + version "1.9.3" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.9.3.tgz#b7f94b22ad2a136a4ca02a01ab68ae893fe1a268" + integrity sha512-V+1SyIvkS+HmNbN1G7A9+ERbFTV9KTXu6Oor98v2xHmzzpp52OIJhQuJSTywWuBY5pyAEmlwbCi1Me87n/SLOw== de-indent@^1.0.2: version "1.0.2" From 275b7f001ab2d47c1c0c485a2166d765451686db Mon Sep 17 00:00:00 2001 From: Althaf Hameez Date: Fri, 16 Oct 2020 14:49:25 +0800 Subject: [PATCH 122/323] Change default organization to be set to My Company instead of Spotify / Acme Organization (#2918) --- app-config.yaml | 6 +++--- .../create-app/templates/default-app/app-config.yaml.hbs | 2 +- .../default-app/packages/app/cypress/integration/app.js | 2 +- packages/e2e-test/src/commands/run.ts | 6 +----- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/app-config.yaml b/app-config.yaml index 3de43ad7e9..542110f774 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -41,7 +41,7 @@ proxy: $env: NEW_RELIC_REST_API_KEY organization: - name: Spotify + name: My Company techdocs: storageUrl: http://localhost:7000/api/techdocs/static/docs @@ -50,10 +50,10 @@ techdocs: techdocs: 'docker' sentry: - organization: spotify + organization: my-company rollbar: - organization: spotify + organization: my-company accountToken: $env: ROLLBAR_ACCOUNT_TOKEN diff --git a/packages/create-app/templates/default-app/app-config.yaml.hbs b/packages/create-app/templates/default-app/app-config.yaml.hbs index 347bbaa29c..b92cdf22bd 100644 --- a/packages/create-app/templates/default-app/app-config.yaml.hbs +++ b/packages/create-app/templates/default-app/app-config.yaml.hbs @@ -3,7 +3,7 @@ app: baseUrl: http://localhost:7000 organization: - name: Acme Corporation + name: My Company backend: baseUrl: http://localhost:7000 diff --git a/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js b/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js index 227e218fe6..efcd5b8d93 100644 --- a/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js +++ b/packages/create-app/templates/default-app/packages/app/cypress/integration/app.js @@ -1,6 +1,6 @@ describe('App', () => { it('should render the catalog', () => { cy.visit('/'); - cy.contains('Acme Corporation Service Catalog'); + cy.contains('My Company Service Catalog'); }); }); diff --git a/packages/e2e-test/src/commands/run.ts b/packages/e2e-test/src/commands/run.ts index c05aed0b83..5caed14227 100644 --- a/packages/e2e-test/src/commands/run.ts +++ b/packages/e2e-test/src/commands/run.ts @@ -301,11 +301,7 @@ async function testAppServe(pluginName: string, appDir: string) { try { const browser = new Browser(); - await waitForPageWithText( - browser, - '/', - 'Acme Corporation Service Catalog', - ); + await waitForPageWithText(browser, '/', 'My Company Service Catalog'); await waitForPageWithText( browser, `/${pluginName}`, From c91054ac17c4dbe8dcd25ae6b312c5c6b3406024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 16 Oct 2020 13:29:45 +0200 Subject: [PATCH 123/323] chore(deps): bump yup --- packages/catalog-model/package.json | 4 +- .../policies/SchemaValidEntityPolicy.ts | 38 ++++++++++--------- .../src/kinds/ComponentEntityV1alpha1.test.ts | 20 ++++++++++ .../src/kinds/ComponentEntityV1alpha1.ts | 2 +- .../src/kinds/GroupEntityV1alpha1.test.ts | 27 ++++++++++--- .../src/kinds/GroupEntityV1alpha1.ts | 14 ++++--- .../src/kinds/LocationEntityV1alpha1.test.ts | 5 +++ .../src/kinds/LocationEntityV1alpha1.ts | 2 +- .../src/kinds/UserEntityV1alpha1.ts | 6 ++- .../catalog-model/src/location/validation.ts | 6 ++- packages/config-loader/package.json | 4 +- packages/config-loader/src/lib/secrets.ts | 2 +- plugins/catalog-backend/package.json | 4 +- plugins/proxy-backend/package.json | 4 +- yarn.lock | 10 ++--- 15 files changed, 98 insertions(+), 50 deletions(-) diff --git a/packages/catalog-model/package.json b/packages/catalog-model/package.json index 8fc4484d33..5ba2b6efdf 100644 --- a/packages/catalog-model/package.json +++ b/packages/catalog-model/package.json @@ -22,11 +22,11 @@ "dependencies": { "@backstage/config": "^0.1.1-alpha.25", "@types/json-schema": "^7.0.5", - "@types/yup": "^0.28.2", + "@types/yup": "^0.29.8", "json-schema": "^0.2.5", "lodash": "^4.17.15", "uuid": "^8.0.0", - "yup": "^0.29.1" + "yup": "^0.29.3" }, "devDependencies": { "@backstage/cli": "^0.1.1-alpha.25", diff --git a/packages/catalog-model/src/entity/policies/SchemaValidEntityPolicy.ts b/packages/catalog-model/src/entity/policies/SchemaValidEntityPolicy.ts index a6d376b4ac..4ff73e9a49 100644 --- a/packages/catalog-model/src/entity/policies/SchemaValidEntityPolicy.ts +++ b/packages/catalog-model/src/entity/policies/SchemaValidEntityPolicy.ts @@ -18,24 +18,26 @@ import * as yup from 'yup'; import { EntityPolicy } from '../../types'; import { Entity } from '../Entity'; -const DEFAULT_ENTITY_SCHEMA = yup.object({ - apiVersion: yup.string().required(), - kind: yup.string().required(), - metadata: yup - .object({ - uid: yup.string().notRequired().min(1), - etag: yup.string().notRequired().min(1), - generation: yup.number().notRequired().integer().min(1), - name: yup.string().required(), - namespace: yup.string().notRequired(), - description: yup.string().notRequired(), - labels: yup.object>().notRequired(), - annotations: yup.object>().notRequired(), - tags: yup.array().notRequired(), - }) - .required(), - spec: yup.object({}).notRequired(), -}); +const DEFAULT_ENTITY_SCHEMA = yup + .object({ + apiVersion: yup.string().required(), + kind: yup.string().required(), + metadata: yup + .object({ + uid: yup.string().notRequired().min(1), + etag: yup.string().notRequired().min(1), + generation: yup.number().notRequired().integer().min(1), + name: yup.string().required(), + namespace: yup.string().notRequired(), + description: yup.string().notRequired(), + labels: yup.object>().notRequired(), + annotations: yup.object>().notRequired(), + tags: yup.array().notRequired(), + }) + .required(), + spec: yup.object({}).notRequired(), + }) + .required(); /** * Ensures that the entity spec is valid according to a schema. diff --git a/packages/catalog-model/src/kinds/ComponentEntityV1alpha1.test.ts b/packages/catalog-model/src/kinds/ComponentEntityV1alpha1.test.ts index 57d6d47388..11434937cd 100644 --- a/packages/catalog-model/src/kinds/ComponentEntityV1alpha1.test.ts +++ b/packages/catalog-model/src/kinds/ComponentEntityV1alpha1.test.ts @@ -101,4 +101,24 @@ describe('ComponentV1alpha1Policy', () => { (entity as any).spec.owner = ''; await expect(policy.enforce(entity)).rejects.toThrow(/owner/); }); + + it('accepts missing implementsApis', async () => { + delete (entity as any).spec.implementsApis; + await expect(policy.enforce(entity)).resolves.toBe(entity); + }); + + it('rejects empty implementsApis', async () => { + (entity as any).spec.implementsApis = ['']; + await expect(policy.enforce(entity)).rejects.toThrow(/implementsApis/); + }); + + it('rejects undefined implementsApis', async () => { + (entity as any).spec.implementsApis = [undefined]; + await expect(policy.enforce(entity)).rejects.toThrow(/implementsApis/); + }); + + it('accepts no implementsApis', async () => { + (entity as any).spec.implementsApis = []; + await expect(policy.enforce(entity)).resolves.toBe(entity); + }); }); diff --git a/packages/catalog-model/src/kinds/ComponentEntityV1alpha1.ts b/packages/catalog-model/src/kinds/ComponentEntityV1alpha1.ts index 9efc491ca9..662ce28b52 100644 --- a/packages/catalog-model/src/kinds/ComponentEntityV1alpha1.ts +++ b/packages/catalog-model/src/kinds/ComponentEntityV1alpha1.ts @@ -29,7 +29,7 @@ const schema = yup.object>({ type: yup.string().required().min(1), lifecycle: yup.string().required().min(1), owner: yup.string().required().min(1), - implementsApis: yup.array(yup.string()).notRequired(), + implementsApis: yup.array(yup.string().required()).notRequired(), }) .required(), }); diff --git a/packages/catalog-model/src/kinds/GroupEntityV1alpha1.test.ts b/packages/catalog-model/src/kinds/GroupEntityV1alpha1.test.ts index dc0ecd3fa3..9137727c6e 100644 --- a/packages/catalog-model/src/kinds/GroupEntityV1alpha1.test.ts +++ b/packages/catalog-model/src/kinds/GroupEntityV1alpha1.test.ts @@ -90,9 +90,14 @@ describe('GroupV1alpha1Policy', () => { await expect(policy.enforce(entity)).rejects.toThrow(/ancestor/); }); - it('accepts empty ancestors', async () => { + it('rejects empty ancestors', async () => { (entity as any).spec.ancestors = ['']; - await expect(policy.enforce(entity)).resolves.toBe(entity); + await expect(policy.enforce(entity)).rejects.toThrow(/ancestor/); + }); + + it('rejects undefined ancestors', async () => { + (entity as any).spec.ancestors = [undefined]; + await expect(policy.enforce(entity)).rejects.toThrow(/ancestor/); }); it('accepts no ancestors', async () => { @@ -105,9 +110,14 @@ describe('GroupV1alpha1Policy', () => { await expect(policy.enforce(entity)).rejects.toThrow(/children/); }); - it('accepts empty children', async () => { + it('rejects empty children', async () => { (entity as any).spec.children = ['']; - await expect(policy.enforce(entity)).resolves.toBe(entity); + await expect(policy.enforce(entity)).rejects.toThrow(/children/); + }); + + it('rejects undefined children', async () => { + (entity as any).spec.children = [undefined]; + await expect(policy.enforce(entity)).rejects.toThrow(/children/); }); it('accepts no children', async () => { @@ -120,9 +130,14 @@ describe('GroupV1alpha1Policy', () => { await expect(policy.enforce(entity)).rejects.toThrow(/descendants/); }); - it('accepts empty descendants', async () => { + it('rejects empty descendants', async () => { (entity as any).spec.descendants = ['']; - await expect(policy.enforce(entity)).resolves.toBe(entity); + await expect(policy.enforce(entity)).rejects.toThrow(/descendants/); + }); + + it('rejects undefined descendants', async () => { + (entity as any).spec.descendants = [undefined]; + await expect(policy.enforce(entity)).rejects.toThrow(/descendants/); }); it('accepts no descendants', async () => { diff --git a/packages/catalog-model/src/kinds/GroupEntityV1alpha1.ts b/packages/catalog-model/src/kinds/GroupEntityV1alpha1.ts index 073332d707..f0e91ddce8 100644 --- a/packages/catalog-model/src/kinds/GroupEntityV1alpha1.ts +++ b/packages/catalog-model/src/kinds/GroupEntityV1alpha1.ts @@ -30,21 +30,23 @@ const schema = yup.object>({ parent: yup.string().notRequired().min(1), // Use these manual tests because yup .required() requires at least // one element and there is no simple workaround -_- - ancestors: yup.array(yup.string()).test({ + // the cast is there to convince typescript that the array itself is + // required without using .required() + ancestors: yup.array(yup.string().required()).test({ name: 'isDefined', message: 'ancestors must be defined', test: v => Boolean(v), - }), - children: yup.array(yup.string()).test({ + }) as yup.ArraySchema, + children: yup.array(yup.string().required()).test({ name: 'isDefined', message: 'children must be defined', test: v => Boolean(v), - }), - descendants: yup.array(yup.string()).test({ + }) as yup.ArraySchema, + descendants: yup.array(yup.string().required()).test({ name: 'isDefined', message: 'descendants must be defined', test: v => Boolean(v), - }), + }) as yup.ArraySchema, }) .required(), }); diff --git a/packages/catalog-model/src/kinds/LocationEntityV1alpha1.test.ts b/packages/catalog-model/src/kinds/LocationEntityV1alpha1.test.ts index a259eaeca8..865ceda53e 100644 --- a/packages/catalog-model/src/kinds/LocationEntityV1alpha1.test.ts +++ b/packages/catalog-model/src/kinds/LocationEntityV1alpha1.test.ts @@ -93,6 +93,11 @@ describe('LocationV1alpha1Policy', () => { await expect(policy.enforce(entity)).resolves.toBe(entity); }); + it('accepts empty targets', async () => { + (entity as any).spec.targets = []; + await expect(policy.enforce(entity)).resolves.toBe(entity); + }); + it('rejects wrong targets', async () => { (entity as any).spec.targets = 7; await expect(policy.enforce(entity)).rejects.toThrow(/targets/); diff --git a/packages/catalog-model/src/kinds/LocationEntityV1alpha1.ts b/packages/catalog-model/src/kinds/LocationEntityV1alpha1.ts index 6d1f1f5515..dc2485f11b 100644 --- a/packages/catalog-model/src/kinds/LocationEntityV1alpha1.ts +++ b/packages/catalog-model/src/kinds/LocationEntityV1alpha1.ts @@ -28,7 +28,7 @@ const schema = yup.object>({ .object({ type: yup.string().required().min(1), target: yup.string().notRequired().min(1), - targets: yup.array(yup.string()).notRequired(), + targets: yup.array(yup.string().required()).notRequired(), }) .required(), }); diff --git a/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts b/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts index ff4edcc8a2..6086b3776e 100644 --- a/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts +++ b/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts @@ -35,11 +35,13 @@ const schema = yup.object>({ .notRequired(), // Use this manual test because yup .required() requires at least one // element and there is no simple workaround -_- - memberOf: yup.array(yup.string()).test({ + // the cast is there to convince typescript that the array itself is + // required without using .required() + memberOf: yup.array(yup.string().required()).test({ name: 'isDefined', message: 'memberOf must be defined', test: v => Boolean(v), - }), + }) as yup.ArraySchema, }) .required(), }); diff --git a/packages/catalog-model/src/location/validation.ts b/packages/catalog-model/src/location/validation.ts index 5fad47bdd0..b1b91edd83 100644 --- a/packages/catalog-model/src/location/validation.ts +++ b/packages/catalog-model/src/location/validation.ts @@ -22,7 +22,8 @@ export const locationSpecSchema = yup type: yup.string().required(), target: yup.string().required(), }) - .noUnknown(); + .noUnknown() + .required(); export const locationSchema = yup .object({ @@ -30,4 +31,5 @@ export const locationSchema = yup type: yup.string().required(), target: yup.string().required(), }) - .noUnknown(); + .noUnknown() + .required(); diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json index 0a95dc8c86..eead016c8f 100644 --- a/packages/config-loader/package.json +++ b/packages/config-loader/package.json @@ -33,13 +33,13 @@ "@backstage/config": "^0.1.1-alpha.25", "fs-extra": "^9.0.0", "yaml": "^1.9.2", - "yup": "^0.29.1" + "yup": "^0.29.3" }, "devDependencies": { "@types/jest": "^26.0.7", "@types/mock-fs": "^4.10.0", "@types/node": "^12.0.0", - "@types/yup": "^0.28.2", + "@types/yup": "^0.29.8", "mock-fs": "^4.13.0" }, "files": [ diff --git a/packages/config-loader/src/lib/secrets.ts b/packages/config-loader/src/lib/secrets.ts index 4c3812d527..97f0de2940 100644 --- a/packages/config-loader/src/lib/secrets.ts +++ b/packages/config-loader/src/lib/secrets.ts @@ -58,7 +58,7 @@ const secretLoaderSchemas = { }; // The top-level secret schema, which figures out what type of secret it is. -const secretSchema = yup.lazy(value => { +const secretSchema = yup.lazy(value => { if (typeof value !== 'object' || value === null) { return yup.object().required().label('secret'); } diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index 718bb2964c..34f9c7b360 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -43,7 +43,7 @@ "winston": "^3.2.1", "yaml": "^1.9.2", "yn": "^4.0.0", - "yup": "^0.29.1" + "yup": "^0.29.3" }, "devDependencies": { "@backstage/cli": "^0.1.1-alpha.25", @@ -53,7 +53,7 @@ "@types/lodash": "^4.14.151", "@types/supertest": "^2.0.8", "@types/uuid": "^8.0.0", - "@types/yup": "^0.28.2", + "@types/yup": "^0.29.8", "jest-fetch-mock": "^3.0.3", "msw": "^0.20.5", "supertest": "^4.0.2" diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index e96faaec0f..c7125d8b18 100644 --- a/plugins/proxy-backend/package.json +++ b/plugins/proxy-backend/package.json @@ -31,7 +31,7 @@ "winston": "^3.2.1", "yaml": "^1.9.2", "yn": "^4.0.0", - "yup": "^0.29.1" + "yup": "^0.29.3" }, "devDependencies": { "@backstage/cli": "^0.1.1-alpha.25", @@ -39,7 +39,7 @@ "@types/node-fetch": "^2.5.7", "@types/supertest": "^2.0.8", "@types/uuid": "^8.0.0", - "@types/yup": "^0.28.2", + "@types/yup": "^0.29.8", "jest-fetch-mock": "^3.0.3", "supertest": "^4.0.2" }, diff --git a/yarn.lock b/yarn.lock index 4d28072207..5007bd0d58 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5820,10 +5820,10 @@ dependencies: "@types/yargs-parser" "*" -"@types/yup@^0.28.2": - version "0.28.3" - resolved "https://registry.npmjs.org/@types/yup/-/yup-0.28.3.tgz#387c35f9a6a36b8d3561f6601eb4e72518b92899" - integrity sha512-0Sir2LxOmupF8HBUvpJoZghLmOqKfZsBk1GYlMwSIccLDDUoN04LHvo0KzDp9qxt1IKf9Fudpj35SrJ8VqetkQ== +"@types/yup@^0.29.8": + version "0.29.8" + resolved "https://registry.npmjs.org/@types/yup/-/yup-0.29.8.tgz#83db15735987db9fe5a38772a0fb9500e3c5bf39" + integrity sha512-MBSp62AjB1KrSOI3gX9GekddXU5YYQAVA93+aSl78biBqoSzxg876aQY2KJK5Gnfbpqq7O2cadVX5kPAtBqIXw== "@types/zen-observable@^0.8.0": version "0.8.0" @@ -24123,7 +24123,7 @@ yn@^4.0.0: resolved "https://registry.npmjs.org/yn/-/yn-4.0.0.tgz#611480051ea43b510da1dfdbe177ed159f00a979" integrity sha512-huWiiCS4TxKc4SfgmTwW1K7JmXPPAmuXWYy4j9qjQo4+27Kni8mGhAAi1cloRWmBe2EqcLgt3IGqQoRL/MtPgg== -yup@^0.29.1: +yup@^0.29.3: version "0.29.3" resolved "https://registry.npmjs.org/yup/-/yup-0.29.3.tgz#69a30fd3f1c19f5d9e31b1cf1c2b851ce8045fea" integrity sha512-RNUGiZ/sQ37CkhzKFoedkeMfJM0vNQyaz+wRZJzxdKE7VfDeVKH8bb4rr7XhRLbHJz5hSjoDNwMEIaKhuMZ8gQ== From 02c60b5f8b9b49511a543dfa80c4003068e1f093 Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Fri, 16 Oct 2020 09:21:52 +0530 Subject: [PATCH 124/323] fix(tech-radar): add overflowX scroll to the company radar section --- .changeset/slow-experts-peel.md | 5 ++ .../tech-radar/src/components/RadarPage.tsx | 53 +++++++++++-------- 2 files changed, 36 insertions(+), 22 deletions(-) create mode 100644 .changeset/slow-experts-peel.md diff --git a/.changeset/slow-experts-peel.md b/.changeset/slow-experts-peel.md new file mode 100644 index 0000000000..ed9c7af21e --- /dev/null +++ b/.changeset/slow-experts-peel.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-tech-radar': patch +--- + +fix the horizontal scrolling issue in the RadarPage component diff --git a/plugins/tech-radar/src/components/RadarPage.tsx b/plugins/tech-radar/src/components/RadarPage.tsx index 84cfef3213..779d1fa088 100644 --- a/plugins/tech-radar/src/components/RadarPage.tsx +++ b/plugins/tech-radar/src/components/RadarPage.tsx @@ -15,7 +15,7 @@ */ import React from 'react'; -import { Grid } from '@material-ui/core'; +import { Grid, makeStyles } from '@material-ui/core'; import { Content, ContentHeader, @@ -27,6 +27,12 @@ import { import RadarComponent from '../components/RadarComponent'; import { TechRadarComponentProps } from '../api'; +const useStyles = makeStyles(() => ({ + overflowXScroll: { + overflowX: 'scroll', + }, +})); + export type TechRadarPageProps = TechRadarComponentProps & { title?: string; subtitle?: string; @@ -38,28 +44,31 @@ export const RadarPage = ({ subtitle, pageTitle, ...props -}: TechRadarPageProps): JSX.Element => ( - -
- - -
- - - - This is used for visualizing the official guidelines of different - areas of software development such as languages, frameworks, - infrastructure and processes. - - - - - +}: TechRadarPageProps): JSX.Element => { + const classes = useStyles(); + return ( + +
+ + +
+ + + + This is used for visualizing the official guidelines of different + areas of software development such as languages, frameworks, + infrastructure and processes. + + + + + + -
-
-
-); + + + ); +}; RadarPage.defaultProps = { title: 'Tech Radar', From 0d53c752ace139be551a42a2b14728243e456a96 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 16 Oct 2020 13:59:00 +0200 Subject: [PATCH 125/323] cli: cleanup and fix removePlugin tests --- .../remove-plugin/removePlugin.test.ts | 33 +++++++++++-------- .../commands/remove-plugin/removePlugin.ts | 1 - 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/packages/cli/src/commands/remove-plugin/removePlugin.test.ts b/packages/cli/src/commands/remove-plugin/removePlugin.test.ts index 3ffa8d63cf..a5e2af5974 100644 --- a/packages/cli/src/commands/remove-plugin/removePlugin.test.ts +++ b/packages/cli/src/commands/remove-plugin/removePlugin.test.ts @@ -32,7 +32,6 @@ import { removePluginFromCodeOwners, } from './removePlugin'; -// Some constant variables const BACKSTAGE = `@backstage`; const testPluginName = 'yarn-test-package'; const testPluginPackage = `${BACKSTAGE}/plugin-${testPluginName}`; @@ -68,8 +67,8 @@ const createTestPluginFile = async ( .split('-') .map(name => capitalize(name)) .join(''); - const exportStatement = `export { default as ${pluginNameCapitalized}} from @backstage/plugin-${testPluginName}`; - addExportStatement(testFilePath, exportStatement); + const exportStatement = `export { plugin as ${pluginNameCapitalized}} from @backstage/plugin-${testPluginName}`; + await addExportStatement(testFilePath, exportStatement); }; const mkTestPluginDir = (testDirPath: string) => { @@ -78,15 +77,21 @@ const mkTestPluginDir = (testDirPath: string) => { fse.createFileSync(path.join(testDirPath, `testFile${i}.ts`)); }; -beforeAll(() => { - // Create temporary directory for all tests - createTemporaryPluginFolder(tempDir); -}); - describe('removePlugin', () => { + beforeAll(() => { + // Create temporary directory for all tests + createTemporaryPluginFolder(tempDir); + }); + + afterAll(() => { + // Remove temporary directory + fse.removeSync(tempDir); + }); + describe('Remove Plugin Dependencies', () => { const appPath = paths.resolveTargetRoot('packages', 'app'); const githubDir = paths.resolveTargetRoot('.github'); + it('removes plugin references from /packages/app/package.json', async () => { // Set up test const packageFilePath = path.join(appPath, 'package.json'); @@ -105,7 +110,8 @@ describe('removePlugin', () => { fse.removeSync(testFilePath); } }); - it('removes plugin exports from /packages/app/src/packacge.json', async () => { + + it('removes plugin exports from /packages/app/src/package.json', async () => { const testFilePath = path.join(tempDir, 'test.ts'); const pluginsFilePaths = path.join(appPath, 'src', 'plugins.ts'); createTestPluginFile(testFilePath, pluginsFilePaths); @@ -122,6 +128,7 @@ describe('removePlugin', () => { fse.removeSync(testFilePath); } }); + it('removes codeOwners references', async () => { const testFilePath = path.join(tempDir, 'test'); const codeownersPath = path.join(githubDir, 'CODEOWNERS'); @@ -144,12 +151,14 @@ describe('removePlugin', () => { } }); }); + describe('Remove files', () => { const testDirPath = path.join( paths.resolveTargetRoot(), 'plugins', testPluginName, ); + describe('Removes Plugin Directory', () => { it('removes plugin directory from /plugins', async () => { try { @@ -162,6 +171,7 @@ describe('removePlugin', () => { } }); }); + describe('Removes System Link', () => { it('removes system link from @backstage', async () => { const scopedDir = paths.resolveTargetRoot('node_modules', '@backstage'); @@ -183,8 +193,3 @@ describe('removePlugin', () => { }); }); }); - -afterAll(() => { - // Remove temporary directory - fse.removeSync(tempDir); -}); diff --git a/packages/cli/src/commands/remove-plugin/removePlugin.ts b/packages/cli/src/commands/remove-plugin/removePlugin.ts index 1395384022..643bd599d7 100644 --- a/packages/cli/src/commands/remove-plugin/removePlugin.ts +++ b/packages/cli/src/commands/remove-plugin/removePlugin.ts @@ -20,7 +20,6 @@ import inquirer, { Answers, Question } from 'inquirer'; import { getCodeownersFilePath } from '../../lib/codeowners'; import { paths } from '../../lib/paths'; import { Task } from '../../lib/tasks'; -// import os from 'os'; const BACKSTAGE = '@backstage'; From d47e2287b50a781014c5577b90ea38ad245ca110 Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Fri, 16 Oct 2020 09:54:28 -0400 Subject: [PATCH 126/323] compare -> default; deprecate dailyCost as metric; cleanup --- app-config.yaml | 4 +- .../ExampleCostInsightsClient.ts | 5 +- plugins/cost-insights/README.md | 7 +- .../cost-insights/src/api/CostInsightsApi.ts | 5 +- .../CostInsightsNavigation.test.tsx | 1 + .../CostInsightsPage/CostInsightsPage.tsx | 25 +++--- .../CostOverviewCard/CostOverviewCard.tsx | 37 +++++---- .../CostOverviewCard/CostOverviewChart.tsx | 83 +++++++++---------- .../MetricSelect/MetricSelect.test.tsx | 26 ++---- .../components/MetricSelect/MetricSelect.tsx | 54 ++++++------ plugins/cost-insights/src/hooks/useConfig.tsx | 49 ++++------- .../cost-insights/src/hooks/useFilters.tsx | 7 +- .../src/types/ChangeStatistic.ts | 10 ++- plugins/cost-insights/src/types/Cost.ts | 4 - plugins/cost-insights/src/types/Metric.ts | 6 +- plugins/cost-insights/src/types/MetricData.ts | 25 ++++++ plugins/cost-insights/src/types/index.ts | 1 + plugins/cost-insights/src/utils/config.ts | 32 +++++++ 18 files changed, 196 insertions(+), 185 deletions(-) create mode 100644 plugins/cost-insights/src/types/MetricData.ts create mode 100644 plugins/cost-insights/src/utils/config.ts diff --git a/app-config.yaml b/app-config.yaml index d1414582ed..966f067ff5 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -236,11 +236,9 @@ costInsights: name: Big Query icon: search metrics: - dailyCost: - name: Pied Piper's Daily Cost - compare: DAU DAU: name: Daily Active Users + default: true MSC: name: Monthly Subscribers homepage: diff --git a/packages/app/src/plugins/cost-insights/ExampleCostInsightsClient.ts b/packages/app/src/plugins/cost-insights/ExampleCostInsightsClient.ts index fc2249fadc..0b275baf74 100644 --- a/packages/app/src/plugins/cost-insights/ExampleCostInsightsClient.ts +++ b/packages/app/src/plugins/cost-insights/ExampleCostInsightsClient.ts @@ -117,10 +117,7 @@ export class ExampleCostInsightsClient implements CostInsightsApi { return projects; } - async getMetricData( - metric: string | null, - intervals: string, - ): Promise { + async getMetricData(metric: string, intervals: string): Promise { const aggregation = aggregationFor( durationOf(intervals), 100_000, diff --git a/plugins/cost-insights/README.md b/plugins/cost-insights/README.md index 26f9d9371a..3028d3a09c 100644 --- a/plugins/cost-insights/README.md +++ b/plugins/cost-insights/README.md @@ -79,9 +79,9 @@ costInsights: ### Metrics (Optional) -In the `Cost Overview` panel, users can choose from a dropdown of business metrics to see costs as they relate to a metric, such as daily active users. Metrics must be defined as keys on the `metrics` field. A user-friendly name is **required**. Metrics will be provided to the `getDailyCost` and `getProjectCosts` API methods via the `metric` parameter. +In the `Cost Overview` panel, users can choose from a dropdown of business metrics to see costs as they relate to a metric, such as daily active users. Metrics must be defined as keys on the `metrics` field. A user-friendly name is **required**. Metrics will be provided to the `getMetricData` API method via the `metric` parameter. -**Note:** Cost Insights displays daily cost without a metric by default. The dropdown text for this default can be overridden by assigning it a value on the `dailyCost` field. +An optional `default` field can be set to `true` to set the default comparison metric to daily cost in the Cost Overview panel. ```yaml ## ./app-config.yaml @@ -95,10 +95,9 @@ costInsights: name: Some Other Cloud Product icon: data metrics: - dailyCost: - name: Earth Rotation metricA: name: Metric A ## required + default: true metricB: name: Metric B metricC: diff --git a/plugins/cost-insights/src/api/CostInsightsApi.ts b/plugins/cost-insights/src/api/CostInsightsApi.ts index 52b3f335d9..3136fb4c27 100644 --- a/plugins/cost-insights/src/api/CostInsightsApi.ts +++ b/plugins/cost-insights/src/api/CostInsightsApi.ts @@ -87,7 +87,7 @@ export type CostInsightsApi = { * @param intervals An ISO 8601 repeating interval string, such as R2/P1M/2020-09-01 * https://en.wikipedia.org/wiki/ISO_8601#Repeating_intervals */ - getMetricData(metric: string | null, intervals: string): Promise; + getMetricData(metric: string, intervals: string): Promise; /** * Get cost aggregations for a particular cloud product and interval timeframe. This includes @@ -104,10 +104,9 @@ export type CostInsightsApi = { * @param product The product from the cost-insights configuration in app-config.yaml * @param group * @param duration A time duration, such as P1M. See the Duration type for a detailed explanation - * of how the durations are interpreted in Cost Insights. + * of how the durations are interpreted in Cost Insights. * @param project (optional) The project id from getGroupProjects or query parameters */ - getProductInsights( product: string, group: string, diff --git a/plugins/cost-insights/src/components/CostInsightsNavigation/CostInsightsNavigation.test.tsx b/plugins/cost-insights/src/components/CostInsightsNavigation/CostInsightsNavigation.test.tsx index 3ec2828029..7ca4958c8e 100644 --- a/plugins/cost-insights/src/components/CostInsightsNavigation/CostInsightsNavigation.test.tsx +++ b/plugins/cost-insights/src/components/CostInsightsNavigation/CostInsightsNavigation.test.tsx @@ -40,6 +40,7 @@ const mockMetrics: Metric[] = [ { kind: 'some-metric', name: 'Some Metric', + default: false, }, ]; diff --git a/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsPage.tsx b/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsPage.tsx index 9bc396537b..20f965f1c7 100644 --- a/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsPage.tsx +++ b/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsPage.tsx @@ -101,34 +101,26 @@ const CostInsightsPage = () => { try { if (pageFilters.group) { dispatchLoadingInsights(true); + const intervals = intervalsOf(pageFilters.duration); const [ fetchedProjects, fetchedAlerts, fetchedMetricData, - fetchedCosts, + fetchedDailyCost, ] = await Promise.all([ client.getGroupProjects(pageFilters.group), client.getAlerts(pageFilters.group), pageFilters.metric - ? client.getMetricData( - pageFilters.metric, - intervalsOf(pageFilters.duration), - ) + ? client.getMetricData(pageFilters.metric, intervals) : null, pageFilters.project - ? client.getProjectDailyCost( - pageFilters.project, - intervalsOf(pageFilters.duration), - ) - : client.getGroupDailyCost( - pageFilters.group, - intervalsOf(pageFilters.duration), - ), + ? client.getProjectDailyCost(pageFilters.project, intervals) + : client.getGroupDailyCost(pageFilters.group, intervals), ]); setProjects(fetchedProjects); setAlerts(fetchedAlerts); setMetricData(fetchedMetricData); - setDailyCost(fetchedCosts); + setDailyCost(fetchedDailyCost); } else { dispatchLoadingNone(loadingActions); } @@ -267,7 +259,10 @@ const CostInsightsPage = () => { {!!dailyCost.aggregation.length && ( - + )} diff --git a/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewCard.tsx b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewCard.tsx index daffe335c5..a08e7fc789 100644 --- a/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewCard.tsx +++ b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewCard.tsx @@ -35,10 +35,14 @@ import { } from '../../types'; export type CostOverviewCardProps = { - data: [Cost, MetricData | null]; + dailyCostData: Cost; + metricData: MetricData | null; }; -const CostOverviewCard = ({ data }: CostOverviewCardProps) => { +const CostOverviewCard = ({ + dailyCostData, + metricData, +}: CostOverviewCardProps) => { const theme = useTheme(); const config = useConfig(); const { ScrollAnchor } = useScroll(DefaultNavigation.CostOverviewCard); @@ -46,10 +50,12 @@ const CostOverviewCard = ({ data }: CostOverviewCardProps) => { mapFiltersToProps, ); - // There should always be a daily cost metric but a comparison metric is optional. - const dailyCost = findAlways(config.metrics, m => m.kind === null); - const metric = config.metrics.find(m => m.kind === filters.metric); - const comparedChange = data[1] ? getComparedChange(data[0], data[1]) : null; + const metric = filters.metric + ? findAlways(config.metrics, m => m.kind === filters.metric) + : null; + const comparedChange = metricData + ? getComparedChange(dailyCostData, metricData) + : null; return ( @@ -62,21 +68,18 @@ const CostOverviewCard = ({ data }: CostOverviewCardProps) => { - - {formatPercent(data[0].change.ratio)} + + {formatPercent(dailyCostData.change.ratio)} - {metric && metric.kind && data[1] && comparedChange && ( + {metric && metricData && comparedChange && ( <> - {formatPercent(data[1].change.ratio)} + {formatPercent(metricData.change.ratio)} { )} diff --git a/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewChart.tsx b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewChart.tsx index 40cefbb589..9612589542 100644 --- a/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewChart.tsx +++ b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewChart.tsx @@ -16,7 +16,6 @@ import React from 'react'; import { useTheme } from '@material-ui/core'; import { - AxisDomain, ComposedChart, XAxis, YAxis, @@ -30,6 +29,7 @@ import { import { ChartData, Cost, + Maybe, Metric, MetricData, CostInsightsTheme, @@ -40,71 +40,69 @@ import { } from '../../utils/graphs'; import CostOverviewTooltip from './CostOverviewTooltip'; import { TooltipItemProps } from '../Tooltip'; -import { NULL_METRIC } from '../../hooks/useConfig'; import { useCostOverviewStyles as useStyles } from '../../utils/styles'; import { groupByDate, toDataMax, trendFrom } from '../../utils/charts'; import { aggregationSort } from '../../utils/sort'; type CostOverviewChartProps = { - data: [Cost, MetricData | null]; - name: string; - compare?: Metric; + metric: Maybe; + metricData: Maybe; + dailyCostData: Cost; responsive?: boolean; }; const CostOverviewChart = ({ - data, - name, - compare, + dailyCostData, + metric, + metricData, responsive = true, }: CostOverviewChartProps) => { const theme = useTheme(); const styles = useStyles(theme); - const { dailyCost, metric } = { + const data = { dailyCost: { - id: NULL_METRIC, - name: name, - format: 'number', - data: data[0], + dataKey: 'dailyCost', + name: `Daily Cost`, + format: 'currency', + data: dailyCostData, }, metric: { - id: compare?.kind ?? 'Unknown', - name: compare?.name ?? 'Unknown', - format: data[1]?.format ?? 'number', - data: data[1], + dataKey: metric?.kind ?? 'Unknown', + name: metric?.name ?? 'Unknown', + format: metricData?.format ?? 'number', + data: metricData, }, }; - const metricsByDate = metric.data - ? metric.data.aggregation.reduce(groupByDate, {}) + const metricsByDate = data.metric.data + ? data.metric.data.aggregation.reduce(groupByDate, {}) : {}; - const chartData: ChartData[] = dailyCost - .data!.aggregation.slice() + const chartData: ChartData[] = data.dailyCost.data.aggregation + .slice() .sort(aggregationSort) .map(entry => ({ date: Date.parse(entry.date), - trend: trendFrom(dailyCost.data!.trendline, Date.parse(entry.date)), + trend: trendFrom(data.dailyCost.data.trendline, Date.parse(entry.date)), dailyCost: entry.amount, - ...(metric && metric.data - ? { [metric.id]: metricsByDate[`${entry.date}`] } + ...(metric && data.metric.data + ? { [data.metric.dataKey]: metricsByDate[`${entry.date}`] } : {}), })); - const metricDataMax: AxisDomain = metric - ? toDataMax(metric.id, chartData) - : 'dataMax'; - function tooltipFormatter(payload: TooltipPayload): TooltipItemProps { return { - label: payload.dataKey === dailyCost.id ? dailyCost.name : metric.name, + label: + payload.dataKey === data.dailyCost.dataKey + ? data.dailyCost.name + : data.metric.name, value: - payload.dataKey === dailyCost.id - ? formatGraphValue(payload.value as number, dailyCost.format) - : formatGraphValue(payload.value as number, metric.format), + payload.dataKey === data.dailyCost.dataKey + ? formatGraphValue(payload.value as number, data.dailyCost.format) + : formatGraphValue(payload.value as number, data.metric.format), fill: - payload.dataKey === dailyCost.id + payload.dataKey === data.dailyCost.dataKey ? theme.palette.blue : theme.palette.magenta, }; @@ -131,23 +129,23 @@ const CostOverviewChart = ({ tick={{ fill: styles.axis.fill }} tickFormatter={formatGraphValue} width={styles.yAxis.width} - yAxisId={dailyCost.id} + yAxisId={data.dailyCost.dataKey} /> {metric && ( 0, metricDataMax]} + domain={[() => 0, toDataMax(data.metric.dataKey, chartData)]} width={styles.yAxis.width} - yAxisId={metric.id} + yAxisId={data.metric.dataKey} /> )} {metric && ( )} } diff --git a/plugins/cost-insights/src/components/MetricSelect/MetricSelect.test.tsx b/plugins/cost-insights/src/components/MetricSelect/MetricSelect.test.tsx index 67d1ec3ad3..e78fd77b1a 100644 --- a/plugins/cost-insights/src/components/MetricSelect/MetricSelect.test.tsx +++ b/plugins/cost-insights/src/components/MetricSelect/MetricSelect.test.tsx @@ -23,7 +23,7 @@ describe('', () => { it('should display a metric', async () => { const mockProps: MetricSelectProps = { metric: 'test', - metrics: [{ kind: 'test', name: 'some-name' }], + metrics: [{ kind: 'test', name: 'some-name', default: false }], onSelect: jest.fn(), }; const { getByText } = await renderInTestApp( @@ -32,25 +32,12 @@ describe('', () => { expect(getByText(/some-name/)).toBeInTheDocument(); }); - it('should display a null metric', async () => { - const mockProps: MetricSelectProps = { - metric: null, - metrics: [{ kind: null, name: 'billie-nullish' }], - onSelect: jest.fn(), - }; - const { getByText } = await renderInTestApp( - , - ); - expect(getByText(/billie-nullish/)).toBeInTheDocument(); - }); - it('should display all metrics', async () => { const mockProps: MetricSelectProps = { metric: null, metrics: [ - { kind: null, name: 'billie-nullish' }, - { kind: 'MAU1M', name: 'Cost Per Million MAU' }, - { kind: 'my-cool-metric', name: 'metric-mcmetric-face' }, + { kind: 'DAU', name: 'Daily Active Users', default: true }, + { kind: 'MSC', name: 'Monthly Subscribers', default: false }, ], onSelect: jest.fn(), }; @@ -61,11 +48,10 @@ describe('', () => { UserEvent.click(button); - await waitFor(() => getAllByText(/billie-nullish/)); + await waitFor(() => getAllByText(/None/)); // The active metric should display in the popver list and in the input - expect(getAllByText(/billie-nullish/).length).toBe(2); - expect(getByText(/Cost Per Million MAU/)).toBeInTheDocument(); - expect(getByText(/metric-mcmetric-face/)).toBeInTheDocument(); + expect(getByText(/Daily Active Users/)).toBeInTheDocument(); + expect(getByText(/Monthly Subscribers/)).toBeInTheDocument(); }); }); diff --git a/plugins/cost-insights/src/components/MetricSelect/MetricSelect.tsx b/plugins/cost-insights/src/components/MetricSelect/MetricSelect.tsx index 1d3af911d4..474d8622ea 100644 --- a/plugins/cost-insights/src/components/MetricSelect/MetricSelect.tsx +++ b/plugins/cost-insights/src/components/MetricSelect/MetricSelect.tsx @@ -15,10 +15,9 @@ */ import React from 'react'; -import { Select, MenuItem } from '@material-ui/core'; -import { Maybe, Metric, findAlways } from '../../types'; +import { InputLabel, FormControl, Select, MenuItem } from '@material-ui/core'; +import { Maybe, Metric } from '../../types'; import { useSelectStyles as useStyles } from '../../utils/styles'; -import { NULL_METRIC } from '../../hooks/useConfig'; export type MetricSelectProps = { metric: Maybe; @@ -29,38 +28,37 @@ export type MetricSelectProps = { const MetricSelect = ({ metric, metrics, onSelect }: MetricSelectProps) => { const classes = useStyles(); - const handleOnChange = (e: React.ChangeEvent<{ value: unknown }>) => { - if (e.target.value === NULL_METRIC) { + function onChange(e: React.ChangeEvent<{ value: unknown }>) { + if (e.target.value === 'none') { onSelect(null); } else { onSelect(e.target.value as string); } - }; - - const renderValue = (value: unknown) => { - const kind = (value === NULL_METRIC ? null : value) as Maybe; - const { name } = findAlways(metrics, m => m.kind === kind); - return {name}; - }; + } return ( - + + None - ))} - + {metrics.map((m: Metric) => ( + + {m.name} + + ))} + + ); }; diff --git a/plugins/cost-insights/src/hooks/useConfig.tsx b/plugins/cost-insights/src/hooks/useConfig.tsx index 830cafc4f1..6cbdd1a2ef 100644 --- a/plugins/cost-insights/src/hooks/useConfig.tsx +++ b/plugins/cost-insights/src/hooks/useConfig.tsx @@ -25,12 +25,10 @@ import { useApi, configApiRef } from '@backstage/core'; import { Config as BackstageConfig } from '@backstage/config'; import { Currency, defaultCurrencies, Product, Icon, Metric } from '../types'; import { getIcon } from '../utils/navigation'; - -export const NULL_METRIC = 'dailyCost'; -export const NULL_METRIC_NAME = 'Daily Cost'; +import { validateMetrics } from '../utils/config'; /* - * Config schema 2020-09-28 + * Config schema 2020-10-15 * * costInsights: * engineerCost: 200000 @@ -42,11 +40,9 @@ export const NULL_METRIC_NAME = 'Daily Cost'; * name: Product B * icon: data * metrics: - * dailyCost: - * name: Daily Cost - * compare: metricA * metricA: * name: Metric A + * default: true * metricB: * name: Metric B */ @@ -64,7 +60,7 @@ export const ConfigContext = createContext( ); const defaultState: ConfigContextProps = { - metrics: [{ kind: null, name: NULL_METRIC_NAME }], + metrics: [], products: [], icons: [], engineerCost: 0, @@ -90,9 +86,9 @@ export const ConfigProvider = ({ children }: { children: ReactNode }) => { const metrics = c.getOptionalConfig('costInsights.metrics'); if (metrics) { return metrics.keys().map(key => ({ - kind: key === NULL_METRIC ? null : key, + kind: key, name: metrics.getString(`${key}.name`), - compare: metrics.getOptionalString(`${key}.compare`), + default: metrics.getOptionalBoolean(`${key}.default`) ?? false, })); } @@ -119,23 +115,15 @@ export const ConfigProvider = ({ children }: { children: ReactNode }) => { const engineerCost = getEngineerCost(); const icons = getIcons(); - if (metrics.find((m: Metric) => m.kind === null)) { - setConfig(prevState => ({ - ...prevState, - metrics, - products, - engineerCost, - icons, - })); - } else { - setConfig(prevState => ({ - ...prevState, - metrics: [...prevState.metrics, ...metrics], - products, - engineerCost, - icons, - })); - } + validateMetrics(metrics); + + setConfig(prevState => ({ + ...prevState, + metrics, + products, + engineerCost, + icons, + })); setLoading(false); } @@ -154,12 +142,7 @@ export const ConfigProvider = ({ children }: { children: ReactNode }) => { export function useConfig(): ConfigContextProps { const config = useContext(ConfigContext); - - if (!config) { - assertNever(); - } - - return config; + return config ? config : assertNever(); } function assertNever(): never { diff --git a/plugins/cost-insights/src/hooks/useFilters.tsx b/plugins/cost-insights/src/hooks/useFilters.tsx index 0ad4c24267..7dcf8ddb26 100644 --- a/plugins/cost-insights/src/hooks/useFilters.tsx +++ b/plugins/cost-insights/src/hooks/useFilters.tsx @@ -75,9 +75,8 @@ export const FilterProvider = ({ children }: FilterProviderProps) => { const queryParams = useQueryParams(); const qsRef = useRef(''); const groups = useGroups(); - const { products } = useConfig(); - const defaultProductFilters = products.map(product => ({ + const defaultProductFilters = config.products.map(product => ({ productType: product.kind, duration: Duration.P1M, })); @@ -103,8 +102,8 @@ export const FilterProvider = ({ children }: FilterProviderProps) => { // TODO: Figure out why pageFilters doesn't get updated by the above when groups are loaded. useEffect(() => { const initialState = getInitialPageState(groups, queryParams.pageFilters); - const compared = config.metrics.find(m => m.kind === null)?.compare; - setPageFilters({ ...initialState, metric: compared || null }); + const defaultMetric = config.metrics.find(m => m.default); + setPageFilters({ ...initialState, metric: defaultMetric?.kind ?? null }); }, [groups]); // eslint-disable-line react-hooks/exhaustive-deps useEffect(() => { diff --git a/plugins/cost-insights/src/types/ChangeStatistic.ts b/plugins/cost-insights/src/types/ChangeStatistic.ts index cf7310ef97..cdd2e02da6 100644 --- a/plugins/cost-insights/src/types/ChangeStatistic.ts +++ b/plugins/cost-insights/src/types/ChangeStatistic.ts @@ -15,6 +15,7 @@ */ import { Cost } from './Cost'; +import { MetricData } from './MetricData'; import { aggregationSort } from '../utils/sort'; export interface ChangeStatistic { @@ -51,9 +52,12 @@ export function growthOf(amount: number, ratio: number) { } // Used by for displaying engineer totals -export function getComparedChange(a: Cost, b: Cost): ChangeStatistic { - const ratio = a.change.ratio - b.change.ratio; - const amount = a.aggregation.slice().sort(aggregationSort)[0].amount; +export function getComparedChange( + dailyCost: Cost, + metricData: MetricData, +): ChangeStatistic { + const ratio = dailyCost.change.ratio - metricData.change.ratio; + const amount = dailyCost.aggregation.slice().sort(aggregationSort)[0].amount; return { ratio: ratio, amount: amount * ratio, diff --git a/plugins/cost-insights/src/types/Cost.ts b/plugins/cost-insights/src/types/Cost.ts index 8a9ce3c69b..84a8bfae51 100644 --- a/plugins/cost-insights/src/types/Cost.ts +++ b/plugins/cost-insights/src/types/Cost.ts @@ -24,7 +24,3 @@ export interface Cost { change: ChangeStatistic; trendline: Trendline; } - -export interface MetricData extends Cost { - format: 'number' | 'currency'; -} diff --git a/plugins/cost-insights/src/types/Metric.ts b/plugins/cost-insights/src/types/Metric.ts index 4fa9cd189b..b0a0c9cc76 100644 --- a/plugins/cost-insights/src/types/Metric.ts +++ b/plugins/cost-insights/src/types/Metric.ts @@ -14,10 +14,8 @@ * limitations under the License. */ -import { Maybe } from '../types'; - export type Metric = { - kind: Maybe; + kind: string; name: string; - compare?: string; + default: boolean; }; diff --git a/plugins/cost-insights/src/types/MetricData.ts b/plugins/cost-insights/src/types/MetricData.ts new file mode 100644 index 0000000000..bd3bdde735 --- /dev/null +++ b/plugins/cost-insights/src/types/MetricData.ts @@ -0,0 +1,25 @@ +/* + * 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 { DateAggregation } from './DateAggregation'; +import { ChangeStatistic } from './ChangeStatistic'; + +export interface MetricData { + id: string; + format: 'number' | 'currency'; + aggregation: DateAggregation[]; + change: ChangeStatistic; +} diff --git a/plugins/cost-insights/src/types/index.ts b/plugins/cost-insights/src/types/index.ts index 8523c7db7b..398110ec80 100644 --- a/plugins/cost-insights/src/types/index.ts +++ b/plugins/cost-insights/src/types/index.ts @@ -27,6 +27,7 @@ export * from './Filters'; export * from './Group'; export * from './Loading'; export * from './Maybe'; +export * from './MetricData'; export * from './Metric'; export * from './Product'; export * from './Project'; diff --git a/plugins/cost-insights/src/utils/config.ts b/plugins/cost-insights/src/utils/config.ts new file mode 100644 index 0000000000..c2c2c066d9 --- /dev/null +++ b/plugins/cost-insights/src/utils/config.ts @@ -0,0 +1,32 @@ +/* + * 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 { Metric } from '../types'; + +export function validateMetrics(metrics: Metric[]) { + let defaultMetric = null; + for (const metric of metrics) { + if (metric.default) { + if (defaultMetric) { + throw new Error( + `Cannot set default for multiple metrics: Received: ${defaultMetric.kind} and ${metric.kind}`, + ); + } else { + defaultMetric = metric; + } + } + } +} From 71de0d8aee494c81c8cfe4ab623fd6fcf12a5f74 Mon Sep 17 00:00:00 2001 From: David Tuite Date: Fri, 16 Oct 2020 13:39:15 +0100 Subject: [PATCH 127/323] Add Google Analytics Specity a Google Analytics Tracking ID in the `app-config.yaml` to enable Google Analytics tracking. ``` app: title: baseUrl: googleAnalyticsTrackingId: UA-000000-0 ``` If the `googleAnalyticsTrackingId` is not supplied, no tracking script is added to the application and no tracking can occur. Includes Helm chart changes to allow overriding the GA Tracking ID. --- app-config.yaml | 1 + .../templates/backstage-app-config.yaml | 1 + contrib/chart/backstage/values.yaml | 1 + packages/app/public/index.html | 17 +++++++++++++++++ packages/cli/src/lib/bundler/config.ts | 3 +++ 5 files changed, 23 insertions(+) diff --git a/app-config.yaml b/app-config.yaml index 12fe211a4b..c48265df9e 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -1,6 +1,7 @@ app: title: Backstage Example App baseUrl: http://localhost:7000 + googleAnalyticsTrackingId: # UA-000000-0 backend: baseUrl: http://localhost:7000 diff --git a/contrib/chart/backstage/templates/backstage-app-config.yaml b/contrib/chart/backstage/templates/backstage-app-config.yaml index 061fc3285b..f06e47feab 100644 --- a/contrib/chart/backstage/templates/backstage-app-config.yaml +++ b/contrib/chart/backstage/templates/backstage-app-config.yaml @@ -13,6 +13,7 @@ metadata: data: APP_CONFIG_app_baseUrl: {{ .Values.appConfig.app.baseUrl | quote | quote }} APP_CONFIG_app_title: {{ .Values.appConfig.app.title | quote | quote }} + APP_CONFIG_app_googleAnalyticsTrackingId: {{ .Values.appConfig.app.googleAnalyticsTrackingId | quote | quote }} APP_CONFIG_backend_baseUrl: {{ .Values.appConfig.backend.baseUrl | quote | quote }} APP_CONFIG_backend_cors_origin: {{ .Values.appConfig.backend.cors.origin | quote | quote }} APP_CONFIG_techdocs_storageUrl: {{ .Values.appConfig.techdocs.storageUrl | quote | quote }} diff --git a/contrib/chart/backstage/values.yaml b/contrib/chart/backstage/values.yaml index d51f1016d9..f92e8aad47 100644 --- a/contrib/chart/backstage/values.yaml +++ b/contrib/chart/backstage/values.yaml @@ -86,6 +86,7 @@ appConfig: app: baseUrl: https://demo.example.com title: Backstage + googleAnalyticsTrackingId: backend: baseUrl: https://demo.example.com listen: diff --git a/packages/app/public/index.html b/packages/app/public/index.html index ea9208ca57..77e5c01e19 100644 --- a/packages/app/public/index.html +++ b/packages/app/public/index.html @@ -48,6 +48,23 @@ } <%= app.title %> + + <% if (app.googleAnalyticsTrackingId && typeof app.googleAnalyticsTrackingId + === 'string') { %> + + + <% } %> diff --git a/packages/cli/src/lib/bundler/config.ts b/packages/cli/src/lib/bundler/config.ts index 00a555eebe..34b9f498ad 100644 --- a/packages/cli/src/lib/bundler/config.ts +++ b/packages/cli/src/lib/bundler/config.ts @@ -111,6 +111,9 @@ export async function createConfig( app: { title: options.config.getString('app.title'), baseUrl: validBaseUrl.href, + googleAnalyticsTrackingId: options.config.getOptionalString( + 'app.googleAnalyticsTrackingId', + ), }, }, }), From 1e278d09ad60aad36c4ced7e8cdb6aab43c837ba Mon Sep 17 00:00:00 2001 From: David Tuite Date: Fri, 16 Oct 2020 14:05:59 +0100 Subject: [PATCH 128/323] Add dist-types to .prettierignore --- .prettierignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.prettierignore b/.prettierignore index 4b1acbb594..c4e675a5d7 100644 --- a/.prettierignore +++ b/.prettierignore @@ -6,3 +6,4 @@ coverage templates plugins/scaffolder-backend/sample-templates .vscode +dist-types From 2e1a0b8c99afa8557078afc8ab7102430513e6f7 Mon Sep 17 00:00:00 2001 From: Dominik Henneke Date: Fri, 16 Oct 2020 16:02:08 +0200 Subject: [PATCH 129/323] feat(api-docs): show a custom error page when no apis are implemented by a component (#2933) --- .../MissingImplementsApisEmptyState.tsx | 82 +++++++++++++++++++ .../MissingImplementsApisEmptyState/index.ts | 17 ++++ plugins/api-docs/src/catalog/Router.tsx | 7 +- 3 files changed, 101 insertions(+), 5 deletions(-) create mode 100644 plugins/api-docs/src/catalog/MissingImplementsApisEmptyState/MissingImplementsApisEmptyState.tsx create mode 100644 plugins/api-docs/src/catalog/MissingImplementsApisEmptyState/index.ts diff --git a/plugins/api-docs/src/catalog/MissingImplementsApisEmptyState/MissingImplementsApisEmptyState.tsx b/plugins/api-docs/src/catalog/MissingImplementsApisEmptyState/MissingImplementsApisEmptyState.tsx new file mode 100644 index 0000000000..9160aca514 --- /dev/null +++ b/plugins/api-docs/src/catalog/MissingImplementsApisEmptyState/MissingImplementsApisEmptyState.tsx @@ -0,0 +1,82 @@ +/* + * 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 { Button, makeStyles, Typography } from '@material-ui/core'; +import { BackstageTheme } from '@backstage/theme'; +import { CodeSnippet, EmptyState } from '@backstage/core'; + +const COMPONENT_YAML = `# Example +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: example +spec: + type: service + lifecycle: production + owner: guest + implementsApis: + - example-api +`; + +const useStyles = makeStyles(theme => ({ + code: { + borderRadius: 6, + margin: `${theme.spacing(2)}px 0px`, + background: theme.palette.type === 'dark' ? '#444' : '#fff', + }, +})); + +export const MissingImplementsApisEmptyState = () => { + const classes = useStyles(); + return ( + + Components can implement APIs that are displayed on this page. You + need to fill the implementsApis field to enable this + tool. + + } + action={ + <> + + Link an API to your component as shown in the highlighted example + below: + +
+ +
+ + + } + /> + ); +}; diff --git a/plugins/api-docs/src/catalog/MissingImplementsApisEmptyState/index.ts b/plugins/api-docs/src/catalog/MissingImplementsApisEmptyState/index.ts new file mode 100644 index 0000000000..1b7d35c0a2 --- /dev/null +++ b/plugins/api-docs/src/catalog/MissingImplementsApisEmptyState/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 { MissingImplementsApisEmptyState } from './MissingImplementsApisEmptyState'; diff --git a/plugins/api-docs/src/catalog/Router.tsx b/plugins/api-docs/src/catalog/Router.tsx index 71640954b3..d3fe7f7553 100644 --- a/plugins/api-docs/src/catalog/Router.tsx +++ b/plugins/api-docs/src/catalog/Router.tsx @@ -17,20 +17,17 @@ import React from 'react'; import { Entity } from '@backstage/catalog-model'; import { Route, Routes } from 'react-router'; -import { WarningPanel } from '@backstage/core'; import { catalogRoute } from '../routes'; import { EntityPageApi } from './EntityPageApi'; +import { MissingImplementsApisEmptyState } from './MissingImplementsApisEmptyState'; const isPluginApplicableToEntity = (entity: Entity) => { return ((entity.spec?.implementsApis as string[]) || []).length > 0; }; export const Router = ({ entity }: { entity: Entity }) => - // TODO(shmidt-i): move warning to a separate standardized component !isPluginApplicableToEntity(entity) ? ( - - The entity doesn't implement any APIs. - + ) : ( Date: Fri, 16 Oct 2020 16:09:05 +0200 Subject: [PATCH 130/323] chore(cloudbuild): publish the cloudbuild plugin --- plugins/cloudbuild/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index 6c3ea2ff9a..d36b661664 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -4,7 +4,6 @@ "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", - "private": true, "publishConfig": { "access": "public", "main": "dist/index.esm.js", From a508287b9c36ac0d6664d7837b7aeaa94d42418e Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Fri, 16 Oct 2020 10:30:48 -0400 Subject: [PATCH 131/323] throw errors for multiple defaults --- plugins/cost-insights/src/utils/config.ts | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/plugins/cost-insights/src/utils/config.ts b/plugins/cost-insights/src/utils/config.ts index c2c2c066d9..4af7140d9c 100644 --- a/plugins/cost-insights/src/utils/config.ts +++ b/plugins/cost-insights/src/utils/config.ts @@ -17,16 +17,10 @@ import { Metric } from '../types'; export function validateMetrics(metrics: Metric[]) { - let defaultMetric = null; - for (const metric of metrics) { - if (metric.default) { - if (defaultMetric) { - throw new Error( - `Cannot set default for multiple metrics: Received: ${defaultMetric.kind} and ${metric.kind}`, - ); - } else { - defaultMetric = metric; - } - } + const defaults = metrics.filter(metric => metric.default); + if (defaults.length > 1) { + throw new Error( + `Only one default metric can be set at a time. Found ${defaults.length}`, + ); } } From e62956f96f3fbd4ec13f1829752fd009b807d1e4 Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Fri, 16 Oct 2020 11:02:11 -0400 Subject: [PATCH 132/323] getMetricData -> getDailyMetricData --- .../src/plugins/cost-insights/ExampleCostInsightsClient.ts | 5 ++++- plugins/cost-insights/src/api/CostInsightsApi.ts | 2 +- .../src/components/CostInsightsPage/CostInsightsPage.tsx | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/app/src/plugins/cost-insights/ExampleCostInsightsClient.ts b/packages/app/src/plugins/cost-insights/ExampleCostInsightsClient.ts index 0b275baf74..a6ef15f3b9 100644 --- a/packages/app/src/plugins/cost-insights/ExampleCostInsightsClient.ts +++ b/packages/app/src/plugins/cost-insights/ExampleCostInsightsClient.ts @@ -117,7 +117,10 @@ export class ExampleCostInsightsClient implements CostInsightsApi { return projects; } - async getMetricData(metric: string, intervals: string): Promise { + async getDailyMetricData( + metric: string, + intervals: string, + ): Promise { const aggregation = aggregationFor( durationOf(intervals), 100_000, diff --git a/plugins/cost-insights/src/api/CostInsightsApi.ts b/plugins/cost-insights/src/api/CostInsightsApi.ts index 3136fb4c27..028aead853 100644 --- a/plugins/cost-insights/src/api/CostInsightsApi.ts +++ b/plugins/cost-insights/src/api/CostInsightsApi.ts @@ -87,7 +87,7 @@ export type CostInsightsApi = { * @param intervals An ISO 8601 repeating interval string, such as R2/P1M/2020-09-01 * https://en.wikipedia.org/wiki/ISO_8601#Repeating_intervals */ - getMetricData(metric: string, intervals: string): Promise; + getDailyMetricData(metric: string, intervals: string): Promise; /** * Get cost aggregations for a particular cloud product and interval timeframe. This includes diff --git a/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsPage.tsx b/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsPage.tsx index 20f965f1c7..77d9f5a05e 100644 --- a/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsPage.tsx +++ b/plugins/cost-insights/src/components/CostInsightsPage/CostInsightsPage.tsx @@ -111,7 +111,7 @@ const CostInsightsPage = () => { client.getGroupProjects(pageFilters.group), client.getAlerts(pageFilters.group), pageFilters.metric - ? client.getMetricData(pageFilters.metric, intervals) + ? client.getDailyMetricData(pageFilters.metric, intervals) : null, pageFilters.project ? client.getProjectDailyCost(pageFilters.project, intervals) From 6dba5f6b60ace9113abef852ae2cf24ddfbee368 Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Fri, 16 Oct 2020 11:22:39 -0400 Subject: [PATCH 133/323] update README --- plugins/cost-insights/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/cost-insights/README.md b/plugins/cost-insights/README.md index 3028d3a09c..8c2fd11761 100644 --- a/plugins/cost-insights/README.md +++ b/plugins/cost-insights/README.md @@ -79,7 +79,7 @@ costInsights: ### Metrics (Optional) -In the `Cost Overview` panel, users can choose from a dropdown of business metrics to see costs as they relate to a metric, such as daily active users. Metrics must be defined as keys on the `metrics` field. A user-friendly name is **required**. Metrics will be provided to the `getMetricData` API method via the `metric` parameter. +In the `Cost Overview` panel, users can choose from a dropdown of business metrics to see costs as they relate to a metric, such as daily active users. Metrics must be defined as keys on the `metrics` field. A user-friendly name is **required**. Metrics will be provided to the `getDailyMetricData` API method via the `metric` parameter. An optional `default` field can be set to `true` to set the default comparison metric to daily cost in the Cost Overview panel. From e7d4ac7ce3137a01336c15a12eab46ee66db5f3e Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Fri, 16 Oct 2020 11:23:04 -0400 Subject: [PATCH 134/323] add changeset --- .changeset/red-games-float.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .changeset/red-games-float.md diff --git a/.changeset/red-games-float.md b/.changeset/red-games-float.md new file mode 100644 index 0000000000..6eabba26a4 --- /dev/null +++ b/.changeset/red-games-float.md @@ -0,0 +1,10 @@ +--- +'@backstage/plugin-cost-insights': minor +--- + +- getProjectDailyCost and getGroupDailyCost no longer accept a metric as a parameter +- getDailyMetricData added to API for fetching daily metric data for given interval +- dailyCost removed as configurable metric +- default field added to metric configuration for displaying comparison metric data in top panel +- Metric.kind can no longer be null +- MetricData type added From fc1705050ef8d2312f49c675b7c20aea31f95629 Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Sat, 17 Oct 2020 08:15:31 +0530 Subject: [PATCH 135/323] give aria-label attribute to Status Ok, Warning and Error --- .../core/src/components/Status/Status.tsx | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/core/src/components/Status/Status.tsx b/packages/core/src/components/Status/Status.tsx index 9a5ce5b218..6a2e753f1f 100644 --- a/packages/core/src/components/Status/Status.tsx +++ b/packages/core/src/components/Status/Status.tsx @@ -65,20 +65,34 @@ const useStyles = makeStyles(theme => ({ export const StatusOK: FC<{}> = props => { const classes = useStyles(props); - return ; + return ( + + ); }; export const StatusWarning: FC<{}> = props => { const classes = useStyles(props); return ( - + ); }; export const StatusError: FC<{}> = props => { const classes = useStyles(props); return ( - + ); }; From 754e31db5e0438038105d3d0636afe2fc3e89cbd Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Sat, 17 Oct 2020 08:20:35 +0530 Subject: [PATCH 136/323] add changeset --- .changeset/swift-peas-argue.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/swift-peas-argue.md diff --git a/.changeset/swift-peas-argue.md b/.changeset/swift-peas-argue.md new file mode 100644 index 0000000000..d78d844d45 --- /dev/null +++ b/.changeset/swift-peas-argue.md @@ -0,0 +1,5 @@ +--- +'@backstage/core': patch +--- + +give aria-label attribute to Status Ok, Warning and Error From bb243dca25cf3057297dbfb6a3cbe52289f215c0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 13 Oct 2020 11:46:21 +0200 Subject: [PATCH 137/323] cli: add support for ts4 --- packages/cli/package.json | 4 ++-- packages/docgen/package.json | 2 +- yarn.lock | 16 ++++++++-------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 084254d7ff..ace0639cce 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -84,12 +84,12 @@ "rollup-pluginutils": "^2.8.2", "start-server-webpack-plugin": "^2.2.5", "style-loader": "^1.2.1", - "sucrase": "^3.14.1", + "sucrase": "^3.16.0", "tar": "^6.0.1", "terser-webpack-plugin": "^1.4.3", "ts-jest": "^26.0.0", "ts-loader": "^7.0.4", - "typescript": "^3.9.3", + "typescript": "^4.0.3", "url-loader": "^4.1.0", "webpack": "^4.41.6", "webpack-dev-server": "^3.11.0", diff --git a/packages/docgen/package.json b/packages/docgen/package.json index 61efc0bbd4..7c0bf846bd 100644 --- a/packages/docgen/package.json +++ b/packages/docgen/package.json @@ -31,7 +31,7 @@ "fs-extra": "^9.0.0", "github-slugger": "^1.3.0", "ts-node": "^8.6.2", - "typescript": "^3.9.3" + "typescript": "^4.0.3" }, "devDependencies": { "@types/fs-extra": "^9.0.1", diff --git a/yarn.lock b/yarn.lock index 4d28072207..9a5bd93ffb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21732,10 +21732,10 @@ subscriptions-transport-ws@^0.9.11, subscriptions-transport-ws@^0.9.16: symbol-observable "^1.0.4" ws "^5.2.0" -sucrase@^3.14.1: - version "3.15.0" - resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.15.0.tgz#78596a78be7264a65b52ed8d873883413ef0220c" - integrity sha512-05TJOUfMgckH7wKqfk/1p4G6q16nIeW/GHQwD44vkT0mQMqqzgfHCwkX3whNmwyOo7nVF0jDLwVu/qOBTtsscw== +sucrase@^3.16.0: + version "3.16.0" + resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.16.0.tgz#19b5b886ccca270dd5ca12ff060eeaf0b599735f" + integrity sha512-ovVuswxV5TayCPXfTk8bgBgk6uNRvsinIkEpq0J6zS1xXCx5N/LLGcbsKdRhqn/ToZylMX6+yXaR1LSn1I42Pg== dependencies: commander "^4.0.0" glob "7.1.6" @@ -22702,10 +22702,10 @@ typedarray@^0.0.6: resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^3.9.3: - version "3.9.7" - resolved "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" - integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== +typescript@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.0.3.tgz#153bbd468ef07725c1df9c77e8b453f8d36abba5" + integrity sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg== ua-parser-js@^0.7.18: version "0.7.21" From 9f3ddfacdeed708755b98a0964c936eed6f23b09 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 17 Oct 2020 14:44:02 +0200 Subject: [PATCH 138/323] cli: split and bump eslint dependencies + fix issues --- .../src/database/config.test.ts | 2 +- .../src/database/connection.test.ts | 2 +- .../src/database/postgres.test.ts | 10 +- .../src/database/sqlite3.test.ts | 4 +- packages/backend-common/src/paths.ts | 2 - packages/cli/package.json | 11 +- packages/cli/src/lib/parallel.test.ts | 4 +- packages/techdocs-cli/package.json | 6 +- .../processors/CodeOwnersProcessor.test.ts | 18 +- .../src/components/BarChart/BarChart.test.tsx | 14 +- .../ProjectSelect/ProjectSelect.test.tsx | 7 +- .../src/components/AuditView/index.test.tsx | 4 +- .../src/hooks/useWebsiteForEntity.test.tsx | 2 +- .../RegisterComponentForm.test.tsx | 2 +- yarn.lock | 190 ++++++++++-------- 15 files changed, 157 insertions(+), 121 deletions(-) diff --git a/packages/backend-common/src/database/config.test.ts b/packages/backend-common/src/database/config.test.ts index c9a4107686..eb26013b4b 100644 --- a/packages/backend-common/src/database/config.test.ts +++ b/packages/backend-common/src/database/config.test.ts @@ -17,7 +17,7 @@ import { mergeDatabaseConfig } from './config'; describe('config', () => { - describe(mergeDatabaseConfig, () => { + describe('mergeDatabaseConfig', () => { it('does not mutate the input object', () => { const input = { original: 'key', diff --git a/packages/backend-common/src/database/connection.test.ts b/packages/backend-common/src/database/connection.test.ts index 2cc3a54e06..de0b0e40dc 100644 --- a/packages/backend-common/src/database/connection.test.ts +++ b/packages/backend-common/src/database/connection.test.ts @@ -26,7 +26,7 @@ describe('database connection', () => { }, ]); - describe(createDatabaseClient, () => { + describe('createDatabaseClient', () => { it('returns a postgres connection', () => { expect( createDatabaseClient( diff --git a/packages/backend-common/src/database/postgres.test.ts b/packages/backend-common/src/database/postgres.test.ts index 82161dc53c..8d139e4481 100644 --- a/packages/backend-common/src/database/postgres.test.ts +++ b/packages/backend-common/src/database/postgres.test.ts @@ -44,7 +44,7 @@ describe('postgres', () => { }, ]); - describe(buildPgDatabaseConfig, () => { + describe('buildPgDatabaseConfig', () => { it('builds a postgres config', () => { const mockConnection = createMockConnection(); @@ -125,7 +125,7 @@ describe('postgres', () => { }); }); - describe(getPgConnectionConfig, () => { + describe('getPgConnectionConfig', () => { it('returns the connection object back', () => { const mockConnection = createMockConnection(); const config = createConfig(mockConnection); @@ -163,7 +163,7 @@ describe('postgres', () => { }); }); - describe(createPgDatabaseClient, () => { + describe('createPgDatabaseClient', () => { it('creates a postgres knex instance', () => { expect( createPgDatabaseClient( @@ -188,8 +188,8 @@ describe('postgres', () => { }); }); - describe(parsePgConnectionString, () => { - it('parses a connection string uri ', () => { + describe('parsePgConnectionString', () => { + it('parses a connection string uri', () => { expect( parsePgConnectionString( 'postgresql://postgres:pass@foobar:5432/dbname?ssl=true', diff --git a/packages/backend-common/src/database/sqlite3.test.ts b/packages/backend-common/src/database/sqlite3.test.ts index dbff5ee354..a3ab331c2d 100644 --- a/packages/backend-common/src/database/sqlite3.test.ts +++ b/packages/backend-common/src/database/sqlite3.test.ts @@ -32,7 +32,7 @@ describe('sqlite3', () => { }, ]); - describe(buildSqliteDatabaseConfig, () => { + describe('buildSqliteDatabaseConfig', () => { it('buidls a string connection', () => { expect(buildSqliteDatabaseConfig(createConfig(':memory:'))).toEqual({ client: 'sqlite3', @@ -72,7 +72,7 @@ describe('sqlite3', () => { }); }); - describe(createSqliteDatabaseClient, () => { + describe('createSqliteDatabaseClient', () => { it('creates an in memory knex instance', () => { expect( createSqliteDatabaseClient( diff --git a/packages/backend-common/src/paths.ts b/packages/backend-common/src/paths.ts index 402c0e2252..262be366f6 100644 --- a/packages/backend-common/src/paths.ts +++ b/packages/backend-common/src/paths.ts @@ -14,8 +14,6 @@ * limitations under the License. */ -/* eslint-disable @typescript-eslint/camelcase */ - import { resolve as resolvePath } from 'path'; /** diff --git a/packages/cli/package.json b/packages/cli/package.json index ace0639cce..74cbbfff6a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -38,7 +38,9 @@ "@rollup/plugin-json": "^4.0.2", "@rollup/plugin-node-resolve": "^8.1.0", "@rollup/plugin-yaml": "^2.1.1", - "@spotify/eslint-config": "^7.0.1", + "@spotify/eslint-config-base": "^8.0.0", + "@spotify/eslint-config-react": "^8.0.0", + "@spotify/eslint-config-typescript": "^8.0.0", "@sucrase/webpack-loader": "^2.0.0", "@svgr/plugin-jsx": "5.4.x", "@svgr/plugin-svgo": "5.4.x", @@ -47,6 +49,8 @@ "@types/start-server-webpack-plugin": "^2.2.0", "@types/webpack-env": "^1.15.2", "@types/webpack-node-externals": "^2.5.0", + "@typescript-eslint/eslint-plugin": "^v3.10.1", + "@typescript-eslint/parser": "^v3.10.1", "bfj": "^7.0.2", "chalk": "^4.0.0", "chokidar": "^3.3.1", @@ -56,9 +60,14 @@ "diff": "^4.0.2", "esbuild": "^0.7.7", "eslint": "^7.1.0", + "eslint-config-prettier": "^6.0.0", "eslint-formatter-friendly": "^7.0.0", "eslint-plugin-import": "^2.20.2", + "eslint-plugin-jest": "^24.1.0", + "eslint-plugin-jsx-a11y": "^6.2.1", "eslint-plugin-monorepo": "^0.2.1", + "eslint-plugin-react": "^7.12.4", + "eslint-plugin-react-hooks": "^4.0.0", "fork-ts-checker-webpack-plugin": "^4.0.5", "fs-extra": "^9.0.0", "handlebars": "^4.7.3", diff --git a/packages/cli/src/lib/parallel.test.ts b/packages/cli/src/lib/parallel.test.ts index c8173603d9..8047774a6e 100644 --- a/packages/cli/src/lib/parallel.test.ts +++ b/packages/cli/src/lib/parallel.test.ts @@ -17,7 +17,7 @@ import { isParallelDefault, parseParallel } from './parallel'; describe('parallel', () => { - describe(parseParallel, () => { + describe('parseParallel', () => { it('coerces "false" string to boolean', () => { expect(parseParallel('false')).toBeFalsy(); }); @@ -44,7 +44,7 @@ describe('parallel', () => { }); }); - describe(isParallelDefault, () => { + describe('isParallelDefault', () => { it('returns true if default value', () => { expect(isParallelDefault(undefined)).toBeTruthy(); expect(isParallelDefault(true)).toBeTruthy(); diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index adce3dd101..30ca6e4538 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -28,11 +28,7 @@ "techdocs-cli": "bin/techdocs-cli" }, "devDependencies": { - "@spotify/eslint-config": "^7.0.0", - "@spotify/prettier-config": "^7.0.0", - "@types/serve-handler": "^6.1.0", - "eslint": "^7.1.0", - "eslint-plugin-import": "^2.22.0" + "@types/serve-handler": "^6.1.0" }, "files": [ "bin", diff --git a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts index c1c83b7c6c..e1bd5bcb46 100644 --- a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts @@ -27,7 +27,7 @@ import { resolveCodeOwner, } from './CodeOwnersProcessor'; -describe(CodeOwnersProcessor, () => { +describe('CodeOwnersProcessor', () => { const mockUrl = ({ basePath = '' } = {}): string => `https://github.com/spotify/backstage/blob/master/${basePath}catalog-info.yaml`; const mockLocation = ({ @@ -79,7 +79,7 @@ describe(CodeOwnersProcessor, () => { return data; }; - describe(buildUrl, () => { + describe('buildUrl', () => { it.each([['azure.com'], ['dev.azure.com']])( 'should throw not implemented error', source => { @@ -99,7 +99,7 @@ describe(CodeOwnersProcessor, () => { }); }); - describe(buildCodeOwnerUrl, () => { + describe('buildCodeOwnerUrl', () => { it('should build a location spec to the codeowners', () => { expect(buildCodeOwnerUrl(mockUrl(), '/docs/CODEOWNERS')).toEqual( 'https://github.com/spotify/backstage/blob/master/docs/CODEOWNERS', @@ -116,13 +116,13 @@ describe(CodeOwnersProcessor, () => { }); }); - describe(parseCodeOwners, () => { + describe('parseCodeOwners', () => { it('should parse the codeowners file', () => { expect(parseCodeOwners(mockCodeOwnersText())).toEqual(mockCodeOwners()); }); }); - describe(normalizeCodeOwner, () => { + describe('normalizeCodeOwner', () => { it('should remove org from org/team format', () => { expect(normalizeCodeOwner('@acme/foo')).toBe('foo'); }); @@ -139,13 +139,13 @@ describe(CodeOwnersProcessor, () => { ); }); - describe(findPrimaryCodeOwner, () => { + describe('findPrimaryCodeOwner', () => { it('should return the primary owner', () => { expect(findPrimaryCodeOwner(mockCodeOwners())).toBe('backstage-core'); }); }); - describe(findRawCodeOwners, () => { + describe('findRawCodeOwners', () => { it('should return found codeowner', async () => { const ownersText = mockCodeOwnersText(); const read = jest @@ -184,7 +184,7 @@ describe(CodeOwnersProcessor, () => { }); }); - describe(resolveCodeOwner, () => { + describe('resolveCodeOwner', () => { it('should return found codeowner', async () => { const read = jest .fn() @@ -207,7 +207,7 @@ describe(CodeOwnersProcessor, () => { }); }); - describe(CodeOwnersProcessor, () => { + describe('CodeOwnersProcessor', () => { const setupTest = ({ kind = 'Component', spec = {} } = {}) => { const entity = { kind, spec }; const read = jest diff --git a/plugins/cost-insights/src/components/BarChart/BarChart.test.tsx b/plugins/cost-insights/src/components/BarChart/BarChart.test.tsx index a39c5bafc2..737b86018c 100644 --- a/plugins/cost-insights/src/components/BarChart/BarChart.test.tsx +++ b/plugins/cost-insights/src/components/BarChart/BarChart.test.tsx @@ -79,12 +79,14 @@ describe('', () => { it('Should display only 6 resources by default, sorted by cost', async () => { const rendered = await renderWithProps({} as BarChartProps); - MockResources.sort(resourceSort).forEach((resource, index) => { - if (index < 6) { - expect(rendered.getByText(resource.name!)).toBeInTheDocument(); - } else { - expect(rendered.queryByText(resource.name!)).not.toBeInTheDocument(); - } + const sorted = MockResources.sort(resourceSort); + + expect(sorted.length).toBe(10); + sorted.slice(0, 6).forEach(resource => { + expect(rendered.getByText(resource.name!)).toBeInTheDocument(); + }); + sorted.slice(6).forEach(resource => { + expect(rendered.queryByText(resource.name!)).not.toBeInTheDocument(); }); }); diff --git a/plugins/cost-insights/src/components/ProjectSelect/ProjectSelect.test.tsx b/plugins/cost-insights/src/components/ProjectSelect/ProjectSelect.test.tsx index 92de819fe0..a74c79f3b8 100644 --- a/plugins/cost-insights/src/components/ProjectSelect/ProjectSelect.test.tsx +++ b/plugins/cost-insights/src/components/ProjectSelect/ProjectSelect.test.tsx @@ -59,10 +59,9 @@ describe('', () => { const button = getByRole(projectSelectContainer, 'button'); UserEvent.click(button); await waitFor(() => rendered.getByTestId('option-all')); - mockProjects.forEach( - project => - project.id && - expect(rendered.getByText(project.id)).toBeInTheDocument(), + + mockProjects.forEach(project => + expect(rendered.getByText(project.id)).toBeInTheDocument(), ); }); }); diff --git a/plugins/lighthouse/src/components/AuditView/index.test.tsx b/plugins/lighthouse/src/components/AuditView/index.test.tsx index 742be67fed..ca292a133d 100644 --- a/plugins/lighthouse/src/components/AuditView/index.test.tsx +++ b/plugins/lighthouse/src/components/AuditView/index.test.tsx @@ -163,7 +163,7 @@ describe('AuditView', () => { }); describe('when the request for the website by id is pending', () => { - it('it shows the loading', async () => { + it('shows the loading', async () => { mockFetch.mockImplementationOnce(() => new Promise(() => {})); const rendered = render( wrapInTestApp( @@ -177,7 +177,7 @@ describe('AuditView', () => { }); describe('when the request for the website by id fails', () => { - it('it shows an error', async () => { + it('shows an error', async () => { mockFetch.mockRejectOnce(new Error('failed to fetch')); const rendered = render( wrapInTestApp( diff --git a/plugins/lighthouse/src/hooks/useWebsiteForEntity.test.tsx b/plugins/lighthouse/src/hooks/useWebsiteForEntity.test.tsx index 868e26f04c..580162f182 100644 --- a/plugins/lighthouse/src/hooks/useWebsiteForEntity.test.tsx +++ b/plugins/lighthouse/src/hooks/useWebsiteForEntity.test.tsx @@ -75,7 +75,7 @@ describe('useWebsiteForEntity', () => { (mockLighthouseApi.getWebsiteByUrl as jest.Mock).mockResolvedValue(website); }); - it('returns the lighthouse information for the website url in annotations ', async () => { + it('returns the lighthouse information for the website url in annotations', async () => { const { result, waitForNextUpdate } = subject(); await waitForNextUpdate(); expect(result.current?.value).toBe(website); diff --git a/plugins/register-component/src/components/RegisterComponentForm/RegisterComponentForm.test.tsx b/plugins/register-component/src/components/RegisterComponentForm/RegisterComponentForm.test.tsx index 10c3d9fcd1..875b1f8660 100644 --- a/plugins/register-component/src/components/RegisterComponentForm/RegisterComponentForm.test.tsx +++ b/plugins/register-component/src/components/RegisterComponentForm/RegisterComponentForm.test.tsx @@ -30,7 +30,7 @@ describe('RegisterComponentForm', () => { expect(screen.getByText('Submit').closest('button')).toBeDisabled(); }); - it('should enable a submit button when the target url is set ', async () => { + it('should enable a submit button when the target url is set', async () => { render(); await act(async () => { diff --git a/yarn.lock b/yarn.lock index 9a5bd93ffb..168da27a6f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3802,10 +3802,10 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@spotify/eslint-config-base@^7.0.0": - version "7.0.0" - resolved "https://registry.npmjs.org/@spotify/eslint-config-base/-/eslint-config-base-7.0.0.tgz#36804ae09ec938f1aa5f9464ea993f3f151cfaa8" - integrity sha512-XRTrTRyRRYBxPYINKNHw4B8QWlA3p4I+id/Po2sMdejtXH3LZgDgIjdschUZSdQ6J6dVYDdaVykdizRM9I+G6Q== +"@spotify/eslint-config-base@^8.0.0": + version "8.0.0" + resolved "https://registry.npmjs.org/@spotify/eslint-config-base/-/eslint-config-base-8.0.0.tgz#c3d10d8a05ad9129d579952cb80063e4c4fa216e" + integrity sha512-07Fo+KoTMl4AaZJPD6deFnYmG634wzgeqfFcWdFlIrOLAasvWSH8Lp6ZE9cJBKuffOAy8kuEE1SwFo34+5X8bQ== "@spotify/eslint-config-oss@^1.0.1": version "1.0.2" @@ -3814,51 +3814,21 @@ dependencies: eslint-plugin-notice "^0.9.10" -"@spotify/eslint-config-react@^7.0.1": - version "7.0.1" - resolved "https://registry.npmjs.org/@spotify/eslint-config-react/-/eslint-config-react-7.0.1.tgz#2e70de9d7911ea9aeaa55a83a332220a28f6c431" - integrity sha512-HNDHvm19EaBXiDgsg52mjMgKWZTeA0hO2Q75ACNwb8UtjIKkANqyyuzyDGo8jiGMbWIm6wJjShlRtT95emNlqQ== +"@spotify/eslint-config-react@^8.0.0": + version "8.0.2" + resolved "https://registry.npmjs.org/@spotify/eslint-config-react/-/eslint-config-react-8.0.2.tgz#91af3c58b22d49a96795336ed66927e722cda430" + integrity sha512-V0gzO/jWmjhODLINAfeunHj+OBdj/cQeVDw+92ZUlkonAg6BZLjX6Vy8jeIUFjfgmVOtI9eKbcApxaurj1jN6g== -"@spotify/eslint-config-typescript@^7.0.0": - version "7.0.0" - resolved "https://registry.npmjs.org/@spotify/eslint-config-typescript/-/eslint-config-typescript-7.0.0.tgz#fc5227e3344f74b41ac3a530df24a95ac13254e4" - integrity sha512-28I/SAf68NKbWZ5IY0WYMa0D18PxWdC9DP9gRbOTlZufmsS8jEgqf3zBUWmP6XOf1nihpKWcqvbFUG5H7/JYXA== - -"@spotify/eslint-config@^7.0.0", "@spotify/eslint-config@^7.0.1": - version "7.0.1" - resolved "https://registry.npmjs.org/@spotify/eslint-config/-/eslint-config-7.0.1.tgz#07a21cfd7fce89cfc2c6dd5ea5d747e741201b66" - integrity sha512-8GI/TZGUhS4pr7oipT2MjrZFRgXcKzk9YImEusUdD2f5vlCniRFIBQNrvTMkyjfdQqvIVqJPLcdVPXeAgprsMw== - dependencies: - "@spotify/eslint-config-base" "^7.0.0" - "@spotify/eslint-config-react" "^7.0.1" - "@spotify/eslint-config-typescript" "^7.0.0" - "@spotify/web-scripts-utils" "^7.0.0" - "@typescript-eslint/eslint-plugin" "^2.14.0" - "@typescript-eslint/parser" "^2.14.0" - eslint-config-prettier "^6.0.0" - eslint-plugin-jest "^23.6.0" - eslint-plugin-jsx-a11y "^6.2.1" - eslint-plugin-react "^7.12.4" - eslint-plugin-react-hooks "^4.0.0" - -"@spotify/prettier-config@^7.0.0": - version "7.0.0" - resolved "https://registry.npmjs.org/@spotify/prettier-config/-/prettier-config-7.0.0.tgz#47750979d1282197295108b6958360660a955c16" - integrity sha512-lIMcx/2oDqTtW84iHKkRJe+8U6HK6GPwWH5sJp9UEHcDpdXomOQYvwcGXy2I2zwPQQ14gYYE6nEJuSnnYqsYRw== +"@spotify/eslint-config-typescript@^8.0.0": + version "8.1.1" + resolved "https://registry.npmjs.org/@spotify/eslint-config-typescript/-/eslint-config-typescript-8.1.1.tgz#a8c6f74ef9445fe740008ae3a26003a2eef78f93" + integrity sha512-0NkE6ZiSRf9IBWwCxzn/l7UdwcL/KZsbzjjOSweafyYueajEn+eIpKjOgDGUL/ebxSrOtjEp+YeFc4lSPkP0qg== "@spotify/prettier-config@^8.0.0": version "8.0.0" resolved "https://registry.npmjs.org/@spotify/prettier-config/-/prettier-config-8.0.0.tgz#8b6c2bd579ddc54887155a0721fe04e96c89f7f2" integrity sha512-so8w32ZV42CHWxOEXcBtbNO/hLXFrQNXVmhfzhUI6dVB9cq2xjRaiqu8GjFj8LvKbWpPj+S+KwTIS4aDVWqrFQ== -"@spotify/web-scripts-utils@^7.0.0": - version "7.0.0" - resolved "https://registry.npmjs.org/@spotify/web-scripts-utils/-/web-scripts-utils-7.0.0.tgz#8c6b8039fc645a36ac48629eb9ba06600f4d828a" - integrity sha512-McMy0j60lxOHjgDjegthZqEWN/PabphiM30A/mI/Y7xh9+JFnYWBTSm/wgn6EW2BsPpV631xSYYkk6B1Ph14Fw== - dependencies: - glob "^7.1.4" - read-pkg-up "^7.0.1" - "@storybook/addon-actions@^6.0.21": version "6.0.21" resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.0.21.tgz#0de1d109d4b1eb99f644bbe84e74c25cfd2b1b6b" @@ -5830,49 +5800,113 @@ resolved "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.0.tgz#8b63ab7f1aa5321248aad5ac890a485656dcea4d" integrity sha512-te5lMAWii1uEJ4FwLjzdlbw3+n0FZNOvFXHxQDKeT0dilh7HOzdMzV2TrJVUzq8ep7J4Na8OUYPRLSQkJHAlrg== -"@typescript-eslint/eslint-plugin@^2.14.0": - version "2.24.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.24.0.tgz#a86cf618c965a462cddf3601f594544b134d6d68" - integrity sha512-wJRBeaMeT7RLQ27UQkDFOu25MqFOBus8PtOa9KaT5ZuxC1kAsd7JEHqWt4YXuY9eancX0GK9C68i5OROnlIzBA== +"@typescript-eslint/eslint-plugin@^v3.10.1": + version "3.10.1" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz#7e061338a1383f59edc204c605899f93dc2e2c8f" + integrity sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ== dependencies: - "@typescript-eslint/experimental-utils" "2.24.0" - eslint-utils "^1.4.3" + "@typescript-eslint/experimental-utils" "3.10.1" + debug "^4.1.1" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" + semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.24.0", "@typescript-eslint/experimental-utils@^2.5.0": - version "2.24.0" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.24.0.tgz#a5cb2ed89fedf8b59638dc83484eb0c8c35e1143" - integrity sha512-DXrwuXTdVh3ycNCMYmWhUzn/gfqu9N0VzNnahjiDJvcyhfBy4gb59ncVZVxdp5XzBC77dCncu0daQgOkbvPwBw== +"@typescript-eslint/experimental-utils@3.10.1": + version "3.10.1" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" + integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.24.0" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" eslint-scope "^5.0.0" + eslint-utils "^2.0.0" -"@typescript-eslint/parser@^2.14.0": - version "2.24.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.24.0.tgz#2cf0eae6e6dd44d162486ad949c126b887f11eb8" - integrity sha512-H2Y7uacwSSg8IbVxdYExSI3T7uM1DzmOn2COGtCahCC3g8YtM1xYAPi2MAHyfPs61VKxP/J/UiSctcRgw4G8aw== +"@typescript-eslint/experimental-utils@^4.0.1": + version "4.4.1" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.4.1.tgz#40613b9757fa0170de3e0043254dbb077cafac0c" + integrity sha512-Nt4EVlb1mqExW9cWhpV6pd1a3DkUbX9DeyYsdoeziKOpIJ04S2KMVDO+SEidsXRH/XHDpbzXykKcMTLdTXH6cQ== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/scope-manager" "4.4.1" + "@typescript-eslint/types" "4.4.1" + "@typescript-eslint/typescript-estree" "4.4.1" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@^v3.10.1": + version "3.10.1" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz#1883858e83e8b442627e1ac6f408925211155467" + integrity sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.24.0" - "@typescript-eslint/typescript-estree" "2.24.0" + "@typescript-eslint/experimental-utils" "3.10.1" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.24.0": - version "2.24.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.24.0.tgz#38bbc8bb479790d2f324797ffbcdb346d897c62a" - integrity sha512-RJ0yMe5owMSix55qX7Mi9V6z2FDuuDpN6eR5fzRJrp+8in9UF41IGNQHbg5aMK4/PjVaEQksLvz0IA8n+Mr/FA== +"@typescript-eslint/scope-manager@4.4.1": + version "4.4.1" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.4.1.tgz#d19447e60db2ce9c425898d62fa03b2cce8ea3f9" + integrity sha512-2oD/ZqD4Gj41UdFeWZxegH3cVEEH/Z6Bhr/XvwTtGv66737XkR4C9IqEkebCuqArqBJQSj4AgNHHiN1okzD/wQ== dependencies: + "@typescript-eslint/types" "4.4.1" + "@typescript-eslint/visitor-keys" "4.4.1" + +"@typescript-eslint/types@3.10.1": + version "3.10.1" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" + integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== + +"@typescript-eslint/types@4.4.1": + version "4.4.1" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.4.1.tgz#c507b35cf523bc7ba00aae5f75ee9b810cdabbc1" + integrity sha512-KNDfH2bCyax5db+KKIZT4rfA8rEk5N0EJ8P0T5AJjo5xrV26UAzaiqoJCxeaibqc0c/IvZxp7v2g3difn2Pn3w== + +"@typescript-eslint/typescript-estree@3.10.1": + version "3.10.1" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" + integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== + dependencies: + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/visitor-keys" "3.10.1" debug "^4.1.1" - eslint-visitor-keys "^1.1.0" glob "^7.1.6" is-glob "^4.0.1" lodash "^4.17.15" - semver "^6.3.0" + semver "^7.3.2" tsutils "^3.17.1" +"@typescript-eslint/typescript-estree@4.4.1": + version "4.4.1" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.4.1.tgz#598f6de488106c2587d47ca2462c60f6e2797cb8" + integrity sha512-wP/V7ScKzgSdtcY1a0pZYBoCxrCstLrgRQ2O9MmCUZDtmgxCO/TCqOTGRVwpP4/2hVfqMz/Vw1ZYrG8cVxvN3g== + dependencies: + "@typescript-eslint/types" "4.4.1" + "@typescript-eslint/visitor-keys" "4.4.1" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/visitor-keys@3.10.1": + version "3.10.1" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" + integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== + dependencies: + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/visitor-keys@4.4.1": + version "4.4.1" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.4.1.tgz#1769dc7a9e2d7d2cfd3318b77ed8249187aed5c3" + integrity sha512-H2JMWhLaJNeaylSnMSQFEhT/S/FsJbebQALmoJxMPMxLtlVAMy2uJP/Z543n9IizhjRayLSqoInehCeNW9rWcw== + dependencies: + "@typescript-eslint/types" "4.4.1" + eslint-visitor-keys "^2.0.0" + "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" @@ -10677,7 +10711,7 @@ eslint-plugin-graphql@^4.0.0: lodash.flatten "^4.4.0" lodash.without "^4.4.0" -eslint-plugin-import@^2.20.2, eslint-plugin-import@^2.22.0: +eslint-plugin-import@^2.20.2: version "2.22.0" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e" integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== @@ -10696,12 +10730,12 @@ eslint-plugin-import@^2.20.2, eslint-plugin-import@^2.22.0: resolve "^1.17.0" tsconfig-paths "^3.9.0" -eslint-plugin-jest@^23.6.0: - version "23.8.2" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-23.8.2.tgz#6f28b41c67ef635f803ebd9e168f6b73858eb8d4" - integrity sha512-xwbnvOsotSV27MtAe7s8uGWOori0nUsrXh2f1EnpmXua8sDfY6VZhHAhHg2sqK7HBNycRQExF074XSZ7DvfoFg== +eslint-plugin-jest@^24.1.0: + version "24.1.0" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.1.0.tgz#6708037d7602e5288ce877fd0103f329dc978361" + integrity sha512-827YJ+E8B9PvXu/0eiVSNFfxxndbKv+qE/3GSMhdorCaeaOehtqHGX2YDW9B85TEOre9n/zscledkFW/KbnyGg== dependencies: - "@typescript-eslint/experimental-utils" "^2.5.0" + "@typescript-eslint/experimental-utils" "^4.0.1" eslint-plugin-jsx-a11y@^6.2.1: version "6.2.3" @@ -10779,13 +10813,6 @@ eslint-scope@^5.0.0, eslint-scope@^5.1.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - eslint-utils@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" @@ -10798,6 +10825,11 @@ eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.2.0: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.2.0.tgz#74415ac884874495f78ec2a97349525344c981fa" integrity sha512-WFb4ihckKil6hu3Dp798xdzSfddwKKU3+nGniKF6HfeW6OLd2OUDEPP7TcHtB5+QXOKg2s6B2DaMPE1Nn/kxKQ== +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + eslint@^7.1.0: version "7.4.0" resolved "https://registry.npmjs.org/eslint/-/eslint-7.4.0.tgz#4e35a2697e6c1972f9d6ef2b690ad319f80f206f" @@ -12189,7 +12221,7 @@ globalthis@^1.0.0: dependencies: define-properties "^1.1.3" -globby@11.0.1, globby@^11.0.0: +globby@11.0.1, globby@^11.0.0, globby@^11.0.1: version "11.0.1" resolved "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== From e4d0aa4609a9bd3ce62044a28efec9707499f840 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 17 Oct 2020 15:11:28 +0200 Subject: [PATCH 139/323] docgen: fix duplicate help text --- packages/docgen/src/index.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/docgen/src/index.ts b/packages/docgen/src/index.ts index f41629e7fd..4b69fdbe01 100644 --- a/packages/docgen/src/index.ts +++ b/packages/docgen/src/index.ts @@ -49,10 +49,6 @@ const main = (argv: string[]) => { process.exit(1); }); - if (!process.argv.slice(2).length) { - program.outputHelp(chalk.yellow); - } - program.parse(argv); }; From 547cd78456053837c173f654aad222a41a6168a1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 13 Oct 2020 11:47:50 +0200 Subject: [PATCH 140/323] contrib/kubernetes: added plain single pod deployment example --- .github/styles/vocab.txt | 1 + .../plain_single_backend_deplyoment/README.md | 42 +++++++ .../deployment.yaml | 108 ++++++++++++++++++ 3 files changed, 151 insertions(+) create mode 100644 contrib/kubernetes/plain_single_backend_deplyoment/README.md create mode 100644 contrib/kubernetes/plain_single_backend_deplyoment/deployment.yaml diff --git a/.github/styles/vocab.txt b/.github/styles/vocab.txt index 6a2eecdee0..40346fc0e8 100644 --- a/.github/styles/vocab.txt +++ b/.github/styles/vocab.txt @@ -105,6 +105,7 @@ Monorepo monorepos msw namespace +namespaces Namespaces neuro newrelic diff --git a/contrib/kubernetes/plain_single_backend_deplyoment/README.md b/contrib/kubernetes/plain_single_backend_deplyoment/README.md new file mode 100644 index 0000000000..685bed92a5 --- /dev/null +++ b/contrib/kubernetes/plain_single_backend_deplyoment/README.md @@ -0,0 +1,42 @@ +# Plain Kubernetes Deployment + +This directory contains an example of a simple Kubernetes deployment of Backstage. It is not intended to serve as a complete production deployment, but as a starting point for setting one up. + +## Usage + +You can try the deployment out as is. The easiest way is to use [Docker Desktop](https://www.docker.com/products/docker-desktop) with [Kubernetes](https://docs.docker.com/get-started/kube-deploy/). + +From a fresh clone of this repo, run the following in the root: + +```bash +yarn install + +yarn docker-build + +kubectl apply -f contrib/kubernetes/plain_single_backend_deplyoment/deployment.yaml +``` + +You can use the following commands to monitor the deployment: + +```bash +# List all resources in the backstage namespace +kubectl -n backstage get all + +# Inspect the status of the deployment resource +kubectl -n backstage describe deployment backstage-backend + +# Inspect the status of the pod running the backstage backend +kubectl -n backstage describe pod -l app=backstage,component=backend +``` + +Once the deployment is up and running, you can use the following to set up a proxy to reach the backend locally: + +```bash +kubectl proxy +``` + +With the proxy up and running, you should be able to navigate to [http://localhost:8001/api/v1/namespaces/backstage/services/backstage-backend:http/proxy](http://localhost:8001/api/v1/namespaces/backstage/services/backstage-backend:http/proxy) and see Backstage. Note that you'll end up on a 404 page, but hitting the home icon in the sidebar should take you to the catalog page where you can see a few example services. + +## Caveats + +This deployment is for demonstration purposes only, for a production deployment you will need to set up at least a persistent database and some form of ingress. If your organization doesn't already have established patterns for these, you could look at options of managed PostgreSQL instances from cloud providers, or something like Zalando's [postgres-operator](https://github.com/zalando/postgres-operator). For ingress there are also [plenty of options](https://ramitsurana.gitbook.io/awesome-kubernetes/docs/projects/projects#load-balancing), where `nginx` is a popular choice to get started. diff --git a/contrib/kubernetes/plain_single_backend_deplyoment/deployment.yaml b/contrib/kubernetes/plain_single_backend_deplyoment/deployment.yaml new file mode 100644 index 0000000000..87dee94895 --- /dev/null +++ b/contrib/kubernetes/plain_single_backend_deplyoment/deployment.yaml @@ -0,0 +1,108 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: backstage +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: backstage-backend + namespace: backstage +spec: + replicas: 1 + selector: + matchLabels: + app: backstage + component: backend + template: + metadata: + labels: + app: backstage + component: backend + spec: + containers: + - name: backend + # This image is built with `yarn docker-build` in the repo root. + # Replace this with your own image to deploy your own Backstage app. + image: example-backend:latest + imagePullPolicy: Never + + env: + # We set this to development to make the backend start with incomplete configuration. In a production + # deployment you will want to make sure that you have a full configuration, and remove any plugins that + # you are not using. + - name: NODE_ENV + value: development + + # This makes us load in `app-config.production.yaml` if there is one. + - name: APP_ENV + value: production + + # This makes it possible for the app to reach the backend when serving through `kubectl proxy` + # If you expose the service using for example an ingress controller, you should + # switch this out or remove it. + # + # Note that we're not setting app.baseUrl here, as setting the base path is not working at the moment. + # Further work is needed around the routing in the frontend or react-router before we can support that. + - name: APP_CONFIG_backend_baseUrl + value: http://localhost:8001/api/v1/namespaces/backstage/services/backstage-backend:http/proxy + + ports: + - name: http + containerPort: 7000 + + volumeMounts: + - name: config-volume + mountPath: /usr/src/app/app-config.local.yaml + subPath: app-config.local.yaml + + resources: + limits: + cpu: 1 + memory: 0.5Gi + + readinessProbe: + httpGet: + port: 7000 + path: /healthcheck + livenessProbe: + httpGet: + port: 7000 + path: /healthcheck + + volumes: + - name: config-volume + configMap: + name: backstage-config + items: + - key: app-config + path: app-config.local.yaml +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: backstage-config + namespace: backstage +data: + # Note that the config here is only applied to the backend. The frontend config is applied at build time. + # To override frontend config in this deployment, use `APP_CONFIG_` env vars. + app-config: | + app: + baseUrl: http://localhost:8001/api/v1/namespaces/backstage/services/backstage-backend:http/proxy + backend: + baseUrl: http://localhost:8001/api/v1/namespaces/backstage/services/backstage-backend:http/proxy +--- +apiVersion: v1 +kind: Service +metadata: + name: backstage-backend + namespace: backstage +spec: + selector: + app: backstage + component: backend + ports: + - name: http + port: 80 + targetPort: http From 2d15cfb1a4837a9efbc244b0c90ef275bc4254af Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 17 Oct 2020 12:55:35 +0200 Subject: [PATCH 141/323] docs/getting-started: added some minimal docs for k8s deployment, referencing contrib example --- docs/getting-started/deployment-k8s.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/getting-started/deployment-k8s.md b/docs/getting-started/deployment-k8s.md index ddcbd290c6..69aa59a600 100644 --- a/docs/getting-started/deployment-k8s.md +++ b/docs/getting-started/deployment-k8s.md @@ -4,4 +4,10 @@ title: Kubernetes description: Documentation on Kubernetes and K8s Deployment --- -Coming soon! +Backstage itself provides tooling up to the point of building docker images. +Beyond that point we do not have an opinionated way to deploy Backstage within +Kubernetes, as each cluster has its own unique set of tooling and patterns. + +We do provide examples to help you get started though. Check out +[this example](https://github.com/spotify/backstage/tree/master/contrib/kubernetes/plain_single_backend_deplyoment/) +for a basic single-deployment setup. From bbf5faec6fd7663b61bead43a24436c52649468d Mon Sep 17 00:00:00 2001 From: amitkhurana92 <41064453+amitkhurana92@users.noreply.github.com> Date: Sat, 17 Oct 2020 19:22:20 +0530 Subject: [PATCH 142/323] Jenkins Plugin: Readme.md file updated (#2943) * Readme.md file updated The documentation was not concise and does not include the case if I don't want to use env variables. * Prettier invoked. Executed prettier command. Co-authored-by: Amit Khuraba --- plugins/jenkins/README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/plugins/jenkins/README.md b/plugins/jenkins/README.md index 565906ca85..1d3e7f60e5 100644 --- a/plugins/jenkins/README.md +++ b/plugins/jenkins/README.md @@ -33,7 +33,7 @@ proxy: $env: JENKINS_BASIC_AUTH_HEADER ``` -4. Add an environment variable which contains the Jenkins credentials, (note: use an API token not your password) +4. Add an environment variable which contains the Jenkins credentials, (note: use an API token not your password). Here user is the name of the user created in Jenkins. ```shell HEADER=$(echo -n user:api-token | base64) @@ -61,6 +61,21 @@ spec: 8. Click the component in the catalog you should now see Jenkins builds, and a last build result for your master build. +Note: + +If you are not using environment variable then you can directly type API token in app-config.yaml + +```yaml +proxy: + '/jenkins/api': + target: 'http://localhost:8080' # your Jenkins URL + changeOrigin: true + headers: + Authorization: Basic YWRtaW46MTFlYzI1NmU0Mzg1MDFjM2Y1Yzc2Yjc1MWE3ZTQ3YWY4Mw== +``` + +YWRtaW46MTFlYzI1NmU0Mzg1MDFjM2Y1Yzc2Yjc1MWE3ZTQ3YWY4Mw== is the base64 of user and it's API token e.g. admin:11ec256e438501c3f5c76b751a7e47af83 + ## Features - View all runs inside a folder From 406015b0d8b9801a9e6882d8f524cc6963bd941c Mon Sep 17 00:00:00 2001 From: Braxton Christensen Date: Sat, 17 Oct 2020 11:38:20 -0600 Subject: [PATCH 143/323] Fix/1577/item card color contrast (#2921) * fix(layout): adjust ItemCard header colors - adjust header colors to pass color contrast standards * chore(changeset): add changeset -add change set --- .changeset/heavy-berries-hear.md | 5 +++++ packages/core/src/layout/ItemCard/ItemCard.tsx | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 .changeset/heavy-berries-hear.md diff --git a/.changeset/heavy-berries-hear.md b/.changeset/heavy-berries-hear.md new file mode 100644 index 0000000000..66aa6d93e1 --- /dev/null +++ b/.changeset/heavy-berries-hear.md @@ -0,0 +1,5 @@ +--- +'@backstage/core': patch +--- + +Update ItemCard headers to pass color contrast standards. diff --git a/packages/core/src/layout/ItemCard/ItemCard.tsx b/packages/core/src/layout/ItemCard/ItemCard.tsx index db73939fe7..2d425026a5 100644 --- a/packages/core/src/layout/ItemCard/ItemCard.tsx +++ b/packages/core/src/layout/ItemCard/ItemCard.tsx @@ -20,8 +20,7 @@ const useStyles = makeStyles(theme => ({ header: { color: theme.palette.common.white, padding: theme.spacing(2, 2, 6), - backgroundImage: - 'linear-gradient(-137deg, rgb(25, 230, 140) 0%, rgb(29, 127, 110) 100%)', + backgroundImage: 'linear-gradient(-137deg, #4BB8A5 0%, #187656 100%)', }, content: { padding: theme.spacing(2), From ebca83d4804d930f99e50194273601986184086c Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Sat, 17 Oct 2020 21:56:42 +0530 Subject: [PATCH 144/323] add test cases for Status components --- .changeset/olive-bikes-jog.md | 5 ++ .../src/components/Status/Status.test.jsx | 69 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 .changeset/olive-bikes-jog.md create mode 100644 packages/core/src/components/Status/Status.test.jsx diff --git a/.changeset/olive-bikes-jog.md b/.changeset/olive-bikes-jog.md new file mode 100644 index 0000000000..fdbf1e0d9f --- /dev/null +++ b/.changeset/olive-bikes-jog.md @@ -0,0 +1,5 @@ +--- +'@backstage/core': patch +--- + +add test cases for Status components diff --git a/packages/core/src/components/Status/Status.test.jsx b/packages/core/src/components/Status/Status.test.jsx new file mode 100644 index 0000000000..9a8daecd33 --- /dev/null +++ b/packages/core/src/components/Status/Status.test.jsx @@ -0,0 +1,69 @@ +/* + * 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 { renderInTestApp } from '@backstage/test-utils'; + +import { + StatusOK, + StatusWarning, + StatusError, + StatusPending, + StatusRunning, + StatusAborted, +} from './Status'; + +describe('', () => { + it('renders without exploding', async () => { + const { getByLabelText } = await renderInTestApp(); + expect(getByLabelText('Status ok')).toBeInTheDocument(); + }); +}); + +describe('', () => { + it('renders without exploding', async () => { + const { getByLabelText } = await renderInTestApp(); + expect(getByLabelText('Status warning')).toBeInTheDocument(); + }); +}); + +describe('', () => { + it('renders without exploding', async () => { + const { getByLabelText } = await renderInTestApp(); + expect(getByLabelText('Status error')).toBeInTheDocument(); + }); +}); + +describe('', () => { + it('renders without exploding', async () => { + const { getByLabelText } = await renderInTestApp(); + expect(getByLabelText('Status pending')).toBeInTheDocument(); + }); +}); + +describe('', () => { + it('renders without exploding', async () => { + const { getByLabelText } = await renderInTestApp(); + expect(getByLabelText('Status running')).toBeInTheDocument(); + }); +}); + +describe('', () => { + it('renders without exploding', async () => { + const { getByLabelText } = await renderInTestApp(); + expect(getByLabelText('Status aborted')).toBeInTheDocument(); + }); +}); From c6ff101a99194be011225283c07088136543a25c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Sat, 17 Oct 2020 20:38:40 +0200 Subject: [PATCH 145/323] UX improvements to Settings --- .../components/AuthProviders/AuthProviders.tsx | 2 +- .../AuthProviders/ProviderSettingsItem.tsx | 16 +++++++--------- .../src/components/FeatureFlags/FeatureFlags.tsx | 2 +- .../components/FeatureFlags/FeatureFlagsItem.tsx | 15 ++++++--------- .../src/components/General/General.tsx | 8 ++++---- 5 files changed, 19 insertions(+), 24 deletions(-) diff --git a/plugins/user-settings/src/components/AuthProviders/AuthProviders.tsx b/plugins/user-settings/src/components/AuthProviders/AuthProviders.tsx index 563bf44150..bc2a68578d 100644 --- a/plugins/user-settings/src/components/AuthProviders/AuthProviders.tsx +++ b/plugins/user-settings/src/components/AuthProviders/AuthProviders.tsx @@ -37,7 +37,7 @@ export const AuthProviders = ({ providerSettings }: Props) => { } return ( - + {providers} ); diff --git a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx index 7213ee2b83..4bae3dbfbb 100644 --- a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx +++ b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx @@ -22,14 +22,13 @@ import { SessionState, } from '@backstage/core'; import { + Button, ListItem, ListItemIcon, ListItemSecondaryAction, ListItemText, Tooltip, } from '@material-ui/core'; -import PowerButton from '@material-ui/icons/PowerSettingsNew'; -import { ToggleButton } from '@material-ui/lab'; type Props = { title: string; @@ -84,14 +83,13 @@ export const ProviderSettingsItem = ({ arrow title={signedIn ? `Sign out from ${title}` : `Sign in to ${title}`} > - (signedIn ? api.signOut() : api.signIn())} +
diff --git a/plugins/user-settings/src/components/FeatureFlags/FeatureFlags.tsx b/plugins/user-settings/src/components/FeatureFlags/FeatureFlags.tsx index 71f59c52b8..e0f4d6f40e 100644 --- a/plugins/user-settings/src/components/FeatureFlags/FeatureFlags.tsx +++ b/plugins/user-settings/src/components/FeatureFlags/FeatureFlags.tsx @@ -62,7 +62,7 @@ export const FeatureFlags = () => { } return ( - + {featureFlags.map(featureFlag => { const enabled = Boolean(state[featureFlag.name]); diff --git a/plugins/user-settings/src/components/FeatureFlags/FeatureFlagsItem.tsx b/plugins/user-settings/src/components/FeatureFlags/FeatureFlagsItem.tsx index 92065f2ed6..460a15f56b 100644 --- a/plugins/user-settings/src/components/FeatureFlags/FeatureFlagsItem.tsx +++ b/plugins/user-settings/src/components/FeatureFlags/FeatureFlagsItem.tsx @@ -19,10 +19,9 @@ import { ListItem, ListItemSecondaryAction, ListItemText, + Switch, Tooltip, } from '@material-ui/core'; -import CheckIcon from '@material-ui/icons/CheckCircle'; -import { ToggleButton } from '@material-ui/lab'; import { FeatureFlagsRegistryItem } from '@backstage/core'; type Props = { @@ -39,14 +38,12 @@ export const FlagItem = ({ flag, enabled, toggleHandler }: Props) => ( /> - toggleHandler(flag.name)} - > - - + name={flag.name} + /> diff --git a/plugins/user-settings/src/components/General/General.tsx b/plugins/user-settings/src/components/General/General.tsx index 00ac17dfe1..424f352502 100644 --- a/plugins/user-settings/src/components/General/General.tsx +++ b/plugins/user-settings/src/components/General/General.tsx @@ -21,12 +21,12 @@ import { Profile } from './Profile'; import { ThemeToggle } from './ThemeToggle'; export const General = () => ( - - + + - - + + From 3af02a945700c908515ecdb8df703d4bb9de5506 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Sat, 17 Oct 2020 20:42:18 +0200 Subject: [PATCH 146/323] Trendlines noPadding in tables (#2945) --- packages/core/src/components/TrendLine/TrendLine.stories.tsx | 2 +- plugins/lighthouse/src/components/AuditList/index.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core/src/components/TrendLine/TrendLine.stories.tsx b/packages/core/src/components/TrendLine/TrendLine.stories.tsx index 4eb74b2f17..5d2972095a 100644 --- a/packages/core/src/components/TrendLine/TrendLine.stories.tsx +++ b/packages/core/src/components/TrendLine/TrendLine.stories.tsx @@ -67,7 +67,7 @@ const columns = [ export const Default = () => (
- +
= () => { - {content} + {content} From 4df45e0083d6c94b7a8586ee22574630e266e0ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Sat, 17 Oct 2020 20:54:47 +0200 Subject: [PATCH 147/323] (docs) Add Helm charts, cleanup (#2944) * (docs) Add Helm charts, cleanup * (docs) Add Helm charts, cleanup --- .github/styles/vocab.txt | 1 + DEPLOYMENT.md | 27 ------------- docs/FAQ.md | 10 +---- docs/getting-started/deployment-helm.md | 15 +++----- docs/getting-started/deployment-other.md | 30 +++++++++++++++ docs/getting-started/installation.md | 7 ---- docs/overview/roadmap.md | 49 +++++++++++++----------- microsite/sidebars.json | 1 + mkdocs.yml | 2 +- 9 files changed, 67 insertions(+), 75 deletions(-) delete mode 100644 DEPLOYMENT.md delete mode 100644 docs/getting-started/installation.md diff --git a/.github/styles/vocab.txt b/.github/styles/vocab.txt index 40346fc0e8..0cbd0ffa05 100644 --- a/.github/styles/vocab.txt +++ b/.github/styles/vocab.txt @@ -68,6 +68,7 @@ graphviz Hackathons haproxy heroku +Heroku horizontalpodautoscalers Hostname http diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md deleted file mode 100644 index 1aebbeb0eb..0000000000 --- a/DEPLOYMENT.md +++ /dev/null @@ -1,27 +0,0 @@ -# Deploying Backstage - -## Heroku - -Deploying to heroku is relatively easy following these steps. - -First, make sure you have the [heroku CLI installed](https://devcenter.heroku.com/articles/heroku-cli) and log into it as well as login into Heroku's [container registry](https://devcenter.heroku.com/articles/container-registry-and-runtime). - -```bash -$ heroku login -$ heroku container:login -``` - -You _might_ also need to set your Heroku app's stack to `container` - -```bash -$ heroku stack:set container -a -``` - -We can now build/push the Docker image to Heroku's container registry and release it to the `web` worker. - -```bash -$ heroku container:push web -a -$ heroku container:release web -a -``` - -With that, you should have Backstage up and running! diff --git a/docs/FAQ.md b/docs/FAQ.md index 355cf97880..7163d955c7 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -178,8 +178,7 @@ Spotify will maintain the open source core, but we envision different parts of the project being maintained by various companies and contributors. We also envision a large, diverse ecosystem of open source plugins, which would be maintained by their original authors/contributors or by the community. When it -comes to -[deployment](https://github.com/spotify/backstage/blob/master/DEPLOYMENT.md), +comes to [deployment](https://backstage.io/docs/getting-started/deployment-k8s), the system integrator (typically, the infrastructure team in your organization) maintains Backstage in your own environment. @@ -187,7 +186,7 @@ maintains Backstage in your own environment. No, this is not a service offering. We build the piece of software, and someone in your infrastructure team is responsible for -[deploying](https://github.com/spotify/backstage/blob/master/DEPLOYMENT.md) and +[deploying](https://backstage.io/docs/getting-started/deployment-k8s) and maintaining it. ### How secure is Backstage? @@ -230,8 +229,3 @@ write an open source plugin for Backstage, like this See all the ways you can [contribute here](https://github.com/spotify/backstage/blob/master/CONTRIBUTING.md). We'd love to have you as part of the community. - -### Can I join the Backstage team? - -If you're interested in being part of the Backstage team, reach out to -[fossopportunities@spotify.com](mailto:fossopportunities@spotify.com) diff --git a/docs/getting-started/deployment-helm.md b/docs/getting-started/deployment-helm.md index bc239d9306..e674d28742 100644 --- a/docs/getting-started/deployment-helm.md +++ b/docs/getting-started/deployment-helm.md @@ -2,17 +2,18 @@ id: deployment-helm title: Helm description: Documentation on Kubernetes and Helm Deployment +sidebar_label: Kubernetes and Helm --- # Helm charts -An example Backstage app can be deployed in Kubernetes using the [Backstage Helm -charts][backstage-helm-charts] +An example Backstage app can be deployed in Kubernetes using the +[Backstage Helm charts](https://github.com/spotify/backstage/tree/master/contrib/chart/backstage) First, choose a DNS name where backstage will be hosted create a yaml file for your custom configuration. -``` +```yaml appConfig: app: baseUrl: https://backstage.mydomain.com @@ -26,7 +27,6 @@ appConfig: techdocs: storageUrl: https://backstage.mydomain.com/api/techdocs/static/docs requestUrl: https://backstage.mydomain.com/api/techdocs - ``` Then use it to run: @@ -61,9 +61,4 @@ backstage-ingress * 123.1.2.3 80 17m > **NOTE**: this is not a production ready deployment. For more information on how to customize the deployment check the -[README][charts-readme]. - -[backstage-helm-charts]: - (https://github.com/spotify/backstage/tree/master/contrib/chart/backstage) -[charts-readme]: - (https://github.com/spotify/backstage/tree/master/contrib/chart/backstage/README.md) +[README](https://github.com/spotify/backstage/tree/master/contrib/chart/backstage/README.md). diff --git a/docs/getting-started/deployment-other.md b/docs/getting-started/deployment-other.md index 509bbdc978..3e06e17c77 100644 --- a/docs/getting-started/deployment-other.md +++ b/docs/getting-started/deployment-other.md @@ -17,3 +17,33 @@ $ docker run --rm -it -p 7000:7000 -e APP_ENV=production -e NODE_ENV=development ``` Then open http://localhost/ on your browser. + +## Heroku + +Deploying to Heroku is relatively easy following these steps. + +First, make sure you have the +[heroku CLI installed](https://devcenter.heroku.com/articles/heroku-cli) and log +into it as well as login into Heroku's +[container registry](https://devcenter.heroku.com/articles/container-registry-and-runtime). + +```bash +$ heroku login +$ heroku container:login +``` + +You _might_ also need to set your Heroku app's stack to `container` + +```bash +$ heroku stack:set container -a +``` + +We can now build/push the Docker image to Heroku's container registry and +release it to the `web` worker. + +```bash +$ heroku container:push web -a +$ heroku container:release web -a +``` + +With that, you should have Backstage up and running! diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md deleted file mode 100644 index 3b11d2b8e1..0000000000 --- a/docs/getting-started/installation.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -id: installation -title: Installation -description: Documentation on Installation ---- - -Coming soon! diff --git a/docs/overview/roadmap.md b/docs/overview/roadmap.md index 59505aa915..51f09347ce 100644 --- a/docs/overview/roadmap.md +++ b/docs/overview/roadmap.md @@ -47,40 +47,29 @@ guidelines to get started. ### Ongoing work 🚧 -- **[Plugins for managing micro services end-2-end](https://github.com/spotify/backstage/milestone/14)** - +- **[Plugins for managing micro services end-2-end](https://github.com/spotify/backstage/milestone/14)** Out of the box Backstage will ship with a set of plugins (Overview, CI, API and Docs) that will demonstrate how a user can manage a micro service and follow a change all the way out in production. Completing this work will make it much easier to see how a plugin can be built that integrates with the Backstage Service Catalog. -- **[Kubernetes support](https://github.com/spotify/backstage/milestone/20)** - - Native support for Kubernetes, making it easier for developers to see and - manage their services running in k8s. - -- **[Helm charts](https://github.com/spotify/backstage/issues/2540)** - Provide - Helm charts for easy deployments of Backstage and its subsystems on - Kubernetes. +- **[Users and teams](https://github.com/spotify/backstage/issues/1807)** + Ownership is a central concept in Backstage. It should be easy to import your + existing organizational data, such as users and groups/teams, into Backstage. + A user the logs into Backstage should see software components owned by the + team(s) they are in. - **[Backstage platform is stable](https://github.com/spotify/backstage/milestone/19)** - The platform APIs and features are stable and can be depended on for production use. After this plugins will require little to no maintenance. -- Further improvements to platform documentation +* **[Improved Kubernetes plugin](https://github.com/spotify/backstage/issues/2857)** - + Native support for Kubernetes, making it easier for developers to see and + manage their services running in k8s. -### Plugins - -Building and maintaining [plugins](https://backstage.io/plugins) is the work of -the entire Backstage community. - -A list of plugins that are in development is -[available here](https://github.com/spotify/backstage/issues?q=is%3Aissue+is%3Aopen+label%3Aplugin+sort%3Areactions-%2B1-desc). -We strongly recommend to upvote 👍 plugins you are interested in. This helps us -and the community prioritize what plugins to build. - -Are you missing a plugin for your favorite tool? Please -[suggest a new one](https://github.com/spotify/backstage/issues/new?labels=plugin&template=plugin_template.md&title=%5BPlugin%5D+THE+PLUGIN+NAME). -Chances are that someone will jump in and help build it. +- Further improvements to platform documentation. Examples include a Golden Path + for plugin development. ### Future work 🔮 @@ -107,8 +96,24 @@ Chances are that someone will jump in and help build it. query. Plugins can easily query this API as well as extend the model where needed. +### Plugins + +Building and maintaining [plugins](https://backstage.io/plugins) is the work of +the entire Backstage community. + +A list of plugins that are in development is +[available here](https://github.com/spotify/backstage/issues?q=is%3Aissue+is%3Aopen+label%3Aplugin+sort%3Areactions-%2B1-desc). +We strongly recommend to upvote 👍 plugins you are interested in. This helps us +and the community prioritize what plugins to build. + +Are you missing a plugin for your favorite tool? Please +[suggest a new one](https://github.com/spotify/backstage/issues/new?labels=plugin&template=plugin_template.md&title=%5BPlugin%5D+THE+PLUGIN+NAME). +Chances are that someone will jump in and help build it. + ### Completed milestones ✅ +- [Kubernetes plugin - v1](https://github.com/spotify/backstage/tree/master/plugins/kubernetes) +- [Helm charts](https://github.com/spotify/backstage/tree/master/contrib/chart/backstage) - [Backstage Design System 💅](https://backstage.io/blog/2020/09/30/backstage-design-system) - [Cost Insights plugin 💸](https://engineering.atspotify.com/2020/09/29/managing-clouds-from-the-ground-up-cost-engineering-at-spotify/) - [Donate Backstage to the CNCF 🎉](https://backstage.io/blog/2020/09/23/backstage-cncf-sandbox) diff --git a/microsite/sidebars.json b/microsite/sidebars.json index ad48fb1e7c..64fdd2f420 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -28,6 +28,7 @@ "label": "Deployment", "ids": [ "getting-started/deployment-k8s", + "getting-started/deployment-helm", "getting-started/deployment-other" ] } diff --git a/mkdocs.yml b/mkdocs.yml index b4606131a7..8a4a78ddf1 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -13,7 +13,6 @@ nav: - Getting started: - Getting Started: 'getting-started/index.md' - Running Backstage locally: 'getting-started/running-backstage-locally.md' - - Installation: 'getting-started/installation.md' - Local development: 'getting-started/development-environment.md' - Demo deployment: https://backstage-demo.roadie.io - Production deployments: @@ -23,6 +22,7 @@ nav: - Customize the look-and-feel of your App: 'getting-started/app-custom-theme.md' - Deployment scenarios: - Kubernetes: 'getting-started/deployment-k8s.md' + - Kubernetes and Helm: 'getting-started/deployment-helm.md' - Other: 'getting-started/deployment-other.md' - Features: - Software Catalog: From 7a2f8b04cd1e2bae5db4071f62cfa6172155f3f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Sat, 17 Oct 2020 21:19:53 +0200 Subject: [PATCH 148/323] Review comments --- .../src/components/General/General.tsx | 4 +-- .../src/components/General/PinButton.tsx | 25 ++++++------------- .../src/components/General/ThemeToggle.tsx | 12 +++++++-- 3 files changed, 19 insertions(+), 22 deletions(-) diff --git a/plugins/user-settings/src/components/General/General.tsx b/plugins/user-settings/src/components/General/General.tsx index 424f352502..b6d30d0103 100644 --- a/plugins/user-settings/src/components/General/General.tsx +++ b/plugins/user-settings/src/components/General/General.tsx @@ -22,10 +22,10 @@ import { ThemeToggle } from './ThemeToggle'; export const General = () => ( - + - + diff --git a/plugins/user-settings/src/components/General/PinButton.tsx b/plugins/user-settings/src/components/General/PinButton.tsx index e36fc365f8..181574fccf 100644 --- a/plugins/user-settings/src/components/General/PinButton.tsx +++ b/plugins/user-settings/src/components/General/PinButton.tsx @@ -19,18 +19,11 @@ import { ListItem, ListItemSecondaryAction, ListItemText, + Switch, Tooltip, } from '@material-ui/core'; -import LockIcon from '@material-ui/icons/Lock'; -import LockOpenIcon from '@material-ui/icons/LockOpen'; -import { ToggleButton } from '@material-ui/lab'; import { SidebarPinStateContext } from '@backstage/core'; -type PinIconProps = { isPinned: boolean }; - -const PinIcon = ({ isPinned }: PinIconProps) => - isPinned ? : ; - export const PinButton = () => { const { isPinned, toggleSidebarPinState } = useContext( SidebarPinStateContext, @@ -48,16 +41,12 @@ export const PinButton = () => { arrow title={`${isPinned ? 'Unpin' : 'Pin'} Sidebar`} > - { - toggleSidebarPinState(); - }} - > - - + toggleSidebarPinState()} + name="pin" + /> diff --git a/plugins/user-settings/src/components/General/ThemeToggle.tsx b/plugins/user-settings/src/components/General/ThemeToggle.tsx index 111bd838a8..dc24a61f8f 100644 --- a/plugins/user-settings/src/components/General/ThemeToggle.tsx +++ b/plugins/user-settings/src/components/General/ThemeToggle.tsx @@ -102,12 +102,20 @@ export const ThemeToggle = () => { title={`Select ${theme.title}`} value={theme.variant} > - + <> + {theme.variant}  + + ); })} - + + Auto  From 014bc250b379ae94fa263a27f86c544583d027ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Gomez?= Date: Sat, 10 Oct 2020 15:12:49 +0200 Subject: [PATCH 149/323] Fix API references parsing Allows API entities to use a different namespace than the default one. --- .../src/components/useComponentApiEntities.ts | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/plugins/api-docs/src/components/useComponentApiEntities.ts b/plugins/api-docs/src/components/useComponentApiEntities.ts index 11b5de988f..9e5cbd968e 100644 --- a/plugins/api-docs/src/components/useComponentApiEntities.ts +++ b/plugins/api-docs/src/components/useComponentApiEntities.ts @@ -16,7 +16,11 @@ import { useAsyncRetry } from 'react-use'; import { errorApiRef, useApi } from '@backstage/core'; -import { ApiEntity, ComponentEntity } from '@backstage/catalog-model'; +import { + ApiEntity, + ComponentEntity, + parseEntityName, +} from '@backstage/catalog-model'; import { catalogApiRef } from '@backstage/plugin-catalog'; import { useComponentApiNames } from './useComponentApiNames'; @@ -43,10 +47,20 @@ export function useComponentApiEntities({ await Promise.all( apiNames.map(async name => { try { - const api = (await catalogApi.getEntityByName({ - kind: 'API', - name, - })) as ApiEntity | undefined; + const apiEntityName = parseEntityName(name, { + defaultNamespace: entity.metadata.namespace, + defaultKind: 'API', + }); + + if (apiEntityName.kind !== 'API') { + throw new Error( + `Referenced entity of kind "${apiEntityName.kind}" as an API`, + ); + } + + const api = (await catalogApi.getEntityByName(apiEntityName)) as + | ApiEntity + | undefined; if (api) { resultMap.set(api.metadata.name, api); From d90a8109c276423c386fde4e35182042d4e8e043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Sun, 18 Oct 2020 07:53:22 +0200 Subject: [PATCH 150/323] Fix test? --- .../user-settings/src/components/General/PinButton.test.tsx | 3 +-- plugins/user-settings/src/components/General/PinButton.tsx | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/user-settings/src/components/General/PinButton.test.tsx b/plugins/user-settings/src/components/General/PinButton.test.tsx index 76af8ce8d4..88f636d918 100644 --- a/plugins/user-settings/src/components/General/PinButton.test.tsx +++ b/plugins/user-settings/src/components/General/PinButton.test.tsx @@ -32,10 +32,9 @@ describe('', () => { , ), ); - expect(rendered.getByText('Pin Sidebar')).toBeInTheDocument(); - const pinButton = rendered.getByTitle('Pin Sidebar'); + const pinButton = rendered.getByTestId('pin'); fireEvent.click(pinButton); expect(mockToggleFn).toHaveBeenCalled(); }); diff --git a/plugins/user-settings/src/components/General/PinButton.tsx b/plugins/user-settings/src/components/General/PinButton.tsx index 181574fccf..bfcdb0c7ff 100644 --- a/plugins/user-settings/src/components/General/PinButton.tsx +++ b/plugins/user-settings/src/components/General/PinButton.tsx @@ -46,6 +46,7 @@ export const PinButton = () => { checked={isPinned} onChange={() => toggleSidebarPinState()} name="pin" + data-test-id="pin" /> From c3113d1d39ddc6dd0b3a44ecad5e56d235232a40 Mon Sep 17 00:00:00 2001 From: Eduardo Apolinario Date: Sat, 17 Oct 2020 23:13:06 -0700 Subject: [PATCH 151/323] Fix Core Features configuration id (#2948) The current configuration id is pointing to an inexistent place. This PR fixes the name of the configuration node in sidebars.json. --- docs/features/software-catalog/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/software-catalog/configuration.md b/docs/features/software-catalog/configuration.md index 46de2d3d67..dd19d4cd51 100644 --- a/docs/features/software-catalog/configuration.md +++ b/docs/features/software-catalog/configuration.md @@ -1,5 +1,5 @@ --- -id: software-catalog-configuration +id: configuration title: Catalog Configuration description: Documentation on Software Catalog Configuration --- From 763ec1cd2f9c62fd4a7fb62fe0f41c1dfaaac832 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Sun, 18 Oct 2020 08:20:06 +0200 Subject: [PATCH 152/323] Another try --- plugins/user-settings/src/components/General/PinButton.test.tsx | 2 +- plugins/user-settings/src/components/General/PinButton.tsx | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/user-settings/src/components/General/PinButton.test.tsx b/plugins/user-settings/src/components/General/PinButton.test.tsx index 88f636d918..d85fa3ddd9 100644 --- a/plugins/user-settings/src/components/General/PinButton.test.tsx +++ b/plugins/user-settings/src/components/General/PinButton.test.tsx @@ -35,7 +35,7 @@ describe('', () => { expect(rendered.getByText('Pin Sidebar')).toBeInTheDocument(); const pinButton = rendered.getByTestId('pin'); - fireEvent.click(pinButton); + fireEvent.change(pinButton); expect(mockToggleFn).toHaveBeenCalled(); }); }); diff --git a/plugins/user-settings/src/components/General/PinButton.tsx b/plugins/user-settings/src/components/General/PinButton.tsx index bfcdb0c7ff..a812079133 100644 --- a/plugins/user-settings/src/components/General/PinButton.tsx +++ b/plugins/user-settings/src/components/General/PinButton.tsx @@ -47,6 +47,7 @@ export const PinButton = () => { onChange={() => toggleSidebarPinState()} name="pin" data-test-id="pin" + inputProps={{ 'aria-label': 'Pin Sidebar Switch' }} /> From edeb5e45a304bb4c1fe5a2322bead66ec101aab3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matic=20Ples=CC=8Cec?= Date: Sun, 18 Oct 2020 18:19:09 +0200 Subject: [PATCH 153/323] Update docs regarding npm config ignore-scripts flag --- docs/getting-started/create-an-app.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/getting-started/create-an-app.md b/docs/getting-started/create-an-app.md index 9be0e24452..670c7fbf98 100644 --- a/docs/getting-started/create-an-app.md +++ b/docs/getting-started/create-an-app.md @@ -124,3 +124,21 @@ the root directory: ```bash yarn workspace backend start ``` + +### Troubleshooting + +#### Cannot find module + +You may encounter an error similar to below: + +``` +internal/modules/cjs/loader.js:968 + throw err; + ^ + +Error: Cannot find module '../build/Debug/nodegit.node' +``` + +This can occur if an npm dependency is not completely installed. Because some +dependencies run a post-install script, ensure that both your npm and yarn +configs have the `ignore-scripts` flag set to `false`. From 4036ff59d01de97f08eff7f7b03e2ab0e6aead92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sun, 18 Oct 2020 21:16:35 +0200 Subject: [PATCH 154/323] feat(catalog-backend): First steps of refactoring - split processEntity --- .changeset/carpal-tunnel-driver.md | 13 + .../src/ingestion/LocationReaders.ts | 72 +++- .../AnnotateLocationEntityProcessor.ts | 5 +- .../processors/CodeOwnersProcessor.test.ts | 8 +- .../processors/CodeOwnersProcessor.ts | 5 +- .../processors/EntityPolicyProcessor.ts | 34 -- .../processors/LocationEntityProcessor.ts | 2 +- .../processors/PlaceholderProcessor.test.ts | 20 +- .../processors/PlaceholderProcessor.ts | 5 +- .../src/ingestion/processors/index.ts | 1 - .../src/ingestion/processors/types.ts | 26 +- .../src/service/CatalogBuilder.test.ts | 91 ++--- .../src/service/CatalogBuilder.ts | 316 +++++------------- 13 files changed, 257 insertions(+), 341 deletions(-) create mode 100644 .changeset/carpal-tunnel-driver.md delete mode 100644 plugins/catalog-backend/src/ingestion/processors/EntityPolicyProcessor.ts diff --git a/.changeset/carpal-tunnel-driver.md b/.changeset/carpal-tunnel-driver.md new file mode 100644 index 0000000000..2e6a814533 --- /dev/null +++ b/.changeset/carpal-tunnel-driver.md @@ -0,0 +1,13 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +- The `CatalogProcessor` API was updated to have `preProcessEntity` and + `postProcessEntity` methods, instead of just one `processEntity`. This makes + it easier to make processors that have several stages in one, and to make + different processors more position independent in the list of processors. +- The `EntityPolicy` is now given directly to the `LocationReaders`, instead of + being enforced inside a policy. We have decided to separate out the act of + validating an entity to be outside of the processing flow, to make it + possible to apply more liberally and to evolve it as a separate concept. +- Because of the above, the `EntityPolicyProcessor` has been removed. diff --git a/plugins/catalog-backend/src/ingestion/LocationReaders.ts b/plugins/catalog-backend/src/ingestion/LocationReaders.ts index c36b3d2b05..e23a4524b6 100644 --- a/plugins/catalog-backend/src/ingestion/LocationReaders.ts +++ b/plugins/catalog-backend/src/ingestion/LocationReaders.ts @@ -17,6 +17,7 @@ import { UrlReader } from '@backstage/backend-common'; import { Entity, + EntityPolicy, ENTITY_DEFAULT_NAMESPACE, LocationSpec, } from '@backstage/catalog-model'; @@ -44,6 +45,7 @@ type Options = { config: Config; processors: CatalogProcessor[]; rulesEnforcer: CatalogRulesEnforcer; + policy: EntityPolicy; }; /** @@ -74,10 +76,12 @@ export class LocationReaders implements LocationReader { } else if (item.type === 'entity') { if (rulesEnforcer.isAllowed(item.entity, item.location)) { const entity = await this.handleEntity(item, emit); - output.entities.push({ - entity, - location: item.location, - }); + if (entity) { + output.entities.push({ + entity, + location: item.location, + }); + } } else { output.errors.push({ location: item.location, @@ -162,25 +166,65 @@ export class LocationReaders implements LocationReader { private async handleEntity( item: CatalogProcessorEntityResult, emit: CatalogProcessorEmit, - ): Promise { + ): Promise { const { processors, logger } = this.options; let current = item.entity; + // Construct the name carefully, this happens before validation below + // so we do not want to crash here due to missing metadata or so + const kind = current.kind || ''; + const namespace = !current.metadata + ? '' + : current.metadata.namespace ?? ENTITY_DEFAULT_NAMESPACE; + const name = !current.metadata ? '' : current.metadata.name; + for (const processor of processors) { - if (processor.processEntity) { + if (processor.preProcessEntity) { try { - current = await processor.processEntity(current, item.location, emit); + current = await processor.preProcessEntity( + current, + item.location, + emit, + ); } catch (e) { - // Construct the name carefully, if we got validation errors we do - // not want to crash here due to missing metadata or so - const namespace = !current.metadata - ? '' - : current.metadata.namespace ?? ENTITY_DEFAULT_NAMESPACE; - const name = !current.metadata ? '' : current.metadata.name; - const message = `Processor ${processor.constructor.name} threw an error while processing entity ${current.kind}:${namespace}/${name} at ${item.location.type} ${item.location.target}, ${e}`; + const message = `Processor ${processor.constructor.name} threw an error while preprocessing entity ${kind}:${namespace}/${name} at ${item.location.type} ${item.location.target}, ${e}`; emit(result.generalError(item.location, message)); logger.warn(message); + return undefined; + } + } + } + + try { + const next = await this.options.policy.enforce(current); + if (!next) { + const message = `Policy unexpectedly returned no data while analyzing entity ${kind}:${namespace}/${name} at ${item.location.type} ${item.location.target}`; + emit(result.generalError(item.location, message)); + logger.warn(message); + return undefined; + } + current = next; + } catch (e) { + const message = `Policy check failed while analyzing entity ${kind}:${namespace}/${name} at ${item.location.type} ${item.location.target}, ${e}`; + emit(result.inputError(item.location, message)); + logger.warn(message); + return undefined; + } + + for (const processor of processors) { + if (processor.postProcessEntity) { + try { + current = await processor.postProcessEntity( + current, + item.location, + emit, + ); + } catch (e) { + const message = `Processor ${processor.constructor.name} threw an error while postprocessing entity ${kind}:${namespace}/${name} at ${item.location.type} ${item.location.target}, ${e}`; + emit(result.generalError(item.location, message)); + logger.warn(message); + return undefined; } } } diff --git a/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts index fea70b6c5e..ea8afcddc5 100644 --- a/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts @@ -19,7 +19,10 @@ import lodash from 'lodash'; import { CatalogProcessor } from './types'; export class AnnotateLocationEntityProcessor implements CatalogProcessor { - async processEntity(entity: Entity, location: LocationSpec): Promise { + async preProcessEntity( + entity: Entity, + location: LocationSpec, + ): Promise { return lodash.merge( { metadata: { diff --git a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts index c1c83b7c6c..247020a547 100644 --- a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts @@ -224,7 +224,7 @@ describe(CodeOwnersProcessor, () => { spec: { owner: '@acme/foo-team' }, }); - const result = await processor.processEntity( + const result = await processor.preProcessEntity( entity as any, mockLocation(), ); @@ -235,7 +235,7 @@ describe(CodeOwnersProcessor, () => { it('should ignore url locations', async () => { const { entity, processor } = setupTest(); - const result = await processor.processEntity( + const result = await processor.preProcessEntity( entity as any, mockLocation({ type: 'url' }), ); @@ -246,7 +246,7 @@ describe(CodeOwnersProcessor, () => { it('should ignore invalid kinds', async () => { const { entity, processor } = setupTest({ kind: 'Group' }); - const result = await processor.processEntity( + const result = await processor.preProcessEntity( entity as any, mockLocation(), ); @@ -257,7 +257,7 @@ describe(CodeOwnersProcessor, () => { it('should set owner from codeowner', async () => { const { entity, processor } = setupTest(); - const result = await processor.processEntity( + const result = await processor.preProcessEntity( entity as any, mockLocation(), ); diff --git a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts index 1802e01d99..bc78b6e34a 100644 --- a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts @@ -40,7 +40,10 @@ type Options = { export class CodeOwnersProcessor implements CatalogProcessor { constructor(private readonly options: Options) {} - async processEntity(entity: Entity, location: LocationSpec): Promise { + async preProcessEntity( + entity: Entity, + location: LocationSpec, + ): Promise { // Only continue if the owner is not set if ( !entity || diff --git a/plugins/catalog-backend/src/ingestion/processors/EntityPolicyProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/EntityPolicyProcessor.ts deleted file mode 100644 index 87543d91f4..0000000000 --- a/plugins/catalog-backend/src/ingestion/processors/EntityPolicyProcessor.ts +++ /dev/null @@ -1,34 +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 { Entity, EntityPolicy } from '@backstage/catalog-model'; -import { CatalogProcessor } from './types'; - -export class EntityPolicyProcessor implements CatalogProcessor { - private readonly policy: EntityPolicy; - - constructor(policy: EntityPolicy) { - this.policy = policy; - } - - async processEntity(entity: Entity): Promise { - const output = await this.policy.enforce(entity); - if (!output) { - throw new Error(`Entity did not match any known schema`); - } - return output; - } -} diff --git a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts index 1917f58fbd..86e17f07f2 100644 --- a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts @@ -19,7 +19,7 @@ import * as result from './results'; import { CatalogProcessor, CatalogProcessorEmit } from './types'; export class LocationRefProcessor implements CatalogProcessor { - async processEntity( + async postProcessEntity( entity: Entity, _location: LocationSpec, emit: CatalogProcessorEmit, diff --git a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.test.ts index 294cb10f29..44f3163a97 100644 --- a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.test.ts @@ -46,7 +46,7 @@ describe('PlaceholderProcessor', () => { reader, }); await expect( - processor.processEntity(input, { type: 't', target: 'l' }), + processor.preProcessEntity(input, { type: 't', target: 'l' }), ).resolves.toBe(input); }); @@ -62,7 +62,7 @@ describe('PlaceholderProcessor', () => { }); await expect( - processor.processEntity( + processor.preProcessEntity( { apiVersion: 'a', kind: 'k', @@ -98,7 +98,7 @@ describe('PlaceholderProcessor', () => { }); await expect( - processor.processEntity( + processor.preProcessEntity( { apiVersion: 'a', kind: 'k', @@ -122,7 +122,7 @@ describe('PlaceholderProcessor', () => { }); await expect( - processor.processEntity( + processor.preProcessEntity( { apiVersion: 'a', kind: 'k', @@ -143,7 +143,7 @@ describe('PlaceholderProcessor', () => { }); await expect( - processor.processEntity( + processor.preProcessEntity( { apiVersion: 'a', kind: 'k', @@ -177,7 +177,7 @@ describe('PlaceholderProcessor', () => { }); await expect( - processor.processEntity( + processor.preProcessEntity( { apiVersion: 'a', kind: 'k', @@ -209,7 +209,7 @@ describe('PlaceholderProcessor', () => { }); await expect( - processor.processEntity( + processor.preProcessEntity( { apiVersion: 'a', kind: 'k', @@ -241,7 +241,7 @@ describe('PlaceholderProcessor', () => { }); await expect( - processor.processEntity( + processor.preProcessEntity( { apiVersion: 'a', kind: 'k', @@ -277,7 +277,7 @@ describe('PlaceholderProcessor', () => { }); await expect( - processor.processEntity( + processor.preProcessEntity( { apiVersion: 'a', kind: 'k', @@ -316,7 +316,7 @@ describe('PlaceholderProcessor', () => { }); await expect( - processor.processEntity( + processor.preProcessEntity( { apiVersion: 'a', kind: 'k', diff --git a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts index 3941a2bedc..0e23d51f61 100644 --- a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts @@ -45,7 +45,10 @@ type Options = { export class PlaceholderProcessor implements CatalogProcessor { constructor(private readonly options: Options) {} - async processEntity(entity: Entity, location: LocationSpec): Promise { + async preProcessEntity( + entity: Entity, + location: LocationSpec, + ): Promise { const process = async (data: any): Promise<[any, boolean]> => { if (!data || !(data instanceof Object)) { // Scalars can't have placeholders diff --git a/plugins/catalog-backend/src/ingestion/processors/index.ts b/plugins/catalog-backend/src/ingestion/processors/index.ts index f966ef3348..59a87af555 100644 --- a/plugins/catalog-backend/src/ingestion/processors/index.ts +++ b/plugins/catalog-backend/src/ingestion/processors/index.ts @@ -23,7 +23,6 @@ export { AnnotateLocationEntityProcessor } from './AnnotateLocationEntityProcess export { AzureApiReaderProcessor } from './AzureApiReaderProcessor'; export { BitbucketApiReaderProcessor } from './BitbucketApiReaderProcessor'; export { CodeOwnersProcessor } from './CodeOwnersProcessor'; -export { EntityPolicyProcessor } from './EntityPolicyProcessor'; export { FileReaderProcessor } from './FileReaderProcessor'; export { GithubOrgReaderProcessor } from './GithubOrgReaderProcessor'; export { GithubReaderProcessor } from './GithubReaderProcessor'; diff --git a/plugins/catalog-backend/src/ingestion/processors/types.ts b/plugins/catalog-backend/src/ingestion/processors/types.ts index 0e6b1491a6..c9adf07eff 100644 --- a/plugins/catalog-backend/src/ingestion/processors/types.ts +++ b/plugins/catalog-backend/src/ingestion/processors/types.ts @@ -46,15 +46,33 @@ export type CatalogProcessor = { ): Promise; /** - * Processes an emitted entity, e.g. by validating or modifying it. + * Pre-processes an emitted entity, after it has been emitted but before it + * has been validated. * - * @param entity The entity to process + * This type of processing usually involves enriching the entity with + * additional data, and the input entity may actually still be incomplete + * when the processor is invoked. + * + * @param entity The (possibly partial) entity to process * @param location The location that the entity came from - * @param read Reads the contents of a location * @param emit A sink for auxiliary items resulting from the processing * @returns The same entity or a modified version of it */ - processEntity?( + preProcessEntity?( + entity: Entity, + location: LocationSpec, + emit: CatalogProcessorEmit, + ): Promise; + + /** + * Post-processes an emitted entity, after it has been validated. + * + * @param entity The entity to process + * @param location The location that the entity came from + * @param emit A sink for auxiliary items resulting from the processing + * @returns The same entity or a modified version of it + */ + postProcessEntity?( entity: Entity, location: LocationSpec, emit: CatalogProcessorEmit, diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.test.ts b/plugins/catalog-backend/src/service/CatalogBuilder.test.ts index 66e7dba682..3f7c613c00 100644 --- a/plugins/catalog-backend/src/service/CatalogBuilder.test.ts +++ b/plugins/catalog-backend/src/service/CatalogBuilder.test.ts @@ -49,49 +49,6 @@ describe('CatalogBuilder', () => { reader.read.mockResolvedValue(Buffer.from('junk')); const builder = new CatalogBuilder(env) - .replaceReaderProcessors([ - { - async readLocation( - location: LocationSpec, - _optional: boolean, - emit: CatalogProcessorEmit, - ) { - expect(location.type).toBe('test'); - emit(result.data(location, await reader.read('ignored'))); - return true; - }, - }, - ]) - .replaceParserProcessors([ - { - async parseData( - data: Buffer, - location: LocationSpec, - emit: CatalogProcessorEmit, - ) { - expect(data.toString()).toEqual('junk'); - emit( - result.entity(location, { - apiVersion: 'av', - kind: 'Component', - metadata: { name: 'n' }, - }), - ); - return true; - }, - }, - ]) - .replacePreProcessors([ - { - async processEntity(entity: Entity) { - expect(entity.apiVersion).toBe('av'); - return { - ...entity, - metadata: { ...entity.metadata, namespace: 'ns' }, - }; - }, - }, - ]) .replaceEntityPolicies([ { async enforce(entity: Entity) { @@ -108,9 +65,51 @@ describe('CatalogBuilder', () => { }, }, ]) - .replacePostProcessors([ + .setPlaceholderResolver('t', async ({ value }) => { + expect(value).toBe('tt'); + return 'tt2'; + }) + .setFieldFormatValidators({ + isValidEntityName: n => { + expect(n).toBe('n'); + return true; + }, + }) + .replaceProcessors([ { - async processEntity(entity: Entity) { + async readLocation( + location: LocationSpec, + _optional: boolean, + emit: CatalogProcessorEmit, + ) { + expect(location.type).toBe('test'); + emit(result.data(location, await reader.read('ignored'))); + return true; + }, + async parseData( + data: Buffer, + location: LocationSpec, + emit: CatalogProcessorEmit, + ) { + expect(data.toString()).toEqual('junk'); + emit( + result.entity(location, { + apiVersion: 'av', + kind: 'Component', + metadata: { name: 'n', replaced: { $t: 'tt' } }, + }), + ); + return true; + }, + async preProcessEntity(entity: Entity) { + expect(entity.apiVersion).toBe('av'); + return { + ...entity, + metadata: { ...entity.metadata, namespace: 'ns' }, + }; + }, + async postProcessEntity(entity: Entity) { + expect(entity.metadata.namespace).toBe('ns'); return { ...entity, metadata: { ...entity.metadata, post: 'p' }, @@ -124,6 +123,7 @@ describe('CatalogBuilder', () => { type: 'test', target: '', }); + expect.assertions(8); expect(added.entities).toEqual([ { apiVersion: 'av', @@ -132,6 +132,7 @@ describe('CatalogBuilder', () => { name: 'n', namespace: 'ns', post: 'p', + replaced: 'tt2', }), }, ]); diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.ts b/plugins/catalog-backend/src/service/CatalogBuilder.ts index aa4f97258d..01a4cd2435 100644 --- a/plugins/catalog-backend/src/service/CatalogBuilder.ts +++ b/plugins/catalog-backend/src/service/CatalogBuilder.ts @@ -48,7 +48,6 @@ import { BitbucketApiReaderProcessor, CatalogProcessor, CodeOwnersProcessor, - EntityPolicyProcessor, FileReaderProcessor, GithubOrgReaderProcessor, GithubReaderProcessor, @@ -84,36 +83,24 @@ export type CatalogEnvironment = { * * The touch points where you can replace or extend behavior are as follows: * - * - Reader processors can be added or replaced. These implement the - * functionality of reading raw data from a location, in the form of an - * entity definition file. - * - Parser processors can be added or replaced. These accept the raw data as - * read by the previous processors and parse it into raw structured data - * (for example, from a binary buffer containing yaml text, to a JS object - * structure). + * - Entity policies can be added or replaced. These are automatically run + * after the processors' pre-processing steps. All policies are given the + * chance to inspect the entity, and all of them have to pass in order for + * the entity to be considered valid from an overall point of view. + * - Entity kinds can be added or replaced. These are the second line of + * validation that is applied after the entity policies, which adds + * additional kind-specific validation (usually based on a schema). Only one + * of the entity kinds has to accept the entity, but if none of them do, the + * entity is rejected as a whole. * - Placeholder resolvers can be replaced or added. These run on the raw * structured data between the parsing and pre-processing steps, to replace * dollar-prefixed entries with their actual values (like $file). - * - Pre-processors can be added or replaced. These take the raw unvalidated - * data from the parser processors and can enrich or extend it before - * validation. This is the place where for example codeowners data can be - * injected into partial entity definitions. - * - Entity policies can be added or replaced. These are the first line of - * validation from the output of the pre-processing step. All policies are - * given the chance to inspect the entity, and all of them have to pass in - * order for the entity to be considered valid from an overall point of - * view. * - Field format validators can be replaced. These check the format of - * individual core fields such as metadata.name, such that they adhere to - * certain rules. - * - Entity kinds can be added or replaced. These are the second line of - * validation that is applied after the entity policies, which add additional - * kind-specific validation (usually based on a schema). Only one of the - * entity kinds has to accept the entity, but if none of them do, the - * entity is rejected as a whole. - * - Post-processors can be added or replaced. These take the validated - * entities out of the validation step and can perform additional actions on - * them. + * individual core fields such as metadata.name, to ensure that they adhere + * to certain rules. + * - Processors can be added or replaced. These implement the functionality of + * reading, parsing and processing the entity data before it is persisted in + * the catalog. */ export class CatalogBuilder { private readonly env: CatalogEnvironment; @@ -121,16 +108,10 @@ export class CatalogBuilder { private entityPoliciesReplace: boolean; private entityKinds: EntityPolicy[]; private entityKindsReplace: boolean; - private readerProcessors: CatalogProcessor[]; - private readerProcessorsReplace: boolean; - private parserProcessors: CatalogProcessor[]; - private parserProcessorsReplace: boolean; - private preProcessors: CatalogProcessor[]; - private preProcessorsReplace: boolean; - private postProcessors: CatalogProcessor[]; - private postProcessorsReplace: boolean; private placeholderResolvers: Record; private fieldFormatValidators: Partial; + private processors: CatalogProcessor[]; + private processorsReplace: boolean; constructor(env: CatalogEnvironment) { this.env = env; @@ -138,16 +119,10 @@ export class CatalogBuilder { this.entityPoliciesReplace = false; this.entityKinds = []; this.entityKindsReplace = false; - this.readerProcessors = []; - this.readerProcessorsReplace = false; - this.parserProcessors = []; - this.parserProcessorsReplace = false; - this.preProcessors = []; - this.preProcessorsReplace = false; - this.postProcessors = []; - this.postProcessorsReplace = false; this.placeholderResolvers = {}; this.fieldFormatValidators = {}; + this.processors = []; + this.processorsReplace = false; } /** @@ -212,114 +187,6 @@ export class CatalogBuilder { return this; } - /** - * Adds processors that support reading of definition files. These are run - * before the entities are parsed, pre-processed, validated and post- - * processed. - * - * @param processors One or more processors - */ - addReaderProcessor(...processors: CatalogProcessor[]): CatalogBuilder { - this.readerProcessors.push(...processors); - return this; - } - - /** - * Sets what processors to use for the reading of definition files. These are - * run before the entities are parsed, pre-processed, validated and post- - * processed. - * - * This function replaces the default set of processors in this stage; use - * with care. - * - * @param processors One or more processors - */ - replaceReaderProcessors(processors: CatalogProcessor[]): CatalogBuilder { - this.readerProcessors = [...processors]; - this.readerProcessorsReplace = true; - return this; - } - - /** - * Adds processors that run after each definition file has been read, in - * order to parse the raw data. These are run before the entities are - * pre-processed, validated and post-processed. - * - * @param processors One or more processors - */ - addParserProcessor(...processors: CatalogProcessor[]): CatalogBuilder { - this.parserProcessors.push(...processors); - return this; - } - - /** - * Sets what processors to run after each definition file has been read, in - * order to parse the raw data. These are run before the entities are - * pre-processed, validated and post-processed. - * - * This function replaces the default set of processors in this stage; use - * with care. - * - * @param processors One or more processors - */ - replaceParserProcessors(processors: CatalogProcessor[]): CatalogBuilder { - this.parserProcessors = [...processors]; - this.parserProcessorsReplace = true; - return this; - } - - /** - * Adds processors that run after each entity has been read and parsed, - * but before being validated and post-processed. - * - * @param processors One or more processors - */ - addPreProcessor(...processors: CatalogProcessor[]): CatalogBuilder { - this.preProcessors.push(...processors); - return this; - } - - /** - * Sets what processors to run after each entity has been read and parsed, - * but before being validated and post-processed. - * - * This function replaces the default set of processors in this stage; use - * with care. - * - * @param processors One or more processors - */ - replacePreProcessors(processors: CatalogProcessor[]): CatalogBuilder { - this.preProcessors = [...processors]; - this.preProcessorsReplace = true; - return this; - } - - /** - * Adds processors that run after each entity has been read, parsed, - * run through the pre-processors, and validated. - * - * @param processors One or more processors - */ - addPostProcessor(...processors: CatalogProcessor[]): CatalogBuilder { - this.postProcessors.push(...processors); - return this; - } - - /** - * Sets what processors to run after each entity has been read, parsed, - * run through the pre-processors, and validated. - * - * This function replaces the default set of processors in this stage; use - * with care. - * - * @param processors One or more processors - */ - replacePostProcessors(processors: CatalogProcessor[]): CatalogBuilder { - this.postProcessors = [...processors]; - this.postProcessorsReplace = true; - return this; - } - /** * Adds, or overwrites, a handler for placeholders (e.g. $file) in entity * definition files. @@ -327,8 +194,12 @@ export class CatalogBuilder { * @param key The key that identifies the placeholder, e.g. "file" * @param resolver The resolver that gets values for this placeholder */ - setPlaceholderResolver(key: string, resolver: PlaceholderResolver) { + setPlaceholderResolver( + key: string, + resolver: PlaceholderResolver, + ): CatalogBuilder { this.placeholderResolvers[key] = resolver; + return this; } /** @@ -341,8 +212,34 @@ export class CatalogBuilder { * * @param validators The (subset of) validators to set */ - setFieldFormatValidators(validators: Partial) { + setFieldFormatValidators(validators: Partial): CatalogBuilder { lodash.merge(this.fieldFormatValidators, validators); + return this; + } + + /** + * Adds entity processors. These are responsible for reading, parsing, and + * processing entities before they are persisted in the catalog. + * + * @param processors One or more processors + */ + addProcessor(...processors: CatalogProcessor[]): CatalogBuilder { + this.processors.push(...processors); + return this; + } + + /** + * Sets what entity processors to use. These are responsible for reading, + * parsing, and processing entities before they are persisted in the catalog. + * + * This function replaces the default set of processors; use with care. + * + * @param processors One or more processors + */ + replaceProcessors(processors: CatalogProcessor[]): CatalogBuilder { + this.processors = [...processors]; + this.processorsReplace = true; + return this; } /** @@ -355,14 +252,15 @@ export class CatalogBuilder { }> { const { config, database, logger } = this.env; - const entityPolicy = this.buildEntityPolicy(); - const processors = this.buildProcessors(entityPolicy); + const policy = this.buildEntityPolicy(); + const processors = this.buildProcessors(); const rulesEnforcer = CatalogRulesEnforcer.fromConfig(config); const locationReader = new LocationReaders({ ...this.env, processors, rulesEnforcer, + policy, }); const db = await DatabaseManager.createDatabase( @@ -418,106 +316,74 @@ export class CatalogBuilder { ]); } - private buildProcessors(entityPolicy: EntityPolicy): CatalogProcessor[] { - const { config, reader } = this.env; + private buildProcessors(): CatalogProcessor[] { + const { config, logger, reader } = this.env; - const placeholderResolvers = lodash.merge( - { - json: jsonPlaceholderResolver, - yaml: yamlPlaceholderResolver, - text: textPlaceholderResolver, - }, - this.placeholderResolvers, - ); + const placeholderResolvers: Record = { + json: jsonPlaceholderResolver, + yaml: yamlPlaceholderResolver, + text: textPlaceholderResolver, + ...this.placeholderResolvers, + }; + + const processors = this.processorsReplace + ? this.processors + : [ + new FileReaderProcessor(), + GithubOrgReaderProcessor.fromConfig(config, { logger }), + LdapOrgReaderProcessor.fromConfig(config, { logger }), + new UrlReaderProcessor({ reader, logger }), + new YamlProcessor(), + new CodeOwnersProcessor({ reader }), + new LocationRefProcessor(), + new AnnotateLocationEntityProcessor(), + ]; return [ StaticLocationProcessor.fromConfig(config), - ...this.buildReaderProcessors(), - ...this.buildParserProcessors(), new PlaceholderProcessor({ resolvers: placeholderResolvers, reader }), - ...this.buildPreProcessors(), - new EntityPolicyProcessor(entityPolicy), - ...this.buildPostProcessors(), + ...this.buildDeprecatedReaderProcessors(), + ...processors, ]; } - private buildReaderProcessors(): CatalogProcessor[] { - const { config, logger, reader } = this.env; + // TODO(Rugvip): These are added for backwards compatibility if config exists + // The idea is to have everyone migrate from using the old processors to + // the new integration config driven UrlReaders. In an upcoming release we + // can then completely remove support for the old processors, but still + // keep handling the deprecated location types for a while, but with a + // warning. + private buildDeprecatedReaderProcessors(): CatalogProcessor[] { + const { config, logger } = this.env; - if (this.readerProcessorsReplace) { - return this.readerProcessors; - } - - // TODO(Rugvip): These are added for backwards compatibility if config exists - // The idea is to have everyone migrate from using the old processors to the new - // integration config driven UrlReaders. In an upcoming release we can then completely - // remove support for the old processors, but still keep handling the deprecated location - // types for a while, but with a warning. - const oldProcessors = []; + const result = []; const pc = config.getOptionalConfig('catalog.processors'); if (pc?.has('github')) { logger.warn( `Using deprecated configuration for catalog.processors.github, move to using integrations.github instead`, ); - oldProcessors.push(GithubReaderProcessor.fromConfig(config, logger)); + result.push(GithubReaderProcessor.fromConfig(config, logger)); } if (pc?.has('gitlabApi')) { logger.warn( `Using deprecated configuration for catalog.processors.gitlabApi, move to using integrations.gitlab instead`, ); - oldProcessors.push(new GitlabApiReaderProcessor(config)); - oldProcessors.push(new GitlabReaderProcessor()); + result.push(new GitlabApiReaderProcessor(config)); + result.push(new GitlabReaderProcessor()); } if (pc?.has('bitbucketApi')) { logger.warn( `Using deprecated configuration for catalog.processors.bitbucketApi, move to using integrations.bitbucket instead`, ); - oldProcessors.push(new BitbucketApiReaderProcessor(config)); + result.push(new BitbucketApiReaderProcessor(config)); } if (pc?.has('azureApi')) { logger.warn( `Using deprecated configuration for catalog.processors.azureApi, move to using integrations.azure instead`, ); - oldProcessors.push(new AzureApiReaderProcessor(config)); + result.push(new AzureApiReaderProcessor(config)); } - return [ - new FileReaderProcessor(), - ...oldProcessors, - GithubOrgReaderProcessor.fromConfig(config, { logger }), - LdapOrgReaderProcessor.fromConfig(config, { logger }), - new UrlReaderProcessor({ reader, logger }), - ...this.readerProcessors, - ]; - } - - private buildParserProcessors(): CatalogProcessor[] { - if (this.parserProcessorsReplace) { - return this.parserProcessors; - } - - return [new YamlProcessor(), ...this.parserProcessors]; - } - - private buildPreProcessors(): CatalogProcessor[] { - const { reader } = this.env; - - if (this.preProcessorsReplace) { - return this.preProcessors; - } - - return [new CodeOwnersProcessor({ reader }), ...this.preProcessors]; - } - - private buildPostProcessors(): CatalogProcessor[] { - if (this.postProcessorsReplace) { - return this.postProcessors; - } - - return [ - new LocationRefProcessor(), - new AnnotateLocationEntityProcessor(), - ...this.postProcessors, - ]; + return result; } } From f2819b2a9f1d8f25ff4061eb53b9daefaa384d76 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 19 Oct 2020 01:32:35 +0200 Subject: [PATCH 155/323] core-api: move utility api system implementation into apis/system --- .../core-api/src/apis/definitions/AlertApi.ts | 2 +- .../src/apis/definitions/AppThemeApi.ts | 2 +- .../src/apis/definitions/ConfigApi.ts | 2 +- .../src/apis/definitions/DiscoveryApi.ts | 2 +- .../core-api/src/apis/definitions/ErrorApi.ts | 2 +- .../src/apis/definitions/FeatureFlagsApi.ts | 2 +- .../src/apis/definitions/IdentityApi.ts | 2 +- .../src/apis/definitions/OAuthRequestApi.ts | 2 +- .../src/apis/definitions/StorageApi.ts | 2 +- .../core-api/src/apis/definitions/auth.ts | 4 ++-- packages/core-api/src/apis/index.ts | 6 +---- .../apis/{ => system}/ApiAggregator.test.ts | 0 .../src/apis/{ => system}/ApiAggregator.ts | 3 +-- .../{ => system}/ApiFactoryRegistry.test.ts | 0 .../apis/{ => system}/ApiFactoryRegistry.ts | 2 +- .../apis/{ => system}/ApiProvider.test.tsx | 0 .../src/apis/{ => system}/ApiProvider.tsx | 3 +-- .../src/apis/{ => system}/ApiRef.test.ts | 0 .../core-api/src/apis/{ => system}/ApiRef.ts | 8 ++----- .../src/apis/{ => system}/ApiRegistry.test.ts | 0 .../src/apis/{ => system}/ApiRegistry.ts | 3 +-- .../src/apis/{ => system}/ApiResolver.test.ts | 0 .../src/apis/{ => system}/ApiResolver.ts | 2 +- .../core-api/src/apis/{ => system}/helpers.ts | 3 +-- packages/core-api/src/apis/system/index.ts | 23 +++++++++++++++++++ .../core-api/src/apis/{ => system}/types.ts | 6 ++++- packages/core-api/src/app/App.tsx | 3 +-- packages/core-api/src/plugin/types.ts | 2 +- 28 files changed, 50 insertions(+), 36 deletions(-) rename packages/core-api/src/apis/{ => system}/ApiAggregator.test.ts (100%) rename packages/core-api/src/apis/{ => system}/ApiAggregator.ts (93%) rename packages/core-api/src/apis/{ => system}/ApiFactoryRegistry.test.ts (100%) rename packages/core-api/src/apis/{ => system}/ApiFactoryRegistry.ts (98%) rename packages/core-api/src/apis/{ => system}/ApiProvider.test.tsx (100%) rename packages/core-api/src/apis/{ => system}/ApiProvider.tsx (96%) rename packages/core-api/src/apis/{ => system}/ApiRef.test.ts (100%) rename packages/core-api/src/apis/{ => system}/ApiRef.ts (95%) rename packages/core-api/src/apis/{ => system}/ApiRegistry.test.ts (100%) rename packages/core-api/src/apis/{ => system}/ApiRegistry.ts (96%) rename packages/core-api/src/apis/{ => system}/ApiResolver.test.ts (100%) rename packages/core-api/src/apis/{ => system}/ApiResolver.ts (98%) rename packages/core-api/src/apis/{ => system}/helpers.ts (93%) create mode 100644 packages/core-api/src/apis/system/index.ts rename packages/core-api/src/apis/{ => system}/types.ts (94%) diff --git a/packages/core-api/src/apis/definitions/AlertApi.ts b/packages/core-api/src/apis/definitions/AlertApi.ts index 123cd47651..d149940103 100644 --- a/packages/core-api/src/apis/definitions/AlertApi.ts +++ b/packages/core-api/src/apis/definitions/AlertApi.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { createApiRef } from '../ApiRef'; +import { createApiRef } from '../system'; import { Observable } from '../../types'; export type AlertMessage = { diff --git a/packages/core-api/src/apis/definitions/AppThemeApi.ts b/packages/core-api/src/apis/definitions/AppThemeApi.ts index 3f580450f0..019aa2f496 100644 --- a/packages/core-api/src/apis/definitions/AppThemeApi.ts +++ b/packages/core-api/src/apis/definitions/AppThemeApi.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { createApiRef } from '../ApiRef'; +import { createApiRef } from '../system'; import { BackstageTheme } from '@backstage/theme'; import { Observable } from '../../types'; import { SvgIconProps } from '@material-ui/core'; diff --git a/packages/core-api/src/apis/definitions/ConfigApi.ts b/packages/core-api/src/apis/definitions/ConfigApi.ts index 1fa6e70d1f..6d34055f05 100644 --- a/packages/core-api/src/apis/definitions/ConfigApi.ts +++ b/packages/core-api/src/apis/definitions/ConfigApi.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { createApiRef } from '../ApiRef'; +import { createApiRef } from '../system'; import { Config } from '@backstage/config'; // Using interface to make the ConfigApi name show up in docs diff --git a/packages/core-api/src/apis/definitions/DiscoveryApi.ts b/packages/core-api/src/apis/definitions/DiscoveryApi.ts index b0773086c7..13ead7b929 100644 --- a/packages/core-api/src/apis/definitions/DiscoveryApi.ts +++ b/packages/core-api/src/apis/definitions/DiscoveryApi.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { createApiRef } from '../ApiRef'; +import { createApiRef } from '../system'; /** * The discovery API is used to provide a mechanism for plugins to diff --git a/packages/core-api/src/apis/definitions/ErrorApi.ts b/packages/core-api/src/apis/definitions/ErrorApi.ts index 7f9676ea5a..365f59f4a3 100644 --- a/packages/core-api/src/apis/definitions/ErrorApi.ts +++ b/packages/core-api/src/apis/definitions/ErrorApi.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { createApiRef } from '../ApiRef'; +import { createApiRef } from '../system'; import { Observable } from '../../types'; /** diff --git a/packages/core-api/src/apis/definitions/FeatureFlagsApi.ts b/packages/core-api/src/apis/definitions/FeatureFlagsApi.ts index dd9657d7d8..0b7cddfe15 100644 --- a/packages/core-api/src/apis/definitions/FeatureFlagsApi.ts +++ b/packages/core-api/src/apis/definitions/FeatureFlagsApi.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { createApiRef } from '../ApiRef'; +import { createApiRef } from '../system'; import { UserFlags, FeatureFlagsRegistry } from '../../app/FeatureFlags'; import { FeatureFlagName } from '../../plugin'; diff --git a/packages/core-api/src/apis/definitions/IdentityApi.ts b/packages/core-api/src/apis/definitions/IdentityApi.ts index 2684422b1e..87dc4ca989 100644 --- a/packages/core-api/src/apis/definitions/IdentityApi.ts +++ b/packages/core-api/src/apis/definitions/IdentityApi.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { createApiRef } from '../ApiRef'; +import { createApiRef } from '../system'; import { ProfileInfo } from './auth'; /** diff --git a/packages/core-api/src/apis/definitions/OAuthRequestApi.ts b/packages/core-api/src/apis/definitions/OAuthRequestApi.ts index 6fefbd1b9c..7bbebf90c1 100644 --- a/packages/core-api/src/apis/definitions/OAuthRequestApi.ts +++ b/packages/core-api/src/apis/definitions/OAuthRequestApi.ts @@ -16,7 +16,7 @@ import { IconComponent } from '../../icons'; import { Observable } from '../../types'; -import { createApiRef } from '../ApiRef'; +import { createApiRef } from '../system'; /** * Information about the auth provider that we're requesting a login towards. diff --git a/packages/core-api/src/apis/definitions/StorageApi.ts b/packages/core-api/src/apis/definitions/StorageApi.ts index 920ee56811..923633318b 100644 --- a/packages/core-api/src/apis/definitions/StorageApi.ts +++ b/packages/core-api/src/apis/definitions/StorageApi.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { createApiRef } from '../ApiRef'; +import { createApiRef } from '../system'; import { Observable } from '../../types'; import { ErrorApi } from './ErrorApi'; diff --git a/packages/core-api/src/apis/definitions/auth.ts b/packages/core-api/src/apis/definitions/auth.ts index 109f15b26e..5ffe312591 100644 --- a/packages/core-api/src/apis/definitions/auth.ts +++ b/packages/core-api/src/apis/definitions/auth.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -import { createApiRef } from '../ApiRef'; -import { Observable } from '../..'; +import { createApiRef } from '../system'; +import { Observable } from '../../types'; /** * This file contains declarations for common interfaces of auth-related APIs. diff --git a/packages/core-api/src/apis/index.ts b/packages/core-api/src/apis/index.ts index c856a13668..03569f9570 100644 --- a/packages/core-api/src/apis/index.ts +++ b/packages/core-api/src/apis/index.ts @@ -14,10 +14,6 @@ * limitations under the License. */ -export { ApiProvider, useApi, useApiHolder } from './ApiProvider'; -export { ApiRegistry } from './ApiRegistry'; -export * from './ApiRef'; -export * from './types'; -export * from './helpers'; +export * from './system'; export * from './definitions'; export * from './implementations'; diff --git a/packages/core-api/src/apis/ApiAggregator.test.ts b/packages/core-api/src/apis/system/ApiAggregator.test.ts similarity index 100% rename from packages/core-api/src/apis/ApiAggregator.test.ts rename to packages/core-api/src/apis/system/ApiAggregator.test.ts diff --git a/packages/core-api/src/apis/ApiAggregator.ts b/packages/core-api/src/apis/system/ApiAggregator.ts similarity index 93% rename from packages/core-api/src/apis/ApiAggregator.ts rename to packages/core-api/src/apis/system/ApiAggregator.ts index da49ee6488..1587a1d10b 100644 --- a/packages/core-api/src/apis/ApiAggregator.ts +++ b/packages/core-api/src/apis/system/ApiAggregator.ts @@ -14,8 +14,7 @@ * limitations under the License. */ -import { ApiRef } from './ApiRef'; -import { ApiHolder } from './types'; +import { ApiRef, ApiHolder } from './types'; /** * An ApiHolder that queries multiple other holders from for diff --git a/packages/core-api/src/apis/ApiFactoryRegistry.test.ts b/packages/core-api/src/apis/system/ApiFactoryRegistry.test.ts similarity index 100% rename from packages/core-api/src/apis/ApiFactoryRegistry.test.ts rename to packages/core-api/src/apis/system/ApiFactoryRegistry.test.ts diff --git a/packages/core-api/src/apis/ApiFactoryRegistry.ts b/packages/core-api/src/apis/system/ApiFactoryRegistry.ts similarity index 98% rename from packages/core-api/src/apis/ApiFactoryRegistry.ts rename to packages/core-api/src/apis/system/ApiFactoryRegistry.ts index 0d36e6c550..556f63589c 100644 --- a/packages/core-api/src/apis/ApiFactoryRegistry.ts +++ b/packages/core-api/src/apis/system/ApiFactoryRegistry.ts @@ -15,12 +15,12 @@ */ import { + ApiRef, ApiFactoryHolder, ApiFactory, AnyApiRef, AnyApiFactory, } from './types'; -import { ApiRef } from './ApiRef'; type ApiFactoryScope = | 'default' // Default factories registered by core and plugins diff --git a/packages/core-api/src/apis/ApiProvider.test.tsx b/packages/core-api/src/apis/system/ApiProvider.test.tsx similarity index 100% rename from packages/core-api/src/apis/ApiProvider.test.tsx rename to packages/core-api/src/apis/system/ApiProvider.test.tsx diff --git a/packages/core-api/src/apis/ApiProvider.tsx b/packages/core-api/src/apis/system/ApiProvider.tsx similarity index 96% rename from packages/core-api/src/apis/ApiProvider.tsx rename to packages/core-api/src/apis/system/ApiProvider.tsx index 24610a1372..f2aa70244e 100644 --- a/packages/core-api/src/apis/ApiProvider.tsx +++ b/packages/core-api/src/apis/system/ApiProvider.tsx @@ -16,8 +16,7 @@ import React, { FC, createContext, useContext, ReactNode } from 'react'; import PropTypes from 'prop-types'; -import { ApiRef } from './ApiRef'; -import { ApiHolder, TypesToApiRefs } from './types'; +import { ApiRef, ApiHolder, TypesToApiRefs } from './types'; import { ApiAggregator } from './ApiAggregator'; type ApiProviderProps = { diff --git a/packages/core-api/src/apis/ApiRef.test.ts b/packages/core-api/src/apis/system/ApiRef.test.ts similarity index 100% rename from packages/core-api/src/apis/ApiRef.test.ts rename to packages/core-api/src/apis/system/ApiRef.test.ts diff --git a/packages/core-api/src/apis/ApiRef.ts b/packages/core-api/src/apis/system/ApiRef.ts similarity index 95% rename from packages/core-api/src/apis/ApiRef.ts rename to packages/core-api/src/apis/system/ApiRef.ts index 793c1e5386..0e1eb177c8 100644 --- a/packages/core-api/src/apis/ApiRef.ts +++ b/packages/core-api/src/apis/system/ApiRef.ts @@ -14,17 +14,13 @@ * limitations under the License. */ +import type { ApiRef } from './types'; + export type ApiRefConfig = { id: string; description: string; }; -export type ApiRef = { - id: string; - description: string; - T: T; -}; - class ApiRefImpl implements ApiRef { constructor(private readonly config: ApiRefConfig) { const valid = config.id diff --git a/packages/core-api/src/apis/ApiRegistry.test.ts b/packages/core-api/src/apis/system/ApiRegistry.test.ts similarity index 100% rename from packages/core-api/src/apis/ApiRegistry.test.ts rename to packages/core-api/src/apis/system/ApiRegistry.test.ts diff --git a/packages/core-api/src/apis/ApiRegistry.ts b/packages/core-api/src/apis/system/ApiRegistry.ts similarity index 96% rename from packages/core-api/src/apis/ApiRegistry.ts rename to packages/core-api/src/apis/system/ApiRegistry.ts index 64d97ba234..14f58268b4 100644 --- a/packages/core-api/src/apis/ApiRegistry.ts +++ b/packages/core-api/src/apis/system/ApiRegistry.ts @@ -14,8 +14,7 @@ * limitations under the License. */ -import { ApiRef } from './ApiRef'; -import { ApiHolder } from './types'; +import { ApiRef, ApiHolder } from './types'; type ApiImpl = readonly [ApiRef, T]; diff --git a/packages/core-api/src/apis/ApiResolver.test.ts b/packages/core-api/src/apis/system/ApiResolver.test.ts similarity index 100% rename from packages/core-api/src/apis/ApiResolver.test.ts rename to packages/core-api/src/apis/system/ApiResolver.test.ts diff --git a/packages/core-api/src/apis/ApiResolver.ts b/packages/core-api/src/apis/system/ApiResolver.ts similarity index 98% rename from packages/core-api/src/apis/ApiResolver.ts rename to packages/core-api/src/apis/system/ApiResolver.ts index cb65186a37..0dfeaeedd0 100644 --- a/packages/core-api/src/apis/ApiResolver.ts +++ b/packages/core-api/src/apis/system/ApiResolver.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -import { ApiRef } from './ApiRef'; import { + ApiRef, ApiHolder, ApiFactoryHolder, AnyApiRef, diff --git a/packages/core-api/src/apis/helpers.ts b/packages/core-api/src/apis/system/helpers.ts similarity index 93% rename from packages/core-api/src/apis/helpers.ts rename to packages/core-api/src/apis/system/helpers.ts index 7d616acd01..0ccd0cdb80 100644 --- a/packages/core-api/src/apis/helpers.ts +++ b/packages/core-api/src/apis/system/helpers.ts @@ -14,8 +14,7 @@ * limitations under the License. */ -import { ApiFactory, TypesToApiRefs } from './types'; -import { ApiRef } from './ApiRef'; +import { ApiRef, ApiFactory, TypesToApiRefs } from './types'; /** * Used to infer types for a standalone ApiFactory that isn't immediately passed diff --git a/packages/core-api/src/apis/system/index.ts b/packages/core-api/src/apis/system/index.ts new file mode 100644 index 0000000000..10b2e0f084 --- /dev/null +++ b/packages/core-api/src/apis/system/index.ts @@ -0,0 +1,23 @@ +/* + * 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 { ApiProvider, useApi, useApiHolder } from './ApiProvider'; +export { ApiRegistry } from './ApiRegistry'; +export { ApiResolver } from './ApiResolver'; +export { ApiFactoryRegistry } from './ApiFactoryRegistry'; +export { createApiRef } from './ApiRef'; +export * from './types'; +export * from './helpers'; diff --git a/packages/core-api/src/apis/types.ts b/packages/core-api/src/apis/system/types.ts similarity index 94% rename from packages/core-api/src/apis/types.ts rename to packages/core-api/src/apis/system/types.ts index 61c229b18e..b0c19e551c 100644 --- a/packages/core-api/src/apis/types.ts +++ b/packages/core-api/src/apis/system/types.ts @@ -14,7 +14,11 @@ * limitations under the License. */ -import { ApiRef } from './ApiRef'; +export type ApiRef = { + id: string; + description: string; + T: T; +}; export type AnyApiRef = ApiRef; diff --git a/packages/core-api/src/app/App.tsx b/packages/core-api/src/app/App.tsx index c222c3c420..0588cd819c 100644 --- a/packages/core-api/src/app/App.tsx +++ b/packages/core-api/src/app/App.tsx @@ -54,8 +54,7 @@ import { } from '../apis'; import { useAsync } from 'react-use'; import { AppIdentity } from './AppIdentity'; -import { ApiFactoryRegistry } from '../apis/ApiFactoryRegistry'; -import { ApiResolver } from '../apis/ApiResolver'; +import { ApiResolver, ApiFactoryRegistry } from '../apis/system'; type FullAppOptions = { apis: Iterable; diff --git a/packages/core-api/src/plugin/types.ts b/packages/core-api/src/plugin/types.ts index 12992f3620..dacb3668bc 100644 --- a/packages/core-api/src/plugin/types.ts +++ b/packages/core-api/src/plugin/types.ts @@ -16,7 +16,7 @@ import { ComponentType } from 'react'; import { RouteRef } from '../routing'; -import { AnyApiFactory } from '../apis'; +import { AnyApiFactory } from '../apis/system'; export type RouteOptions = { // Whether the route path must match exactly, defaults to true. From 1bf3ff96a7f52e05510d461dccad7175a74a3b04 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 19 Oct 2020 01:37:00 +0200 Subject: [PATCH 156/323] core-api: work around issue with ApiRef export const declarations --- .../core-api/src/apis/definitions/AlertApi.ts | 4 +-- .../src/apis/definitions/AppThemeApi.ts | 4 +-- .../src/apis/definitions/ConfigApi.ts | 4 +-- .../src/apis/definitions/DiscoveryApi.ts | 4 +-- .../core-api/src/apis/definitions/ErrorApi.ts | 4 +-- .../src/apis/definitions/FeatureFlagsApi.ts | 4 +-- .../src/apis/definitions/IdentityApi.ts | 4 +-- .../src/apis/definitions/OAuthRequestApi.ts | 4 +-- .../src/apis/definitions/StorageApi.ts | 4 +-- .../core-api/src/apis/definitions/auth.ts | 34 +++++++++---------- 10 files changed, 35 insertions(+), 35 deletions(-) diff --git a/packages/core-api/src/apis/definitions/AlertApi.ts b/packages/core-api/src/apis/definitions/AlertApi.ts index d149940103..91641ac35b 100644 --- a/packages/core-api/src/apis/definitions/AlertApi.ts +++ b/packages/core-api/src/apis/definitions/AlertApi.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { createApiRef } from '../system'; +import { createApiRef, ApiRef } from '../system'; import { Observable } from '../../types'; export type AlertMessage = { @@ -38,7 +38,7 @@ export type AlertApi = { alert$(): Observable; }; -export const alertApiRef = createApiRef({ +export const alertApiRef: ApiRef = createApiRef({ id: 'core.alert', description: 'Used to report alerts and forward them to the app', }); diff --git a/packages/core-api/src/apis/definitions/AppThemeApi.ts b/packages/core-api/src/apis/definitions/AppThemeApi.ts index 019aa2f496..515e8df082 100644 --- a/packages/core-api/src/apis/definitions/AppThemeApi.ts +++ b/packages/core-api/src/apis/definitions/AppThemeApi.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { createApiRef } from '../system'; +import { ApiRef, createApiRef } from '../system'; import { BackstageTheme } from '@backstage/theme'; import { Observable } from '../../types'; import { SvgIconProps } from '@material-ui/core'; @@ -77,7 +77,7 @@ export type AppThemeApi = { setActiveThemeId(themeId?: string): void; }; -export const appThemeApiRef = createApiRef({ +export const appThemeApiRef: ApiRef = createApiRef({ id: 'core.apptheme', description: 'API Used to configure the app theme, and enumerate options', }); diff --git a/packages/core-api/src/apis/definitions/ConfigApi.ts b/packages/core-api/src/apis/definitions/ConfigApi.ts index 6d34055f05..2ce972af0e 100644 --- a/packages/core-api/src/apis/definitions/ConfigApi.ts +++ b/packages/core-api/src/apis/definitions/ConfigApi.ts @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { createApiRef } from '../system'; +import { ApiRef, createApiRef } from '../system'; import { Config } from '@backstage/config'; // Using interface to make the ConfigApi name show up in docs export type ConfigApi = Config; -export const configApiRef = createApiRef({ +export const configApiRef: ApiRef = createApiRef({ id: 'core.config', description: 'Used to access runtime configuration', }); diff --git a/packages/core-api/src/apis/definitions/DiscoveryApi.ts b/packages/core-api/src/apis/definitions/DiscoveryApi.ts index 13ead7b929..9777835ec8 100644 --- a/packages/core-api/src/apis/definitions/DiscoveryApi.ts +++ b/packages/core-api/src/apis/definitions/DiscoveryApi.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { createApiRef } from '../system'; +import { ApiRef, createApiRef } from '../system'; /** * The discovery API is used to provide a mechanism for plugins to @@ -41,7 +41,7 @@ export type DiscoveryApi = { getBaseUrl(pluginId: string): Promise; }; -export const discoveryApiRef = createApiRef({ +export const discoveryApiRef: ApiRef = createApiRef({ id: 'core.discovery', description: 'Provides service discovery of backend plugins', }); diff --git a/packages/core-api/src/apis/definitions/ErrorApi.ts b/packages/core-api/src/apis/definitions/ErrorApi.ts index 365f59f4a3..edd6966968 100644 --- a/packages/core-api/src/apis/definitions/ErrorApi.ts +++ b/packages/core-api/src/apis/definitions/ErrorApi.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { createApiRef } from '../system'; +import { ApiRef, createApiRef } from '../system'; import { Observable } from '../../types'; /** @@ -62,7 +62,7 @@ export type ErrorApi = { error$(): Observable<{ error: Error; context?: ErrorContext }>; }; -export const errorApiRef = createApiRef({ +export const errorApiRef: ApiRef = createApiRef({ id: 'core.error', description: 'Used to report errors and forward them to the app', }); diff --git a/packages/core-api/src/apis/definitions/FeatureFlagsApi.ts b/packages/core-api/src/apis/definitions/FeatureFlagsApi.ts index 0b7cddfe15..6e8c8cd8fc 100644 --- a/packages/core-api/src/apis/definitions/FeatureFlagsApi.ts +++ b/packages/core-api/src/apis/definitions/FeatureFlagsApi.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { createApiRef } from '../system'; +import { ApiRef, createApiRef } from '../system'; import { UserFlags, FeatureFlagsRegistry } from '../../app/FeatureFlags'; import { FeatureFlagName } from '../../plugin'; @@ -57,7 +57,7 @@ export interface FeatureFlagsRegistryItem { name: FeatureFlagName; } -export const featureFlagsApiRef = createApiRef({ +export const featureFlagsApiRef: ApiRef = createApiRef({ id: 'core.featureflags', description: 'Used to toggle functionality in features across Backstage', }); diff --git a/packages/core-api/src/apis/definitions/IdentityApi.ts b/packages/core-api/src/apis/definitions/IdentityApi.ts index 87dc4ca989..5cfc4723e0 100644 --- a/packages/core-api/src/apis/definitions/IdentityApi.ts +++ b/packages/core-api/src/apis/definitions/IdentityApi.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { createApiRef } from '../system'; +import { ApiRef, createApiRef } from '../system'; import { ProfileInfo } from './auth'; /** @@ -51,7 +51,7 @@ export type IdentityApi = { signOut(): Promise; }; -export const identityApiRef = createApiRef({ +export const identityApiRef: ApiRef = createApiRef({ id: 'core.identity', description: 'Provides access to the identity of the signed in user', }); diff --git a/packages/core-api/src/apis/definitions/OAuthRequestApi.ts b/packages/core-api/src/apis/definitions/OAuthRequestApi.ts index 7bbebf90c1..7514a88dc1 100644 --- a/packages/core-api/src/apis/definitions/OAuthRequestApi.ts +++ b/packages/core-api/src/apis/definitions/OAuthRequestApi.ts @@ -16,7 +16,7 @@ import { IconComponent } from '../../icons'; import { Observable } from '../../types'; -import { createApiRef } from '../system'; +import { ApiRef, createApiRef } from '../system'; /** * Information about the auth provider that we're requesting a login towards. @@ -127,7 +127,7 @@ export type OAuthRequestApi = { authRequest$(): Observable; }; -export const oauthRequestApiRef = createApiRef({ +export const oauthRequestApiRef: ApiRef = createApiRef({ id: 'core.oauthrequest', description: 'An API for implementing unified OAuth flows in Backstage', }); diff --git a/packages/core-api/src/apis/definitions/StorageApi.ts b/packages/core-api/src/apis/definitions/StorageApi.ts index 923633318b..d0f71ea3a4 100644 --- a/packages/core-api/src/apis/definitions/StorageApi.ts +++ b/packages/core-api/src/apis/definitions/StorageApi.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { createApiRef } from '../system'; +import { ApiRef, createApiRef } from '../system'; import { Observable } from '../../types'; import { ErrorApi } from './ErrorApi'; @@ -65,7 +65,7 @@ export interface StorageApi { observe$(key: string): Observable>; } -export const storageApiRef = createApiRef({ +export const storageApiRef: ApiRef = createApiRef({ id: 'core.storage', description: 'Provides the ability to store data which is unique to the user', }); diff --git a/packages/core-api/src/apis/definitions/auth.ts b/packages/core-api/src/apis/definitions/auth.ts index 5ffe312591..946baeabd9 100644 --- a/packages/core-api/src/apis/definitions/auth.ts +++ b/packages/core-api/src/apis/definitions/auth.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { createApiRef } from '../system'; +import { ApiRef, createApiRef } from '../system'; import { Observable } from '../../types'; /** @@ -212,13 +212,13 @@ export type SessionApi = { * Note that the ID token payload is only guaranteed to contain the user's numerical Google ID, * email and expiration information. Do not rely on any other fields, as they might not be present. */ -export const googleAuthApiRef = createApiRef< +export const googleAuthApiRef: ApiRef< OAuthApi & OpenIdConnectApi & ProfileInfoApi & BackstageIdentityApi & SessionApi ->({ +> = createApiRef({ id: 'core.auth.google', description: 'Provides authentication towards Google APIs and identities', }); @@ -229,9 +229,9 @@ export const googleAuthApiRef = createApiRef< * See https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/ * for a full list of supported scopes. */ -export const githubAuthApiRef = createApiRef< +export const githubAuthApiRef: ApiRef< OAuthApi & ProfileInfoApi & BackstageIdentityApi & SessionApi ->({ +> = createApiRef({ id: 'core.auth.github', description: 'Provides authentication towards GitHub APIs', }); @@ -242,13 +242,13 @@ export const githubAuthApiRef = createApiRef< * See https://developer.okta.com/docs/guides/implement-oauth-for-okta/scopes/ * for a full list of supported scopes. */ -export const oktaAuthApiRef = createApiRef< +export const oktaAuthApiRef: ApiRef< OAuthApi & OpenIdConnectApi & ProfileInfoApi & BackstageIdentityApi & SessionApi ->({ +> = createApiRef({ id: 'core.auth.okta', description: 'Provides authentication towards Okta APIs', }); @@ -259,9 +259,9 @@ export const oktaAuthApiRef = createApiRef< * See https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#limiting-scopes-of-a-personal-access-token * for a full list of supported scopes. */ -export const gitlabAuthApiRef = createApiRef< +export const gitlabAuthApiRef: ApiRef< OAuthApi & ProfileInfoApi & BackstageIdentityApi & SessionApi ->({ +> = createApiRef({ id: 'core.auth.gitlab', description: 'Provides authentication towards GitLab APIs', }); @@ -272,9 +272,9 @@ export const gitlabAuthApiRef = createApiRef< * See https://auth0.com/docs/scopes/current/oidc-scopes * for a full list of supported scopes. */ -export const auth0AuthApiRef = createApiRef< +export const auth0AuthApiRef: ApiRef< OpenIdConnectApi & ProfileInfoApi & BackstageIdentityApi & SessionApi ->({ +> = createApiRef({ id: 'core.auth.auth0', description: 'Provides authentication towards Auth0 APIs', }); @@ -286,13 +286,13 @@ export const auth0AuthApiRef = createApiRef< * - https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent * - https://docs.microsoft.com/en-us/graph/permissions-reference */ -export const microsoftAuthApiRef = createApiRef< +export const microsoftAuthApiRef: ApiRef< OAuthApi & OpenIdConnectApi & ProfileInfoApi & BackstageIdentityApi & SessionApi ->({ +> = createApiRef({ id: 'core.auth.microsoft', description: 'Provides authentication towards Microsoft APIs and identities', }); @@ -300,13 +300,13 @@ export const microsoftAuthApiRef = createApiRef< /** * Provides authentication for custom identity providers. */ -export const oauth2ApiRef = createApiRef< +export const oauth2ApiRef: ApiRef< OAuthApi & OpenIdConnectApi & ProfileInfoApi & BackstageIdentityApi & SessionApi ->({ +> = createApiRef({ id: 'core.auth.oauth2', description: 'Example of how to use oauth2 custom provider', }); @@ -314,9 +314,9 @@ export const oauth2ApiRef = createApiRef< /** * Provides authentication for saml based identity providers */ -export const samlAuthApiRef = createApiRef< +export const samlAuthApiRef: ApiRef< ProfileInfoApi & BackstageIdentityApi & SessionApi ->({ +> = createApiRef({ id: 'core.auth.saml', description: 'Example of how to use SAML custom provider', }); From feeceb96dc906ae12626e11c233039a92f64ddf8 Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Mon, 19 Oct 2020 07:05:34 +0530 Subject: [PATCH 157/323] handle the case where no entities are available to show --- .../UnregisterEntityDialog/UnregisterEntityDialog.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/catalog/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx b/plugins/catalog/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx index e4eec3c21f..258cc38d15 100644 --- a/plugins/catalog/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx +++ b/plugins/catalog/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx @@ -85,7 +85,7 @@ export const UnregisterEntityDialog: FC = ({ {error.toString()} ) : null} - {entities ? ( + {entities?.length ? ( <> This action will unregister the following entities: @@ -107,11 +107,11 @@ export const UnregisterEntityDialog: FC = ({ - - To undo, just re-register the entity in Backstage. - ) : null} + + To undo, just re-register the entity in Backstage. +
', () => { - it('renders without exploding', () => { - const rendered = render(wrapInTestApp(
)); + it('renders without exploding', async () => { + const rendered = await renderInTestApp(
); expect(rendered.getByText('second value, second row')).toBeInTheDocument(); }); - it('renders with subtitle', () => { - const rendered = render( - wrapInTestApp(
), + it('renders with subtitle', async () => { + const rendered = await renderInTestApp( +
, ); expect(rendered.getByText('subtitle')).toBeInTheDocument(); }); diff --git a/packages/core/src/components/Tabs/Tab.test.tsx b/packages/core/src/components/Tabs/Tab.test.tsx index 5b155ef536..df8540ff14 100644 --- a/packages/core/src/components/Tabs/Tab.test.tsx +++ b/packages/core/src/components/Tabs/Tab.test.tsx @@ -15,13 +15,12 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { StyledTab } from './Tab'; describe('', () => { - it('renders without exploding', () => { - const rendered = render(wrapInTestApp()); + it('renders without exploding', async () => { + const rendered = await renderInTestApp(); expect(rendered.getByText('test')).toBeInTheDocument(); }); }); diff --git a/packages/core/src/components/TrendLine/TrendLine.test.tsx b/packages/core/src/components/TrendLine/TrendLine.test.tsx index dbd8adfccf..f3d658265b 100644 --- a/packages/core/src/components/TrendLine/TrendLine.test.tsx +++ b/packages/core/src/components/TrendLine/TrendLine.test.tsx @@ -17,24 +17,24 @@ /* eslint-disable jest/no-disabled-tests */ import React from 'react'; import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp, wrapInTestApp } from '@backstage/test-utils'; import { TrendLine } from './TrendLine'; describe('TrendLine', () => { describe('when no data is present', () => { - it('renders null without throwing', () => { - const rendered = render( - wrapInTestApp(), + it('renders null without throwing', async () => { + const rendered = await renderInTestApp( + , ); expect(rendered.queryByTitle('sparkline')).not.toBeInTheDocument(); }); }); describe('when one datapoint is present', () => { - it('renders as a straight line', () => { - const rendered = render( - wrapInTestApp(), + it('renders as a straight line', async () => { + const rendered = await renderInTestApp( + , ); expect(rendered.getByTitle('sparkline')).toBeInTheDocument(); }); diff --git a/packages/core/src/components/WarningPanel/WarningPanel.test.tsx b/packages/core/src/components/WarningPanel/WarningPanel.test.tsx index 493b143bbf..07a25d34c8 100644 --- a/packages/core/src/components/WarningPanel/WarningPanel.test.tsx +++ b/packages/core/src/components/WarningPanel/WarningPanel.test.tsx @@ -15,22 +15,21 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { WarningPanel } from './WarningPanel'; const minProps = { title: 'Mock title', message: 'Some more info' }; describe('', () => { - it('renders without exploding', () => { - const { getByText } = render(wrapInTestApp()); + it('renders without exploding', async () => { + const { getByText } = await renderInTestApp(); expect(getByText('Mock title')).toBeInTheDocument(); }); - it('renders message and children', () => { - const { getByText } = render( - wrapInTestApp(children), + it('renders message and children', async () => { + const { getByText } = await renderInTestApp( + children, ); expect(getByText('Some more info')).toBeInTheDocument(); expect(getByText('children')).toBeInTheDocument(); diff --git a/packages/core/src/layout/BottomLink/BottomLink.test.tsx b/packages/core/src/layout/BottomLink/BottomLink.test.tsx index 9871e18ebb..92ae2ecb3b 100644 --- a/packages/core/src/layout/BottomLink/BottomLink.test.tsx +++ b/packages/core/src/layout/BottomLink/BottomLink.test.tsx @@ -15,8 +15,7 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { BottomLink } from './BottomLink'; const minProps = { @@ -25,8 +24,8 @@ const minProps = { }; describe('', () => { - it('renders without exploding', () => { - const rendered = render(wrapInTestApp()); + it('renders without exploding', async () => { + const rendered = await renderInTestApp(); expect(rendered.getByText('A deepLink title')).toBeInTheDocument(); }); }); diff --git a/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx b/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx index 5db676dcc5..b28ad614bf 100644 --- a/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx +++ b/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx @@ -15,9 +15,8 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; import { ContentHeader } from './ContentHeader'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; jest.mock('react-helmet', () => { return { @@ -26,23 +25,23 @@ jest.mock('react-helmet', () => { }); describe('', () => { - it('should render with title', () => { - const rendered = render(wrapInTestApp()); + it('should render with title', async () => { + const rendered = await renderInTestApp(); rendered.getByText('Title'); }); - it('should render with titleComponent', () => { + it('should render with titleComponent', async () => { const title = 'Custom title'; const titleComponent = () =>

{title}

; - const rendered = render( - wrapInTestApp(), + const rendered = await renderInTestApp( + , ); rendered.getByText(title); }); - it('should render with description', () => { - const rendered = render( - wrapInTestApp(), + it('should render with description', async () => { + const rendered = await renderInTestApp( + , ); rendered.getByText('description'); }); diff --git a/packages/core/src/layout/ErrorPage/ErrorPage.test.tsx b/packages/core/src/layout/ErrorPage/ErrorPage.test.tsx index c47ff8d49e..91322ee2a5 100644 --- a/packages/core/src/layout/ErrorPage/ErrorPage.test.tsx +++ b/packages/core/src/layout/ErrorPage/ErrorPage.test.tsx @@ -15,14 +15,13 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; import { ErrorPage } from './ErrorPage'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; describe('', () => { - it('should render with status code, status message and go back link', () => { - const rendered = render( - wrapInTestApp(), + it('should render with status code, status message and go back link', async () => { + const rendered = await renderInTestApp( + , ); rendered.getByText(/page not found/i); rendered.getByText(/404/i); diff --git a/packages/core/src/layout/Header/Header.test.tsx b/packages/core/src/layout/Header/Header.test.tsx index 320592c218..51468f6ab5 100644 --- a/packages/core/src/layout/Header/Header.test.tsx +++ b/packages/core/src/layout/Header/Header.test.tsx @@ -15,8 +15,7 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { Header } from './Header'; jest.mock('react-helmet', () => { @@ -26,42 +25,42 @@ jest.mock('react-helmet', () => { }); describe('
', () => { - it('should render with title', () => { - const rendered = render(wrapInTestApp(
)); + it('should render with title', async () => { + const rendered = await renderInTestApp(
); rendered.getByText('Title'); }); - it('should set document title', () => { - const rendered = render(wrapInTestApp(
)); + it('should set document title', async () => { + const rendered = await renderInTestApp(
); rendered.getByText('Title1'); rendered.getByText('defaultTitle: Title1 | Backstage'); }); - it('should override document title', () => { - const rendered = render( - wrapInTestApp(
), + it('should override document title', async () => { + const rendered = await renderInTestApp( +
, ); rendered.getByText('Title1'); rendered.getByText('defaultTitle: Title2 | Backstage'); }); - it('should have subtitle', () => { - const rendered = render( - wrapInTestApp(
), + it('should have subtitle', async () => { + const rendered = await renderInTestApp( +
, ); rendered.getByText('Subtitle'); }); - it('should have type rendered', () => { - const rendered = render( - wrapInTestApp(
), + it('should have type rendered', async () => { + const rendered = await renderInTestApp( +
, ); rendered.getByText('tool'); }); - it('should have breadcrumb rendered', () => { - const rendered = render( - wrapInTestApp(
), + it('should have breadcrumb rendered', async () => { + const rendered = await renderInTestApp( +
, ); rendered.getAllByText('Title'); }); diff --git a/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx b/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx index 00fa4d27ac..76ede5398d 100644 --- a/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx +++ b/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx @@ -16,22 +16,24 @@ import React from 'react'; import { render, fireEvent } from '@testing-library/react'; -import { wrapInTestApp, Keyboard } from '@backstage/test-utils'; +import { + wrapInTestApp, + Keyboard, + renderInTestApp, +} from '@backstage/test-utils'; import { HeaderActionMenu } from './HeaderActionMenu'; describe('', () => { - it('renders without any items and without exploding', () => { - render(wrapInTestApp()); + it('renders without any items and without exploding', async () => { + await renderInTestApp(); }); - it('can open the menu and click menu items', () => { + it('can open the menu and click menu items', async () => { const onClickFunction = jest.fn(); - const rendered = render( - wrapInTestApp( - , - ), + const rendered = await renderInTestApp( + , ); expect(rendered.queryByText('Some label')).not.toBeInTheDocument(); expect(onClickFunction).not.toHaveBeenCalled(); @@ -48,12 +50,10 @@ describe('', () => { }); it('Disabled', async () => { - const rendered = render( - wrapInTestApp( - , - ), + const rendered = await renderInTestApp( + , ); fireEvent.click(rendered.getByTestId('header-action-menu')); @@ -63,22 +63,20 @@ describe('', () => { ); }); - it('Test wrapper, and secondary label', () => { + it('Test wrapper, and secondary label', async () => { const onClickFunction = jest.fn(); - const rendered = render( - wrapInTestApp( - ( - - ), - }, - ]} - />, - ), + const rendered = await renderInTestApp( + ( + + ), + }, + ]} + />, ); expect(onClickFunction).not.toHaveBeenCalled(); diff --git a/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx b/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx index fdc6ef8c6e..acadb22525 100644 --- a/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx +++ b/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx @@ -15,38 +15,37 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { HeaderLabel } from './HeaderLabel'; describe('', () => { - it('should have a label', () => { - const rendered = render(wrapInTestApp()); + it('should have a label', async () => { + const rendered = await renderInTestApp(); expect(rendered.getByText('Label')).toBeInTheDocument(); }); - it('should say unknown', () => { - const rendered = render(wrapInTestApp()); + it('should say unknown', async () => { + const rendered = await renderInTestApp(); expect(rendered.getByText('')).toBeInTheDocument(); }); - it('should say unknown when passing null as value prop', () => { - const rendered = render( - wrapInTestApp(), + it('should say unknown when passing null as value prop', async () => { + const rendered = await renderInTestApp( + , ); expect(rendered.getByText('')).toBeInTheDocument(); }); - it('should have value', () => { - const rendered = render( - wrapInTestApp(), + it('should have value', async () => { + const rendered = await renderInTestApp( + , ); expect(rendered.getByText('Value')).toBeInTheDocument(); }); - it('should have a link', () => { - const rendered = render( - wrapInTestApp(), + it('should have a link', async () => { + const rendered = await renderInTestApp( + , ); const anchor = rendered.container.querySelector('a') as HTMLAnchorElement; expect(rendered.getByText('Value')).toBeInTheDocument(); diff --git a/packages/core/src/layout/HeaderTabs/HeaderTabs.test.tsx b/packages/core/src/layout/HeaderTabs/HeaderTabs.test.tsx index a007bf9113..81d2123049 100644 --- a/packages/core/src/layout/HeaderTabs/HeaderTabs.test.tsx +++ b/packages/core/src/layout/HeaderTabs/HeaderTabs.test.tsx @@ -15,8 +15,7 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { HeaderTabs } from './'; const mockTabs = [ @@ -25,15 +24,15 @@ const mockTabs = [ ]; describe('', () => { - it('should render tabs', () => { - const rendered = render(wrapInTestApp()); + it('should render tabs', async () => { + const rendered = await renderInTestApp(); expect(rendered.getByText('Overview')).toBeInTheDocument(); expect(rendered.getByText('Docs')).toBeInTheDocument(); }); - it('should render correct selected tab', () => { - const rendered = render(wrapInTestApp()); + it('should render correct selected tab', async () => { + const rendered = await renderInTestApp(); expect(rendered.getByText('Docs').parentElement).toHaveAttribute( 'aria-selected', diff --git a/packages/core/src/layout/InfoCard/InfoCard.test.tsx b/packages/core/src/layout/InfoCard/InfoCard.test.tsx index d58fdb2ccb..f82d51fe06 100644 --- a/packages/core/src/layout/InfoCard/InfoCard.test.tsx +++ b/packages/core/src/layout/InfoCard/InfoCard.test.tsx @@ -15,8 +15,7 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { InfoCard } from './InfoCard'; const minProps = { @@ -28,13 +27,13 @@ const minProps = { }; describe('', () => { - it('renders without exploding', () => { - const rendered = render(wrapInTestApp()); + it('renders without exploding', async () => { + const rendered = await renderInTestApp(); expect(rendered.getByText('Some title')).toBeInTheDocument(); }); - it('renders a deepLink when prop is set', () => { - const rendered = render(wrapInTestApp()); + it('renders a deepLink when prop is set', async () => { + const rendered = await renderInTestApp(); expect(rendered.getByText('A deepLink title')).toBeInTheDocument(); }); }); diff --git a/packages/core/src/layout/TabbedCard/TabbedCard.test.tsx b/packages/core/src/layout/TabbedCard/TabbedCard.test.tsx index ceeae8d49d..89abdfdd53 100644 --- a/packages/core/src/layout/TabbedCard/TabbedCard.test.tsx +++ b/packages/core/src/layout/TabbedCard/TabbedCard.test.tsx @@ -16,7 +16,7 @@ import React from 'react'; import { render, fireEvent } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp, wrapInTestApp } from '@backstage/test-utils'; import { TabbedCard, CardTab } from '.'; const minProps = { @@ -28,38 +28,32 @@ const minProps = { }; describe('', () => { - it('renders without exploding', () => { - const rendered = render( - wrapInTestApp( - - Test Content - Test Content - , - ), + it('renders without exploding', async () => { + const rendered = await renderInTestApp( + + Test Content + Test Content + , ); expect(rendered.getByText('Some title')).toBeInTheDocument(); }); - it('renders a deepLink when prop is set', () => { - const rendered = render( - wrapInTestApp( - - Test Content - Test Content - , - ), + it('renders a deepLink when prop is set', async () => { + const rendered = await renderInTestApp( + + Test Content + Test Content + , ); expect(rendered.getByText('A deepLink title')).toBeInTheDocument(); }); - it('switches tabs when clicking', () => { - const rendered = render( - wrapInTestApp( - - Test Content 1 - Test Content 2 - , - ), + it('switches tabs when clicking', async () => { + const rendered = await renderInTestApp( + + Test Content 1 + Test Content 2 + , ); expect(rendered.getByText('Test Content 1')).toBeInTheDocument(); From ed26004cd46964a47d45a964769bb8e3dcf67393 Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Tue, 20 Oct 2020 08:20:35 +0530 Subject: [PATCH 190/323] fix CopyTextButton test case warnings --- .../CopyTextButton/CopyTextButton.test.tsx | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/packages/core/src/components/CopyTextButton/CopyTextButton.test.tsx b/packages/core/src/components/CopyTextButton/CopyTextButton.test.tsx index cab992e11a..07bce97d74 100644 --- a/packages/core/src/components/CopyTextButton/CopyTextButton.test.tsx +++ b/packages/core/src/components/CopyTextButton/CopyTextButton.test.tsx @@ -15,8 +15,9 @@ */ import React from 'react'; -import { render, fireEvent } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { fireEvent } from '@testing-library/react'; +import { act } from 'react-dom/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { CopyTextButton } from './CopyTextButton'; import { ApiRegistry, @@ -55,29 +56,30 @@ const apiRegistry = ApiRegistry.from([ ]); describe('', () => { - it('renders without exploding', () => { - const { getByDisplayValue } = render( - wrapInTestApp( - - - , - ), + it('renders without exploding', async () => { + const { getByDisplayValue } = await renderInTestApp( + + + , ); getByDisplayValue('mockText'); }); it('displays tooltip on click', async () => { + jest.useFakeTimers(); document.execCommand = jest.fn(); - const rendered = render( - wrapInTestApp( - - - , - ), + const rendered = await renderInTestApp( + + + , ); const button = rendered.getByTitle('mockTooltip'); fireEvent.click(button); + act(() => { + jest.runAllTimers(); + }); expect(document.execCommand).toHaveBeenCalled(); rendered.getByText('mockTooltip'); + jest.useRealTimers(); }); }); From 3783335f31255f53bc6ff788dd6e8e557e735d54 Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Tue, 20 Oct 2020 08:48:35 +0530 Subject: [PATCH 191/323] fix CodeSnippet test case warnings --- .../CodeSnippet/CodeSnippet.test.tsx | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/packages/core/src/components/CodeSnippet/CodeSnippet.test.tsx b/packages/core/src/components/CodeSnippet/CodeSnippet.test.tsx index 466abe6012..7d5d4de087 100644 --- a/packages/core/src/components/CodeSnippet/CodeSnippet.test.tsx +++ b/packages/core/src/components/CodeSnippet/CodeSnippet.test.tsx @@ -15,8 +15,9 @@ */ import React from 'react'; -import { render, fireEvent } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { fireEvent } from '@testing-library/react'; +import { act } from 'react-dom/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { CodeSnippet } from './CodeSnippet'; @@ -32,24 +33,24 @@ const minProps = { }; describe('', () => { - it('renders text without exploding', () => { - const { getByText } = render(wrapInTestApp()); + it('renders text without exploding', async () => { + const { getByText } = await renderInTestApp(); expect(getByText(/"Hello"/)).toBeInTheDocument(); expect(getByText(/"World"/)).toBeInTheDocument(); }); - it('renders without line numbers', () => { - const { queryByText } = render( - wrapInTestApp(), + it('renders without line numbers', async () => { + const { queryByText } = await renderInTestApp( + , ); expect(queryByText('1')).not.toBeInTheDocument(); expect(queryByText('2')).not.toBeInTheDocument(); expect(queryByText('3')).not.toBeInTheDocument(); }); - it('renders with line numbers', () => { - const { getByText } = render( - wrapInTestApp(), + it('renders with line numbers', async () => { + const { getByText } = await renderInTestApp( + , ); expect(getByText('1')).toBeInTheDocument(); expect(getByText('2')).toBeInTheDocument(); @@ -57,12 +58,17 @@ describe('', () => { }); it('copy code using button', async () => { + jest.useFakeTimers(); document.execCommand = jest.fn(); - const { getByTitle } = render( - wrapInTestApp(), + const { getByTitle } = await renderInTestApp( + , ); const button = getByTitle('Text copied to clipboard'); fireEvent.click(button); + act(() => { + jest.runAllTimers(); + }); expect(document.execCommand).toHaveBeenCalled(); + jest.useRealTimers(); }); }); From 2713f28f4461aba675048920dc58b2b979fa07cd Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Tue, 20 Oct 2020 08:50:38 +0530 Subject: [PATCH 192/323] add changeset --- .changeset/funny-readers-breathe.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/funny-readers-breathe.md diff --git a/.changeset/funny-readers-breathe.md b/.changeset/funny-readers-breathe.md new file mode 100644 index 0000000000..8897b24cf6 --- /dev/null +++ b/.changeset/funny-readers-breathe.md @@ -0,0 +1,5 @@ +--- +'@backstage/core': patch +--- + +fix the warning of all the core components test cases From 0f76b11669fe3bb0218c1e599868dd4cd08c4b1a Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 20 Oct 2020 10:17:31 +0200 Subject: [PATCH 193/323] chore: fixing typescript issues with using the new fetch --- plugins/sentry/package.json | 5 +++-- .../SentryPluginPage/SentryPluginPage.test.tsx | 10 ++++++++-- plugins/techdocs-backend/src/service/router.ts | 4 +++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index b06a165215..0060777491 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -38,13 +38,14 @@ "devDependencies": { "@backstage/cli": "^0.1.1-alpha.25", "@backstage/dev-utils": "^0.1.1-alpha.25", + "@backstage/test-utils": "^0.1.1-alpha.25", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^10.4.1", "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "msw": "^0.21.2", - "cross-fetch": "^3.0.6" + "cross-fetch": "^3.0.6", + "msw": "^0.21.2" }, "files": [ "dist" diff --git a/plugins/sentry/src/components/SentryPluginPage/SentryPluginPage.test.tsx b/plugins/sentry/src/components/SentryPluginPage/SentryPluginPage.test.tsx index d508ddf7c2..21c21ce385 100644 --- a/plugins/sentry/src/components/SentryPluginPage/SentryPluginPage.test.tsx +++ b/plugins/sentry/src/components/SentryPluginPage/SentryPluginPage.test.tsx @@ -16,10 +16,13 @@ import React from 'react'; import { render } from '@testing-library/react'; -import mockFetch from 'jest-fetch-mock'; import SentryPluginPage from './SentryPluginPage'; import { ThemeProvider } from '@material-ui/core'; import { lightTheme } from '@backstage/theme'; +import { msw } from '@backstage/test-utils'; +import { setupServer } from 'msw/node'; +import { rest } from 'msw'; + import { ApiProvider, ApiRegistry, @@ -31,8 +34,11 @@ const errorApi = { post: () => {} }; const ConfigApi = { getString: () => 'test' }; describe('SentryPluginPage', () => { + const server = setupServer(); + msw.setupDefaultHandlers(server); + it('should render header and time switched', () => { - mockFetch.mockResponse('{}'); + server.use(rest.get('/', (_req, res, ctx) => res(ctx.json({})))); const rendered = render( Date: Tue, 20 Oct 2020 10:19:38 +0200 Subject: [PATCH 194/323] chore(deps): bump object-path from 0.11.4 to 0.11.5 (#2983) Bumps [object-path](https://github.com/mariocasciaro/object-path) from 0.11.4 to 0.11.5. - [Release notes](https://github.com/mariocasciaro/object-path/releases) - [Commits](https://github.com/mariocasciaro/object-path/commits) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 179fe5430e..7e04d1ff57 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16964,9 +16964,9 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object-path@^0.11.4: - version "0.11.4" - resolved "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" - integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= + version "0.11.5" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.5.tgz#d4e3cf19601a5140a55a16ad712019a9c50b577a" + integrity sha512-jgSbThcoR/s+XumvGMTMf81QVBmah+/Q7K7YduKeKVWL7N111unR2d6pZZarSk6kY/caeNxUDyxOvMWyzoU2eg== object-visit@^1.0.0: version "1.0.1" From d092a52552f412d522ce563820d37610ba22b5fa Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 20 Oct 2020 10:36:30 +0200 Subject: [PATCH 195/323] chore: need to run install part of the package creation --- packages/cli/templates/default-plugin/package.json.hbs | 1 + packages/e2e-test/src/commands/run.ts | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/cli/templates/default-plugin/package.json.hbs b/packages/cli/templates/default-plugin/package.json.hbs index cf07851f31..41f942fb79 100644 --- a/packages/cli/templates/default-plugin/package.json.hbs +++ b/packages/cli/templates/default-plugin/package.json.hbs @@ -36,6 +36,7 @@ "devDependencies": { "@backstage/cli": "^{{backstageVersion}}", "@backstage/dev-utils": "^{{backstageVersion}}", + "@backstage/test-utils": "^{{backstageVersion}}", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^10.4.1", "@testing-library/user-event": "^12.0.7", diff --git a/packages/e2e-test/src/commands/run.ts b/packages/e2e-test/src/commands/run.ts index 905cb20d52..5f27176fa8 100644 --- a/packages/e2e-test/src/commands/run.ts +++ b/packages/e2e-test/src/commands/run.ts @@ -271,7 +271,12 @@ async function createPlugin( const pluginDir = resolvePath(appDir, 'plugins', canonicalName); - for (const cmd of [['tsc'], ['lint'], ['test', '--no-watch']]) { + for (const cmd of [ + ['install'], + ['tsc'], + ['lint'], + ['test', '--no-watch'], + ]) { print(`Running 'yarn ${cmd.join(' ')}' in newly created plugin`); await runPlain(['yarn', ...cmd], { cwd: pluginDir }); } From a8a67b2d7ae9c367f3f5f2b09ef61c268e5bf248 Mon Sep 17 00:00:00 2001 From: Mateusz Lewtak <36006588+lewtakm@users.noreply.github.com> Date: Tue, 20 Oct 2020 10:39:50 +0200 Subject: [PATCH 196/323] Feat/add aws lambda plugin (#2985) * feat: add AWS Lambda plugin to marketplace * feat: add aws lambda plugin to marketplace * feat: add aws lambda plugin to marketplace --- microsite/data/plugins/aws-lambda.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 microsite/data/plugins/aws-lambda.yaml diff --git a/microsite/data/plugins/aws-lambda.yaml b/microsite/data/plugins/aws-lambda.yaml new file mode 100644 index 0000000000..7fa276f444 --- /dev/null +++ b/microsite/data/plugins/aws-lambda.yaml @@ -0,0 +1,9 @@ +--- +title: AWS Lambda +author: roadie.io +authorUrl: https://roadie.io +category: Monitoring +description: View AWS Lambda functions for your components in Backstage. +documentation: https://roadie.io/backstage/plugins/aws-lambda +iconUrl: https://roadie.io/static/77f62f79e27ae8565496e4df7eef8be5/45f2b/logo.png +npmPackageName: '@roadiehq/backstage-plugin-aws-lambda' From 193652e5a3049060b20557b8f4484d44f6c0f11a Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 20 Oct 2020 10:53:47 +0200 Subject: [PATCH 197/323] chore: fixing some more e2e tests by actually polyfill the correct thing --- .../default-backend-plugin/src/setupTests.ts | 3 +-- .../ExampleComponent/ExampleComponent.test.tsx.hbs | 11 +++-------- .../ExampleFetchComponent.test.tsx.hbs | 13 ++++--------- .../cli/templates/default-plugin/src/setupTests.ts | 2 +- 4 files changed, 9 insertions(+), 20 deletions(-) diff --git a/packages/cli/templates/default-backend-plugin/src/setupTests.ts b/packages/cli/templates/default-backend-plugin/src/setupTests.ts index a5907fd52f..1c7ba6c7e1 100644 --- a/packages/cli/templates/default-backend-plugin/src/setupTests.ts +++ b/packages/cli/templates/default-backend-plugin/src/setupTests.ts @@ -13,6 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - +import 'cross-fetch/polyfill'; export {}; -global.fetch = require('node-fetch'); diff --git a/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.test.tsx.hbs b/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.test.tsx.hbs index fdb39444d8..e805900f36 100644 --- a/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.test.tsx.hbs +++ b/packages/cli/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.test.tsx.hbs @@ -5,18 +5,13 @@ import { ThemeProvider } from '@material-ui/core'; import { lightTheme } from '@backstage/theme'; import { rest } from 'msw'; import { setupServer } from 'msw/node'; +import { msw } from '@backstage/test-utils'; describe('ExampleComponent', () => { const server = setupServer(); - // Enable API mocking before tests. - beforeAll(() => server.listen({ onUnhandledRequest: 'error' })) - - // Reset any runtime request handlers we may add during the tests. - afterEach(() => server.resetHandlers()) - - // Disable API mocking after the tests are done. - afterAll(() => server.close()) + // Enable sane handlers for network requests + msw.setupDefaultHandlers(server); // setup mock response beforeEach(() => { diff --git a/packages/cli/templates/default-plugin/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx.hbs b/packages/cli/templates/default-plugin/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx.hbs index ca1990b4bc..81e1b4be09 100644 --- a/packages/cli/templates/default-plugin/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx.hbs +++ b/packages/cli/templates/default-plugin/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx.hbs @@ -3,18 +3,13 @@ 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 API mocking before tests. - beforeAll(() => server.listen({ onUnhandledRequest: 'error' })) - - // Reset any runtime request handlers we may add during the tests. - afterEach(() => server.resetHandlers()) - - // Disable API mocking after the tests are done. - afterAll(() => server.close()) - + // 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({})))) diff --git a/packages/cli/templates/default-plugin/src/setupTests.ts b/packages/cli/templates/default-plugin/src/setupTests.ts index ddc061ad7e..292b0cc471 100644 --- a/packages/cli/templates/default-plugin/src/setupTests.ts +++ b/packages/cli/templates/default-plugin/src/setupTests.ts @@ -1,2 +1,2 @@ import '@testing-library/jest-dom'; -import 'cross-fetch/register' +import 'cross-fetch/polyfill' From 37628a03f07a0de35c88f36309e5532c07d5a5ba Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 20 Oct 2020 11:11:17 +0200 Subject: [PATCH 198/323] chore(cli): fixing isome more tests --- packages/core-api/package.json | 3 ++- packages/core-api/src/setupTests.ts | 1 + packages/e2e-test/src/commands/run.ts | 7 +------ 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/core-api/package.json b/packages/core-api/package.json index de6a14bb2b..43e721683d 100644 --- a/packages/core-api/package.json +++ b/packages/core-api/package.json @@ -48,7 +48,8 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "@types/zen-observable": "^0.8.0" + "@types/zen-observable": "^0.8.0", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/packages/core-api/src/setupTests.ts b/packages/core-api/src/setupTests.ts index 825bcd4115..aea2220869 100644 --- a/packages/core-api/src/setupTests.ts +++ b/packages/core-api/src/setupTests.ts @@ -15,3 +15,4 @@ */ import '@testing-library/jest-dom'; +import 'cross-fetch/polyfill'; diff --git a/packages/e2e-test/src/commands/run.ts b/packages/e2e-test/src/commands/run.ts index 5f27176fa8..905cb20d52 100644 --- a/packages/e2e-test/src/commands/run.ts +++ b/packages/e2e-test/src/commands/run.ts @@ -271,12 +271,7 @@ async function createPlugin( const pluginDir = resolvePath(appDir, 'plugins', canonicalName); - for (const cmd of [ - ['install'], - ['tsc'], - ['lint'], - ['test', '--no-watch'], - ]) { + for (const cmd of [['tsc'], ['lint'], ['test', '--no-watch']]) { print(`Running 'yarn ${cmd.join(' ')}' in newly created plugin`); await runPlain(['yarn', ...cmd], { cwd: pluginDir }); } From aa7dd63a3b4ce08240c70de213ba74782202eb5e Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 20 Oct 2020 13:26:35 +0200 Subject: [PATCH 199/323] catalog-backend: relations db review comments and more tests Co-authored-by: blam --- .../20201019130742_add_relations_table.js | 2 +- .../catalog/DatabaseEntitiesCatalog.test.ts | 1 + .../src/catalog/DatabaseEntitiesCatalog.ts | 6 +-- .../src/database/CommonDatabase.test.ts | 46 ++++++++++++++++++- .../src/database/CommonDatabase.ts | 1 + .../ingestion/HigherOrderOperations.test.ts | 1 + .../src/service/router.test.ts | 1 + 7 files changed, 53 insertions(+), 5 deletions(-) diff --git a/plugins/catalog-backend/migrations/20201019130742_add_relations_table.js b/plugins/catalog-backend/migrations/20201019130742_add_relations_table.js index ca9c170c49..accf9035e7 100644 --- a/plugins/catalog-backend/migrations/20201019130742_add_relations_table.js +++ b/plugins/catalog-backend/migrations/20201019130742_add_relations_table.js @@ -50,5 +50,5 @@ exports.up = async function up(knex) { * @param {import('knex')} knex */ exports.down = async function down(knex) { - return knex.schema.dropTable('entities_relations'); + await knex.schema.dropTable('entities_relations'); }; diff --git a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts index 3d1f887e1f..d84a8e071c 100644 --- a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts +++ b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts @@ -31,6 +31,7 @@ describe('DatabaseEntitiesCatalog', () => { entityByName: jest.fn(), entityByUid: jest.fn(), removeEntityByUid: jest.fn(), + setRelations: jest.fn(), addLocation: jest.fn(), removeLocation: jest.fn(), location: jest.fn(), diff --git a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts index b706703c4b..efb541727a 100644 --- a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts +++ b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts @@ -192,13 +192,13 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { await Promise.all(tasks); } - // Set the relations on the entity using the DB layer + // Set the relations originating from an entity using the DB layer async setRelations( - entityUid: string, + originatingEntityId: string, relations: EntityRelationSpec[], ): Promise { return await this.database.transaction(tx => - this.database.setRelations(tx, entityUid, relations), + this.database.setRelations(tx, originatingEntityId, relations), ); } diff --git a/plugins/catalog-backend/src/database/CommonDatabase.test.ts b/plugins/catalog-backend/src/database/CommonDatabase.test.ts index a2d6482d93..0e59e0ff5a 100644 --- a/plugins/catalog-backend/src/database/CommonDatabase.test.ts +++ b/plugins/catalog-backend/src/database/CommonDatabase.test.ts @@ -553,6 +553,24 @@ describe('CommonDatabase', () => { }; } + it('should not allow setting relations on nonexistent entities', async () => { + await expect( + db.transaction(async tx => { + await db.setRelations(tx, 'nonexistent', [ + makeRelation('a:b/c', 'rel1', 'x:y/z'), + ]); + }), + ).rejects.toThrow(/constraint failed/); + }); + + it('should allow setting relations on nonexistent entities without any relations', async () => { + await expect( + db.transaction(async tx => { + await db.setRelations(tx, 'nonexistent', []); + }), + ).resolves.toBeUndefined(); + }); + it('adds multiple relations for entities', async () => { const entity1 = { apiVersion: 'v1', @@ -579,9 +597,11 @@ describe('CommonDatabase', () => { makeRelation('a:b/c', 'rel4', 'x:y/z'), makeRelation('a:b/c', 'rel5', 'x:y/z'), makeRelation('x:y/z', 'rel6', 'a:b/c'), + // relations don't have to reference the originating entity, so this should be fine, but not show up + makeRelation('g:h/i', 'rel8', 'd:e/f'), ]; - await db.transaction(async tx => { + const { id2: secondEntityId } = await db.transaction(async tx => { const [{ entity: e1 }, { entity: e2 }] = await db.addEntities(tx, [ { entity: entity1 }, { entity: entity2 }, @@ -637,6 +657,30 @@ describe('CommonDatabase', () => { ], }, ]); + + await db.transaction(tx => db.removeEntityByUid(tx, secondEntityId)); + + const res2 = await db.transaction(tx => db.entities(tx)); + expect( + res2.map(r => ({ + name: r.entity.metadata.name, + relations: r.entity.relations, + })), + ).toEqual([ + { + name: 'c', + relations: [ + { + type: 'rel1', + target: { kind: 'x', namespace: 'y', name: 'z' }, + }, + { + type: 'rel2', + target: { kind: 'x', namespace: 'y', name: 'z' }, + }, + ], + }, + ]); }); }); diff --git a/plugins/catalog-backend/src/database/CommonDatabase.ts b/plugins/catalog-backend/src/database/CommonDatabase.ts index b1b284f739..e72926b13a 100644 --- a/plugins/catalog-backend/src/database/CommonDatabase.ts +++ b/plugins/catalog-backend/src/database/CommonDatabase.ts @@ -359,6 +359,7 @@ export class CommonDatabase implements Database { }), ); + // TODO(blam): translate constraint failures to sane NotFoundError instead await tx.batchInsert('entities_relations', relationsRows, BATCH_SIZE); } diff --git a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts index 7fe164d05f..34320fe18f 100644 --- a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts +++ b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts @@ -34,6 +34,7 @@ describe('HigherOrderOperations', () => { addOrUpdateEntity: jest.fn(), addEntities: jest.fn(), removeEntityByUid: jest.fn(), + setRelations: jest.fn(), batchAddOrUpdateEntities: jest.fn(), }; locationsCatalog = { diff --git a/plugins/catalog-backend/src/service/router.test.ts b/plugins/catalog-backend/src/service/router.test.ts index 414f8a93de..a2b17ba360 100644 --- a/plugins/catalog-backend/src/service/router.test.ts +++ b/plugins/catalog-backend/src/service/router.test.ts @@ -35,6 +35,7 @@ describe('createRouter', () => { addOrUpdateEntity: jest.fn(), addEntities: jest.fn(), removeEntityByUid: jest.fn(), + setRelations: jest.fn(), batchAddOrUpdateEntities: jest.fn(), }; locationsCatalog = { From 627090be2236f3f8a894e0e5fe778917d5d05c41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 20 Oct 2020 14:07:43 +0200 Subject: [PATCH 200/323] fix(cli): removePlugin forgotten await --- packages/cli/src/commands/remove-plugin/removePlugin.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/commands/remove-plugin/removePlugin.ts b/packages/cli/src/commands/remove-plugin/removePlugin.ts index 643bd599d7..81d8322ffa 100644 --- a/packages/cli/src/commands/remove-plugin/removePlugin.ts +++ b/packages/cli/src/commands/remove-plugin/removePlugin.ts @@ -62,7 +62,7 @@ export const removePluginDirectory = async (destination: string) => { export const removeSymLink = async (destination: string) => { await Task.forItem('removing', 'symbolic link', async () => { - const symLinkExists = fse.pathExists(destination); + const symLinkExists = await fse.pathExists(destination); if (symLinkExists) { try { await fse.remove(destination); @@ -189,7 +189,7 @@ export default async () => { return chalk.red('Please enter an ID for the plugin'); } else if (!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(value)) { return chalk.red( - 'Plugin IDs must be kehbab-cased and contain only letters, digits and dashes.', + 'Plugin IDs must be kebab-cased and contain only letters, digits and dashes.', ); } return true; From 0cd1fd178adb848a69a6e486eaec43c81e134060 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 20 Oct 2020 14:44:09 +0200 Subject: [PATCH 201/323] fix(github-actions): fix crash when viewing ongoing workflows --- plugins/github-actions/src/api/types.ts | 2 +- .../components/WorkflowRunDetails/WorkflowRunDetails.tsx | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/plugins/github-actions/src/api/types.ts b/plugins/github-actions/src/api/types.ts index ccc9198e58..00d622cccf 100644 --- a/plugins/github-actions/src/api/types.ts +++ b/plugins/github-actions/src/api/types.ts @@ -17,7 +17,7 @@ export type Step = { name: string; status: string; - conclusion: string; + conclusion?: string; number: number; // starts from 1 started_at: string; completed_at: string; diff --git a/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx b/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx index 7714ad6cb6..a2753589eb 100644 --- a/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx +++ b/plugins/github-actions/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx @@ -77,8 +77,9 @@ const JobsList = ({ jobs, entity }: { jobs?: Jobs; entity: Entity }) => { {jobs && jobs.total_count > 0 && - jobs.jobs.map((job: Job) => ( + jobs.jobs.map(job => ( { @@ -142,8 +143,8 @@ const JobListItem = ({
- {job.steps.map((step: Step) => ( - + {job.steps.map(step => ( + ))}
From fb706bf46f9275e242c10f2fb59b272e2cc9da6a Mon Sep 17 00:00:00 2001 From: lewtakm Date: Tue, 20 Oct 2020 15:25:00 +0200 Subject: [PATCH 202/323] feat: update github pull requests package version --- packages/app/package.json | 2 +- yarn.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/app/package.json b/packages/app/package.json index 65ba6140b2..084bbf465b 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -35,7 +35,7 @@ "@material-ui/icons": "^4.9.1", "@octokit/rest": "^18.0.0", "@roadiehq/backstage-plugin-github-insights": "^0.2.6", - "@roadiehq/backstage-plugin-github-pull-requests": "^0.5.1", + "@roadiehq/backstage-plugin-github-pull-requests": "^0.5.2", "@roadiehq/backstage-plugin-travis-ci": "^0.2.3", "dayjs": "^1.9.1", "history": "^5.0.0", diff --git a/yarn.lock b/yarn.lock index 5007bd0d58..9fad11c188 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3670,15 +3670,15 @@ react-router "^6.0.0-beta.0" react-use "^15.3.3" -"@roadiehq/backstage-plugin-github-pull-requests@^0.5.1": - version "0.5.1" - resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-pull-requests/-/backstage-plugin-github-pull-requests-0.5.1.tgz#a0e3ef97de20fe87e55a26f0198d4ff80b6ecd8c" - integrity sha512-0Btg4jn7SWAp/0A7+xCuHxD4LKPoE3LSEkjMvLmWk/AIIvNA6uSWXeAv1nJZSe4JBV0Qzt+r+TS+hCcFR+vcMg== +"@roadiehq/backstage-plugin-github-pull-requests@^0.5.2": + version "0.5.2" + resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-pull-requests/-/backstage-plugin-github-pull-requests-0.5.2.tgz#455355fe5cdcc43c22b80a8ef3697378084680a1" + integrity sha512-GM+nWQZ+aehMclN70Pp35UQe3I46SQCjWiGZ6/0TfDzrueHln39L2UspUj1L/713xDDtDK8ZnTJdFn/qKx7j4A== dependencies: - "@backstage/catalog-model" "^0.1.1-alpha.24" - "@backstage/core" "^0.1.1-alpha.24" - "@backstage/plugin-catalog" "^0.1.1-alpha.24" - "@backstage/theme" "^0.1.1-alpha.24" + "@backstage/catalog-model" "^0.1.1-alpha.25" + "@backstage/core" "^0.1.1-alpha.25" + "@backstage/plugin-catalog" "^0.1.1-alpha.25" + "@backstage/theme" "^0.1.1-alpha.25" "@material-ui/core" "^4.11.0" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "^4.0.0-alpha.56" From 61291c5cb7c8702d050af66c31cf925fa9f0eaae Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Tue, 20 Oct 2020 19:01:43 +0530 Subject: [PATCH 203/323] remove unused CSS (#2999) --- microsite/static/css/custom.css | 4 ---- 1 file changed, 4 deletions(-) diff --git a/microsite/static/css/custom.css b/microsite/static/css/custom.css index 6308513276..22855a2b4d 100644 --- a/microsite/static/css/custom.css +++ b/microsite/static/css/custom.css @@ -15,9 +15,6 @@ table tr:nth-child(2n) { background-color: #2b2b2b; } -@media only screen and (min-device-width: 360px) and (max-device-width: 736px) { -} - @media only screen and (min-width: 1024px) and (max-width: 1500px) { /* Experience */ .content-experience { @@ -857,7 +854,6 @@ code { position: relative; padding-top: 75%; width: 100%; - /* border: 1px dotted #f00; */ } .Block__Graphic { From 8fd1d4cf855b5adafdafbc8f099a0c209be7c624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 20 Oct 2020 15:57:31 +0200 Subject: [PATCH 204/323] chore(scaffolder): bump rjsf --- plugins/scaffolder/package.json | 4 ++-- yarn.lock | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index fe6f54593d..97f5cd891c 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -28,8 +28,8 @@ "@material-ui/core": "^4.11.0", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.45", - "@rjsf/core": "^2.1.0", - "@rjsf/material-ui": "^2.1.0", + "@rjsf/core": "^2.4.0", + "@rjsf/material-ui": "^2.4.0", "classnames": "^2.2.6", "moment": "^2.26.0", "react": "^16.13.1", diff --git a/yarn.lock b/yarn.lock index 7e04d1ff57..6d32c5700d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3628,10 +3628,10 @@ prop-types "^15.6.1" react-lifecycles-compat "^3.0.4" -"@rjsf/core@^2.1.0": - version "2.3.0" - resolved "https://registry.npmjs.org/@rjsf/core/-/core-2.3.0.tgz#334c73d2262ef1a8cda477e238067af7336c5599" - integrity sha512-OZKYHt9tjKhzOH4CvsPiCwepuIacqI++cNmnL2fsxh1IF+uEWGlo3NLDWhhSaBbOv9jps6a5YQcLbLtjNuSwug== +"@rjsf/core@^2.4.0": + version "2.4.0" + resolved "https://registry.npmjs.org/@rjsf/core/-/core-2.4.0.tgz#c50bcff0d8178948ce08123177399d8816d51929" + integrity sha512-8zlydBkGldOxGXFEwNGFa1gzTxpcxaYn7ofegcu8XHJ7IKMCfpnU3ABg+H3eml1KZCX3FODmj1tHFJKuTmfynw== dependencies: "@babel/runtime-corejs2" "^7.8.7" "@types/json-schema" "^7.0.4" @@ -3645,10 +3645,10 @@ react-is "^16.9.0" shortid "^2.2.14" -"@rjsf/material-ui@^2.1.0": - version "2.3.0" - resolved "https://registry.npmjs.org/@rjsf/material-ui/-/material-ui-2.3.0.tgz#a051eb4db2ad778e39933a31ba806f415dd3ba90" - integrity sha512-v/xZ4Xk18ZgBARcCe99IDqdO97GU0UC784gG8PhGGFDdy5Rbdy7ixTjHkGYttkr43PB7SX6ttohNhkKSW4nATQ== +"@rjsf/material-ui@^2.4.0": + version "2.4.0" + resolved "https://registry.npmjs.org/@rjsf/material-ui/-/material-ui-2.4.0.tgz#1b5859298bf3f61137d7b05084f058a775d6fd73" + integrity sha512-U8F/suzg4MuV+8mK1/ufs0Y6c3O8hc1wnuD2IKoOVJvegGfz5JCafyoyGAW6iyuT1DZBMPzVWEqfiuYPmoE7pw== "@roadiehq/backstage-plugin-github-insights@^0.2.7": version "0.2.7" From 79528d67d9a7de704c41cca5d5b66a2f345227f8 Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Tue, 20 Oct 2020 09:34:25 -0600 Subject: [PATCH 205/323] fix(cost-insights): More exports to help custom alerting --- plugins/cost-insights/src/components/BarChart/BarChart.tsx | 2 +- .../src/components/CostOverviewCard/CostOverviewTooltip.tsx | 2 +- plugins/cost-insights/src/components/Tooltip/index.ts | 6 ++++-- plugins/cost-insights/src/components/index.ts | 1 + plugins/cost-insights/src/index.ts | 1 + 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/plugins/cost-insights/src/components/BarChart/BarChart.tsx b/plugins/cost-insights/src/components/BarChart/BarChart.tsx index 2f923304a8..6b2bbc1490 100644 --- a/plugins/cost-insights/src/components/BarChart/BarChart.tsx +++ b/plugins/cost-insights/src/components/BarChart/BarChart.tsx @@ -30,7 +30,7 @@ import { import { Box, useTheme } from '@material-ui/core'; import BarChartTick from './BarChartTick'; import BarChartStepper from './BarChartStepper'; -import Tooltip, { TooltipItemProps } from '../Tooltip'; +import { Tooltip, TooltipItemProps } from '../Tooltip'; import { currencyFormatter } from '../../utils/formatters'; import { diff --git a/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewTooltip.tsx b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewTooltip.tsx index a30f370166..c8a7b8533c 100644 --- a/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewTooltip.tsx +++ b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewTooltip.tsx @@ -16,7 +16,7 @@ import React from 'react'; import moment from 'moment'; import { TooltipPayload, TooltipProps } from 'recharts'; -import Tooltip, { TooltipItemProps } from '../../components/Tooltip'; +import { Tooltip, TooltipItemProps } from '../../components/Tooltip'; import { DEFAULT_DATE_FORMAT } from '../../types'; export type CostOverviewTooltipProps = TooltipProps & { diff --git a/plugins/cost-insights/src/components/Tooltip/index.ts b/plugins/cost-insights/src/components/Tooltip/index.ts index ca20ab1242..d56352d324 100644 --- a/plugins/cost-insights/src/components/Tooltip/index.ts +++ b/plugins/cost-insights/src/components/Tooltip/index.ts @@ -14,5 +14,7 @@ * limitations under the License. */ -export { default } from './Tooltip'; -export * from './TooltipItem'; +export { default as Tooltip } from './Tooltip'; +export type { TooltipProps } from './Tooltip'; +export { default as TooltipItem } from './TooltipItem'; +export type { TooltipItemProps } from './TooltipItem'; diff --git a/plugins/cost-insights/src/components/index.ts b/plugins/cost-insights/src/components/index.ts index a24a28e4f1..6ba17f22fc 100644 --- a/plugins/cost-insights/src/components/index.ts +++ b/plugins/cost-insights/src/components/index.ts @@ -16,3 +16,4 @@ export { default as BarChart } from './BarChart'; export { default as LegendItem } from './LegendItem'; +export * from './Tooltip'; diff --git a/plugins/cost-insights/src/index.ts b/plugins/cost-insights/src/index.ts index a46857f077..ba912d2316 100644 --- a/plugins/cost-insights/src/index.ts +++ b/plugins/cost-insights/src/index.ts @@ -17,4 +17,5 @@ export { plugin } from './plugin'; export * from './api'; export * from './components'; +export { useCurrency } from './hooks'; export * from './types'; From 3238651f8a7eac63574ec7ad38ce493c04182f8c Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 20 Oct 2020 18:21:42 +0200 Subject: [PATCH 206/323] =?UTF-8?q?chore:=20maybe=20fixed=20the=20last=20o?= =?UTF-8?q?f=20the=20broken=20tests=20=F0=9F=A4=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core-api/package.json | 4 ++- .../DefaultAuthConnector.test.ts | 35 ++++++++++++------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/packages/core-api/package.json b/packages/core-api/package.json index 43e721683d..5b1456d1ba 100644 --- a/packages/core-api/package.json +++ b/packages/core-api/package.json @@ -30,6 +30,7 @@ }, "dependencies": { "@backstage/config": "^0.1.1-alpha.25", + "@backstage/test-utils": "^0.1.1-alpha.25", "@backstage/theme": "^0.1.1-alpha.25", "@material-ui/core": "^4.11.0", "@material-ui/icons": "^4.9.1", @@ -49,7 +50,8 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "@types/zen-observable": "^0.8.0", - "cross-fetch": "^3.0.6" + "cross-fetch": "^3.0.6", + "msw": "^0.21.3" }, "files": [ "dist" diff --git a/packages/core-api/src/lib/AuthConnector/DefaultAuthConnector.test.ts b/packages/core-api/src/lib/AuthConnector/DefaultAuthConnector.test.ts index 5781130799..391b86952d 100644 --- a/packages/core-api/src/lib/AuthConnector/DefaultAuthConnector.test.ts +++ b/packages/core-api/src/lib/AuthConnector/DefaultAuthConnector.test.ts @@ -19,8 +19,9 @@ import { DefaultAuthConnector } from './DefaultAuthConnector'; import MockOAuthApi from '../../apis/implementations/OAuthRequestApi/MockOAuthApi'; import * as loginPopup from '../loginPopup'; import { UrlPatternDiscovery } from '../../apis'; - -const anyFetch = fetch as any; +import { msw } from '@backstage/test-utils'; +import { setupServer } from 'msw/node'; +import { rest } from 'msw'; const defaultOptions = { discoveryApi: UrlPatternDiscovery.compile('http://my-host/api/{{pluginId}}'), @@ -39,19 +40,25 @@ const defaultOptions = { }; describe('DefaultAuthConnector', () => { + const server = setupServer(); + msw.setupDefaultHandlers(server); + afterEach(() => { jest.resetAllMocks(); - anyFetch.resetMocks(); }); it('should refresh a session', async () => { - anyFetch.mockResponseOnce( - JSON.stringify({ - idToken: 'mock-id-token', - accessToken: 'mock-access-token', - scopes: 'a b c', - expiresInSeconds: '60', - }), + server.use( + rest.get('*', (_req, res, ctx) => + res( + ctx.json({ + idToken: 'mock-id-token', + accessToken: 'mock-access-token', + scopes: 'a b c', + expiresInSeconds: '60', + }), + ), + ), ); const helper = new DefaultAuthConnector(defaultOptions); @@ -64,7 +71,11 @@ describe('DefaultAuthConnector', () => { }); it('should handle failure to refresh session', async () => { - anyFetch.mockRejectOnce(new Error('Network NOPE')); + server.use( + rest.get('*', (_req, res, ctx) => + res(ctx.status(500, 'Error: Network NOPE')), + ), + ); const helper = new DefaultAuthConnector(defaultOptions); await expect(helper.refreshSession()).rejects.toThrow( @@ -73,7 +84,7 @@ describe('DefaultAuthConnector', () => { }); it('should handle failure response when refreshing session', async () => { - anyFetch.mockResponseOnce({}, { status: 401, statusText: 'NOPE' }); + server.use(rest.get('*', (_req, res, ctx) => res(ctx.status(401, 'NOPE')))); const helper = new DefaultAuthConnector(defaultOptions); await expect(helper.refreshSession()).rejects.toThrow( From 6d97d2d6f90d032f6a3c45156b6bba6043f3b793 Mon Sep 17 00:00:00 2001 From: Jesko Steinberg <61695677+jeskosda@users.noreply.github.com> Date: Tue, 20 Oct 2020 20:20:30 +0200 Subject: [PATCH 207/323] feat: Display the plugins InfoCards on EntityPage Overwiev suitable full height (#2826) * fix(github-actions): change RecentWorkflowRunsCard to InfoCard * feat: format entity page overview page * feat: replace InfoCard variant 'height100' with 'gridItem' * fix: deprecate usage of InfoCard variant height100 --- .changeset/2826.md | 20 +++++++++++++ .../app/src/components/catalog/EntityPage.tsx | 12 ++++---- .../core/src/layout/InfoCard/InfoCard.tsx | 28 ++++++++++++++++--- .../app/src/components/catalog/EntityPage.tsx | 10 +++---- .../src/components/AboutCard/AboutCard.tsx | 18 ++++++++++-- .../src/components/Cards/Cards.tsx | 23 ++++++++------- .../Cards/RecentWorkflowRunsCard.tsx | 18 ++++++++---- .../jenkins/src/components/Cards/Cards.tsx | 10 +++++-- .../Cards/LastLighthouseAuditCard.tsx | 13 ++++++--- 9 files changed, 113 insertions(+), 39 deletions(-) create mode 100644 .changeset/2826.md diff --git a/.changeset/2826.md b/.changeset/2826.md new file mode 100644 index 0000000000..fb2dbb6877 --- /dev/null +++ b/.changeset/2826.md @@ -0,0 +1,20 @@ +--- +'example-app': minor +'@backstage/core': minor +'@backstage/create-app': minor +'@backstage/plugin-catalog': minor +'@backstage/plugin-github-actions': minor +'@backstage/plugin-jenkins': minor +'@backstage/plugin-lighthouse': minor +--- + +The InfoCard variant `'height100'` is deprecated. Use variant `'gridItem'` instead. + +When the InfoCard is displayed as a grid item within a grid, you may want items to have the same height for all items. +Set to the `'gridItem'` variant to display the InfoCard with full height suitable for Grid: +`...` + +Changed the InfoCards in '@backstage/plugin-github-actions', '@backstage/plugin-jenkins', '@backstage/plugin-lighthouse' +to pass an optional variant to the corresponding card of the plugin. + +As a result the overview content of the EntityPage shows cards with full height suitable for Grid. diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx index f30e7ff34f..0a3007237e 100644 --- a/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/app/src/components/catalog/EntityPage.tsx @@ -105,10 +105,12 @@ const RecentCICDRunsSwitcher = ({ entity }: { entity: Entity }) => { let content: ReactNode; switch (true) { case isJenkinsAvailable(entity): - content = ; + content = ; break; case isGitHubActionsAvailable(entity): - content = ; + content = ( + + ); break; case isTravisCIAvailable(entity): content = ; @@ -127,9 +129,9 @@ const RecentCICDRunsSwitcher = ({ entity }: { entity: Entity }) => { }; const OverviewContent = ({ entity }: { entity: Entity }) => ( - + - + {isGitHubAvailable(entity) && ( @@ -145,7 +147,7 @@ const OverviewContent = ({ entity }: { entity: Entity }) => ( )} {isLighthouseAvailable(entity) && ( - + )} {isPullRequestsAvailable(entity) && ( diff --git a/packages/core/src/layout/InfoCard/InfoCard.tsx b/packages/core/src/layout/InfoCard/InfoCard.tsx index 1a4ceb024b..d13a94375f 100644 --- a/packages/core/src/layout/InfoCard/InfoCard.tsx +++ b/packages/core/src/layout/InfoCard/InfoCard.tsx @@ -70,6 +70,15 @@ const VARIANT_STYLES = { flexDirection: 'column', height: '100%', }, + gridItem: { + display: 'flex', + flexDirection: 'column', + height: 'calc(100% - 10px)', // for pages without content header + marginBottom: '10px', + }, + /** + * @deprecated This variant is replaced by 'gridItem'. + */ height100: { display: 'flex', flexDirection: 'column', @@ -81,9 +90,15 @@ const VARIANT_STYLES = { fullHeight: { flex: 1, }, + /** + * @deprecated This variant is replaced by 'gridItem'. + */ height100: { flex: 1, }, + gridItem: { + flex: 1, + }, }, }; @@ -100,9 +115,10 @@ const VARIANT_STYLES = { * By default the InfoCard has no custom layout of its children, but is treated as a block element. A * couple common variants are provided and can be specified via the variant property: * - * Display the card full height suitable for DataGrid: + * When the InfoCard is displayed as a grid item within a grid, you may want items to have the same height for all items. + * Set to the 'gridItem' variant to display the InfoCard with full height suitable for Grid: * - * ... + * ... */ type Props = { title?: ReactNode; @@ -142,17 +158,21 @@ export const InfoCard = ({ noPadding, }: Props): JSX.Element => { const classes = useStyles(); - /** * If variant is specified, we build up styles for that particular variant for both * the Card and the CardContent (since these need to be synced) */ let calculatedStyle = {}; let calculatedCardStyle = {}; - if (variant) { const variants = variant.split(/[\s]+/g); variants.forEach(name => { + if (name === 'height100') { + // eslint-disable-next-line no-console + console.warn( + "Variant 'height100' of InfoCard is deprecated. Use variant 'gridItem' instead.", + ); + } calculatedStyle = { ...calculatedStyle, ...VARIANT_STYLES.card[name as keyof typeof VARIANT_STYLES['card']], 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 5480d8218a..7d65b3261a 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 @@ -53,9 +53,9 @@ const CICDSwitcher = ({ entity }: { entity: Entity }) => { }; const OverviewContent = ({ entity }: { entity: Entity }) => ( - + - + ); @@ -77,7 +77,7 @@ const ServiceEntityPage = ({ entity }: { entity: Entity }) => ( title="API" element={} /> - } @@ -97,7 +97,7 @@ const WebsiteEntityPage = ({ entity }: { entity: Entity }) => ( title="CI/CD" element={} /> - } @@ -112,7 +112,7 @@ const DefaultEntityPage = ({ entity }: { entity: Entity }) => ( title="Overview" element={} /> - } diff --git a/plugins/catalog/src/components/AboutCard/AboutCard.tsx b/plugins/catalog/src/components/AboutCard/AboutCard.tsx index d9a8142d66..266d5fa843 100644 --- a/plugins/catalog/src/components/AboutCard/AboutCard.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutCard.tsx @@ -58,6 +58,15 @@ const useStyles = makeStyles(theme => ({ description: { wordBreak: 'break-word', }, + gridItemCard: { + display: 'flex', + flexDirection: 'column', + height: 'calc(100% - 10px)', // for pages without content header + marginBottom: '10px', + }, + gridItemCardContent: { + flex: 1, + }, })); const iconMap: Record = { @@ -82,14 +91,15 @@ function getCodeLinkInfo(entity: Entity): CodeLinkInfo { type AboutCardProps = { entity: Entity; + variant?: string; }; -export function AboutCard({ entity }: AboutCardProps) { +export function AboutCard({ entity, variant }: AboutCardProps) { const classes = useStyles(); const codeLink = getCodeLinkInfo(entity); return ( - + - + { + // Display the card full height suitable for + variant, +}: Props) => { const errorApi = useApi(errorApiRef); const [owner, repo] = ( entity?.metadata.annotations?.[GITHUB_ACTIONS_ANNOTATION] ?? '/' @@ -102,7 +101,7 @@ export const LatestWorkflowRunCard = ({ }, [error, errorApi]); return ( - + ( - + variant, +}: Props) => ( + ); diff --git a/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx b/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx index e5bba7fad9..46f60981a0 100644 --- a/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx +++ b/plugins/github-actions/src/components/Cards/RecentWorkflowRunsCard.tsx @@ -18,9 +18,9 @@ import { errorApiRef, useApi } from '@backstage/core-api'; import { GITHUB_ACTIONS_ANNOTATION } from '../useProjectName'; import { useWorkflowRuns } from '../useWorkflowRuns'; import React, { useEffect } from 'react'; -import { EmptyState, Table } from '@backstage/core'; +import { EmptyState, InfoCard, Table } from '@backstage/core'; import { WorkflowRunStatus } from '../WorkflowRunStatus'; -import { Button, Card, Link, TableContainer } from '@material-ui/core'; +import { Button, Link } from '@material-ui/core'; import { generatePath, Link as RouterLink } from 'react-router-dom'; const firstLine = (message: string): string => message.split('\n')[0]; @@ -30,6 +30,7 @@ export type Props = { branch?: string; dense?: boolean; limit?: number; + variant?: string; }; export const RecentWorkflowRunsCard = ({ @@ -37,6 +38,7 @@ export const RecentWorkflowRunsCard = ({ branch, dense = false, limit = 5, + variant, }: Props) => { const errorApi = useApi(errorApiRef); const [owner, repo] = ( @@ -70,15 +72,19 @@ export const RecentWorkflowRunsCard = ({ } /> ) : ( - + - + ); }; diff --git a/plugins/jenkins/src/components/Cards/Cards.tsx b/plugins/jenkins/src/components/Cards/Cards.tsx index 5034effdcf..31acedc180 100644 --- a/plugins/jenkins/src/components/Cards/Cards.tsx +++ b/plugins/jenkins/src/components/Cards/Cards.tsx @@ -61,12 +61,18 @@ const WidgetContent = ({ ); }; -export const LatestRunCard = ({ branch = 'master' }: { branch: string }) => { +export const LatestRunCard = ({ + branch = 'master', + variant, +}: { + branch: string; + variant?: string; +}) => { const { owner, repo } = useProjectSlugFromEntity(); const [{ builds, loading }] = useBuilds(owner, repo, branch); const lastRun = builds ?? {}; return ( - + ); diff --git a/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.tsx b/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.tsx index d3bc362877..3f7020cba5 100644 --- a/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.tsx +++ b/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.tsx @@ -88,9 +88,10 @@ const LighthouseAuditSummary: FC<{ audit: Audit; dense?: boolean }> = ({ return ; }; -export const LastLighthouseAuditCard: FC<{ dense?: boolean }> = ({ - dense = false, -}) => { +export const LastLighthouseAuditCard: FC<{ + dense?: boolean; + variant?: string; +}> = ({ dense = false, variant }) => { const { value: website, loading, error } = useWebsiteForEntity(); let content; @@ -105,5 +106,9 @@ export const LastLighthouseAuditCard: FC<{ dense?: boolean }> = ({ ); } - return {content}; + return ( + + {content} + + ); }; From 6358351901a7321e668e64db73c45a807a4f0b5c Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Tue, 20 Oct 2020 15:51:49 -0400 Subject: [PATCH 208/323] simpler query params --- plugins/cost-insights/package.json | 4 +- plugins/cost-insights/src/hooks/index.ts | 1 - .../cost-insights/src/hooks/useFilters.tsx | 146 +++++++----------- plugins/cost-insights/src/hooks/useGroups.tsx | 51 +++--- .../src/hooks/useQueryParams.tsx | 35 ----- plugins/cost-insights/src/types/Filters.ts | 2 - .../cost-insights/src/utils/history.test.ts | 80 ++++++++++ plugins/cost-insights/src/utils/history.ts | 41 ++++- plugins/cost-insights/src/utils/tests.tsx | 5 +- 9 files changed, 214 insertions(+), 151 deletions(-) delete mode 100644 plugins/cost-insights/src/hooks/useQueryParams.tsx create mode 100644 plugins/cost-insights/src/utils/history.test.ts diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index 68561fc041..aff4762385 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -31,6 +31,7 @@ "@material-ui/styles": "^4.9.6", "@types/react": "^16.9", "@types/recharts": "^1.8.14", + "@types/yup": "^0.29.8", "canvas": "^2.6.1", "classnames": "^2.2.6", "history": "^5.0.0", @@ -40,7 +41,8 @@ "react-dom": "^16.13.1", "react-router-dom": "6.0.0-beta.0", "react-use": "^15.3.3", - "recharts": "^1.8.5" + "recharts": "^1.8.5", + "yup": "^0.29.3" }, "devDependencies": { "@backstage/cli": "^0.1.1-alpha.25", diff --git a/plugins/cost-insights/src/hooks/index.ts b/plugins/cost-insights/src/hooks/index.ts index 7065bcf91b..8998a10e2c 100644 --- a/plugins/cost-insights/src/hooks/index.ts +++ b/plugins/cost-insights/src/hooks/index.ts @@ -20,5 +20,4 @@ export * from './useFilters'; export * from './useCurrency'; export * from './useGroups'; export * from './useLoading'; -export * from './useQueryParams'; export * from './useScroll'; diff --git a/plugins/cost-insights/src/hooks/useFilters.tsx b/plugins/cost-insights/src/hooks/useFilters.tsx index 7dcf8ddb26..49aa6e9739 100644 --- a/plugins/cost-insights/src/hooks/useFilters.tsx +++ b/plugins/cost-insights/src/hooks/useFilters.tsx @@ -16,114 +16,98 @@ import React, { Dispatch, - ReactNode, + PropsWithChildren, SetStateAction, useContext, useEffect, - useRef, useState, } from 'react'; -import { - getDefaultPageFilters, - PageFilters, - ProductFilters, - Duration, - Group, -} from '../types'; +import { Alert } from '@material-ui/lab'; +import { Group, Maybe, PageFilters, ProductFilters } from '../types'; import { useLocation, useNavigate } from 'react-router-dom'; -import { useQueryParams } from './useQueryParams'; -import { stringify } from '../utils/history'; +import { + stringify, + validate, + getInitialPageState, + getInitialProductState, +} from '../utils/history'; import { useGroups } from './useGroups'; import { useConfig } from './useConfig'; -const getInitialPageState = ( - groups: Group[], - queryParams?: Partial, -) => { - // The group is written initially to queryParams as null, since user groups are asynchronously - // loaded. We preserve nulls in queryParams for other parameters where null is meaningful; for - // group, avoid overwriting the default with null after groups are loaded. - const { group, ...otherParams } = queryParams || {}; - return { - ...getDefaultPageFilters(groups), - ...otherParams, - ...(group ? { group: group } : {}), - }; -}; - export type FilterContextProps = { pageFilters: PageFilters; productFilters: ProductFilters; - setPageFilters: Dispatch>; - setProductFilters: Dispatch>; + setPageFilters: Dispatch>>; + setProductFilters: Dispatch>>; }; export type MapFiltersToProps = (props: FilterContextProps) => T; -export type FilterProviderProps = { - children: ReactNode; -}; - export const FilterContext = React.createContext< FilterContextProps | undefined >(undefined); -export const FilterProvider = ({ children }: FilterProviderProps) => { +export const FilterProvider = ({ children }: PropsWithChildren<{}>) => { const config = useConfig(); const navigate = useNavigate(); const location = useLocation(); - const queryParams = useQueryParams(); - const qsRef = useRef(''); const groups = useGroups(); - - const defaultProductFilters = config.products.map(product => ({ - productType: product.kind, - duration: Duration.P1M, - })); - - const getInitialProductState = (productFilters?: ProductFilters) => { - if (!productFilters) return defaultProductFilters; - return defaultProductFilters.map(product => { - return ( - productFilters.find( - param => param.productType === product.productType, - ) || product - ); - }); - }; - - const [productFilters, setProductFilters] = useState( - getInitialProductState(queryParams.productFilters), - ); - const [pageFilters, setPageFilters] = useState( - getInitialPageState(groups, queryParams.pageFilters), + const [error, setError] = useState>(null); + const [pageFilters, setPageFilters] = useState>(null); + const [productFilters, setProductFilters] = useState>( + null, ); - // TODO: Figure out why pageFilters doesn't get updated by the above when groups are loaded. useEffect(() => { - const initialState = getInitialPageState(groups, queryParams.pageFilters); - const defaultMetric = config.metrics.find(m => m.default); - setPageFilters({ ...initialState, metric: defaultMetric?.kind ?? null }); + async function setPageFiltersFromLocation() { + try { + // strip extraneous parameters, validate and transform + const queryParams = await validate(location.search); + const defaultMetric = config.metrics.find(m => m.default)?.kind ?? null; + + // Group or project parameters should override defaults + const initialPageState = getInitialPageState(groups, queryParams); + const initialProductState = getInitialProductState(config); + + setProductFilters(initialProductState); + setPageFilters({ ...initialPageState, metric: defaultMetric }); + } catch (e) { + setError(e); + } + } + + setPageFiltersFromLocation(); }, [groups]); // eslint-disable-line react-hooks/exhaustive-deps useEffect(() => { - const queryString = stringify({ ...pageFilters, products: productFilters }); - if (queryString === qsRef.current) return; - qsRef.current = queryString; - // TODO Remove workaround once issue is resolved in react-router - // (https://github.com/ReactTraining/react-router/issues/7496) - // navigate({ ...location, search: queryString }); - navigate({ ...location, search: `?${queryString}` }); - }, [pageFilters, productFilters]); // eslint-disable-line react-hooks/exhaustive-deps + function setLocationFromPageFilters(filters: PageFilters) { + const queryString = stringify({ + group: filters.group, + ...(filters.project ? { project: filters.project } : {}), + }); + // TODO Remove workaround once issue is resolved in react-router + // (https://github.com/ReactTraining/react-router/issues/7496) + // navigate({ ...location, search: queryString }); + navigate({ ...location, search: `?${queryString}` }); + } + + if (pageFilters) { + setLocationFromPageFilters(pageFilters); + } + }, [pageFilters]); // eslint-disable-line react-hooks/exhaustive-deps + + if (error) { + return {error.message}; + } + + // Wait for filters to load + if (!pageFilters || !productFilters) { + return null; + } return ( {children} @@ -132,17 +116,7 @@ export const FilterProvider = ({ children }: FilterProviderProps) => { export function useFilters(mapFiltersToProps: MapFiltersToProps): T { const context = useContext(FilterContext); - - if (!context) { - assertNever(); - } - - return mapFiltersToProps({ - pageFilters: context.pageFilters, - productFilters: context.productFilters, - setPageFilters: context.setPageFilters, - setProductFilters: context.setProductFilters, - }); + return context ? mapFiltersToProps(context) : assertNever(); } function assertNever(): never { diff --git a/plugins/cost-insights/src/hooks/useGroups.tsx b/plugins/cost-insights/src/hooks/useGroups.tsx index 02c32e7920..8f11c88e60 100644 --- a/plugins/cost-insights/src/hooks/useGroups.tsx +++ b/plugins/cost-insights/src/hooks/useGroups.tsx @@ -14,11 +14,17 @@ * limitations under the License. */ -import React, { ReactNode, useContext, useEffect, useState } from 'react'; +import React, { + PropsWithChildren, + useContext, + useEffect, + useState, +} from 'react'; +import { Alert } from '@material-ui/lab'; import { useApi, identityApiRef } from '@backstage/core'; import { costInsightsApiRef } from '../api'; import { MapLoadingToProps, useLoading } from './useLoading'; -import { DefaultLoadingAction, Group } from '../types'; +import { DefaultLoadingAction, Group, Maybe } from '../types'; type GroupsProviderLoadingProps = { dispatchLoadingGroups: (isLoading: boolean) => void; @@ -35,33 +41,41 @@ type GroupsContextProps = { groups: Group[]; }; -export type GroupsProviderProps = { - children: ReactNode; -}; +export const GroupsContext = React.createContext< + GroupsContextProps | undefined +>(undefined); -export const GroupsContext = React.createContext({ - groups: [], -}); - -export const GroupsProvider = ({ children }: GroupsProviderProps) => { +export const GroupsProvider = ({ children }: PropsWithChildren<{}>) => { const userId = useApi(identityApiRef).getUserId(); const client = useApi(costInsightsApiRef); + const [error, setError] = useState>(null); const { dispatchLoadingGroups } = useLoading(mapLoadingToProps); - const [groups, setGroups] = useState([]); + const [groups, setGroups] = useState>(null); useEffect(() => { dispatchLoadingGroups(true); async function getUserGroups() { - const g = await client.getUserGroups(userId); - setGroups(g); - dispatchLoadingGroups(false); + try { + const g = await client.getUserGroups(userId); + setGroups(g); + } catch (e) { + setError(e); + } finally { + dispatchLoadingGroups(false); + } } getUserGroups(); }, [userId, client]); // eslint-disable-line react-hooks/exhaustive-deps + if (error) { + return {error.message}; + } + + if (!groups) return null; + return ( {children} @@ -70,13 +84,8 @@ export const GroupsProvider = ({ children }: GroupsProviderProps) => { }; export function useGroups(): Group[] { - const { groups } = useContext(GroupsContext); - - if (!groups) { - assertNever(); - } - - return groups; + const context = useContext(GroupsContext); + return context ? context.groups : assertNever(); } function assertNever(): never { diff --git a/plugins/cost-insights/src/hooks/useQueryParams.tsx b/plugins/cost-insights/src/hooks/useQueryParams.tsx deleted file mode 100644 index 1e6ce8f0fd..0000000000 --- a/plugins/cost-insights/src/hooks/useQueryParams.tsx +++ /dev/null @@ -1,35 +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 { useLocation } from 'react-router-dom'; -import { Location } from 'history'; -import { PageFilters, ProductFilters } from '../types'; -import { parse } from '../utils/history'; - -export type FilterParams = { - pageFilters?: Partial; - productFilters?: ProductFilters; -}; - -export function useQueryParams(): FilterParams { - const location: Location = useLocation(); - const { products: productFilters, ...pageFilters } = parse(location.search); - - return { - productFilters: productFilters, - pageFilters: pageFilters, - }; -} diff --git a/plugins/cost-insights/src/types/Filters.ts b/plugins/cost-insights/src/types/Filters.ts index f90b9b4c78..b1fbbb2848 100644 --- a/plugins/cost-insights/src/types/Filters.ts +++ b/plugins/cost-insights/src/types/Filters.ts @@ -27,8 +27,6 @@ export interface PageFilters { export type ProductFilters = Array; -export type QueryParams = PageFilters & { products: ProductFilters }; - export interface ProductPeriod { duration: Duration; productType: string; diff --git a/plugins/cost-insights/src/utils/history.test.ts b/plugins/cost-insights/src/utils/history.test.ts new file mode 100644 index 0000000000..e4310e13c6 --- /dev/null +++ b/plugins/cost-insights/src/utils/history.test.ts @@ -0,0 +1,80 @@ +/* + * 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 { validate, getInitialPageState } from './history'; + +describe('getInitialPageState', () => { + describe('groups', () => { + it('should set defaults if params or group is not provided', () => { + const initialState = getInitialPageState([]); + expect(initialState.group).toBe(null); + }); + + it('should set defaults if a group is fetched but no group is present on query params', () => { + const initialState = getInitialPageState([{ id: 'group' }]); + expect(initialState.group).toMatch(/group/); + }); + + it('group param should always override fetched group', () => { + const initialState = getInitialPageState( + [{ id: 'group' }, { id: 'second-group' }], + { group: 'other-group' }, + ); + expect(initialState.group).toMatch(/other-group/); + }); + + it('first group should be set as default group if user belongs to multiple groups', () => { + const initialState = getInitialPageState([ + { id: 'group' }, + { id: 'other-group' }, + ]); + expect(initialState.group).toMatch(/group/); + }); + }); + + describe('projects', () => { + it("should set defaults if project param doesn't exist", () => { + const initialState = getInitialPageState([], {}); + expect(initialState.project).toBeNull(); + }); + + it('should override defaults if project param exists', () => { + const initialState = getInitialPageState([], { project: 'some-project' }); + expect(initialState.project).toMatch(/some-project/); + }); + }); +}); + +describe.each` + params | expected + ${''} | ${{}} + ${'?foo=bar'} | ${{}} + ${'?project'} | ${{ project: null }} + ${'?group=some-group'} | ${{ group: 'some-group' }} + ${'?group=some-group&project'} | ${{ group: 'some-group', project: null }} + ${'?group=some-group&project=some-project'} | ${{ group: 'some-group', project: 'some-project' }} + ${'?group=some-group&project=some-project&foo=bar'} | ${{ group: 'some-group', project: 'some-project' }} +`('validate', ({ params, expected }) => { + it(`should validate ${params}`, async () => { + const pageFilters = await validate(params); + expect(pageFilters).toMatchObject(expected); + }); +}); + +describe('invalidate', () => { + it("should throw an error if param values don't match schema", async () => { + await expect(validate('?group')).rejects.toThrowError(); + }); +}); diff --git a/plugins/cost-insights/src/utils/history.ts b/plugins/cost-insights/src/utils/history.ts index 71e8e2c219..14434fe029 100644 --- a/plugins/cost-insights/src/utils/history.ts +++ b/plugins/cost-insights/src/utils/history.ts @@ -15,9 +15,44 @@ */ import qs from 'qs'; -import { QueryParams } from '../types'; +import * as yup from 'yup'; +import { Group, PageFilters, getDefaultPageFilters, Duration } from '../types'; +import { ConfigContextProps } from '../hooks/useConfig'; -export const stringify = (queryParams: Partial) => +const schema = yup + .object() + .shape({ + group: yup.string(), + project: yup.string().nullable(), + }) + .required(); + +export const stringify = (queryParams: Partial) => qs.stringify(queryParams, { strictNullHandling: true }); -export const parse = (queryString: string): Partial => + +export const parse = (queryString: string): Partial => qs.parse(queryString, { ignoreQueryPrefix: true, strictNullHandling: true }); + +export const validate = (queryString: string): Promise => { + return schema.validate(parse(queryString), { + stripUnknown: true, + strict: true, + }) as Promise; +}; + +export const getInitialPageState = ( + groups: Group[], + queryParams: Partial = {}, +) => { + return { + ...getDefaultPageFilters(groups), + ...(queryParams.project ? { project: queryParams.project } : {}), + ...(queryParams.group ? { group: queryParams.group } : {}), + }; +}; + +export const getInitialProductState = (config: ConfigContextProps) => + config.products.map(product => ({ + productType: product.kind, + duration: Duration.P1M, + })); diff --git a/plugins/cost-insights/src/utils/tests.tsx b/plugins/cost-insights/src/utils/tests.tsx index 807232555b..552c524afe 100644 --- a/plugins/cost-insights/src/utils/tests.tsx +++ b/plugins/cost-insights/src/utils/tests.tsx @@ -16,6 +16,7 @@ import React, { Dispatch, ReactNode, SetStateAction } from 'react'; import { getDefaultPageFilters, + Maybe, PageFilters, ProductFilters, Group, @@ -29,8 +30,8 @@ import { MockProductFilters } from './mockData'; export const MockGroups: Group[] = [{ id: 'tech' }, { id: 'mock-group' }]; type MockFilterProviderProps = { - setPageFilters: Dispatch>; - setProductFilters: Dispatch>; + setPageFilters: Dispatch>>; + setProductFilters: Dispatch>>; children: ReactNode; }; From 0e67c6b40c2b0bd9b743b97987e5d9d14b080b63 Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Tue, 20 Oct 2020 15:58:34 -0400 Subject: [PATCH 209/323] changeset --- .changeset/selfish-mugs-itch.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/selfish-mugs-itch.md diff --git a/.changeset/selfish-mugs-itch.md b/.changeset/selfish-mugs-itch.md new file mode 100644 index 0000000000..39ed236352 --- /dev/null +++ b/.changeset/selfish-mugs-itch.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-cost-insights': minor +--- + +Remove product filters from query parameters From bf6edbbeee6717d2eec9f16c398e67475aeee665 Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Tue, 20 Oct 2020 16:07:01 -0400 Subject: [PATCH 210/323] remove unused import --- plugins/cost-insights/src/hooks/useFilters.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/cost-insights/src/hooks/useFilters.tsx b/plugins/cost-insights/src/hooks/useFilters.tsx index 49aa6e9739..22ef735186 100644 --- a/plugins/cost-insights/src/hooks/useFilters.tsx +++ b/plugins/cost-insights/src/hooks/useFilters.tsx @@ -23,7 +23,7 @@ import React, { useState, } from 'react'; import { Alert } from '@material-ui/lab'; -import { Group, Maybe, PageFilters, ProductFilters } from '../types'; +import { Maybe, PageFilters, ProductFilters } from '../types'; import { useLocation, useNavigate } from 'react-router-dom'; import { stringify, From 1101e99d63d3390cde23b4540d3d5e553ab19f96 Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Tue, 20 Oct 2020 16:19:12 -0400 Subject: [PATCH 211/323] move type dependecy --- plugins/cost-insights/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index aff4762385..f94c467ab3 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -31,7 +31,6 @@ "@material-ui/styles": "^4.9.6", "@types/react": "^16.9", "@types/recharts": "^1.8.14", - "@types/yup": "^0.29.8", "canvas": "^2.6.1", "classnames": "^2.2.6", "history": "^5.0.0", @@ -52,6 +51,7 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", + "@types/yup": "^0.29.8", "jest-fetch-mock": "^3.0.3", "msw": "^0.20.5", "node-fetch": "^2.6.1" From 244281ff6b5a370efe2b60c4b4b8d70dedb0c24e Mon Sep 17 00:00:00 2001 From: Marek Calus Date: Tue, 20 Oct 2020 22:57:44 +0200 Subject: [PATCH 212/323] Update yarn.lock file --- packages/catalog-model/src/location/types.ts | 4 +- yarn.lock | 50 ++------------------ 2 files changed, 7 insertions(+), 47 deletions(-) diff --git a/packages/catalog-model/src/location/types.ts b/packages/catalog-model/src/location/types.ts index 43a0d3c692..3c13393c06 100644 --- a/packages/catalog-model/src/location/types.ts +++ b/packages/catalog-model/src/location/types.ts @@ -17,9 +17,9 @@ export type LocationSpec = { type: string; target: string; - // When using repo importer plugin, leocation is being created before the component yaml file is merged to the main branch. + // When using repo importer plugin, location is being created before the component yaml file is merged to the main branch. // This flag is then set to disable validation that prevents creation of location if target file does not yet exist. - pendingLocation?: true; + pendingLocation?: boolean; }; export type Location = { diff --git a/yarn.lock b/yarn.lock index e55b479f78..3bacd8429f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3644,6 +3644,11 @@ prop-types "^15.6.1" react-lifecycles-compat "^3.0.4" +"@rehooks/local-storage@^2.4.0": + version "2.4.0" + resolved "https://registry.npmjs.org/@rehooks/local-storage/-/local-storage-2.4.0.tgz#fb884b2b657cad5f77aa6ab60bb3532f0e0725d2" + integrity sha512-LoXDbEHsuIckVgBsFAv8SuU/M7memjyfWut9Zf36TQXqqCHBRFv8bweg9PymQCa1aWIMjNrZQflFdo55FDlXYg== + "@rjsf/core@^2.4.0": version "2.4.0" resolved "https://registry.npmjs.org/@rjsf/core/-/core-2.4.0.tgz#c50bcff0d8178948ce08123177399d8816d51929" @@ -3686,51 +3691,6 @@ react-router "^6.0.0-beta.0" react-use "^15.3.3" -"@roadiehq/backstage-plugin-github-pull-requests@^0.5.2": - version "0.5.2" - resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-pull-requests/-/backstage-plugin-github-pull-requests-0.5.2.tgz#455355fe5cdcc43c22b80a8ef3697378084680a1" - integrity sha512-GM+nWQZ+aehMclN70Pp35UQe3I46SQCjWiGZ6/0TfDzrueHln39L2UspUj1L/713xDDtDK8ZnTJdFn/qKx7j4A== - dependencies: - "@backstage/catalog-model" "^0.1.1-alpha.25" - "@backstage/core" "^0.1.1-alpha.25" - "@backstage/plugin-catalog" "^0.1.1-alpha.25" - "@backstage/theme" "^0.1.1-alpha.25" - "@material-ui/core" "^4.11.0" - "@material-ui/icons" "^4.9.1" - "@material-ui/lab" "^4.0.0-alpha.56" - "@octokit/rest" "^18.0.0" - "@octokit/types" "^5.0.1" - "@types/react-dom" "^16.9.8" - history "^5.0.0" - moment "^2.27.0" - react "^16.13.1" - react-dom "^16.13.1" - react-router "6.0.0-beta.0" - react-use "^15.3.3" - -"@roadiehq/backstage-plugin-travis-ci@^0.2.3": - version "0.2.3" - resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-travis-ci/-/backstage-plugin-travis-ci-0.2.3.tgz#2d1c5a7ed3eab4fdcf95243b73dee44c0cff5a57" - integrity sha512-Xi8vZFbcm+D4ykyU3I9hImAd22F1v6M1F/H9CJanRHqj5esJxnuCS2+Kf+w09bwb9DuM8/c68PuMlf3PMIsOwg== - dependencies: - "@backstage/catalog-model" "^0.1.1-alpha.22" - "@backstage/core" "^0.1.1-alpha.22" - "@backstage/core-api" "^0.1.1-alpha.22" - "@backstage/plugin-catalog" "^0.1.1-alpha.22" - "@backstage/theme" "^0.1.1-alpha.22" - "@material-ui/core" "^4.9.1" - "@material-ui/icons" "^4.9.1" - "@material-ui/lab" "4.0.0-alpha.45" - date-fns "^2.15.0" - history "^5.0.0" - moment "^2.27.0" - react "^16.13.1" - react-dom "^16.13.1" - react-lazylog "^4.5.2" - react-router "6.0.0-beta.0" - react-router-dom "6.0.0-beta.0" - react-use "^15.3.3" - "@rollup/plugin-commonjs@^13.0.0": version "13.0.0" resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-13.0.0.tgz#8a1d684ba6848afe8b9e3d85649d4b2f6f7217ec" From b3d57961c6744da001d325b53ed35d9215808db4 Mon Sep 17 00:00:00 2001 From: Marek Calus Date: Tue, 20 Oct 2020 23:11:10 +0200 Subject: [PATCH 213/323] Add changeset --- .changeset/popular-jars-serve.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/popular-jars-serve.md diff --git a/.changeset/popular-jars-serve.md b/.changeset/popular-jars-serve.md new file mode 100644 index 0000000000..6ee40195fc --- /dev/null +++ b/.changeset/popular-jars-serve.md @@ -0,0 +1,5 @@ +--- +'@backstage/catalog-model': minor +--- + +Enable adding locations for config files that does not yet exist by adding a flag to api request From 82759d3e43be0a65f2f12cc301aa73522a29f784 Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Wed, 21 Oct 2020 11:29:39 +0530 Subject: [PATCH 214/323] rename stories folder to Chip (#3009) --- .changeset/hungry-parrots-work.md | 5 +++++ .../core/src/components/{stories => Chip}/Chip.stories.tsx | 0 2 files changed, 5 insertions(+) create mode 100644 .changeset/hungry-parrots-work.md rename packages/core/src/components/{stories => Chip}/Chip.stories.tsx (100%) diff --git a/.changeset/hungry-parrots-work.md b/.changeset/hungry-parrots-work.md new file mode 100644 index 0000000000..a18218b542 --- /dev/null +++ b/.changeset/hungry-parrots-work.md @@ -0,0 +1,5 @@ +--- +'@backstage/core': patch +--- + +rename stories folder top Chip diff --git a/packages/core/src/components/stories/Chip.stories.tsx b/packages/core/src/components/Chip/Chip.stories.tsx similarity index 100% rename from packages/core/src/components/stories/Chip.stories.tsx rename to packages/core/src/components/Chip/Chip.stories.tsx From aca79334f46c46687e6a74639d8319476fcfe78a Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Wed, 21 Oct 2020 11:32:08 +0530 Subject: [PATCH 215/323] fix: update the ItemCard component and it's story (#3007) * fix ItemCard stories on responsive * update the value of key prop in ItemCard tags * add test case for ItemCard component * add changeset --- .changeset/polite-moose-cough.md | 5 ++ .../src/layout/ItemCard/ItemCard.stories.tsx | 14 ++--- .../src/layout/ItemCard/ItemCard.test.tsx | 51 +++++++++++++++++++ .../core/src/layout/ItemCard/ItemCard.tsx | 4 +- 4 files changed, 65 insertions(+), 9 deletions(-) create mode 100644 .changeset/polite-moose-cough.md create mode 100644 packages/core/src/layout/ItemCard/ItemCard.test.tsx diff --git a/.changeset/polite-moose-cough.md b/.changeset/polite-moose-cough.md new file mode 100644 index 0000000000..b66227bb24 --- /dev/null +++ b/.changeset/polite-moose-cough.md @@ -0,0 +1,5 @@ +--- +'@backstage/core': patch +--- + +update ItemCard component and it's story diff --git a/packages/core/src/layout/ItemCard/ItemCard.stories.tsx b/packages/core/src/layout/ItemCard/ItemCard.stories.tsx index 2b48cc4630..75031a0765 100644 --- a/packages/core/src/layout/ItemCard/ItemCard.stories.tsx +++ b/packages/core/src/layout/ItemCard/ItemCard.stories.tsx @@ -24,7 +24,7 @@ export default { export const Default = () => ( - + ( onClick={() => {}} /> - + ( export const Tags = () => ( - + - + diff --git a/packages/core/src/layout/ItemCard/ItemCard.test.tsx b/packages/core/src/layout/ItemCard/ItemCard.test.tsx new file mode 100644 index 0000000000..6afeb16c5b --- /dev/null +++ b/packages/core/src/layout/ItemCard/ItemCard.test.tsx @@ -0,0 +1,51 @@ +/* + * 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 { renderInTestApp } from '@backstage/test-utils'; +import { ItemCard } from './ItemCard'; + +const minProps = { + description: 'This is the description of an Item Card', + label: 'Button', + title: 'Item Card', + type: 'Pretitle', +}; + +describe('', () => { + it('renders default without exploding', async () => { + const { description, label, title, type } = minProps; + const { getByText } = await renderInTestApp(); + expect(getByText(description)).toBeInTheDocument(); + expect(getByText(title)).toBeInTheDocument(); + expect(getByText(label)).toBeInTheDocument(); + expect(getByText(type)).toBeInTheDocument(); + }); + + it('renders with tags without exploding', async () => { + const { description, label, title } = minProps; + const tags = ['tag one', 'tag two']; + const { getByText } = await renderInTestApp( + , + ); + expect(getByText(description)).toBeInTheDocument(); + expect(getByText(title)).toBeInTheDocument(); + expect(getByText(label)).toBeInTheDocument(); + tags.forEach(tag => { + expect(getByText(tag)).toBeInTheDocument(); + }); + }); +}); diff --git a/packages/core/src/layout/ItemCard/ItemCard.tsx b/packages/core/src/layout/ItemCard/ItemCard.tsx index 2d425026a5..a17cbed563 100644 --- a/packages/core/src/layout/ItemCard/ItemCard.tsx +++ b/packages/core/src/layout/ItemCard/ItemCard.tsx @@ -61,8 +61,8 @@ export const ItemCard: FC = ({ {title}
- {tags?.map(tag => ( - + {tags?.map((tag, i) => ( + ))} {description} From 1611c6dbc2e1e561e2a4ce1b93f4099344a58672 Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Wed, 21 Oct 2020 11:33:00 +0530 Subject: [PATCH 216/323] fix: responsive of page example in storybook (#3005) * fix the responsive of page stories in story book * fix the typo in Example header of Page stories * add changeset --- .changeset/tough-weeks-pull.md | 5 +++++ packages/core/src/layout/Page/Page.stories.tsx | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 .changeset/tough-weeks-pull.md diff --git a/.changeset/tough-weeks-pull.md b/.changeset/tough-weeks-pull.md new file mode 100644 index 0000000000..e79355de90 --- /dev/null +++ b/.changeset/tough-weeks-pull.md @@ -0,0 +1,5 @@ +--- +'@backstage/core': patch +--- + +fix the responsive of page story diff --git a/packages/core/src/layout/Page/Page.stories.tsx b/packages/core/src/layout/Page/Page.stories.tsx index b3a75c19e9..3b1dd07c7a 100644 --- a/packages/core/src/layout/Page/Page.stories.tsx +++ b/packages/core/src/layout/Page/Page.stories.tsx @@ -118,14 +118,14 @@ const DataGrid = () => ( justify="space-between" direction="row" > - + - + ( ); const ExampleHeader = () => ( -
+
From 3825cb8d043ebe8b9f08ba57441a20526548e8d0 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 21 Oct 2020 10:09:36 +0200 Subject: [PATCH 217/323] chore(fetchReader): actually return the response of the reader --- packages/backend-common/src/reading/FetchUrlReader.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend-common/src/reading/FetchUrlReader.ts b/packages/backend-common/src/reading/FetchUrlReader.ts index 46db3e73ee..d2e5c45620 100644 --- a/packages/backend-common/src/reading/FetchUrlReader.ts +++ b/packages/backend-common/src/reading/FetchUrlReader.ts @@ -31,7 +31,7 @@ export class FetchUrlReader implements UrlReader { } if (response.ok) { - return Buffer.from(''); + return Buffer.from(await response.text()); } const message = `could not read ${url}, ${response.status} ${response.statusText}`; From 84c64329eae132145f834e0b6a4eff065c6fa11e Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 21 Oct 2020 10:36:36 +0200 Subject: [PATCH 218/323] chore: fixing dependencies list --- plugins/circleci/package.json | 3 ++- plugins/cloudbuild/package.json | 3 ++- plugins/cost-insights/package.json | 3 ++- plugins/gcp-projects/package.json | 3 ++- plugins/github-actions/package.json | 3 ++- plugins/gitops-profiles/package.json | 3 ++- plugins/jenkins/package.json | 3 ++- plugins/newrelic/package.json | 3 ++- plugins/register-component/package.json | 3 ++- plugins/tech-radar/package.json | 3 ++- plugins/techdocs/package.json | 3 ++- plugins/user-settings/package.json | 5 +++-- plugins/welcome/package.json | 4 +++- 13 files changed, 28 insertions(+), 14 deletions(-) diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 06c1dee340..464bb41441 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -47,7 +47,8 @@ "@types/node": "^12.0.0", "@types/react-lazylog": "^4.5.0", "msw": "^0.21.2", - "cross-fetch": "^3.0.6" + "cross-fetch": "^3.0.6", + "@backstage/test-utils": "^0.1.1-alpha.25" }, "files": [ "dist" diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index b27b6f83d6..f8bf338dd1 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -47,7 +47,8 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "msw": "^0.21.2", - "cross-fetch": "^3.0.6" + "cross-fetch": "^3.0.6", + "@backstage/test-utils": "^0.1.1-alpha.25" }, "files": [ "dist" diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index 7bf4cc99c2..3d548402be 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -52,7 +52,8 @@ "@types/node": "^12.0.0", "@types/recharts": "^1.8.14", "msw": "^0.21.2", - "cross-fetch": "^3.0.6" + "cross-fetch": "^3.0.6", + "@backstage/test-utils": "^0.1.1-alpha.25" }, "files": [ "dist" diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 4044d4467d..783504a2cf 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -39,7 +39,8 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "msw": "^0.21.2", - "cross-fetch": "^3.0.6" + "cross-fetch": "^3.0.6", + "@backstage/test-utils": "^0.1.1-alpha.25" }, "files": [ "dist" diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 191f7d475b..63390fdcc0 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -48,7 +48,8 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "msw": "^0.21.2", - "cross-fetch": "^3.0.6" + "cross-fetch": "^3.0.6", + "@backstage/test-utils": "^0.1.1-alpha.25" }, "files": [ "dist" diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index 75f011b259..2daa8b103e 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -40,7 +40,8 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "msw": "^0.21.2", - "cross-fetch": "^3.0.6" + "cross-fetch": "^3.0.6", + "@backstage/test-utils": "^0.1.1-alpha.25" }, "files": [ "dist" diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index c77ea45075..b3f19b2b16 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -45,7 +45,8 @@ "@types/node": "^12.0.0", "@types/testing-library__jest-dom": "^5.9.1", "msw": "^0.21.2", - "cross-fetch": "^3.0.6" + "cross-fetch": "^3.0.6", + "@backstage/test-utils": "^0.1.1-alpha.25" }, "files": [ "dist" diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index 5116f99353..3372562ca2 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -39,7 +39,8 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "msw": "^0.21.2", - "cross-fetch": "^3.0.6" + "cross-fetch": "^3.0.6", + "@backstage/test-utils": "^0.1.1-alpha.25" }, "files": [ "dist" diff --git a/plugins/register-component/package.json b/plugins/register-component/package.json index de7c741225..9729a78d80 100644 --- a/plugins/register-component/package.json +++ b/plugins/register-component/package.json @@ -44,7 +44,8 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "msw": "^0.21.2", - "cross-fetch": "^3.0.6" + "cross-fetch": "^3.0.6", + "@backstage/test-utils": "^0.1.1-alpha.25" }, "files": [ "dist" diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index 92c24d7758..19ac41fa8d 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -46,7 +46,8 @@ "@types/node": "^12.0.0", "@types/react": "^16.9", "msw": "^0.21.2", - "cross-fetch": "^3.0.6" + "cross-fetch": "^3.0.6", + "@backstage/test-utils": "^0.1.1-alpha.25" }, "files": [ "dist" diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index ec3ac408ad..eb6bb597d9 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -49,7 +49,8 @@ "@types/node": "^12.0.0", "canvas": "^2.6.1", "msw": "^0.21.2", - "cross-fetch": "^3.0.6" + "cross-fetch": "^3.0.6", + "@backstage/test-utils": "^0.1.1-alpha.25" }, "files": [ "dist" diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index 029ff99222..f80911f980 100644 --- a/plugins/user-settings/package.json +++ b/plugins/user-settings/package.json @@ -40,8 +40,9 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "@types/node": "^12.0.0", - "msw": "^0.20.5", - "node-fetch": "^2.6.1" + "msw": "^0.21.2", + "node-fetch": "^2.6.1", + "cross-fetch": "^3.0.6" }, "files": [ "dist" diff --git a/plugins/welcome/package.json b/plugins/welcome/package.json index c12d477181..653678f1f3 100644 --- a/plugins/welcome/package.json +++ b/plugins/welcome/package.json @@ -39,7 +39,9 @@ "@testing-library/user-event": "^12.0.7", "@types/jest": "^26.0.7", "msw": "^0.21.2", - "cross-fetch": "^3.0.6" + "cross-fetch": "^3.0.6", + "@backstage/test-utils": "^0.1.1-alpha.25", + "@types/node": "^12.0.0" }, "files": [ "dist" From e10480b5ea4e42467da573e911347c6f480bbc9a Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 21 Oct 2020 10:38:17 +0200 Subject: [PATCH 219/323] chore(user-settings): removing last occurrence of node-fetch --- plugins/user-settings/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index f80911f980..9748bb1a9e 100644 --- a/plugins/user-settings/package.json +++ b/plugins/user-settings/package.json @@ -41,7 +41,6 @@ "@types/jest": "^26.0.7", "@types/node": "^12.0.0", "msw": "^0.21.2", - "node-fetch": "^2.6.1", "cross-fetch": "^3.0.6" }, "files": [ From f35f5bcfc4dc91ea53652cfd2b9254f625120b67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 21 Oct 2020 10:44:44 +0200 Subject: [PATCH 220/323] fix(cli): one more await in the test --- packages/cli/src/commands/remove-plugin/removePlugin.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/commands/remove-plugin/removePlugin.test.ts b/packages/cli/src/commands/remove-plugin/removePlugin.test.ts index a5e2af5974..6433cb6116 100644 --- a/packages/cli/src/commands/remove-plugin/removePlugin.test.ts +++ b/packages/cli/src/commands/remove-plugin/removePlugin.test.ts @@ -114,7 +114,7 @@ describe('removePlugin', () => { it('removes plugin exports from /packages/app/src/package.json', async () => { const testFilePath = path.join(tempDir, 'test.ts'); const pluginsFilePaths = path.join(appPath, 'src', 'plugins.ts'); - createTestPluginFile(testFilePath, pluginsFilePaths); + await createTestPluginFile(testFilePath, pluginsFilePaths); try { await removeReferencesFromPluginsFile(testFilePath, testPluginName); const testFileContent = removeEmptyLines( From c5ef12926b45848224253530dcd3f1154da20ed2 Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Wed, 21 Oct 2020 14:32:33 +0530 Subject: [PATCH 221/323] fix: accordion details design for job stage failure (#3014) * fix the design of accordion details on job stage failure * add changeset --- .changeset/flat-yaks-march.md | 5 +++++ plugins/scaffolder/src/components/JobStage/JobStage.tsx | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 .changeset/flat-yaks-march.md diff --git a/.changeset/flat-yaks-march.md b/.changeset/flat-yaks-march.md new file mode 100644 index 0000000000..6b26206eb8 --- /dev/null +++ b/.changeset/flat-yaks-march.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +fix the accordion details design when job stage fail diff --git a/plugins/scaffolder/src/components/JobStage/JobStage.tsx b/plugins/scaffolder/src/components/JobStage/JobStage.tsx index 0baba0c9b9..5128a761ec 100644 --- a/plugins/scaffolder/src/components/JobStage/JobStage.tsx +++ b/plugins/scaffolder/src/components/JobStage/JobStage.tsx @@ -125,7 +125,9 @@ export const JobStage = ({ endedAt, startedAt, name, log, status }: Props) => { {log.length === 0 ? ( - No logs available for this step + + No logs available for this step + ) : ( }>
From 22ff8fba5e63de1578bd00ca2872d56601aba365 Mon Sep 17 00:00:00 2001 From: Emre Konar Date: Wed, 21 Oct 2020 11:03:05 +0200 Subject: [PATCH 222/323] TechDocs Backend: Replace hardcoded github api by configuration value (#3004) * replace hardcoded by configuration value * use integrations configuration to read github apiBaseUrl Co-authored-by: Emre Konar --- .changeset/pink-spies-rule.md | 5 +++++ plugins/techdocs-backend/src/default-branch.ts | 8 +++++--- 2 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 .changeset/pink-spies-rule.md diff --git a/.changeset/pink-spies-rule.md b/.changeset/pink-spies-rule.md new file mode 100644 index 0000000000..71653a1841 --- /dev/null +++ b/.changeset/pink-spies-rule.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-backend': patch +--- + +Replacing the hard coded `baseApiUrl` by reading the value from configuration to enable private GitHub setup for TechDocs. diff --git a/plugins/techdocs-backend/src/default-branch.ts b/plugins/techdocs-backend/src/default-branch.ts index 487f343d93..fe88ff1055 100644 --- a/plugins/techdocs-backend/src/default-branch.ts +++ b/plugins/techdocs-backend/src/default-branch.ts @@ -42,9 +42,11 @@ interface IGitlabBranch { }; } -function getGithubApiUrl(url: string): URL { +function getGithubApiUrl(config: Config, url: string): URL { const { protocol, owner, name } = parseGitUrl(url); - const apiBaseUrl = 'api.github.com'; + const apiBaseUrl = + config.getOptionalString('integrations.github.apiBaseUrl') || + 'api.github.com'; const apiRepos = 'repos'; return new URL(`${protocol}://${apiBaseUrl}/${apiRepos}/${owner}/${name}`); @@ -133,7 +135,7 @@ async function getGithubDefaultBranch( repositoryUrl: string, config: Config, ): Promise { - const path = getGithubApiUrl(repositoryUrl).toString(); + const path = getGithubApiUrl(config, repositoryUrl).toString(); const options = getGithubRequestOptions(config); try { From 93a3fa3aea2754ea3c0704f84e0d9e5c54b26f41 Mon Sep 17 00:00:00 2001 From: Ivan Shmidt Date: Wed, 21 Oct 2020 11:21:39 +0200 Subject: [PATCH 223/323] fix: forwardRef to SidebarItem --- .changeset/eighty-stingrays-type.md | 5 + packages/core/src/layout/Sidebar/Items.tsx | 140 ++++++++++++--------- 2 files changed, 87 insertions(+), 58 deletions(-) create mode 100644 .changeset/eighty-stingrays-type.md diff --git a/.changeset/eighty-stingrays-type.md b/.changeset/eighty-stingrays-type.md new file mode 100644 index 0000000000..731c401b77 --- /dev/null +++ b/.changeset/eighty-stingrays-type.md @@ -0,0 +1,5 @@ +--- +'@backstage/core': patch +--- + +Add forwardRef to the SidebarItem diff --git a/packages/core/src/layout/Sidebar/Items.tsx b/packages/core/src/layout/Sidebar/Items.tsx index 2eca89f873..9977a7c77b 100644 --- a/packages/core/src/layout/Sidebar/Items.tsx +++ b/packages/core/src/layout/Sidebar/Items.tsx @@ -25,7 +25,13 @@ import { BackstageTheme } from '@backstage/theme'; import { IconComponent } from '@backstage/core-api'; import SearchIcon from '@material-ui/icons/Search'; import clsx from 'clsx'; -import React, { FC, useContext, useState, KeyboardEventHandler } from 'react'; +import React, { + FC, + useContext, + useState, + KeyboardEventHandler, + forwardRef, +} from 'react'; import { NavLink } from 'react-router-dom'; import { sidebarConfig, SidebarContext } from './config'; @@ -117,72 +123,90 @@ type SidebarItemProps = { onClick?: () => void; }; -export const SidebarItem: FC = ({ - icon: Icon, - text, - to, - hasNotifications = false, - onClick, - children, -}) => { - const classes = useStyles(); - // XXX (@koroeskohr): unsure this is optimal. But I just really didn't want to have the item component - // depend on the current location, and at least have it being optionally forced to selected. - // Still waiting on a Q answered to fine tune the implementation - const { isOpen } = useContext(SidebarContext); +export const SidebarItem = forwardRef( + ( + { icon: Icon, text, to, hasNotifications = false, onClick, children }, + ref, + ) => { + const classes = useStyles(); + // XXX (@koroeskohr): unsure this is optimal. But I just really didn't want to have the item component + // depend on the current location, and at least have it being optionally forced to selected. + // Still waiting on a Q answered to fine tune the implementation + const { isOpen } = useContext(SidebarContext); - const itemIcon = ( - - - - ); + const itemIcon = ( + + + + ); - const childProps = { - onClick, - className: clsx(classes.root, isOpen ? classes.open : classes.closed), - }; + const childProps = { + onClick, + className: clsx(classes.root, isOpen ? classes.open : classes.closed), + }; + + if (!isOpen) { + if (to === undefined) { + return ( +
+ {itemIcon} +
+ ); + } + + return ( + + {itemIcon} + + ); + } + + const content = ( + <> +
+ {itemIcon} +
+ {text && ( + + {text} + + )} +
{children}
+ + ); - if (!isOpen) { if (to === undefined) { - return
{itemIcon}
; + return ( +
+ {content} +
+ ); } return ( - - {itemIcon} + + {content} ); - } - - const content = ( - <> -
- {itemIcon} -
- {text && ( - - {text} - - )} -
{children}
- - ); - - if (to === undefined) { - return
{content}
; - } - - return ( - - {content} - - ); -}; + }, +); type SidebarSearchFieldProps = { onSearch: (input: string) => void; From f56486570ccdbc925a9f37f6a4052e2f08bf53d3 Mon Sep 17 00:00:00 2001 From: Ivan Shmidt Date: Wed, 21 Oct 2020 11:33:14 +0200 Subject: [PATCH 224/323] fix: ts --- packages/core/src/layout/Sidebar/Items.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/core/src/layout/Sidebar/Items.tsx b/packages/core/src/layout/Sidebar/Items.tsx index 9977a7c77b..bb47701280 100644 --- a/packages/core/src/layout/Sidebar/Items.tsx +++ b/packages/core/src/layout/Sidebar/Items.tsx @@ -31,6 +31,7 @@ import React, { useState, KeyboardEventHandler, forwardRef, + ReactNode, } from 'react'; import { NavLink } from 'react-router-dom'; import { sidebarConfig, SidebarContext } from './config'; @@ -121,6 +122,7 @@ type SidebarItemProps = { to?: string; hasNotifications?: boolean; onClick?: () => void; + children?: ReactNode; }; export const SidebarItem = forwardRef( From 53f9d70658fceae5f07f4f982f888f0b1b89e361 Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Wed, 21 Oct 2020 15:43:02 +0530 Subject: [PATCH 225/323] useRealTimers in onCssReady test case --- .../src/reader/transformers/onCssReady.test.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/plugins/techdocs/src/reader/transformers/onCssReady.test.ts b/plugins/techdocs/src/reader/transformers/onCssReady.test.ts index c83a94f35d..67ae38c56b 100644 --- a/plugins/techdocs/src/reader/transformers/onCssReady.test.ts +++ b/plugins/techdocs/src/reader/transformers/onCssReady.test.ts @@ -25,14 +25,20 @@ import { onCssReady } from '../transformers'; const docStorageUrl: string = 'https://techdocs-mock-sites.storage.googleapis.com'; -jest.useFakeTimers(); - const fixture = ` `; describe('onCssReady', () => { + beforeAll(() => { + jest.useFakeTimers(); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + beforeEach(() => { mockStylesheetEventListener(100); }); From b6df68b846f07af368b1f0f9509baf50c8017a67 Mon Sep 17 00:00:00 2001 From: Remi Date: Fri, 16 Oct 2020 23:20:50 +0200 Subject: [PATCH 226/323] test(cli): use mock-fs in createPlugin --- .../create-plugin/createPlugin.test.ts | 49 ++++++++++--------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/packages/cli/src/commands/create-plugin/createPlugin.test.ts b/packages/cli/src/commands/create-plugin/createPlugin.test.ts index 72b95b072c..9e824c30b6 100644 --- a/packages/cli/src/commands/create-plugin/createPlugin.test.ts +++ b/packages/cli/src/commands/create-plugin/createPlugin.test.ts @@ -16,11 +16,25 @@ import fs from 'fs-extra'; import path from 'path'; +import mockFs from 'mock-fs'; import os from 'os'; import del from 'del'; import { createTemporaryPluginFolder, movePlugin } from './createPlugin'; describe('createPlugin', () => { + beforeEach(() => { + mockFs({ + '/testPluginMock': {}, + 'test-temp': { + plugins: { + testPluginMock: {}, + }, + }, + }); + }); + afterEach(() => { + mockFs.restore(); + }); describe('createPluginFolder', () => { it('should create a temporary plugin directory in the correct place', async () => { const id = 'testPlugin'; @@ -35,35 +49,22 @@ describe('createPlugin', () => { }); it('should not create a temporary plugin directory if it already exists', async () => { - const id = 'testPlugin'; - const tempDir = path.join(os.tmpdir(), id); - try { - await createTemporaryPluginFolder(tempDir); - await expect(fs.pathExists(tempDir)).resolves.toBe(true); - await expect(createTemporaryPluginFolder(tempDir)).rejects.toThrow( - /Failed to create temporary plugin directory/, - ); - } finally { - await del(tempDir, { force: true }); - } + const id = '/testPluginMock'; + await expect(createTemporaryPluginFolder(id)).rejects.toThrow( + /Failed to create temporary plugin directory/, + ); }); }); describe('movePlugin', () => { it('should move the temporary plugin directory to its final place', async () => { - const id = 'testPlugin'; - const tempDir = path.join(os.tmpdir(), id); - const rootDir = await fs.mkdtemp(path.join(os.tmpdir(), 'test-')); - const pluginDir = path.join(rootDir, 'plugins', id); - try { - await createTemporaryPluginFolder(tempDir); - await movePlugin(tempDir, pluginDir, id); - await expect(fs.pathExists(pluginDir)).resolves.toBe(true); - expect(pluginDir).toMatch(path.join('', 'plugins', id)); - } finally { - await del(tempDir, { force: true }); - await del(rootDir, { force: true }); - } + const id = 'testPluginMock'; + const tempDir = `/${id}`; + const pluginDir = `/test-temp/plugins/${id}`; + + await movePlugin(tempDir, pluginDir, id); + await expect(fs.pathExists(pluginDir)).resolves.toBe(true); + expect(pluginDir).toMatch(path.join('', 'plugins', id)); }); }); }); From f2a7cd07ea3a61667bf49dcfb16c4c70271c546c Mon Sep 17 00:00:00 2001 From: Remi Date: Mon, 19 Oct 2020 19:08:00 +0200 Subject: [PATCH 227/323] test(cli): use mock-fs in tasks --- packages/cli/src/lib/tasks.test.ts | 54 ++++++++++++++++-------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/packages/cli/src/lib/tasks.test.ts b/packages/cli/src/lib/tasks.test.ts index 871d5a4d37..a3ff3feeaa 100644 --- a/packages/cli/src/lib/tasks.test.ts +++ b/packages/cli/src/lib/tasks.test.ts @@ -15,39 +15,41 @@ */ import fs from 'fs-extra'; +import mockFs from 'mock-fs'; import { resolve as resolvePath } from 'path'; -import os from 'os'; -import del from 'del'; import { templatingTask } from './tasks'; describe('templatingTask', () => { + afterEach(() => { + mockFs.restore(); + }); + it('should template a directory with mix of regular files and templates', async () => { - // Set up a testing template directory - const tmplDir = await fs.mkdtemp(resolvePath(os.tmpdir(), 'test-')); - await fs.ensureDir(resolvePath(tmplDir, 'sub')); - await fs.writeFile(resolvePath(tmplDir, 'test.txt'), 'testing'); - await fs.writeFile( - resolvePath(tmplDir, 'sub/version.txt.hbs'), - 'version: {{version}}', - ); + // Testing template directory + const tmplDir = 'test-tmpl'; - // Set up a temporary dest dir to write the template to - const destDir = await fs.mkdtemp(resolvePath(os.tmpdir(), 'test-')); + // Temporary dest dir to write the template to + const destDir = 'test-dest'; - try { - await templatingTask(tmplDir, destDir, { - version: '0.0.0', - }); + mockFs({ + [tmplDir]: { + 'sub': { + 'version.txt.hbs': 'version: {{version}}', + }, + 'test.txt': 'testing', + }, + [destDir]: {}, + }); - await expect( - fs.readFile(resolvePath(destDir, 'test.txt'), 'utf8'), - ).resolves.toBe('testing'); - await expect( - fs.readFile(resolvePath(destDir, 'sub/version.txt'), 'utf8'), - ).resolves.toBe('version: 0.0.0'); - } finally { - await del(tmplDir, { force: true }); - await del(destDir, { force: true }); - } + await templatingTask(tmplDir, destDir, { + version: '0.0.0', + }); + + await expect( + fs.readFile(resolvePath(destDir, 'test.txt'), 'utf8'), + ).resolves.toBe('testing'); + await expect( + fs.readFile(resolvePath(destDir, 'sub/version.txt'), 'utf8'), + ).resolves.toBe('version: 0.0.0'); }); }); From a2df99d92aca7d30c912abab1757718757f364e2 Mon Sep 17 00:00:00 2001 From: Remi Date: Tue, 20 Oct 2020 14:55:26 +0200 Subject: [PATCH 228/323] test(cli): use mock-fs in removePlugin --- .../remove-plugin/removePlugin.test.ts | 163 +++++++++++------- 1 file changed, 103 insertions(+), 60 deletions(-) diff --git a/packages/cli/src/commands/remove-plugin/removePlugin.test.ts b/packages/cli/src/commands/remove-plugin/removePlugin.test.ts index 6433cb6116..3ef9cd113f 100644 --- a/packages/cli/src/commands/remove-plugin/removePlugin.test.ts +++ b/packages/cli/src/commands/remove-plugin/removePlugin.test.ts @@ -31,6 +31,7 @@ import { removeSymLink, removePluginFromCodeOwners, } from './removePlugin'; +import mockFs from 'mock-fs'; const BACKSTAGE = `@backstage`; const testPluginName = 'yarn-test-package'; @@ -47,13 +48,24 @@ const createTestPackageFile = async ( // Copy contents of package file for test const packageFileContent = JSON.parse(fse.readFileSync(packageFile, 'utf8')); - packageFileContent.dependencies[testPluginPackage] = '0.1.0'; - fse.createFileSync(testFilePath); - fse.writeFileSync( - testFilePath, - `${JSON.stringify(packageFileContent, null, 2)}\n`, - 'utf8', - ); + const testFileContent = { + ...packageFileContent, + dependencies: { + ...packageFileContent.dependencies, + [testPluginPackage]: '0.1.0', + }, + }; + + mockFs({ + '/packages': { + app: { + 'package.json': `${JSON.stringify(packageFileContent, null, 2)}\n`, + }, + }, + '/remove-plugin-test': { + [testFilePath]: `${JSON.stringify(testFileContent, null, 2)}\n`, + }, + }); return; }; @@ -62,21 +74,47 @@ const createTestPluginFile = async ( pluginsFilePath: string, ) => { // Copy contents of package file for test - fse.copyFileSync(pluginsFilePath, testFilePath); + const pluginsFileContent = fse.readFileSync(pluginsFilePath); + + mockFs({ + '/remove-plugin-test': { + [testFilePath]: `${pluginsFileContent}\n`, + [pluginsFilePath]: `${pluginsFileContent}\n`, + }, + '/packages': { + app: { + src: { + 'plugin.ts': `${pluginsFileContent}\n`, + }, + }, + }, + }); + const pluginNameCapitalized = testPluginName .split('-') .map(name => capitalize(name)) .join(''); - const exportStatement = `export { plugin as ${pluginNameCapitalized}} from @backstage/plugin-${testPluginName}`; - await addExportStatement(testFilePath, exportStatement); + const exportStatement = `export { default as ${pluginNameCapitalized}} from @backstage/plugin-${testPluginName}`; + addExportStatement(`/remove-plugin-test/${testFilePath}`, exportStatement); }; const mkTestPluginDir = (testDirPath: string) => { - fse.mkdirSync(testDirPath); - for (let i = 0; i < 50; i++) - fse.createFileSync(path.join(testDirPath, `testFile${i}.ts`)); + const dirPath = `/${testDirPath}`; + + const pluginFiles: { [index: number]: string } = {}; + for (let i = 0; i < 50; i++) { + pluginFiles[i] = ''; + } + + mockFs({ + [dirPath]: pluginFiles, + }); }; +afterEach(() => { + mockFs.restore(); +}); + describe('removePlugin', () => { beforeAll(() => { // Create temporary directory for all tests @@ -95,60 +133,65 @@ describe('removePlugin', () => { it('removes plugin references from /packages/app/package.json', async () => { // Set up test const packageFilePath = path.join(appPath, 'package.json'); - const testFilePath = path.join(tempDir, 'test.json'); + const testFilePath = 'test.json'; createTestPackageFile(testFilePath, packageFilePath); - try { - await removeReferencesFromAppPackage(testFilePath, testPluginName); - const testFileContent = removeEmptyLines( - fse.readFileSync(testFilePath, 'utf8'), - ); - const packageFileContent = removeEmptyLines( - fse.readFileSync(packageFilePath, 'utf8'), - ); - expect(testFileContent).toBe(packageFileContent); - } finally { - fse.removeSync(testFilePath); - } - }); + await removeReferencesFromAppPackage( + '/remove-plugin-test/test.json', + testPluginName, + ); + const testFileContent = removeEmptyLines( + fse.readFileSync(`/remove-plugin-test/${testFilePath}`, 'utf8'), + ); - it('removes plugin exports from /packages/app/src/package.json', async () => { - const testFilePath = path.join(tempDir, 'test.ts'); + const packageFileContent = removeEmptyLines( + fse.readFileSync('/packages/app/package.json', 'utf8'), + ); + expect(testFileContent).toBe(packageFileContent); + }); + it('removes plugin exports from /packages/app/src/packacge.json', async () => { + const testFilePath = 'test.ts'; const pluginsFilePaths = path.join(appPath, 'src', 'plugins.ts'); - await createTestPluginFile(testFilePath, pluginsFilePaths); - try { - await removeReferencesFromPluginsFile(testFilePath, testPluginName); - const testFileContent = removeEmptyLines( - fse.readFileSync(testFilePath, 'utf8'), - ); - const pluginsFileContent = removeEmptyLines( - fse.readFileSync(pluginsFilePaths, 'utf8'), - ); - expect(testFileContent).toBe(pluginsFileContent); - } finally { - fse.removeSync(testFilePath); - } + createTestPluginFile(testFilePath, pluginsFilePaths); + await removeReferencesFromPluginsFile( + `/remove-plugin-test/${testFilePath}`, + testPluginName, + ); + const testFileContent = removeEmptyLines( + fse.readFileSync(`/remove-plugin-test/${testFilePath}`, 'utf8'), + ); + const pluginsFileContent = removeEmptyLines( + fse.readFileSync('/packages/app/src/plugin.ts', 'utf8'), + ); + expect(testFileContent).toBe(pluginsFileContent); }); it('removes codeOwners references', async () => { - const testFilePath = path.join(tempDir, 'test'); + const testFileName = 'test'; + const testFilePath = `/remove-plugin-test/${testFileName}`; const codeownersPath = path.join(githubDir, 'CODEOWNERS'); - try { - fse.copySync(codeownersPath, testFilePath); - const testFileContent = removeEmptyLines( - fse.readFileSync(testFilePath, 'utf8'), - ); - const codeOwnersFileContent = removeEmptyLines( - fse.readFileSync(codeownersPath, 'utf8'), - ); - await addCodeownersEntry(testFilePath!, `/plugins/${testPluginName}`, [ - '@thisIsAtestTeam', - 'test@gmail.com', - ]); - await removePluginFromCodeOwners(testFilePath, testPluginName); - expect(testFileContent).toBe(codeOwnersFileContent); - } finally { - if (fse.existsSync(testFilePath)) fse.removeSync(testFilePath); - } + const mockedCodeownersPath = '/.github/CODEOWNERS'; + + mockFs({ + '/remove-plugin-test': { + [testFileName]: '', + }, + '/.github': { + CODEOWNERS: fse.readFileSync(codeownersPath), + }, + }); + fse.copySync(mockedCodeownersPath, testFilePath); + const testFileContent = removeEmptyLines( + fse.readFileSync(testFilePath, 'utf8'), + ); + const codeOwnersFileContent = removeEmptyLines( + fse.readFileSync(mockedCodeownersPath, 'utf8'), + ); + await addCodeownersEntry(testFilePath!, `/plugins/${testPluginName}`, [ + '@thisIsAtestTeam', + 'test@gmail.com', + ]); + await removePluginFromCodeOwners(testFilePath, testPluginName); + expect(testFileContent).toBe(codeOwnersFileContent); }); }); From 59729fbbccb311021a660b471ec00365a3140165 Mon Sep 17 00:00:00 2001 From: Remi Date: Wed, 21 Oct 2020 10:58:40 +0200 Subject: [PATCH 229/323] test(cli): refactor mock-fs --- .../create-plugin/createPlugin.test.ts | 30 +++--- .../remove-plugin/removePlugin.test.ts | 98 +++++++++---------- 2 files changed, 64 insertions(+), 64 deletions(-) diff --git a/packages/cli/src/commands/create-plugin/createPlugin.test.ts b/packages/cli/src/commands/create-plugin/createPlugin.test.ts index 9e824c30b6..839bd4d433 100644 --- a/packages/cli/src/commands/create-plugin/createPlugin.test.ts +++ b/packages/cli/src/commands/create-plugin/createPlugin.test.ts @@ -22,17 +22,7 @@ import del from 'del'; import { createTemporaryPluginFolder, movePlugin } from './createPlugin'; describe('createPlugin', () => { - beforeEach(() => { - mockFs({ - '/testPluginMock': {}, - 'test-temp': { - plugins: { - testPluginMock: {}, - }, - }, - }); - }); - afterEach(() => { + afterAll(() => { mockFs.restore(); }); describe('createPluginFolder', () => { @@ -49,7 +39,12 @@ describe('createPlugin', () => { }); it('should not create a temporary plugin directory if it already exists', async () => { - const id = '/testPluginMock'; + const id = 'testPluginMock'; + + mockFs({ + [id]: {}, + }); + await expect(createTemporaryPluginFolder(id)).rejects.toThrow( /Failed to create temporary plugin directory/, ); @@ -59,9 +54,18 @@ describe('createPlugin', () => { describe('movePlugin', () => { it('should move the temporary plugin directory to its final place', async () => { const id = 'testPluginMock'; - const tempDir = `/${id}`; + const tempDir = id; const pluginDir = `/test-temp/plugins/${id}`; + mockFs({ + [id]: {}, + 'test-temp': { + plugins: { + testPluginMock: {}, + }, + }, + }); + await movePlugin(tempDir, pluginDir, id); await expect(fs.pathExists(pluginDir)).resolves.toBe(true); expect(pluginDir).toMatch(path.join('', 'plugins', id)); diff --git a/packages/cli/src/commands/remove-plugin/removePlugin.test.ts b/packages/cli/src/commands/remove-plugin/removePlugin.test.ts index 3ef9cd113f..43306939bb 100644 --- a/packages/cli/src/commands/remove-plugin/removePlugin.test.ts +++ b/packages/cli/src/commands/remove-plugin/removePlugin.test.ts @@ -16,13 +16,8 @@ import fse from 'fs-extra'; import path from 'path'; -import os from 'os'; import { paths } from '../../lib/paths'; -import { - addExportStatement, - capitalize, - createTemporaryPluginFolder, -} from '../create-plugin/createPlugin'; +import { addExportStatement, capitalize } from '../create-plugin/createPlugin'; import { addCodeownersEntry } from '../../lib/codeowners'; import { removeReferencesFromAppPackage, @@ -31,12 +26,13 @@ import { removeSymLink, removePluginFromCodeOwners, } from './removePlugin'; -import mockFs from 'mock-fs'; + +const mockFs = require('mock-fs'); const BACKSTAGE = `@backstage`; const testPluginName = 'yarn-test-package'; const testPluginPackage = `${BACKSTAGE}/plugin-${testPluginName}`; -const tempDir = path.join(os.tmpdir(), 'remove-plugin-test'); +const tempDir = '/remove-plugin-test'; const removeEmptyLines = (file: string): string => file.split(/\r?\n/).filter(Boolean).join('\n'); @@ -62,7 +58,7 @@ const createTestPackageFile = async ( 'package.json': `${JSON.stringify(packageFileContent, null, 2)}\n`, }, }, - '/remove-plugin-test': { + [tempDir]: { [testFilePath]: `${JSON.stringify(testFileContent, null, 2)}\n`, }, }); @@ -77,7 +73,7 @@ const createTestPluginFile = async ( const pluginsFileContent = fse.readFileSync(pluginsFilePath); mockFs({ - '/remove-plugin-test': { + [tempDir]: { [testFilePath]: `${pluginsFileContent}\n`, [pluginsFilePath]: `${pluginsFileContent}\n`, }, @@ -95,7 +91,7 @@ const createTestPluginFile = async ( .map(name => capitalize(name)) .join(''); const exportStatement = `export { default as ${pluginNameCapitalized}} from @backstage/plugin-${testPluginName}`; - addExportStatement(`/remove-plugin-test/${testFilePath}`, exportStatement); + addExportStatement(`${tempDir}/${testFilePath}`, exportStatement); }; const mkTestPluginDir = (testDirPath: string) => { @@ -111,36 +107,38 @@ const mkTestPluginDir = (testDirPath: string) => { }); }; -afterEach(() => { - mockFs.restore(); -}); - describe('removePlugin', () => { - beforeAll(() => { + beforeEach(() => { // Create temporary directory for all tests - createTemporaryPluginFolder(tempDir); + const appPath = paths.resolveTargetRoot('packages', 'app'); + mockFs({ + [tempDir]: { + 'package.json': mockFs.load(path.join(appPath, 'package.json')), + src: { + 'plugin.ts': mockFs.load(path.join(appPath, 'src', 'plugins.ts')), + }, + }, + }); }); afterAll(() => { - // Remove temporary directory - fse.removeSync(tempDir); + mockFs.restore(); }); describe('Remove Plugin Dependencies', () => { - const appPath = paths.resolveTargetRoot('packages', 'app'); const githubDir = paths.resolveTargetRoot('.github'); it('removes plugin references from /packages/app/package.json', async () => { // Set up test - const packageFilePath = path.join(appPath, 'package.json'); + const packageFilePath = `${tempDir}/package.json`; const testFilePath = 'test.json'; createTestPackageFile(testFilePath, packageFilePath); await removeReferencesFromAppPackage( - '/remove-plugin-test/test.json', + path.join(tempDir, testFilePath), testPluginName, ); const testFileContent = removeEmptyLines( - fse.readFileSync(`/remove-plugin-test/${testFilePath}`, 'utf8'), + fse.readFileSync(path.join(tempDir, testFilePath), 'utf8'), ); const packageFileContent = removeEmptyLines( @@ -150,14 +148,14 @@ describe('removePlugin', () => { }); it('removes plugin exports from /packages/app/src/packacge.json', async () => { const testFilePath = 'test.ts'; - const pluginsFilePaths = path.join(appPath, 'src', 'plugins.ts'); + const pluginsFilePaths = `${tempDir}/src/plugin.ts`; createTestPluginFile(testFilePath, pluginsFilePaths); await removeReferencesFromPluginsFile( - `/remove-plugin-test/${testFilePath}`, + path.join(tempDir, testFilePath), testPluginName, ); const testFileContent = removeEmptyLines( - fse.readFileSync(`/remove-plugin-test/${testFilePath}`, 'utf8'), + fse.readFileSync(path.join(tempDir, testFilePath), 'utf8'), ); const pluginsFileContent = removeEmptyLines( fse.readFileSync('/packages/app/src/plugin.ts', 'utf8'), @@ -167,16 +165,16 @@ describe('removePlugin', () => { it('removes codeOwners references', async () => { const testFileName = 'test'; - const testFilePath = `/remove-plugin-test/${testFileName}`; + const testFilePath = path.join(tempDir, testFileName); const codeownersPath = path.join(githubDir, 'CODEOWNERS'); const mockedCodeownersPath = '/.github/CODEOWNERS'; mockFs({ - '/remove-plugin-test': { + [tempDir]: { [testFileName]: '', }, '/.github': { - CODEOWNERS: fse.readFileSync(codeownersPath), + CODEOWNERS: mockFs.load(codeownersPath), }, }); fse.copySync(mockedCodeownersPath, testFilePath); @@ -204,34 +202,32 @@ describe('removePlugin', () => { describe('Removes Plugin Directory', () => { it('removes plugin directory from /plugins', async () => { - try { - mkTestPluginDir(testDirPath); - expect(fse.existsSync(testDirPath)).toBeTruthy(); - await removePluginDirectory(testDirPath); - expect(fse.existsSync(testDirPath)).toBeFalsy(); - } finally { - if (fse.existsSync(testDirPath)) fse.removeSync(testDirPath); - } + mkTestPluginDir(testDirPath); + expect(fse.existsSync(testDirPath)).toBeTruthy(); + await removePluginDirectory(testDirPath); + expect(fse.existsSync(testDirPath)).toBeFalsy(); }); }); describe('Removes System Link', () => { it('removes system link from @backstage', async () => { - const scopedDir = paths.resolveTargetRoot('node_modules', '@backstage'); - const testSymLinkPath = path.join( - scopedDir, - `plugin-${testPluginName}`, - ); - try { - mkTestPluginDir(testDirPath); - fse.ensureSymlinkSync(testSymLinkPath, testDirPath); + const symLink = `plugin-${testPluginName}`; + const testSymLinkPath = `/node_modules/@backstage/${symLink}`; - await removeSymLink(testSymLinkPath); - expect(fse.existsSync(testSymLinkPath)).toBeFalsy(); - } finally { - if (fse.existsSync(testDirPath)) fse.removeSync(testDirPath); - if (fse.existsSync(testSymLinkPath)) fse.removeSync(testSymLinkPath); - } + mkTestPluginDir(testDirPath); + + mockFs({ + '/node_modules': { + '@backstage': { + [symLink]: mockFs.symlink({ + path: testDirPath, + }), + }, + }, + }); + + await removeSymLink(testSymLinkPath); + expect(fse.existsSync(testSymLinkPath)).toBeFalsy(); }); }); }); From a48c2caefd50a2883444c5f6db8e965101da9842 Mon Sep 17 00:00:00 2001 From: Remi Date: Wed, 21 Oct 2020 11:06:39 +0200 Subject: [PATCH 230/323] test(cli): refactor mock-fs --- .../cli/src/commands/remove-plugin/removePlugin.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/commands/remove-plugin/removePlugin.test.ts b/packages/cli/src/commands/remove-plugin/removePlugin.test.ts index 43306939bb..7b9857a337 100644 --- a/packages/cli/src/commands/remove-plugin/removePlugin.test.ts +++ b/packages/cli/src/commands/remove-plugin/removePlugin.test.ts @@ -91,7 +91,7 @@ const createTestPluginFile = async ( .map(name => capitalize(name)) .join(''); const exportStatement = `export { default as ${pluginNameCapitalized}} from @backstage/plugin-${testPluginName}`; - addExportStatement(`${tempDir}/${testFilePath}`, exportStatement); + await addExportStatement(path.join(tempDir, testFilePath), exportStatement); }; const mkTestPluginDir = (testDirPath: string) => { @@ -130,7 +130,7 @@ describe('removePlugin', () => { it('removes plugin references from /packages/app/package.json', async () => { // Set up test - const packageFilePath = `${tempDir}/package.json`; + const packageFilePath = path.join(tempDir, 'package.json'); const testFilePath = 'test.json'; createTestPackageFile(testFilePath, packageFilePath); await removeReferencesFromAppPackage( @@ -148,7 +148,7 @@ describe('removePlugin', () => { }); it('removes plugin exports from /packages/app/src/packacge.json', async () => { const testFilePath = 'test.ts'; - const pluginsFilePaths = `${tempDir}/src/plugin.ts`; + const pluginsFilePaths = path.join(tempDir, 'src/plugin.ts'); createTestPluginFile(testFilePath, pluginsFilePaths); await removeReferencesFromPluginsFile( path.join(tempDir, testFilePath), From 93aaec54336428fe32021191da484315f03bea4a Mon Sep 17 00:00:00 2001 From: Remi Date: Wed, 21 Oct 2020 11:07:35 +0200 Subject: [PATCH 231/323] fix(cli): format --- packages/cli/src/lib/tasks.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/lib/tasks.test.ts b/packages/cli/src/lib/tasks.test.ts index a3ff3feeaa..1fb07d06fc 100644 --- a/packages/cli/src/lib/tasks.test.ts +++ b/packages/cli/src/lib/tasks.test.ts @@ -33,7 +33,7 @@ describe('templatingTask', () => { mockFs({ [tmplDir]: { - 'sub': { + sub: { 'version.txt.hbs': 'version: {{version}}', }, 'test.txt': 'testing', From 62493e54c1b63f94c72ae9940eb163d937ade166 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 23 Aug 2020 10:42:17 +0200 Subject: [PATCH 232/323] relations wip --- dev-components.yaml | 38 +++++++++ .../ingestion/HigherOrderOperations.test.ts | 15 +++- .../src/ingestion/LocationReaders.ts | 10 ++- .../processors/GroupPopulatorProcessor.ts | 82 +++++++++++++++++++ .../src/ingestion/processors/index.ts | 1 + .../src/ingestion/processors/results.ts | 10 ++- .../src/ingestion/processors/types.ts | 12 ++- .../catalog-backend/src/ingestion/types.ts | 8 +- .../src/service/CatalogBuilder.ts | 2 + 9 files changed, 172 insertions(+), 6 deletions(-) create mode 100644 dev-components.yaml create mode 100644 plugins/catalog-backend/src/ingestion/processors/GroupPopulatorProcessor.ts diff --git a/dev-components.yaml b/dev-components.yaml new file mode 100644 index 0000000000..1671f6057f --- /dev/null +++ b/dev-components.yaml @@ -0,0 +1,38 @@ +apiVersion: backstage.io/v1alpha1 +kind: Group +metadata: + name: root +spec: + type: org +--- +apiVersion: backstage.io/v1alpha1 +kind: Group +metadata: + name: platform +spec: + type: mission + parent: root +# --- +# apiVersion: backstage.io/v1alpha1 +# kind: Group +# metadata: +# name: pdx +# spec: +# type: tribe +# parent: platform +# --- +# apiVersion: backstage.io/v1alpha1 +# kind: Group +# metadata: +# name: tools +# spec: +# type: squad +# parent: pdx +# --- +# apiVersion: backstage.io/v1alpha1 +# kind: Group +# metadata: +# name: pulp-fiction +# spec: +# type: squad +# parent: pdx diff --git a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts index 34320fe18f..c7c8e738c8 100644 --- a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts +++ b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts @@ -69,7 +69,11 @@ describe('HigherOrderOperations', () => { }; locationsCatalog.addLocation.mockImplementation(x => Promise.resolve(x)); locationsCatalog.locations.mockResolvedValue([]); - locationReader.read.mockResolvedValue({ entities: [], errors: [] }); + locationReader.read.mockResolvedValue({ + entities: [], + errors: [], + relations: [], + }); const result = await higherOrderOperation.addLocation(spec); @@ -109,7 +113,11 @@ describe('HigherOrderOperations', () => { data: location, }, ]); - locationReader.read.mockResolvedValue({ entities: [], errors: [] }); + locationReader.read.mockResolvedValue({ + entities: [], + errors: [], + relations: [], + }); const result = await higherOrderOperation.addLocation(spec); @@ -138,6 +146,7 @@ describe('HigherOrderOperations', () => { locationReader.read.mockResolvedValue({ entities: [{ entity, location }], errors: [{ error: new Error('abcd'), location }], + relations: [], }); await expect(higherOrderOperation.addLocation(spec)).rejects.toThrow( @@ -186,6 +195,7 @@ describe('HigherOrderOperations', () => { locationReader.read.mockResolvedValue({ entities: [{ entity: desc, location }], errors: [], + relations: [], }); entitiesCatalog.batchAddOrUpdateEntities.mockResolvedValue(undefined); @@ -231,6 +241,7 @@ describe('HigherOrderOperations', () => { locationReader.read.mockResolvedValue({ entities: [{ entity: desc, location }], errors: [], + relations: [], }); entitiesCatalog.entities.mockResolvedValue([]); entitiesCatalog.addEntities.mockResolvedValue(undefined); diff --git a/plugins/catalog-backend/src/ingestion/LocationReaders.ts b/plugins/catalog-backend/src/ingestion/LocationReaders.ts index e23a4524b6..597a8ad6a3 100644 --- a/plugins/catalog-backend/src/ingestion/LocationReaders.ts +++ b/plugins/catalog-backend/src/ingestion/LocationReaders.ts @@ -61,7 +61,11 @@ export class LocationReaders implements LocationReader { async read(location: LocationSpec): Promise { const { rulesEnforcer, logger } = this.options; - const output: ReadLocationResult = { entities: [], errors: [] }; + const output: ReadLocationResult = { + entities: [], + errors: [], + relations: [], + }; let items: CatalogProcessorResult[] = [result.location(location, false)]; for (let depth = 0; depth < MAX_DEPTH; ++depth) { @@ -96,6 +100,10 @@ export class LocationReaders implements LocationReader { location: item.location, error: item.error, }); + } else if (item.type === 'relation') { + output.relations.push({ + relation: item.relation, + }); } } diff --git a/plugins/catalog-backend/src/ingestion/processors/GroupPopulatorProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GroupPopulatorProcessor.ts new file mode 100644 index 0000000000..a1b0c6f15e --- /dev/null +++ b/plugins/catalog-backend/src/ingestion/processors/GroupPopulatorProcessor.ts @@ -0,0 +1,82 @@ +/* + * 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 { + Entity, + ENTITY_DEFAULT_NAMESPACE, + GroupEntity, + LocationSpec, +} from '@backstage/catalog-model'; +import { CatalogProcessor, CatalogProcessorEmit } from './types'; +import * as result from './results'; + +export class GroupPopulatorProcessor implements CatalogProcessor { + async postProcessEntity( + entity: Entity, + _location: LocationSpec, + emit: CatalogProcessorEmit, + ): Promise { + if (entity.kind.toLowerCase() !== 'group') { + return entity; + } + const spec = entity.spec as GroupEntity['spec']; + + const { parent, children } = spec; + const self = { + kind: entity.kind, + name: entity.metadata.name, + namespace: entity.metadata.namespace ?? ENTITY_DEFAULT_NAMESPACE, + }; + + if (parent) { + emit( + result.relation({ + type: 'parent', + source: self, + target: { ...self, name: parent }, + }), + ); + emit( + result.relation({ + type: 'child', + source: { ...self, name: parent }, + target: self, + }), + ); + } + + if (children) { + for (const child of children) { + emit( + result.relation({ + type: 'child', + source: self, + target: { ...self, name: child }, + }), + ); + emit( + result.relation({ + type: 'parent', + source: { ...self, name: child }, + target: self, + }), + ); + } + } + + return entity; + } +} diff --git a/plugins/catalog-backend/src/ingestion/processors/index.ts b/plugins/catalog-backend/src/ingestion/processors/index.ts index 59a87af555..2a09247e45 100644 --- a/plugins/catalog-backend/src/ingestion/processors/index.ts +++ b/plugins/catalog-backend/src/ingestion/processors/index.ts @@ -28,6 +28,7 @@ export { GithubOrgReaderProcessor } from './GithubOrgReaderProcessor'; export { GithubReaderProcessor } from './GithubReaderProcessor'; export { GitlabApiReaderProcessor } from './GitlabApiReaderProcessor'; export { GitlabReaderProcessor } from './GitlabReaderProcessor'; +export { GroupPopulatorProcessor } from './GroupPopulatorProcessor'; export { LocationRefProcessor } from './LocationEntityProcessor'; export { PlaceholderProcessor } from './PlaceholderProcessor'; export type { PlaceholderResolver } from './PlaceholderProcessor'; diff --git a/plugins/catalog-backend/src/ingestion/processors/results.ts b/plugins/catalog-backend/src/ingestion/processors/results.ts index 2718d871dd..158bc3d950 100644 --- a/plugins/catalog-backend/src/ingestion/processors/results.ts +++ b/plugins/catalog-backend/src/ingestion/processors/results.ts @@ -15,7 +15,11 @@ */ import { InputError, NotFoundError } from '@backstage/backend-common'; -import { Entity, LocationSpec } from '@backstage/catalog-model'; +import { + Entity, + EntityRelationSpec, + LocationSpec, +} from '@backstage/catalog-model'; import { CatalogProcessorResult } from './types'; export function notFoundError( @@ -67,3 +71,7 @@ export function entity( ): CatalogProcessorResult { return { type: 'entity', location: atLocation, entity: newEntity }; } + +export function relation(spec: EntityRelationSpec): CatalogProcessorResult { + return { type: 'relation', relation: spec }; +} diff --git a/plugins/catalog-backend/src/ingestion/processors/types.ts b/plugins/catalog-backend/src/ingestion/processors/types.ts index c9adf07eff..9ed5e6e92d 100644 --- a/plugins/catalog-backend/src/ingestion/processors/types.ts +++ b/plugins/catalog-backend/src/ingestion/processors/types.ts @@ -14,7 +14,11 @@ * limitations under the License. */ -import { Entity, LocationSpec } from '@backstage/catalog-model'; +import { + Entity, + EntityRelationSpec, + LocationSpec, +} from '@backstage/catalog-model'; export type CatalogProcessor = { /** @@ -113,6 +117,11 @@ export type CatalogProcessorEntityResult = { location: LocationSpec; }; +export type CatalogProcessorRelationResult = { + type: 'relation'; + relation: EntityRelationSpec; +}; + export type CatalogProcessorErrorResult = { type: 'error'; error: Error; @@ -123,4 +132,5 @@ export type CatalogProcessorResult = | CatalogProcessorLocationResult | CatalogProcessorDataResult | CatalogProcessorEntityResult + | CatalogProcessorRelationResult | CatalogProcessorErrorResult; diff --git a/plugins/catalog-backend/src/ingestion/types.ts b/plugins/catalog-backend/src/ingestion/types.ts index 5bbec01e7e..acaae61cc9 100644 --- a/plugins/catalog-backend/src/ingestion/types.ts +++ b/plugins/catalog-backend/src/ingestion/types.ts @@ -14,7 +14,12 @@ * limitations under the License. */ -import type { Entity, Location, LocationSpec } from '@backstage/catalog-model'; +import type { + Entity, + EntityRelationSpec, + Location, + LocationSpec, +} from '@backstage/catalog-model'; // // HigherOrderOperation @@ -47,6 +52,7 @@ export type LocationReader = { export type ReadLocationResult = { entities: ReadLocationEntity[]; + relations: { relation: EntityRelationSpec }[]; errors: ReadLocationError[]; }; diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.ts b/plugins/catalog-backend/src/service/CatalogBuilder.ts index e6fb540f16..52f10232ce 100644 --- a/plugins/catalog-backend/src/service/CatalogBuilder.ts +++ b/plugins/catalog-backend/src/service/CatalogBuilder.ts @@ -52,6 +52,7 @@ import { GithubReaderProcessor, GitlabApiReaderProcessor, GitlabReaderProcessor, + GroupPopulatorProcessor, HigherOrderOperation, HigherOrderOperations, LocationReaders, @@ -334,6 +335,7 @@ export class CatalogBuilder { new YamlProcessor(), new CodeOwnersProcessor({ reader }), new LocationRefProcessor(), + new GroupPopulatorProcessor(), new AnnotateLocationEntityProcessor(), ]; From e26201d9d24a103b95ccdd4445ba65985ce30ecc Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 20 Oct 2020 17:57:11 +0200 Subject: [PATCH 233/323] catalog-backend: relations working e2e Co-authored-by: blam --- .../src/kinds/GroupEntityV1alpha1.ts | 30 ++--- .../src/kinds/UserEntityV1alpha1.ts | 10 +- .../src/catalog/DatabaseEntitiesCatalog.ts | 117 ++++++++++++------ plugins/catalog-backend/src/catalog/types.ts | 21 ++-- .../ingestion/HigherOrderOperations.test.ts | 14 +-- .../src/ingestion/HigherOrderOperations.ts | 22 ++-- .../src/ingestion/LocationReaders.ts | 54 ++++++-- .../src/ingestion/processors/types.ts | 1 + .../catalog-backend/src/ingestion/types.ts | 2 +- .../src/service/router.test.ts | 3 - plugins/catalog-backend/src/service/router.ts | 9 +- 11 files changed, 176 insertions(+), 107 deletions(-) diff --git a/packages/catalog-model/src/kinds/GroupEntityV1alpha1.ts b/packages/catalog-model/src/kinds/GroupEntityV1alpha1.ts index f0e91ddce8..8d1fbe78e8 100644 --- a/packages/catalog-model/src/kinds/GroupEntityV1alpha1.ts +++ b/packages/catalog-model/src/kinds/GroupEntityV1alpha1.ts @@ -32,21 +32,21 @@ const schema = yup.object>({ // one element and there is no simple workaround -_- // the cast is there to convince typescript that the array itself is // required without using .required() - ancestors: yup.array(yup.string().required()).test({ - name: 'isDefined', - message: 'ancestors must be defined', - test: v => Boolean(v), - }) as yup.ArraySchema, - children: yup.array(yup.string().required()).test({ - name: 'isDefined', - message: 'children must be defined', - test: v => Boolean(v), - }) as yup.ArraySchema, - descendants: yup.array(yup.string().required()).test({ - name: 'isDefined', - message: 'descendants must be defined', - test: v => Boolean(v), - }) as yup.ArraySchema, + // ancestors: yup.array(yup.string().required()).test({ + // name: 'isDefined', + // message: 'ancestors must be defined', + // test: v => Boolean(v), + // }) as yup.ArraySchema, + // children: yup.array(yup.string().required()).test({ + // name: 'isDefined', + // message: 'children must be defined', + // test: v => Boolean(v), + // }) as yup.ArraySchema, + // descendants: yup.array(yup.string().required()).test({ + // name: 'isDefined', + // message: 'descendants must be defined', + // test: v => Boolean(v), + // }) as yup.ArraySchema, }) .required(), }); diff --git a/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts b/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts index 6086b3776e..293f87b319 100644 --- a/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts +++ b/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts @@ -37,11 +37,11 @@ const schema = yup.object>({ // element and there is no simple workaround -_- // the cast is there to convince typescript that the array itself is // required without using .required() - memberOf: yup.array(yup.string().required()).test({ - name: 'isDefined', - message: 'memberOf must be defined', - test: v => Boolean(v), - }) as yup.ArraySchema, + // memberOf: yup.array(yup.string().required()).test({ + // name: 'isDefined', + // message: 'memberOf must be defined', + // test: v => Boolean(v), + // }) as yup.ArraySchema, }) .required(), }); diff --git a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts index efb541727a..e4accf9a8d 100644 --- a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts +++ b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts @@ -29,7 +29,11 @@ import limiterFactory from 'p-limit'; import { Logger } from 'winston'; import type { Database, DbEntityResponse, EntityFilters } from '../database'; import { durationText } from '../util/timing'; -import type { EntitiesCatalog } from './types'; +import type { + EntitiesCatalog, + EntityMutationRequest, + EntityMutationResponse, +} from './types'; type BatchContext = { kind: string; @@ -63,7 +67,7 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { return items.map(i => i.entity); } - async addOrUpdateEntity( + private async addOrUpdateEntity( entity: Entity, locationId?: string, ): Promise { @@ -96,15 +100,6 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { }); } - async addEntities(entities: Entity[], locationId?: string): Promise { - await this.database.transaction(async tx => { - await this.database.addEntities( - tx, - entities.map(entity => ({ locationId, entity })), - ); - }); - } - async removeEntityByUid(uid: string): Promise { return await this.database.transaction(async tx => { const entityResponse = await this.database.entityByUid(tx, uid); @@ -138,27 +133,31 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { * @param entities Some entities * @param locationId The location that they all belong to */ - async batchAddOrUpdateEntities(entities: Entity[], locationId?: string) { + async batchAddOrUpdateEntities( + requests: EntityMutationRequest[], + locationId?: string, + ): Promise { // Group the entities by unique kind+namespace combinations - const entitiesByKindAndNamespace = groupBy(entities, entity => { + const entitiesByKindAndNamespace = groupBy(requests, ({ entity }) => { const name = getEntityName(entity); return `${name.kind}:${name.namespace}`.toLowerCase(); }); const limiter = limiterFactory(BATCH_CONCURRENCY); - const tasks: Promise[] = []; + const tasks: Promise[] = []; - for (const groupEntities of Object.values(entitiesByKindAndNamespace)) { - const { kind, namespace } = getEntityName(groupEntities[0]); + for (const groupRequests of Object.values(entitiesByKindAndNamespace)) { + const { kind, namespace } = getEntityName(groupRequests[0].entity); // Go through the new entities in reasonable chunk sizes (sometimes, // sources produce tens of thousands of entities, and those are too large // batch sizes to reasonably send to the database) - for (const batch of chunk(groupEntities, BATCH_SIZE)) { + for (const batch of chunk(groupRequests, BATCH_SIZE)) { tasks.push( limiter(async () => { - const first = serializeEntityRef(batch[0]); - const last = serializeEntityRef(batch[batch.length - 1]); + const first = serializeEntityRef(batch[0].entity); + const last = serializeEntityRef(batch[batch.length - 1].entity); + const modifiedEntityIds: EntityMutationResponse[] = []; this.logger.debug( `Considering batch ${first}-${last} (${batch.length} entries)`, ); @@ -171,8 +170,16 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { batch, context, ); - if (toAdd.length) await this.batchAdd(toAdd, context); - if (toUpdate.length) await this.batchUpdate(toUpdate, context); + if (toAdd.length) { + modifiedEntityIds.push( + ...(await this.batchAdd(toAdd, context)), + ); + } + if (toUpdate.length) { + modifiedEntityIds.push( + ...(await this.batchUpdate(toUpdate, context)), + ); + } break; } catch (e) { if (e instanceof ConflictError && attempt < BATCH_ATTEMPTS) { @@ -184,16 +191,18 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { } } } + + return modifiedEntityIds; }), ); } } - await Promise.all(tasks); + return (await Promise.all(tasks)).flat(); } // Set the relations originating from an entity using the DB layer - async setRelations( + private async setRelations( originatingEntityId: string, relations: EntityRelationSpec[], ): Promise { @@ -207,15 +216,15 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { // produce the list of entities to be added, and the list of entities to be // updated private async analyzeBatch( - newEntities: Entity[], + requests: EntityMutationRequest[], { kind, namespace }: BatchContext, ): Promise<{ - toAdd: Entity[]; - toUpdate: Entity[]; + toAdd: EntityMutationRequest[]; + toUpdate: EntityMutationRequest[]; }> { const markTimestamp = process.hrtime(); - const names = newEntities.map(e => e.metadata.name); + const names = requests.map(({ entity }) => entity.metadata.name); const oldEntities = await this.entities({ kind: kind, 'metadata.namespace': namespace, @@ -226,18 +235,19 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { oldEntities.map(e => [e.metadata.name, e]), ); - const toAdd: Entity[] = []; - const toUpdate: Entity[] = []; + const toAdd: EntityMutationRequest[] = []; + const toUpdate: EntityMutationRequest[] = []; - for (const newEntity of newEntities) { + for (const request of requests) { + const newEntity = request.entity; const oldEntity = oldEntitiesByName.get(newEntity.metadata.name); if (!oldEntity) { - toAdd.push(newEntity); + toAdd.push(request); } else if (entityHasChanges(oldEntity, newEntity)) { // TODO(freben): This currently uses addOrUpdateEntity under the hood, // but should probably calculate the end result entity right here // instead and call a dedicated batch update database method instead - toUpdate.push(newEntity); + toUpdate.push(request); } } @@ -252,28 +262,55 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { // Efficiently adds the given entities to storage, under the assumption that // they do not conflict with any existing entities - private async batchAdd(entities: Entity[], { locationId }: BatchContext) { + private async batchAdd( + requests: EntityMutationRequest[], + { locationId }: BatchContext, + ): Promise { const markTimestamp = process.hrtime(); - await this.addEntities(entities, locationId); + const res = await this.database.transaction( + async tx => + await this.database.addEntities( + tx, + requests.map(({ entity }) => ({ locationId, entity })), + ), + ); + + const entityIds = res.map(({ entity }) => ({ + entityId: entity.metadata.uid!, + })); + + for (const [index, { entityId }] of entityIds.entries()) { + await this.setRelations(entityId, requests[index].relations); + } this.logger.debug( - `Added ${entities.length} entities in ${durationText(markTimestamp)}`, + `Added ${requests.length} entities in ${durationText(markTimestamp)}`, ); + + return entityIds; } // Efficiently updates the given entities into storage, under the assumption // that there already exist entities with the same names - private async batchUpdate(entities: Entity[], { locationId }: BatchContext) { + private async batchUpdate( + requests: EntityMutationRequest[], + { locationId }: BatchContext, + ): Promise { const markTimestamp = process.hrtime(); - + const responseIds: EntityMutationResponse[] = []; // TODO(freben): Still not batched - for (const entity of entities) { - await this.addOrUpdateEntity(entity, locationId); + for (const entity of requests) { + const res = await this.addOrUpdateEntity(entity.entity, locationId); + const entityId = res.metadata.uid!; + responseIds.push({ entityId }); + await this.setRelations(entityId, entity.relations); } this.logger.debug( - `Updated ${entities.length} entities in ${durationText(markTimestamp)}`, + `Updated ${requests.length} entities in ${durationText(markTimestamp)}`, ); + + return responseIds; } } diff --git a/plugins/catalog-backend/src/catalog/types.ts b/plugins/catalog-backend/src/catalog/types.ts index e50b5f15db..c9c514c42f 100644 --- a/plugins/catalog-backend/src/catalog/types.ts +++ b/plugins/catalog-backend/src/catalog/types.ts @@ -21,10 +21,17 @@ import type { EntityFilters } from '../database'; // Entities // +export type EntityMutationRequest = { + entity: Entity; + relations: EntityRelationSpec[]; +}; + +export type EntityMutationResponse = { + entityId: string; +}; + export type EntitiesCatalog = { entities(filters?: EntityFilters): Promise; - addOrUpdateEntity(entity: Entity, locationId?: string): Promise; - addEntities(entities: Entity[], locationId?: string): Promise; removeEntityByUid(uid: string): Promise; /** @@ -34,15 +41,9 @@ export type EntitiesCatalog = { * @param locationId The location that they all belong to */ batchAddOrUpdateEntities( - entities: Entity[], + entities: EntityMutationRequest[], locationId?: string, - ): Promise; - - // Same as the DB layer - setRelations( - entityUid: string, - relations: EntityRelationSpec[], - ): Promise; + ): Promise; }; // diff --git a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts index c7c8e738c8..b8aaa5fb13 100644 --- a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts +++ b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts @@ -31,10 +31,7 @@ describe('HigherOrderOperations', () => { beforeAll(() => { entitiesCatalog = { entities: jest.fn(), - addOrUpdateEntity: jest.fn(), - addEntities: jest.fn(), removeEntityByUid: jest.fn(), - setRelations: jest.fn(), batchAddOrUpdateEntities: jest.fn(), }; locationsCatalog = { @@ -72,7 +69,6 @@ describe('HigherOrderOperations', () => { locationReader.read.mockResolvedValue({ entities: [], errors: [], - relations: [], }); const result = await higherOrderOperation.addLocation(spec); @@ -116,7 +112,6 @@ describe('HigherOrderOperations', () => { locationReader.read.mockResolvedValue({ entities: [], errors: [], - relations: [], }); const result = await higherOrderOperation.addLocation(spec); @@ -144,9 +139,8 @@ describe('HigherOrderOperations', () => { locationsCatalog.locations.mockResolvedValue([]); locationReader.read.mockResolvedValue({ - entities: [{ entity, location }], + entities: [{ entity, location, relations: [] }], errors: [{ error: new Error('abcd'), location }], - relations: [], }); await expect(higherOrderOperation.addLocation(spec)).rejects.toThrow( @@ -193,9 +187,8 @@ describe('HigherOrderOperations', () => { { currentStatus: locationStatus, data: location }, ]); locationReader.read.mockResolvedValue({ - entities: [{ entity: desc, location }], + entities: [{ entity: desc, location, relations: [] }], errors: [], - relations: [], }); entitiesCatalog.batchAddOrUpdateEntities.mockResolvedValue(undefined); @@ -239,9 +232,8 @@ describe('HigherOrderOperations', () => { { currentStatus: locationStatus, data: location }, ]); locationReader.read.mockResolvedValue({ - entities: [{ entity: desc, location }], + entities: [{ entity: desc, location, relations: [] }], errors: [], - relations: [], }); entitiesCatalog.entities.mockResolvedValue([]); entitiesCatalog.addEntities.mockResolvedValue(undefined); diff --git a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts index 6df6d9b4b7..2771945db2 100644 --- a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts +++ b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts @@ -15,7 +15,7 @@ */ import { InputError } from '@backstage/backend-common'; -import { Entity, Location, LocationSpec } from '@backstage/catalog-model'; +import { Location, LocationSpec } from '@backstage/catalog-model'; import { v4 as uuidv4 } from 'uuid'; import { Logger } from 'winston'; import { EntitiesCatalog, LocationsCatalog } from '../catalog'; @@ -94,16 +94,16 @@ export class HigherOrderOperations implements HigherOrderOperation { if (!previousLocation) { await this.locationsCatalog.addLocation(location); } - const outputEntities: Entity[] = []; - for (const entity of readerOutput.entities) { - const out = await this.entitiesCatalog.addOrUpdateEntity( - entity.entity, - location.id, - ); - outputEntities.push(out); - } + const writtenEntities = await this.entitiesCatalog.batchAddOrUpdateEntities( + readerOutput.entities, + location.id, + ); - return { location, entities: outputEntities }; + const entities = await this.entitiesCatalog.entities({ + 'metadata.uid': writtenEntities.map(e => e.entityId), + }); + + return { location, entities }; } /** @@ -166,7 +166,7 @@ export class HigherOrderOperations implements HigherOrderOperation { try { await this.entitiesCatalog.batchAddOrUpdateEntities( - readerOutput.entities.map(e => e.entity), + readerOutput.entities, location.id, ); } catch (e) { diff --git a/plugins/catalog-backend/src/ingestion/LocationReaders.ts b/plugins/catalog-backend/src/ingestion/LocationReaders.ts index 597a8ad6a3..215bfc9dc1 100644 --- a/plugins/catalog-backend/src/ingestion/LocationReaders.ts +++ b/plugins/catalog-backend/src/ingestion/LocationReaders.ts @@ -18,6 +18,7 @@ import { UrlReader } from '@backstage/backend-common'; import { Entity, EntityPolicy, + EntityRelationSpec, ENTITY_DEFAULT_NAMESPACE, LocationSpec, } from '@backstage/catalog-model'; @@ -64,7 +65,6 @@ export class LocationReaders implements LocationReader { const output: ReadLocationResult = { entities: [], errors: [], - relations: [], }; let items: CatalogProcessorResult[] = [result.location(location, false)]; @@ -79,11 +79,21 @@ export class LocationReaders implements LocationReader { await this.handleData(item, emit); } else if (item.type === 'entity') { if (rulesEnforcer.isAllowed(item.entity, item.location)) { - const entity = await this.handleEntity(item, emit); + const relations = Array(); + + const entity = await this.handleEntity(item, emitResult => { + if (emitResult.type === 'relation') { + relations.push(emitResult.relation); + return; + } + emit(emitResult); + }); + if (entity) { output.entities.push({ entity, location: item.location, + relations, }); } } else { @@ -100,10 +110,6 @@ export class LocationReaders implements LocationReader { location: item.location, error: item.error, }); - } else if (item.type === 'relation') { - output.relations.push({ - relation: item.relation, - }); } } @@ -126,11 +132,23 @@ export class LocationReaders implements LocationReader { ) { const { processors, logger } = this.options; + const validatedEmit: CatalogProcessorEmit = emitResult => { + if (emitResult.type === 'relation') { + throw new Error('readLocation may not emit entity relations'); + } + + emit(emitResult); + }; + for (const processor of processors) { if (processor.readLocation) { try { if ( - await processor.readLocation(item.location, item.optional, emit) + await processor.readLocation( + item.location, + item.optional, + validatedEmit, + ) ) { return; } @@ -153,10 +171,20 @@ export class LocationReaders implements LocationReader { ) { const { processors, logger } = this.options; + const validatedEmit: CatalogProcessorEmit = emitResult => { + if (emitResult.type === 'relation') { + throw new Error('parseData may not emit entity relations'); + } + + emit(emitResult); + }; + for (const processor of processors) { if (processor.parseData) { try { - if (await processor.parseData(item.data, item.location, emit)) { + if ( + await processor.parseData(item.data, item.location, validatedEmit) + ) { return; } } catch (e) { @@ -250,10 +278,18 @@ export class LocationReaders implements LocationReader { `Encountered error at location ${item.location.type} ${item.location.target}, ${item.error}`, ); + const validatedEmit: CatalogProcessorEmit = emitResult => { + if (emitResult.type === 'relation') { + throw new Error('handleError may not emit entity relations'); + } + + emit(emitResult); + }; + for (const processor of processors) { if (processor.handleError) { try { - await processor.handleError(item.error, item.location, emit); + await processor.handleError(item.error, item.location, validatedEmit); } catch (e) { const message = `Processor ${processor.constructor.name} threw an error while handling another error at ${item.location.type} ${item.location.target}, ${e}`; emit(result.generalError(item.location, message)); diff --git a/plugins/catalog-backend/src/ingestion/processors/types.ts b/plugins/catalog-backend/src/ingestion/processors/types.ts index 9ed5e6e92d..7821a61437 100644 --- a/plugins/catalog-backend/src/ingestion/processors/types.ts +++ b/plugins/catalog-backend/src/ingestion/processors/types.ts @@ -120,6 +120,7 @@ export type CatalogProcessorEntityResult = { export type CatalogProcessorRelationResult = { type: 'relation'; relation: EntityRelationSpec; + entityRef?: string; }; export type CatalogProcessorErrorResult = { diff --git a/plugins/catalog-backend/src/ingestion/types.ts b/plugins/catalog-backend/src/ingestion/types.ts index acaae61cc9..c586e2d438 100644 --- a/plugins/catalog-backend/src/ingestion/types.ts +++ b/plugins/catalog-backend/src/ingestion/types.ts @@ -52,13 +52,13 @@ export type LocationReader = { export type ReadLocationResult = { entities: ReadLocationEntity[]; - relations: { relation: EntityRelationSpec }[]; errors: ReadLocationError[]; }; export type ReadLocationEntity = { location: LocationSpec; entity: Entity; + relations: EntityRelationSpec[]; }; export type ReadLocationError = { diff --git a/plugins/catalog-backend/src/service/router.test.ts b/plugins/catalog-backend/src/service/router.test.ts index a2b17ba360..71caeb3d6c 100644 --- a/plugins/catalog-backend/src/service/router.test.ts +++ b/plugins/catalog-backend/src/service/router.test.ts @@ -32,10 +32,7 @@ describe('createRouter', () => { beforeAll(async () => { entitiesCatalog = { entities: jest.fn(), - addOrUpdateEntity: jest.fn(), - addEntities: jest.fn(), removeEntityByUid: jest.fn(), - setRelations: jest.fn(), batchAddOrUpdateEntities: jest.fn(), }; locationsCatalog = { diff --git a/plugins/catalog-backend/src/service/router.ts b/plugins/catalog-backend/src/service/router.ts index a262e9b5f4..5af773f1a0 100644 --- a/plugins/catalog-backend/src/service/router.ts +++ b/plugins/catalog-backend/src/service/router.ts @@ -49,8 +49,13 @@ export async function createRouter( }) .post('/entities', async (req, res) => { const body = await requireRequestBody(req); - const result = await entitiesCatalog.addOrUpdateEntity(body as Entity); - res.status(200).send(result); + const [result] = await entitiesCatalog.batchAddOrUpdateEntities([ + { entity: body as Entity, relations: [] }, + ]); + const entity = await entitiesCatalog.entities({ + 'metadata.uid': result.entityId, + }); + res.status(200).send(entity); }) .get('/entities/by-uid/:uid', async (req, res) => { const { uid } = req.params; From fdff44b72814511376d2413da6450bbb50980b4c Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 20 Oct 2020 19:32:34 +0200 Subject: [PATCH 234/323] catalog-backend: update tests to work with relation changes + fix relation updates --- .../catalog/DatabaseEntitiesCatalog.test.ts | 171 +++++++++++++----- .../src/catalog/DatabaseEntitiesCatalog.ts | 16 +- .../ingestion/HigherOrderOperations.test.ts | 25 ++- .../src/ingestion/HigherOrderOperations.ts | 8 + .../src/service/CatalogBuilder.test.ts | 8 +- .../src/service/router.test.ts | 20 +- plugins/catalog-backend/src/service/router.ts | 2 +- 7 files changed, 188 insertions(+), 62 deletions(-) diff --git a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts index d84a8e071c..58cac90b7d 100644 --- a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts +++ b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts @@ -18,6 +18,7 @@ import { getVoidLogger } from '@backstage/backend-common'; import type { Entity } from '@backstage/catalog-model'; import { Database, DatabaseManager } from '../database'; import { DatabaseEntitiesCatalog } from './DatabaseEntitiesCatalog'; +import { EntityMutationRequest } from './types'; describe('DatabaseEntitiesCatalog', () => { let db: jest.Mocked; @@ -46,7 +47,7 @@ describe('DatabaseEntitiesCatalog', () => { db.transaction.mockImplementation(async f => f('tx')); }); - describe('addOrUpdateEntity', () => { + describe('batchAddOrUpdateEntities', () => { it('adds when no given uid and no matching by name', async () => { const entity: Entity = { apiVersion: 'a', @@ -58,19 +59,25 @@ describe('DatabaseEntitiesCatalog', () => { }; db.entities.mockResolvedValue([]); - db.addEntities.mockResolvedValue([{ entity }]); + db.addEntities.mockResolvedValue([ + { entity: { ...entity, metadata: { ...entity.metadata, uid: 'u' } } }, + ]); const catalog = new DatabaseEntitiesCatalog(db, getVoidLogger()); - const result = await catalog.addOrUpdateEntity(entity); + const result = await catalog.batchAddOrUpdateEntities([ + { entity, relations: [] }, + ]); - expect(db.entityByName).toHaveBeenCalledTimes(1); - expect(db.entityByName).toHaveBeenCalledWith(expect.anything(), { + expect(db.entities).toHaveBeenCalledTimes(1); + expect(db.entities).toHaveBeenCalledWith(expect.anything(), { kind: 'b', - namespace: 'd', - name: 'c', + 'metadata.namespace': 'd', + 'metadata.name': ['c'], }); + expect(db.setRelations).toHaveBeenCalledTimes(1); + expect(db.setRelations).toHaveBeenCalledWith(expect.anything(), 'u', []); expect(db.addEntities).toHaveBeenCalledTimes(1); - expect(result).toBe(entity); + expect(result).toEqual([{ entityId: 'u' }]); }); it('updates when given uid', async () => { @@ -82,9 +89,11 @@ describe('DatabaseEntitiesCatalog', () => { name: 'c', namespace: 'd', }, + spec: { + x: 'b', + }, }; - - db.entityByUid.mockResolvedValue({ + const existing = { entity: { apiVersion: 'a', kind: 'b', @@ -95,14 +104,28 @@ describe('DatabaseEntitiesCatalog', () => { name: 'c', namespace: 'd', }, + spec: { + x: 'a', + }, }, - }); + }; + + db.entities.mockResolvedValue([existing]); + db.entityByUid.mockResolvedValue(existing); db.updateEntity.mockResolvedValue({ entity }); const catalog = new DatabaseEntitiesCatalog(db, getVoidLogger()); - const result = await catalog.addOrUpdateEntity(entity); + const result = await catalog.batchAddOrUpdateEntities([ + { entity, relations: [] }, + ]); - expect(db.entities).toHaveBeenCalledTimes(0); + expect(db.entities).toHaveBeenCalledTimes(1); + expect(db.entities).toHaveBeenCalledWith(expect.anything(), { + kind: 'b', + 'metadata.namespace': 'd', + 'metadata.name': ['c'], + }); + expect(db.entityByName).not.toHaveBeenCalled(); expect(db.entityByUid).toHaveBeenCalledTimes(1); expect(db.entityByUid).toHaveBeenCalledWith(expect.anything(), 'u'); expect(db.updateEntity).toHaveBeenCalledTimes(1); @@ -114,17 +137,22 @@ describe('DatabaseEntitiesCatalog', () => { kind: 'b', metadata: { uid: 'u', - etag: 'e', - generation: 1, + etag: expect.any(String), + generation: 2, name: 'c', namespace: 'd', }, + spec: { + x: 'b', + }, }, }, 'e', 1, ); - expect(result).toBe(entity); + expect(db.setRelations).toHaveBeenCalledTimes(1); + expect(db.setRelations).toHaveBeenCalledWith(expect.anything(), 'u', []); + expect(result).toEqual([{ entityId: 'u' }]); }); it('update when no given uid and matching by name', async () => { @@ -135,25 +163,42 @@ describe('DatabaseEntitiesCatalog', () => { name: 'c', namespace: 'd', }, + spec: { + x: 'b', + }, }; - const existing: Entity = { - apiVersion: 'a', - kind: 'b', - metadata: { - uid: 'u', - etag: 'e', - generation: 1, - name: 'c', - namespace: 'd', + const existing = { + entity: { + apiVersion: 'a', + kind: 'b', + metadata: { + uid: 'u', + etag: 'e', + generation: 1, + name: 'c', + namespace: 'd', + }, + spec: { + x: 'a', + }, }, }; - db.entityByName.mockResolvedValue({ entity: existing }); - db.updateEntity.mockResolvedValue({ entity: existing }); + db.entities.mockResolvedValue([existing]); + db.entityByName.mockResolvedValue(existing); + db.updateEntity.mockResolvedValue(existing); const catalog = new DatabaseEntitiesCatalog(db, getVoidLogger()); - const result = await catalog.addOrUpdateEntity(added); + const result = await catalog.batchAddOrUpdateEntities([ + { entity: added, relations: [] }, + ]); + expect(db.entities).toHaveBeenCalledTimes(1); + expect(db.entities).toHaveBeenCalledWith(expect.anything(), { + kind: 'b', + 'metadata.namespace': 'd', + 'metadata.name': ['c'], + }); expect(db.entityByName).toHaveBeenCalledTimes(1); expect(db.entityByName).toHaveBeenCalledWith(expect.anything(), { kind: 'b', @@ -169,32 +214,73 @@ describe('DatabaseEntitiesCatalog', () => { kind: 'b', metadata: { uid: 'u', - etag: 'e', - generation: 1, + etag: expect.any(String), + generation: 2, name: 'c', namespace: 'd', }, + spec: { + x: 'b', + }, }, }, 'e', 1, ); - expect(result).toEqual(existing); + expect(result).toEqual([{ entityId: 'u' }]); + }); + + it('should not update if entity is unchanged', async () => { + const entity: Entity = { + apiVersion: 'a', + kind: 'b', + metadata: { + uid: 'u', + name: 'c', + namespace: 'd', + }, + spec: { + x: 'a', + }, + }; + + db.entities.mockResolvedValue([{ entity }]); + db.entityByUid.mockResolvedValue({ entity }); + db.updateEntity.mockResolvedValue({ entity }); + + const catalog = new DatabaseEntitiesCatalog(db, getVoidLogger()); + const result = await catalog.batchAddOrUpdateEntities([ + { entity, relations: [] }, + ]); + + expect(db.entities).toHaveBeenCalledTimes(1); + expect(db.entities).toHaveBeenCalledWith(expect.anything(), { + kind: 'b', + 'metadata.namespace': 'd', + 'metadata.name': ['c'], + }); + expect(db.entityByName).not.toHaveBeenCalled(); + expect(db.entityByUid).not.toHaveBeenCalled(); + expect(db.updateEntity).not.toHaveBeenCalled(); + expect(db.setRelations).toHaveBeenCalledTimes(1); + expect(db.setRelations).toHaveBeenCalledWith(expect.anything(), 'u', []); + expect(result).toEqual([{ entityId: 'u' }]); }); - }); - describe('batchAddOrUpdateEntities', () => { it('both adds and updates', async () => { const catalog = new DatabaseEntitiesCatalog( await DatabaseManager.createTestDatabase(), getVoidLogger(), ); - const entities: Entity[] = []; + const entities: EntityMutationRequest[] = []; for (let i = 0; i < 500; ++i) { entities.push({ - apiVersion: 'a', - kind: 'k', - metadata: { name: `n${i}` }, + entity: { + apiVersion: 'a', + kind: 'k', + metadata: { name: `n${i}` }, + }, + relations: [], }); } @@ -202,11 +288,14 @@ describe('DatabaseEntitiesCatalog', () => { const afterFirst = await catalog.entities(); expect(afterFirst.length).toBe(500); - entities[40].metadata.op = 'changed'; + entities[40].entity.metadata.op = 'changed'; entities.push({ - apiVersion: 'a', - kind: 'k', - metadata: { name: `n500`, op: 'added' }, + entity: { + apiVersion: 'a', + kind: 'k', + metadata: { name: `n500`, op: 'added' }, + }, + relations: [], }); await catalog.batchAddOrUpdateEntities(entities); diff --git a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts index e4accf9a8d..18769cfdf7 100644 --- a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts +++ b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts @@ -166,7 +166,7 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { const context = { kind, namespace, locationId }; for (let attempt = 1; attempt <= BATCH_ATTEMPTS; ++attempt) { try { - const { toAdd, toUpdate } = await this.analyzeBatch( + const { toAdd, toUpdate, toIgnore } = await this.analyzeBatch( batch, context, ); @@ -180,6 +180,14 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { ...(await this.batchUpdate(toUpdate, context)), ); } + // TODO(Rugvip): We currently always update relations, but we + // likely want to figure out a way to avoid that + for (const { entity, relations } of toIgnore) { + const entityId = entity.metadata.uid!; + await this.setRelations(entityId, relations); + modifiedEntityIds.push({ entityId }); + } + break; } catch (e) { if (e instanceof ConflictError && attempt < BATCH_ATTEMPTS) { @@ -221,6 +229,7 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { ): Promise<{ toAdd: EntityMutationRequest[]; toUpdate: EntityMutationRequest[]; + toIgnore: EntityMutationRequest[]; }> { const markTimestamp = process.hrtime(); @@ -237,6 +246,7 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { const toAdd: EntityMutationRequest[] = []; const toUpdate: EntityMutationRequest[] = []; + const toIgnore: EntityMutationRequest[] = []; for (const request of requests) { const newEntity = request.entity; @@ -248,6 +258,8 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { // but should probably calculate the end result entity right here // instead and call a dedicated batch update database method instead toUpdate.push(request); + } else { + toIgnore.push(request); } } @@ -257,7 +269,7 @@ export class DatabaseEntitiesCatalog implements EntitiesCatalog { } entities to update in ${durationText(markTimestamp)}`, ); - return { toAdd, toUpdate }; + return { toAdd, toUpdate, toIgnore }; } // Efficiently adds the given entities to storage, under the assumption that diff --git a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts index b8aaa5fb13..933433b47e 100644 --- a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts +++ b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts @@ -83,7 +83,7 @@ describe('HigherOrderOperations', () => { expect(locationsCatalog.locations).toBeCalledTimes(1); expect(locationReader.read).toBeCalledTimes(1); expect(locationReader.read).toBeCalledWith({ type: 'a', target: 'b' }); - expect(entitiesCatalog.addOrUpdateEntity).not.toBeCalled(); + expect(entitiesCatalog.batchAddOrUpdateEntities).not.toBeCalled(); expect(locationsCatalog.addLocation).toBeCalledTimes(1); expect(locationsCatalog.addLocation).toBeCalledWith( expect.objectContaining({ @@ -121,7 +121,7 @@ describe('HigherOrderOperations', () => { expect(locationsCatalog.locations).toBeCalledTimes(1); expect(locationReader.read).toBeCalledTimes(1); expect(locationReader.read).toBeCalledWith({ type: 'a', target: 'b' }); - expect(entitiesCatalog.addOrUpdateEntity).not.toBeCalled(); + expect(entitiesCatalog.batchAddOrUpdateEntities).not.toBeCalled(); expect(locationsCatalog.addLocation).not.toBeCalled(); }); @@ -147,7 +147,7 @@ describe('HigherOrderOperations', () => { /abcd/, ); expect(locationsCatalog.locations).toBeCalledTimes(1); - expect(entitiesCatalog.addOrUpdateEntity).not.toBeCalled(); + expect(entitiesCatalog.batchAddOrUpdateEntities).not.toBeCalled(); expect(locationsCatalog.addLocation).not.toBeCalled(); }); }); @@ -162,7 +162,7 @@ describe('HigherOrderOperations', () => { expect(locationsCatalog.locations).toHaveBeenCalledTimes(1); expect(locationReader.read).not.toHaveBeenCalled(); - expect(entitiesCatalog.addOrUpdateEntity).not.toHaveBeenCalled(); + expect(entitiesCatalog.batchAddOrUpdateEntities).not.toHaveBeenCalled(); }); it('can update a single location where a matching entity did not exist', async () => { @@ -182,6 +182,7 @@ describe('HigherOrderOperations', () => { metadata: { name: 'c1' }, spec: { type: 'service' }, }; + const entityId = 'xyz123'; locationsCatalog.locations.mockResolvedValue([ { currentStatus: locationStatus, data: location }, @@ -190,7 +191,9 @@ describe('HigherOrderOperations', () => { entities: [{ entity: desc, location, relations: [] }], errors: [], }); - entitiesCatalog.batchAddOrUpdateEntities.mockResolvedValue(undefined); + entitiesCatalog.batchAddOrUpdateEntities.mockResolvedValue([ + { entityId }, + ]); await expect( higherOrderOperation.refreshAllLocations(), @@ -203,9 +206,13 @@ describe('HigherOrderOperations', () => { target: 'thing', }); expect(entitiesCatalog.batchAddOrUpdateEntities).toHaveBeenCalledTimes(1); - expect(entitiesCatalog.batchAddOrUpdateEntities).toHaveBeenNthCalledWith( - 1, - [expect.objectContaining({ metadata: { name: 'c1' } })], + expect(entitiesCatalog.batchAddOrUpdateEntities).toHaveBeenCalledWith( + [ + expect.objectContaining({ + entity: expect.objectContaining({ metadata: { name: 'c1' } }), + relations: [], + }), + ], '123', ); }); @@ -236,7 +243,7 @@ describe('HigherOrderOperations', () => { errors: [], }); entitiesCatalog.entities.mockResolvedValue([]); - entitiesCatalog.addEntities.mockResolvedValue(undefined); + entitiesCatalog.batchAddOrUpdateEntities.mockResolvedValue([]); await expect( higherOrderOperation.refreshAllLocations(), diff --git a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts index 2771945db2..314b91cb13 100644 --- a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts +++ b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts @@ -94,11 +94,19 @@ export class HigherOrderOperations implements HigherOrderOperation { if (!previousLocation) { await this.locationsCatalog.addLocation(location); } + if (readerOutput.entities.length === 0) { + return { location, entities: [] }; + } + const writtenEntities = await this.entitiesCatalog.batchAddOrUpdateEntities( readerOutput.entities, location.id, ); + if (writtenEntities.length === 0) { + return { location, entities: [] }; + } + const entities = await this.entitiesCatalog.entities({ 'metadata.uid': writtenEntities.map(e => e.entityId), }); diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.test.ts b/plugins/catalog-backend/src/service/CatalogBuilder.test.ts index 3f7c613c00..bc71934488 100644 --- a/plugins/catalog-backend/src/service/CatalogBuilder.test.ts +++ b/plugins/catalog-backend/src/service/CatalogBuilder.test.ts @@ -128,12 +128,16 @@ describe('CatalogBuilder', () => { { apiVersion: 'av', kind: 'Component', - metadata: expect.objectContaining({ + metadata: { name: 'n', namespace: 'ns', post: 'p', replaced: 'tt2', - }), + uid: expect.any(String), + etag: expect.any(String), + generation: expect.any(Number), + }, + relations: [], }, ]); }); diff --git a/plugins/catalog-backend/src/service/router.test.ts b/plugins/catalog-backend/src/service/router.test.ts index 71caeb3d6c..cf843acf3c 100644 --- a/plugins/catalog-backend/src/service/router.test.ts +++ b/plugins/catalog-backend/src/service/router.test.ts @@ -170,7 +170,7 @@ describe('createRouter', () => { .set('Content-Type', 'application/json') .send(); - expect(entitiesCatalog.addOrUpdateEntity).not.toHaveBeenCalled(); + expect(entitiesCatalog.batchAddOrUpdateEntities).not.toHaveBeenCalled(); expect(response.status).toEqual(400); expect(response.text).toMatch(/body/); }); @@ -185,18 +185,24 @@ describe('createRouter', () => { }, }; - entitiesCatalog.addOrUpdateEntity.mockResolvedValue(entity); + entitiesCatalog.batchAddOrUpdateEntities.mockResolvedValue([ + { entityId: 'u' }, + ]); + entitiesCatalog.entities.mockResolvedValue([entity]); const response = await request(app) .post('/entities') .send(entity) .set('Content-Type', 'application/json'); - expect(entitiesCatalog.addOrUpdateEntity).toHaveBeenCalledTimes(1); - expect(entitiesCatalog.addOrUpdateEntity).toHaveBeenNthCalledWith( - 1, - entity, - ); + expect(entitiesCatalog.batchAddOrUpdateEntities).toHaveBeenCalledTimes(1); + expect(entitiesCatalog.batchAddOrUpdateEntities).toHaveBeenCalledWith([ + { entity, relations: [] }, + ]); + expect(entitiesCatalog.entities).toHaveBeenCalledTimes(1); + expect(entitiesCatalog.entities).toHaveBeenCalledWith({ + 'metadata.uid': 'u', + }); expect(response.status).toEqual(200); expect(response.body).toEqual(entity); }); diff --git a/plugins/catalog-backend/src/service/router.ts b/plugins/catalog-backend/src/service/router.ts index 5af773f1a0..c7d05afb2d 100644 --- a/plugins/catalog-backend/src/service/router.ts +++ b/plugins/catalog-backend/src/service/router.ts @@ -52,7 +52,7 @@ export async function createRouter( const [result] = await entitiesCatalog.batchAddOrUpdateEntities([ { entity: body as Entity, relations: [] }, ]); - const entity = await entitiesCatalog.entities({ + const [entity] = await entitiesCatalog.entities({ 'metadata.uid': result.entityId, }); res.status(200).send(entity); From 26371bba78c695bae1561d31ee715e6239685a08 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 21 Oct 2020 12:35:04 +0200 Subject: [PATCH 235/323] catalog-backend: revert GroupPopulatorProc, replace with OwnerRelationProc + relation consts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: blam Co-authored-by: Fredrik Adelöw --- dev-components.yaml | 38 ----------- .../src/kinds/GroupEntityV1alpha1.ts | 30 ++++----- .../src/kinds/UserEntityV1alpha1.ts | 10 +-- packages/catalog-model/src/kinds/index.ts | 1 + packages/catalog-model/src/kinds/relations.ts | 55 +++++++++++++++ ...Processor.ts => OwnerRelationProcessor.ts} | 67 +++++++++---------- .../src/ingestion/processors/index.ts | 2 +- .../src/service/CatalogBuilder.ts | 4 +- 8 files changed, 110 insertions(+), 97 deletions(-) delete mode 100644 dev-components.yaml create mode 100644 packages/catalog-model/src/kinds/relations.ts rename plugins/catalog-backend/src/ingestion/processors/{GroupPopulatorProcessor.ts => OwnerRelationProcessor.ts} (52%) diff --git a/dev-components.yaml b/dev-components.yaml deleted file mode 100644 index 1671f6057f..0000000000 --- a/dev-components.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: backstage.io/v1alpha1 -kind: Group -metadata: - name: root -spec: - type: org ---- -apiVersion: backstage.io/v1alpha1 -kind: Group -metadata: - name: platform -spec: - type: mission - parent: root -# --- -# apiVersion: backstage.io/v1alpha1 -# kind: Group -# metadata: -# name: pdx -# spec: -# type: tribe -# parent: platform -# --- -# apiVersion: backstage.io/v1alpha1 -# kind: Group -# metadata: -# name: tools -# spec: -# type: squad -# parent: pdx -# --- -# apiVersion: backstage.io/v1alpha1 -# kind: Group -# metadata: -# name: pulp-fiction -# spec: -# type: squad -# parent: pdx diff --git a/packages/catalog-model/src/kinds/GroupEntityV1alpha1.ts b/packages/catalog-model/src/kinds/GroupEntityV1alpha1.ts index 8d1fbe78e8..f0e91ddce8 100644 --- a/packages/catalog-model/src/kinds/GroupEntityV1alpha1.ts +++ b/packages/catalog-model/src/kinds/GroupEntityV1alpha1.ts @@ -32,21 +32,21 @@ const schema = yup.object>({ // one element and there is no simple workaround -_- // the cast is there to convince typescript that the array itself is // required without using .required() - // ancestors: yup.array(yup.string().required()).test({ - // name: 'isDefined', - // message: 'ancestors must be defined', - // test: v => Boolean(v), - // }) as yup.ArraySchema, - // children: yup.array(yup.string().required()).test({ - // name: 'isDefined', - // message: 'children must be defined', - // test: v => Boolean(v), - // }) as yup.ArraySchema, - // descendants: yup.array(yup.string().required()).test({ - // name: 'isDefined', - // message: 'descendants must be defined', - // test: v => Boolean(v), - // }) as yup.ArraySchema, + ancestors: yup.array(yup.string().required()).test({ + name: 'isDefined', + message: 'ancestors must be defined', + test: v => Boolean(v), + }) as yup.ArraySchema, + children: yup.array(yup.string().required()).test({ + name: 'isDefined', + message: 'children must be defined', + test: v => Boolean(v), + }) as yup.ArraySchema, + descendants: yup.array(yup.string().required()).test({ + name: 'isDefined', + message: 'descendants must be defined', + test: v => Boolean(v), + }) as yup.ArraySchema, }) .required(), }); diff --git a/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts b/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts index 293f87b319..6086b3776e 100644 --- a/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts +++ b/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts @@ -37,11 +37,11 @@ const schema = yup.object>({ // element and there is no simple workaround -_- // the cast is there to convince typescript that the array itself is // required without using .required() - // memberOf: yup.array(yup.string().required()).test({ - // name: 'isDefined', - // message: 'memberOf must be defined', - // test: v => Boolean(v), - // }) as yup.ArraySchema, + memberOf: yup.array(yup.string().required()).test({ + name: 'isDefined', + message: 'memberOf must be defined', + test: v => Boolean(v), + }) as yup.ArraySchema, }) .required(), }); diff --git a/packages/catalog-model/src/kinds/index.ts b/packages/catalog-model/src/kinds/index.ts index 6df4f1212a..4a3faf977b 100644 --- a/packages/catalog-model/src/kinds/index.ts +++ b/packages/catalog-model/src/kinds/index.ts @@ -44,3 +44,4 @@ export type { UserEntityV1alpha1 as UserEntity, UserEntityV1alpha1, } from './UserEntityV1alpha1'; +export * from './relations'; diff --git a/packages/catalog-model/src/kinds/relations.ts b/packages/catalog-model/src/kinds/relations.ts new file mode 100644 index 0000000000..3964da99f9 --- /dev/null +++ b/packages/catalog-model/src/kinds/relations.ts @@ -0,0 +1,55 @@ +/* + * 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. + */ + +/* +Naming rules for relations in priority order: + +1. Use at most two words. One main verb and a specifier, e.g. "ownerOf" +2. Reading out " " should make sense in English. +3. Maintain symmetry between pairs, e.g. "ownedBy" and "ownerOf" rather than "owns". +*/ + +/** + * An ownership relation where the owner is usually an organizational + * entity (user or group), and the other entity can be anything. + */ +export const RELATION_OWNED_BY = 'ownedBy'; +export const RELATION_OWNER_OF = 'ownerOf'; + +/** + * A relation with an API entity, typically from a component or system + */ +export const RELATION_IMPLEMENTED_BY = 'implementedBy'; +export const RELATION_IMPLEMENTS = 'implements'; + +/** + * A relation denoting a dependency on another entity. + */ +export const RELATION_DEPENDS_ON = 'dependsOn'; +export const RELATION_DEPENDENCY_OF = 'dependencyOf'; + +/** + * A parent/child relation to build up a tree, used for example to describe + * the organizational structure between groups. + */ +export const RELATION_PARENT_OF = 'parentOf'; +export const RELATION_CHILD_OF = 'childOf'; + +/** + * A membership relation, typically for users in a group. + */ +export const RELATION_MEMBER_OF = 'memberOf'; +export const RELATION_HAS_MEMBER = 'hasMember'; diff --git a/plugins/catalog-backend/src/ingestion/processors/GroupPopulatorProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/OwnerRelationProcessor.ts similarity index 52% rename from plugins/catalog-backend/src/ingestion/processors/GroupPopulatorProcessor.ts rename to plugins/catalog-backend/src/ingestion/processors/OwnerRelationProcessor.ts index a1b0c6f15e..62a02207f1 100644 --- a/plugins/catalog-backend/src/ingestion/processors/GroupPopulatorProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/OwnerRelationProcessor.ts @@ -17,66 +17,61 @@ import { Entity, ENTITY_DEFAULT_NAMESPACE, - GroupEntity, LocationSpec, + parseEntityRef, + ApiEntityV1alpha1, + ComponentEntityV1alpha1, + RELATION_OWNED_BY, + RELATION_OWNER_OF, } from '@backstage/catalog-model'; import { CatalogProcessor, CatalogProcessorEmit } from './types'; import * as result from './results'; -export class GroupPopulatorProcessor implements CatalogProcessor { +const includedKinds = new Set(['api', 'component']); + +export class OwnerRelationProcessor implements CatalogProcessor { async postProcessEntity( entity: Entity, _location: LocationSpec, emit: CatalogProcessorEmit, ): Promise { - if (entity.kind.toLowerCase() !== 'group') { + if (!includedKinds.has(entity.kind.toLowerCase())) { return entity; } - const spec = entity.spec as GroupEntity['spec']; + const apiOrComponentEntity = entity as + | ApiEntityV1alpha1 + | ComponentEntityV1alpha1; - const { parent, children } = spec; - const self = { - kind: entity.kind, - name: entity.metadata.name, - namespace: entity.metadata.namespace ?? ENTITY_DEFAULT_NAMESPACE, - }; + const owner = apiOrComponentEntity.spec?.owner; + if (owner) { + const namespace = entity.metadata.namespace ?? ENTITY_DEFAULT_NAMESPACE; + + const selfRef = { + kind: entity.kind, + name: entity.metadata.name, + namespace, + }; + const ownerRef = parseEntityRef(owner, { + defaultKind: 'group', + defaultNamespace: namespace, + }); - if (parent) { emit( result.relation({ - type: 'parent', - source: self, - target: { ...self, name: parent }, + type: RELATION_OWNED_BY, + source: selfRef, + target: ownerRef, }), ); emit( result.relation({ - type: 'child', - source: { ...self, name: parent }, - target: self, + type: RELATION_OWNER_OF, + source: ownerRef, + target: selfRef, }), ); } - if (children) { - for (const child of children) { - emit( - result.relation({ - type: 'child', - source: self, - target: { ...self, name: child }, - }), - ); - emit( - result.relation({ - type: 'parent', - source: { ...self, name: child }, - target: self, - }), - ); - } - } - return entity; } } diff --git a/plugins/catalog-backend/src/ingestion/processors/index.ts b/plugins/catalog-backend/src/ingestion/processors/index.ts index 2a09247e45..92303f04a3 100644 --- a/plugins/catalog-backend/src/ingestion/processors/index.ts +++ b/plugins/catalog-backend/src/ingestion/processors/index.ts @@ -28,7 +28,7 @@ export { GithubOrgReaderProcessor } from './GithubOrgReaderProcessor'; export { GithubReaderProcessor } from './GithubReaderProcessor'; export { GitlabApiReaderProcessor } from './GitlabApiReaderProcessor'; export { GitlabReaderProcessor } from './GitlabReaderProcessor'; -export { GroupPopulatorProcessor } from './GroupPopulatorProcessor'; +export { OwnerRelationProcessor } from './OwnerRelationProcessor'; export { LocationRefProcessor } from './LocationEntityProcessor'; export { PlaceholderProcessor } from './PlaceholderProcessor'; export type { PlaceholderResolver } from './PlaceholderProcessor'; diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.ts b/plugins/catalog-backend/src/service/CatalogBuilder.ts index 52f10232ce..4ec2a0834d 100644 --- a/plugins/catalog-backend/src/service/CatalogBuilder.ts +++ b/plugins/catalog-backend/src/service/CatalogBuilder.ts @@ -52,7 +52,7 @@ import { GithubReaderProcessor, GitlabApiReaderProcessor, GitlabReaderProcessor, - GroupPopulatorProcessor, + OwnerRelationProcessor, HigherOrderOperation, HigherOrderOperations, LocationReaders, @@ -335,7 +335,7 @@ export class CatalogBuilder { new YamlProcessor(), new CodeOwnersProcessor({ reader }), new LocationRefProcessor(), - new GroupPopulatorProcessor(), + new OwnerRelationProcessor(), new AnnotateLocationEntityProcessor(), ]; From 08ced1df2eda571d80169b9a7112c71b965fe40d Mon Sep 17 00:00:00 2001 From: Sebastian Qvarfordt Date: Wed, 21 Oct 2020 14:00:15 +0200 Subject: [PATCH 236/323] Removed default-branch library since it's no longer used (#3019) --- plugins/techdocs-backend/package.json | 1 - yarn.lock | 5 ----- 2 files changed, 6 deletions(-) diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index dd602f766f..1da1bec9ff 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -26,7 +26,6 @@ "@types/dockerode": "^2.5.34", "@types/express": "^4.17.6", "command-exists-promise": "^2.0.2", - "default-branch": "^1.0.8", "dockerode": "^3.2.1", "express": "^4.17.1", "express-promise-router": "^3.0.3", diff --git a/yarn.lock b/yarn.lock index e6377107c2..ad9b65f276 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9780,11 +9780,6 @@ deepmerge@4.2.2, deepmerge@^4.2.2: resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -default-branch@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/default-branch/-/default-branch-1.0.8.tgz#0e2f36a90e3b0d9f73cdf8e02841364ed35b8b54" - integrity sha512-pViUZEnaxd/Hbu880MEXF7XqV8RJ1ssDlkvzx+woQhcKW8px3BrVDvwBGn09zRiKZ+gOLipK7ft5x3no+3vb8A== - default-gateway@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" From 7721192dc14002c6faf17e9353cd1d442431cb0c Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 21 Oct 2020 14:06:45 +0200 Subject: [PATCH 237/323] chore(create-plugin): removing the polyfill for backend components --- packages/cli/templates/default-backend-plugin/src/setupTests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/templates/default-backend-plugin/src/setupTests.ts b/packages/cli/templates/default-backend-plugin/src/setupTests.ts index 1c7ba6c7e1..ba33cf996b 100644 --- a/packages/cli/templates/default-backend-plugin/src/setupTests.ts +++ b/packages/cli/templates/default-backend-plugin/src/setupTests.ts @@ -13,5 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import 'cross-fetch/polyfill'; + export {}; From 27f87526c0bf5d595c5a3f3a642428d5f759a160 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 21 Oct 2020 14:11:26 +0200 Subject: [PATCH 238/323] catalog-backend: un-flaky flaky DatabaseEntitiesCatalog test Co-authored-by: blam --- .../src/catalog/DatabaseEntitiesCatalog.test.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts index 58cac90b7d..3e3a5a1972 100644 --- a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts +++ b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts @@ -273,7 +273,7 @@ describe('DatabaseEntitiesCatalog', () => { getVoidLogger(), ); const entities: EntityMutationRequest[] = []; - for (let i = 0; i < 500; ++i) { + for (let i = 0; i < 200; ++i) { entities.push({ entity: { apiVersion: 'a', @@ -286,23 +286,23 @@ describe('DatabaseEntitiesCatalog', () => { await catalog.batchAddOrUpdateEntities(entities); const afterFirst = await catalog.entities(); - expect(afterFirst.length).toBe(500); + expect(afterFirst.length).toBe(200); entities[40].entity.metadata.op = 'changed'; entities.push({ entity: { apiVersion: 'a', kind: 'k', - metadata: { name: `n500`, op: 'added' }, + metadata: { name: `n200`, op: 'added' }, }, relations: [], }); await catalog.batchAddOrUpdateEntities(entities); const afterSecond = await catalog.entities(); - expect(afterSecond.length).toBe(501); + expect(afterSecond.length).toBe(201); expect(afterSecond.find(e => e.metadata.op === 'changed')).toBeDefined(); expect(afterSecond.find(e => e.metadata.op === 'added')).toBeDefined(); - }); + }, 10000); }); }); From a7478736bdafd13929adf6032ce82e814eafdf95 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 21 Oct 2020 14:15:27 +0200 Subject: [PATCH 239/323] catalog-backend: review fixups from #2970 Co-authored-by: blam --- packages/catalog-model/src/entity/Entity.ts | 3 ++- .../migrations/20201019130742_add_relations_table.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/catalog-model/src/entity/Entity.ts b/packages/catalog-model/src/entity/Entity.ts index 9e7ece4122..ac43137546 100644 --- a/packages/catalog-model/src/entity/Entity.ts +++ b/packages/catalog-model/src/entity/Entity.ts @@ -143,13 +143,14 @@ export type EntityRelation = { }; /** - * Holds the relationship data for entities + * Holds the relation data for entities. */ export type EntityRelationSpec = { /** * The source entity of this relation. */ source: EntityName; + /** * The type of the relation. */ diff --git a/plugins/catalog-backend/migrations/20201019130742_add_relations_table.js b/plugins/catalog-backend/migrations/20201019130742_add_relations_table.js index accf9035e7..70150ff173 100644 --- a/plugins/catalog-backend/migrations/20201019130742_add_relations_table.js +++ b/plugins/catalog-backend/migrations/20201019130742_add_relations_table.js @@ -28,7 +28,7 @@ exports.up = async function up(knex) { .inTable('entities') .onDelete('CASCADE') .notNullable() - .comment('The originating entity of the relation'); + .comment('The entity that provided the relation'); table .string('source_full_name') .notNullable() From 6c4a509bba299a11af42637fa468d0aa780d938b Mon Sep 17 00:00:00 2001 From: Remi Date: Wed, 21 Oct 2020 15:28:59 +0200 Subject: [PATCH 240/323] refactor(cli): createPlugin --- .../commands/create-plugin/createPlugin.test.ts | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/packages/cli/src/commands/create-plugin/createPlugin.test.ts b/packages/cli/src/commands/create-plugin/createPlugin.test.ts index 839bd4d433..356b315380 100644 --- a/packages/cli/src/commands/create-plugin/createPlugin.test.ts +++ b/packages/cli/src/commands/create-plugin/createPlugin.test.ts @@ -21,13 +21,15 @@ import os from 'os'; import del from 'del'; import { createTemporaryPluginFolder, movePlugin } from './createPlugin'; +const id = 'testPluginMock'; + describe('createPlugin', () => { afterAll(() => { mockFs.restore(); }); + describe('createPluginFolder', () => { it('should create a temporary plugin directory in the correct place', async () => { - const id = 'testPlugin'; const tempDir = path.join(os.tmpdir(), id); try { await createTemporaryPluginFolder(tempDir); @@ -39,8 +41,6 @@ describe('createPlugin', () => { }); it('should not create a temporary plugin directory if it already exists', async () => { - const id = 'testPluginMock'; - mockFs({ [id]: {}, }); @@ -53,18 +53,11 @@ describe('createPlugin', () => { describe('movePlugin', () => { it('should move the temporary plugin directory to its final place', async () => { - const id = 'testPluginMock'; - const tempDir = id; - const pluginDir = `/test-temp/plugins/${id}`; - mockFs({ [id]: {}, - 'test-temp': { - plugins: { - testPluginMock: {}, - }, - }, }); + const tempDir = id; + const pluginDir = `/test-temp/plugins/${id}`; await movePlugin(tempDir, pluginDir, id); await expect(fs.pathExists(pluginDir)).resolves.toBe(true); From cd5a2c63f7d791c2a6fd3d76b2d67ffea4185b5f Mon Sep 17 00:00:00 2001 From: Ryan Vazquez Date: Wed, 21 Oct 2020 10:07:51 -0400 Subject: [PATCH 241/323] default to last 30 days --- plugins/cost-insights/src/utils/history.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/cost-insights/src/utils/history.ts b/plugins/cost-insights/src/utils/history.ts index 14434fe029..90df574acf 100644 --- a/plugins/cost-insights/src/utils/history.ts +++ b/plugins/cost-insights/src/utils/history.ts @@ -54,5 +54,5 @@ export const getInitialPageState = ( export const getInitialProductState = (config: ConfigContextProps) => config.products.map(product => ({ productType: product.kind, - duration: Duration.P1M, + duration: Duration.P30D, })); From b2efa2020e7c527c5eaace68af027f1d834e8dd0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 21 Oct 2020 17:23:11 +0200 Subject: [PATCH 242/323] catalog: use the ownerBy relation to display owners Co-authored-by: blam --- .../src/components/AboutCard/AboutCard.tsx | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/plugins/catalog/src/components/AboutCard/AboutCard.tsx b/plugins/catalog/src/components/AboutCard/AboutCard.tsx index 266d5fa843..be5d6b815b 100644 --- a/plugins/catalog/src/components/AboutCard/AboutCard.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutCard.tsx @@ -14,7 +14,12 @@ * limitations under the License. */ -import { Entity, ENTITY_DEFAULT_NAMESPACE } from '@backstage/catalog-model'; +import { + Entity, + ENTITY_DEFAULT_NAMESPACE, + RELATION_OWNED_BY, + serializeEntityRef, +} from '@backstage/catalog-model'; import { Card, CardContent, @@ -139,7 +144,20 @@ export function AboutCard({ entity, variant }: AboutCardProps) { r.type === RELATION_OWNED_BY) + .map(({ target: { kind, name, namespace } }) => + // TODO(Rugvip): we want to provide some utils for this + serializeEntityRef({ + kind, + name, + namespace: + namespace === ENTITY_DEFAULT_NAMESPACE + ? undefined + : namespace, + }), + ) + .join(', ')} gridSizes={{ xs: 12, sm: 6, lg: 4 }} /> Date: Wed, 21 Oct 2020 11:53:26 -0400 Subject: [PATCH 243/323] feat(catalog): add simple client side paging --- .changeset/blue-donkeys-exercise.md | 5 +++++ plugins/catalog/src/components/CatalogTable/CatalogTable.tsx | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 .changeset/blue-donkeys-exercise.md diff --git a/.changeset/blue-donkeys-exercise.md b/.changeset/blue-donkeys-exercise.md new file mode 100644 index 0000000000..4f714e3c97 --- /dev/null +++ b/.changeset/blue-donkeys-exercise.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': minor +--- + +Add client side paging for catalog table diff --git a/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx b/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx index f5885145b3..4e63c6099b 100644 --- a/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx +++ b/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx @@ -155,7 +155,8 @@ export const CatalogTable = ({ isLoading={loading} columns={columns} options={{ - paging: false, + paging: true, + pageSize: 10, actionsColumnIndex: -1, loadingType: 'linear', showEmptyDataSourceMessage: !loading, From 8bdf0bcf57622f6ab2831146df9c9d79d9e72a1c Mon Sep 17 00:00:00 2001 From: Andrew Thauer <6507159+andrewthauer@users.noreply.github.com> Date: Wed, 21 Oct 2020 13:34:09 -0400 Subject: [PATCH 244/323] fix(catalog-backend): fix codeowners processor to handle users --- .changeset/great-apples-flash.md | 5 +++++ .../src/ingestion/processors/CodeOwnersProcessor.test.ts | 4 ++++ .../src/ingestion/processors/CodeOwnersProcessor.ts | 2 ++ 3 files changed, 11 insertions(+) create mode 100644 .changeset/great-apples-flash.md diff --git a/.changeset/great-apples-flash.md b/.changeset/great-apples-flash.md new file mode 100644 index 0000000000..78ad89dee0 --- /dev/null +++ b/.changeset/great-apples-flash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Fix CodeOwnersProcessor to handle non team users diff --git a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts index 622af9ea59..e65714bcfd 100644 --- a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts @@ -123,6 +123,10 @@ describe('CodeOwnersProcessor', () => { }); describe('normalizeCodeOwner', () => { + it('should remove the @ symbol', () => { + expect(normalizeCodeOwner('@yoda')).toBe('yoda'); + }); + it('should remove org from org/team format', () => { expect(normalizeCodeOwner('@acme/foo')).toBe('foo'); }); diff --git a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts index bc78b6e34a..f186a9425c 100644 --- a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts @@ -127,6 +127,8 @@ export function findPrimaryCodeOwner( export function normalizeCodeOwner(owner: string) { if (owner.match(/^@.*\/.*/)) { return owner.split('/')[1]; + } else if (owner.match(/^@.*/)) { + return owner.substring(1); } else if (owner.match(/^.*@.*\..*$/)) { return owner.split('@')[0]; } From 5473236ed4815fbac5158bbf8dabfa5b5f2a5545 Mon Sep 17 00:00:00 2001 From: Brenda Sukh Date: Wed, 21 Oct 2020 15:40:11 -0400 Subject: [PATCH 245/323] Make sure hasCostsWithinTimeframe is a boolean --- .../src/components/ProductInsightsCard/ProductInsightsCard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/cost-insights/src/components/ProductInsightsCard/ProductInsightsCard.tsx b/plugins/cost-insights/src/components/ProductInsightsCard/ProductInsightsCard.tsx index c9790a5bfa..13bb990740 100644 --- a/plugins/cost-insights/src/components/ProductInsightsCard/ProductInsightsCard.tsx +++ b/plugins/cost-insights/src/components/ProductInsightsCard/ProductInsightsCard.tsx @@ -51,7 +51,7 @@ const ProductInsightsCard = ({ product }: ProductInsightsCardProps) => { const dispatchLoadingProduct = useCallback(dispatchLoading, [product.kind]); const amount = resource?.entities?.length || 0; - const hasCostsWithinTimeframe = resource?.change && amount; + const hasCostsWithinTimeframe = resource?.change && !!amount; const subheader = amount ? `${amount} ${pluralOf(amount, 'entity', 'entities')}, sorted by cost` From 4f6d40db34b214e89011e5faa03cbc9def56a9ce Mon Sep 17 00:00:00 2001 From: Brian Fletcher Date: Mon, 19 Oct 2020 17:58:37 +0100 Subject: [PATCH 246/323] adds a sample organization set of users and groups (#2963) The top level is the acme-corp Group. Here is the graph acme-corp | infrastructure | _______________ | | backstage boxoffice | | | | team-a team-b team-c team-d The members of those groups are as follows: team-a: team-b: team-c: team-d: Janelle Dawe Jenny Doe Frank Tiernan Eva MacDowell Nigel Manning Jonathon Page Tara MacGovern Lucy Sheehan Breanna Davison Amelia Park Sarah Gilroy Justine Barrow Peadar MacMahon Colette Brock Calum Leavy --- app-config.yaml | 3 + .../catalog-model/examples/acme-corp.yaml | 9 +++ .../examples/acme/backstage-group.yaml | 11 ++++ .../examples/acme/boxoffice-group.yaml | 11 ++++ .../examples/acme/infrastructure-group.yaml | 11 ++++ packages/catalog-model/examples/acme/org.yaml | 27 ++++++++ .../examples/acme/team-a-group.yaml | 44 +++++++++++++ .../examples/acme/team-b-group.yaml | 66 +++++++++++++++++++ .../examples/acme/team-c-group.yaml | 66 +++++++++++++++++++ .../examples/acme/team-d-group.yaml | 33 ++++++++++ 10 files changed, 281 insertions(+) create mode 100644 packages/catalog-model/examples/acme-corp.yaml create mode 100644 packages/catalog-model/examples/acme/backstage-group.yaml create mode 100644 packages/catalog-model/examples/acme/boxoffice-group.yaml create mode 100644 packages/catalog-model/examples/acme/infrastructure-group.yaml create mode 100644 packages/catalog-model/examples/acme/org.yaml create mode 100644 packages/catalog-model/examples/acme/team-a-group.yaml create mode 100644 packages/catalog-model/examples/acme/team-b-group.yaml create mode 100644 packages/catalog-model/examples/acme/team-c-group.yaml create mode 100644 packages/catalog-model/examples/acme/team-d-group.yaml diff --git a/app-config.yaml b/app-config.yaml index 715d564feb..6e49e765cd 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -146,6 +146,9 @@ catalog: # Backstage example templates - type: url target: https://github.com/spotify/backstage/blob/master/plugins/scaffolder-backend/sample-templates/all-templates.yaml + # Backstage example groups and users + - type: url + target: https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/acme-corp.yaml scaffolder: github: diff --git a/packages/catalog-model/examples/acme-corp.yaml b/packages/catalog-model/examples/acme-corp.yaml new file mode 100644 index 0000000000..7e5c5ebc61 --- /dev/null +++ b/packages/catalog-model/examples/acme-corp.yaml @@ -0,0 +1,9 @@ +apiVersion: backstage.io/v1alpha1 +kind: Location +metadata: + name: acme-corp + description: A collection of all Backstage example Groups +spec: + type: github + targets: + - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/acme/org.yaml diff --git a/packages/catalog-model/examples/acme/backstage-group.yaml b/packages/catalog-model/examples/acme/backstage-group.yaml new file mode 100644 index 0000000000..f992d155bc --- /dev/null +++ b/packages/catalog-model/examples/acme/backstage-group.yaml @@ -0,0 +1,11 @@ +apiVersion: backstage.io/v1alpha1 +kind: Group +metadata: + name: backstage + description: The backstage sub-department +spec: + type: sub-department + parent: infrastructure + ancestors: [infrastructure, acme-corp] + children: [team-a, team-b] + descendants: [team-a, team-b] diff --git a/packages/catalog-model/examples/acme/boxoffice-group.yaml b/packages/catalog-model/examples/acme/boxoffice-group.yaml new file mode 100644 index 0000000000..0be1fe58cb --- /dev/null +++ b/packages/catalog-model/examples/acme/boxoffice-group.yaml @@ -0,0 +1,11 @@ +apiVersion: backstage.io/v1alpha1 +kind: Group +metadata: + name: boxoffice + description: The boxoffice sub-department +spec: + type: sub-department + parent: infrastructure + ancestors: [infrastructure, acme-corp] + children: [team-c, team-d] + descendants: [team-c, team-d] diff --git a/packages/catalog-model/examples/acme/infrastructure-group.yaml b/packages/catalog-model/examples/acme/infrastructure-group.yaml new file mode 100644 index 0000000000..2341782944 --- /dev/null +++ b/packages/catalog-model/examples/acme/infrastructure-group.yaml @@ -0,0 +1,11 @@ +apiVersion: backstage.io/v1alpha1 +kind: Group +metadata: + name: infrastructure + description: The infra department +spec: + type: department + parent: acme-corp + ancestors: [acme-corp] + children: [backstage, boxoffice] + descendants: [backstage, boxoffice, team-a, team-b, team-c, team-d] diff --git a/packages/catalog-model/examples/acme/org.yaml b/packages/catalog-model/examples/acme/org.yaml new file mode 100644 index 0000000000..2d6a6a2666 --- /dev/null +++ b/packages/catalog-model/examples/acme/org.yaml @@ -0,0 +1,27 @@ +apiVersion: backstage.io/v1alpha1 +kind: Group +metadata: + name: acme-corp + description: The acme-corp organization +spec: + type: organization + ancestors: [] + children: [infrastructure] + descendants: + [infrastructure, backstage, boxoffice, team-a, team-b, team-c, team-d] +--- +apiVersion: backstage.io/v1alpha1 +kind: Location +metadata: + name: example-groups + description: A collection of all Backstage example Groups +spec: + type: github + targets: + - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/acme/infrastructure-group.yaml + - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/acme/boxoffice-group.yaml + - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/acme/backstage-group.yaml + - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/acme/team-a-group.yaml + - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/acme/team-b-group.yaml + - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/acme/team-c-group.yaml + - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/acme/team-d-group.yaml diff --git a/packages/catalog-model/examples/acme/team-a-group.yaml b/packages/catalog-model/examples/acme/team-a-group.yaml new file mode 100644 index 0000000000..dacc4c6c3c --- /dev/null +++ b/packages/catalog-model/examples/acme/team-a-group.yaml @@ -0,0 +1,44 @@ +apiVersion: backstage.io/v1alpha1 +kind: Group +metadata: + name: team-a + description: Team A +spec: + type: team + parent: backstage + ancestors: [backstage, infrastructure, acme-corp] + children: [] + descendants: [] +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: breanna.davison +spec: + profile: + displayName: Breanna Davison + email: breanna-davison@example.com + picture: https://example.com/staff/breanna.jpeg + memberOf: [team-a] +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: janelle.dawe +spec: + profile: + displayName: Janelle Dawe + email: janelle-dawe@example.com + picture: https://example.com/staff/janelle.jpeg + memberOf: [team-a] +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: nigel.manning +spec: + profile: + displayName: Nigel Manning + email: nigel-manning@example.com + picture: https://example.com/staff/nigel.jpeg + memberOf: [team-a] diff --git a/packages/catalog-model/examples/acme/team-b-group.yaml b/packages/catalog-model/examples/acme/team-b-group.yaml new file mode 100644 index 0000000000..00e9e41d80 --- /dev/null +++ b/packages/catalog-model/examples/acme/team-b-group.yaml @@ -0,0 +1,66 @@ +apiVersion: backstage.io/v1alpha1 +kind: Group +metadata: + name: team-b + description: Team B +spec: + type: team + parent: backstage + ancestors: [backstage, infrastructure, acme-corp] + children: [] + descendants: [] +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: amelia.park +spec: + profile: + displayName: Amelia Park + email: amelia-park@example.com + picture: https://example.com/staff/amelia.jpeg + memberOf: [team-b] +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: colette.brock +spec: + profile: + displayName: Colette Brock + email: colette-brock@example.com + picture: https://example.com/staff/colette.jpeg + memberOf: [team-b] +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: jenny.doe +spec: + profile: + displayName: Jenny Doe + email: jenny-doe@example.com + picture: https://example.com/staff/jenny.jpeg + memberOf: [team-b] +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: jonathon.page +spec: + profile: + displayName: Jonathon Page + email: jonathon-page@example.com + picture: https://example.com/staff/jonathon.jpeg + memberOf: [team-b] +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: justine.barrow +spec: + profile: + displayName: Justine Barrow + email: justine-barrow@example.com + picture: https://example.com/staff/justine.jpeg + memberOf: [team-b] diff --git a/packages/catalog-model/examples/acme/team-c-group.yaml b/packages/catalog-model/examples/acme/team-c-group.yaml new file mode 100644 index 0000000000..0f97f69cb3 --- /dev/null +++ b/packages/catalog-model/examples/acme/team-c-group.yaml @@ -0,0 +1,66 @@ +apiVersion: backstage.io/v1alpha1 +kind: Group +metadata: + name: team-c + description: Team C +spec: + type: team + parent: boxoffice + ancestors: [boxoffice, infrastructure, acme-corp] + children: [] + descendants: [] +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: calum.leavy +spec: + profile: + displayName: Calum Leavy + email: calum-leavy@example.com + picture: https://example.com/staff/calum.jpeg + memberOf: [team-c] +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: frank.tiernan +spec: + profile: + displayName: Frank Tiernan + email: frank-tiernan@example.com + picture: https://example.com/staff/frank.jpeg + memberOf: [team-c] +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: peadar.macmahon +spec: + profile: + displayName: Peadar MacMahon + email: peadar-macmahon@example.com + picture: https://example.com/staff/peadar.jpeg + memberOf: [team-c] +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: sarah.gilroy +spec: + profile: + displayName: Sarah Gilroy + email: sarah-gilroy@example.com + picture: https://example.com/staff/sarah.jpeg + memberOf: [team-c] +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: tara.macgovern +spec: + profile: + displayName: Tara MacGovern + email: tara-macgovern@example.com + picture: https://example.com/staff/tara.jpeg + memberOf: [team-c] diff --git a/packages/catalog-model/examples/acme/team-d-group.yaml b/packages/catalog-model/examples/acme/team-d-group.yaml new file mode 100644 index 0000000000..5a1a53a2e6 --- /dev/null +++ b/packages/catalog-model/examples/acme/team-d-group.yaml @@ -0,0 +1,33 @@ +apiVersion: backstage.io/v1alpha1 +kind: Group +metadata: + name: team-d + description: Team D +spec: + type: team + parent: boxoffice + ancestors: [boxoffice, infrastructure, acme-corp] + children: [] + descendants: [] +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: eva.macdowell +spec: + profile: + displayName: Eva MacDowell + email: eva-macdowell@example.com + picture: https://example.com/staff/eva.jpeg + memberOf: [team-d] +--- +apiVersion: backstage.io/v1alpha1 +kind: User +metadata: + name: lucy.sheehan +spec: + profile: + displayName: Lucy Sheehan + email: lucy-sheehan@example.com + picture: https://example.com/staff/lucy.jpeg + memberOf: [team-d] From 525449396f24ef8d595e1b606cf1801cee7fa1e9 Mon Sep 17 00:00:00 2001 From: canut Date: Thu, 22 Oct 2020 02:03:36 +0200 Subject: [PATCH 247/323] Add API docs link to About card --- plugins/catalog/src/components/AboutCard/AboutCard.tsx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/plugins/catalog/src/components/AboutCard/AboutCard.tsx b/plugins/catalog/src/components/AboutCard/AboutCard.tsx index 266d5fa843..3214ea3385 100644 --- a/plugins/catalog/src/components/AboutCard/AboutCard.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutCard.tsx @@ -26,6 +26,7 @@ import { makeStyles, Typography, } from '@material-ui/core'; +import BrightnessAutoIcon from '@material-ui/icons/BrightnessAuto'; import DocsIcon from '@material-ui/icons/Description'; import EditIcon from '@material-ui/icons/Edit'; import GitHubIcon from '@material-ui/icons/GitHub'; @@ -120,6 +121,14 @@ export function AboutCard({ entity, variant }: AboutCardProps) { entity.metadata.namespace || ENTITY_DEFAULT_NAMESPACE }/${entity.kind}/${entity.metadata.name}`} /> + } + href={`./${ + entity.metadata.namespace || ENTITY_DEFAULT_NAMESPACE + }:${entity.metadata.name}/api`} + /> } /> From 186412f15bb45998c54c57f80c5f64f19ff13b3e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Oct 2020 04:07:06 +0000 Subject: [PATCH 248/323] chore(deps): bump eslint-config-prettier from 6.10.0 to 6.14.0 Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 6.10.0 to 6.14.0. - [Release notes](https://github.com/prettier/eslint-config-prettier/releases) - [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md) - [Commits](https://github.com/prettier/eslint-config-prettier/compare/v6.10.0...v6.14.0) Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index ad9b65f276..4702372663 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10656,9 +10656,9 @@ escodegen@^1.14.1, escodegen@^1.9.1: source-map "~0.6.1" eslint-config-prettier@^6.0.0: - version "6.10.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz#7b15e303bf9c956875c948f6b21500e48ded6a7f" - integrity sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg== + version "6.14.0" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.14.0.tgz#390e7863a8ae99970981933826476169285b3a27" + integrity sha512-DbVwh0qZhAC7CNDWcq8cBdK6FcVHiMTKmCypOPWeZkp9hJ8xYwTaWSa6bb6cjfi8KOeJy0e9a8Izxyx+O4+gCQ== dependencies: get-stdin "^6.0.0" From 118bc9a6e93f58f37785e73c390df4db084fe47e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Oct 2020 04:25:54 +0000 Subject: [PATCH 249/323] chore(deps-dev): bump @storybook/addon-actions from 6.0.21 to 6.0.26 Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 6.0.21 to 6.0.26. - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v6.0.26/addons/actions) Signed-off-by: dependabot[bot] --- yarn.lock | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 169 insertions(+), 10 deletions(-) diff --git a/yarn.lock b/yarn.lock index ad9b65f276..8f84d612aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3830,16 +3830,16 @@ integrity sha512-so8w32ZV42CHWxOEXcBtbNO/hLXFrQNXVmhfzhUI6dVB9cq2xjRaiqu8GjFj8LvKbWpPj+S+KwTIS4aDVWqrFQ== "@storybook/addon-actions@^6.0.21": - version "6.0.21" - resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.0.21.tgz#0de1d109d4b1eb99f644bbe84e74c25cfd2b1b6b" - integrity sha512-9y3ve+3GK1TsxQ5pxDjhB7E/XJXY+WqcSNlOX8Mb+XbS6AAgpFbkZCw1q8CGzyEUclHsQ6UK2+lo+IRGs4TLpA== + version "6.0.26" + resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.0.26.tgz#d0de9e4d78a8f8f5bf8730c04d0b6d1741c29273" + integrity sha512-9tWbAqSwzWWVz8zwAndZFusZYjIcRYgZUC0LqC8QlH79DgF3ASjw9y97+w1VTTAzdb6LYnsMuSpX6+8m5hrR4g== dependencies: - "@storybook/addons" "6.0.21" - "@storybook/api" "6.0.21" - "@storybook/client-api" "6.0.21" - "@storybook/components" "6.0.21" - "@storybook/core-events" "6.0.21" - "@storybook/theming" "6.0.21" + "@storybook/addons" "6.0.26" + "@storybook/api" "6.0.26" + "@storybook/client-api" "6.0.26" + "@storybook/components" "6.0.26" + "@storybook/core-events" "6.0.26" + "@storybook/theming" "6.0.26" core-js "^3.0.1" fast-deep-equal "^3.1.1" global "^4.3.2" @@ -3892,7 +3892,7 @@ react-syntax-highlighter "^12.2.1" regenerator-runtime "^0.13.3" -"@storybook/addons@6.0.21", "@storybook/addons@^6.0.21": +"@storybook/addons@6.0.21": version "6.0.21" resolved "https://registry.npmjs.org/@storybook/addons/-/addons-6.0.21.tgz#bd5229652102c3aed59b78ef6920ff6b482b4d78" integrity sha512-yDttNLc3vXqBxwK795ykgzTC6MpvuXDQuF4LHSlHZQe6wsMu1m3fljnbYdafJWdx6cNZwUblU3KYcR11PqhkPg== @@ -3907,6 +3907,21 @@ global "^4.3.2" regenerator-runtime "^0.13.3" +"@storybook/addons@6.0.26", "@storybook/addons@^6.0.21": + version "6.0.26" + resolved "https://registry.npmjs.org/@storybook/addons/-/addons-6.0.26.tgz#343cbea3eee2d39413b80bc2d66535a7f61488fc" + integrity sha512-OhAApFKgsj9an7FLYfHI4cJQuZ4Zm6yoGOpaxhOvKQMw7dXUPsLvbCyw/6dZOLvaFhjJjQiXtbxtZG+UjR8nvA== + dependencies: + "@storybook/api" "6.0.26" + "@storybook/channels" "6.0.26" + "@storybook/client-logger" "6.0.26" + "@storybook/core-events" "6.0.26" + "@storybook/router" "6.0.26" + "@storybook/theming" "6.0.26" + core-js "^3.0.1" + global "^4.3.2" + regenerator-runtime "^0.13.3" + "@storybook/api@6.0.21": version "6.0.21" resolved "https://registry.npmjs.org/@storybook/api/-/api-6.0.21.tgz#a25a1eb4d07dc43500e03c856db43baba46726f1" @@ -3933,6 +3948,32 @@ ts-dedent "^1.1.1" util-deprecate "^1.0.2" +"@storybook/api@6.0.26": + version "6.0.26" + resolved "https://registry.npmjs.org/@storybook/api/-/api-6.0.26.tgz#c45222c132eb8bc2e383536adfebbeb7a89867d0" + integrity sha512-aszDoz1c6T+eRtTUwWvySoyd3gRXmQxsingD084NnEp4VfFLA5H7VS/0sre0ZvU5GWh8d9COxY0DS2Ry/QSKvw== + dependencies: + "@reach/router" "^1.3.3" + "@storybook/channels" "6.0.26" + "@storybook/client-logger" "6.0.26" + "@storybook/core-events" "6.0.26" + "@storybook/csf" "0.0.1" + "@storybook/router" "6.0.26" + "@storybook/semver" "^7.3.2" + "@storybook/theming" "6.0.26" + "@types/reach__router" "^1.3.5" + core-js "^3.0.1" + fast-deep-equal "^3.1.1" + global "^4.3.2" + lodash "^4.17.15" + memoizerific "^1.11.3" + react "^16.8.3" + regenerator-runtime "^0.13.3" + store2 "^2.7.1" + telejson "^5.0.2" + ts-dedent "^1.1.1" + util-deprecate "^1.0.2" + "@storybook/channel-postmessage@6.0.21": version "6.0.21" resolved "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.0.21.tgz#97e8f43c1b66f84c7b8271e447d45d4f66d355d1" @@ -3946,6 +3987,19 @@ qs "^6.6.0" telejson "^5.0.2" +"@storybook/channel-postmessage@6.0.26": + version "6.0.26" + resolved "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.0.26.tgz#a98a0132d6bdf06741afac2607e9feabe34ab98b" + integrity sha512-FT6lC8M5JlNBxPT0rYfmF1yl9mBv04nfYs82TZpp1CzpLxf7wxdCBZ8SSRmvWIVBoNwGZPDhIk5+6JWyDEISBg== + dependencies: + "@storybook/channels" "6.0.26" + "@storybook/client-logger" "6.0.26" + "@storybook/core-events" "6.0.26" + core-js "^3.0.1" + global "^4.3.2" + qs "^6.6.0" + telejson "^5.0.2" + "@storybook/channels@6.0.21": version "6.0.21" resolved "https://registry.npmjs.org/@storybook/channels/-/channels-6.0.21.tgz#bc0951efacbaa5f8827693fba4fe7c2290b5772c" @@ -3955,6 +4009,15 @@ ts-dedent "^1.1.1" util-deprecate "^1.0.2" +"@storybook/channels@6.0.26": + version "6.0.26" + resolved "https://registry.npmjs.org/@storybook/channels/-/channels-6.0.26.tgz#3e8678b4b40085081257a39b9e85fab13a19943c" + integrity sha512-H0iUorayYqS+zfhbjd+cYRzAdRLGLWUeWFu2Aa+oJ4/zeAQNL+DafWboHc567RQ4Vb5KqE5QZoCFskWUUYqJYA== + dependencies: + core-js "^3.0.1" + ts-dedent "^1.1.1" + util-deprecate "^1.0.2" + "@storybook/client-api@6.0.21": version "6.0.21" resolved "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.0.21.tgz#6a652dea67d219a31d18af0e05b9f17ba6c7c316" @@ -3978,6 +4041,29 @@ ts-dedent "^1.1.1" util-deprecate "^1.0.2" +"@storybook/client-api@6.0.26": + version "6.0.26" + resolved "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.0.26.tgz#ac9334ba86834e5cb23fc4fb577de60bda66164d" + integrity sha512-Qd5wR5b5lio/EchuJMhAmmJAE1pfvnEyu+JnyFGwMZLV9mN9NSspz+YsqbSCCDZsYcP5ewvPEnumIWqmj/wagQ== + dependencies: + "@storybook/addons" "6.0.26" + "@storybook/channel-postmessage" "6.0.26" + "@storybook/channels" "6.0.26" + "@storybook/client-logger" "6.0.26" + "@storybook/core-events" "6.0.26" + "@storybook/csf" "0.0.1" + "@types/qs" "^6.9.0" + "@types/webpack-env" "^1.15.2" + core-js "^3.0.1" + global "^4.3.2" + lodash "^4.17.15" + memoizerific "^1.11.3" + qs "^6.6.0" + stable "^0.1.8" + store2 "^2.7.1" + ts-dedent "^1.1.1" + util-deprecate "^1.0.2" + "@storybook/client-logger@6.0.21": version "6.0.21" resolved "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.0.21.tgz#20369addf9eb79fc0c85a2e0dcb48f5a1a544532" @@ -3986,6 +4072,14 @@ core-js "^3.0.1" global "^4.3.2" +"@storybook/client-logger@6.0.26": + version "6.0.26" + resolved "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.0.26.tgz#e3d28bd8dc02ec2c53a9d69773a68189590b746f" + integrity sha512-VNoL6/oehVhn3hZi9vrTNT+C/3oAZKV+smfZFnPtsCR/Fq7CKbmsBd0pGPL57f81RU8e8WygwrIlAGJTDSNIjw== + dependencies: + core-js "^3.0.1" + global "^4.3.2" + "@storybook/components@6.0.21": version "6.0.21" resolved "https://registry.npmjs.org/@storybook/components/-/components-6.0.21.tgz#2f355370f993e0b7b9062094a03dffc2cdda91db" @@ -4014,6 +4108,34 @@ react-textarea-autosize "^8.1.1" ts-dedent "^1.1.1" +"@storybook/components@6.0.26": + version "6.0.26" + resolved "https://registry.npmjs.org/@storybook/components/-/components-6.0.26.tgz#e1f6e16aae850a71c9ac7bdd1d44a068ec9cfdc1" + integrity sha512-8wigI1pDFJO1m1IQWPguOK+nOsaAVRWkVdu+2te/rDcIR9QNvMzzou0+Lhfp3zKSVT4E6mEoGB/TWXXF5Iq0sQ== + dependencies: + "@storybook/client-logger" "6.0.26" + "@storybook/csf" "0.0.1" + "@storybook/theming" "6.0.26" + "@types/overlayscrollbars" "^1.9.0" + "@types/react-color" "^3.0.1" + "@types/react-syntax-highlighter" "11.0.4" + core-js "^3.0.1" + fast-deep-equal "^3.1.1" + global "^4.3.2" + lodash "^4.17.15" + markdown-to-jsx "^6.11.4" + memoizerific "^1.11.3" + overlayscrollbars "^1.10.2" + polished "^3.4.4" + popper.js "^1.14.7" + react "^16.8.3" + react-color "^2.17.0" + react-dom "^16.8.3" + react-popper-tooltip "^2.11.0" + react-syntax-highlighter "^12.2.1" + react-textarea-autosize "^8.1.1" + ts-dedent "^1.1.1" + "@storybook/core-events@6.0.21": version "6.0.21" resolved "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.0.21.tgz#2ce51e6d7524e7543dbb29571beac1dbeb4e5f40" @@ -4021,6 +4143,13 @@ dependencies: core-js "^3.0.1" +"@storybook/core-events@6.0.26": + version "6.0.26" + resolved "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.0.26.tgz#61181c9a8610d26cc85d47f133a563879044ca2d" + integrity sha512-nWjS/+kMiw31OPgeJQaiFsJk9ZJJo3/d4c+kc6GOl2iC1H3Q4/5cm3NvJBn/7bUtKHmSFwfbDouj+XjUk5rZbQ== + dependencies: + core-js "^3.0.1" + "@storybook/core@6.0.21": version "6.0.21" resolved "https://registry.npmjs.org/@storybook/core/-/core-6.0.21.tgz#105c2b90ab27e7b478cb1b7d10e9fe5aba5e0708" @@ -4180,6 +4309,18 @@ memoizerific "^1.11.3" qs "^6.6.0" +"@storybook/router@6.0.26": + version "6.0.26" + resolved "https://registry.npmjs.org/@storybook/router/-/router-6.0.26.tgz#5b991001afa7d7eb5e40c53cd4c58266b6f9edfd" + integrity sha512-kQ1LF/2gX3IkjS1wX7CsoeBc9ptHQzOsyax16rUyJa769DT5vMNtFtQxjNXMqSiSapPg2yrXJFKQNaoWvKgQEQ== + dependencies: + "@reach/router" "^1.3.3" + "@types/reach__router" "^1.3.5" + core-js "^3.0.1" + global "^4.3.2" + memoizerific "^1.11.3" + qs "^6.6.0" + "@storybook/semver@^7.3.2": version "7.3.2" resolved "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz#f3b9c44a1c9a0b933c04e66d0048fcf2fa10dac0" @@ -4222,6 +4363,24 @@ resolve-from "^5.0.0" ts-dedent "^1.1.1" +"@storybook/theming@6.0.26": + version "6.0.26" + resolved "https://registry.npmjs.org/@storybook/theming/-/theming-6.0.26.tgz#e5b545fb2653dfd1b043b567197d490b1c3c0da3" + integrity sha512-9yon2ofb9a+RT1pdvn8Njydy7XRw0qXcIsMqGsJRKoZecmRRozqB6DxH9Gbdf1vRSbM9gYUUDjbiMDFz7+4RiQ== + dependencies: + "@emotion/core" "^10.0.20" + "@emotion/is-prop-valid" "^0.8.6" + "@emotion/styled" "^10.0.17" + "@storybook/client-logger" "6.0.26" + core-js "^3.0.1" + deep-object-diff "^1.1.0" + emotion-theming "^10.0.19" + global "^4.3.2" + memoizerific "^1.11.3" + polished "^3.4.4" + resolve-from "^5.0.0" + ts-dedent "^1.1.1" + "@storybook/ui@6.0.21": version "6.0.21" resolved "https://registry.npmjs.org/@storybook/ui/-/ui-6.0.21.tgz#5dac2b68a30f5dba5457e0315f58977e07138968" From b646e4b23223632319b1d1f5d7cf4a15cd0b0ac2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 22 Oct 2020 08:43:49 +0200 Subject: [PATCH 250/323] chore(catalog-model): add the petstore into the default entities --- packages/catalog-model/examples/all-apis.yaml | 3 ++- packages/catalog-model/examples/all-components.yaml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/catalog-model/examples/all-apis.yaml b/packages/catalog-model/examples/all-apis.yaml index 5e8937f82b..64586fdddd 100644 --- a/packages/catalog-model/examples/all-apis.yaml +++ b/packages/catalog-model/examples/all-apis.yaml @@ -7,6 +7,7 @@ spec: type: github targets: - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/apis/hello-world-api.yaml - - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/apis/streetlights-api.yaml + - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/apis/petstore-api.yaml - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/apis/spotify-api.yaml + - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/apis/streetlights-api.yaml - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/apis/swapi-graphql.yaml diff --git a/packages/catalog-model/examples/all-components.yaml b/packages/catalog-model/examples/all-components.yaml index 902b40e008..bef38df0b1 100644 --- a/packages/catalog-model/examples/all-components.yaml +++ b/packages/catalog-model/examples/all-components.yaml @@ -7,6 +7,7 @@ spec: type: github targets: - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/components/artist-lookup-component.yaml + - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/components/petstore-component.yaml - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/components/playback-order-component.yaml - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/components/podcast-api-component.yaml - https://github.com/spotify/backstage/blob/master/packages/catalog-model/examples/components/queue-proxy-component.yaml From 1d652bbb2f5cb37ef9ffe6121bd2a0462a08ec95 Mon Sep 17 00:00:00 2001 From: Sachin Tewari Date: Thu, 22 Oct 2020 13:01:32 +0530 Subject: [PATCH 251/323] Read git auth token from backend config (#2992) --- .../techdocs-backend/src/default-branch.ts | 47 +++---- plugins/techdocs-backend/src/git-auth.ts | 116 ++++++++++++++++++ plugins/techdocs-backend/src/helpers.ts | 10 +- 3 files changed, 140 insertions(+), 33 deletions(-) create mode 100644 plugins/techdocs-backend/src/git-auth.ts diff --git a/plugins/techdocs-backend/src/default-branch.ts b/plugins/techdocs-backend/src/default-branch.ts index 85ef1ead5c..e9164c5175 100644 --- a/plugins/techdocs-backend/src/default-branch.ts +++ b/plugins/techdocs-backend/src/default-branch.ts @@ -17,6 +17,13 @@ import fetch, { RequestInit } from 'node-fetch'; import parseGitUrl from 'git-url-parse'; import { Config } from '@backstage/config'; import { getRootLogger, loadBackendConfig } from '@backstage/backend-common'; +import { + getAzureHostToken, + getGitHost, + getGithubHostToken, + getGitlabHostToken, + getGitRepoType, +} from './git-auth'; interface IGitlabBranch { name: string; @@ -73,15 +80,12 @@ function getAzureApiUrl(url: string): URL { ); } -function getGithubRequestOptions(config: Config): RequestInit { +function getGithubRequestOptions(config: Config, host: string): RequestInit { const headers: HeadersInit = { Accept: 'application/vnd.github.v3.raw', }; - const token = - config.getOptionalString('catalog.processors.github.privateToken') ?? - config.getOptionalString('catalog.processors.githubApi.privateToken') ?? - process.env.GITHUB_TOKEN; + const token = getGithubHostToken(config, host); if (token) { headers.Authorization = `token ${token}`; @@ -92,16 +96,12 @@ function getGithubRequestOptions(config: Config): RequestInit { }; } -function getGitlabRequestOptions(config: Config): RequestInit { +function getGitlabRequestOptions(config: Config, host: string): RequestInit { const headers: HeadersInit = { 'PRIVATE-TOKEN': '', }; - const token = - config.getOptionalString('catalog.processors.gitlab.privateToken') ?? - config.getOptionalString('catalog.processors.gitlabApi.privateToken') ?? - process.env.GITLAB_TOKEN; - + const token = getGitlabHostToken(config, host); if (token) { headers['PRIVATE-TOKEN'] = token; } @@ -111,12 +111,10 @@ function getGitlabRequestOptions(config: Config): RequestInit { }; } -function getAzureRequestOptions(config: Config): RequestInit { +function getAzureRequestOptions(config: Config, host: string): RequestInit { const headers: HeadersInit = {}; - const token = - config.getOptionalString('catalog.processors.azureApi.privateToken') ?? - process.env.AZURE_TOKEN; + const token = getAzureHostToken(config, host); if (token !== '') { headers.Authorization = `Basic ${Buffer.from(`:${token}`, 'utf8').toString( @@ -136,7 +134,8 @@ async function getGithubDefaultBranch( config: Config, ): Promise { const path = getGithubApiUrl(config, repositoryUrl).toString(); - const options = getGithubRequestOptions(config); + const host = getGitHost(repositoryUrl); + const options = getGithubRequestOptions(config, host); try { const raw = await fetch(path, options); @@ -165,7 +164,8 @@ async function getGitlabDefaultBranch( ): Promise { const path = getGitlabApiUrl(repositoryUrl).toString(); - const options = getGitlabRequestOptions(config); + const gitlabHost = getGitHost(repositoryUrl); + const options = getGitlabRequestOptions(config, gitlabHost); try { const raw = await fetch(path, options); @@ -196,8 +196,8 @@ async function getAzureDefaultBranch( config: Config, ): Promise { const path = getAzureApiUrl(repositoryUrl).toString(); - - const options = getAzureRequestOptions(config); + const host = getGitHost(repositoryUrl); + const options = getAzureRequestOptions(config, host); try { const urlResponse = await fetch(path, options); @@ -232,14 +232,7 @@ export const getDefaultBranch = async ( ): Promise => { // TODO(Rugvip): Config should not be loaded here, pass it in instead const config = await loadBackendConfig({ logger: getRootLogger() }); - const typeMapping = [ - { url: /github*/g, type: 'github' }, - { url: /gitlab*/g, type: 'gitlab' }, - { url: /azure*/g, type: 'azure/api' }, - ]; - - const type = typeMapping.filter(item => item.url.test(repositoryUrl))[0] - ?.type; + const type = getGitRepoType(repositoryUrl); try { switch (type) { diff --git a/plugins/techdocs-backend/src/git-auth.ts b/plugins/techdocs-backend/src/git-auth.ts new file mode 100644 index 0000000000..d77596929f --- /dev/null +++ b/plugins/techdocs-backend/src/git-auth.ts @@ -0,0 +1,116 @@ +/* + * 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 parseGitUrl from 'git-url-parse'; +import { Config } from '@backstage/config'; +import { getRootLogger, loadBackendConfig } from '@backstage/backend-common'; + +export function getGitHost(url: string): string { + const { resource } = parseGitUrl(url); + return resource; +} + +export function getGitRepoType(url: string): string { + const typeMapping = [ + { url: /github*/g, type: 'github' }, + { url: /gitlab*/g, type: 'gitlab' }, + { url: /azure*/g, type: 'azure/api' }, + ]; + + const type = typeMapping.filter(item => item.url.test(url))[0]?.type; + + return type; +} + +export function getGithubHostToken( + config: Config, + host: string, +): string | undefined { + const providerConfigs = + config.getOptionalConfigArray('integrations.github') ?? []; + + const hostConfig = providerConfigs.filter( + providerConfig => providerConfig.getOptionalString('host') === host, + ); + const token = + hostConfig[0]?.getOptionalString('token') ?? + config.getOptionalString('catalog.processors.github.privateToken') ?? + config.getOptionalString('catalog.processors.githubApi.privateToken') ?? + process.env.GITHUB_TOKEN; + + return token; +} + +export function getGitlabHostToken( + config: Config, + host: string, +): string | undefined { + const providerConfigs = + config.getOptionalConfigArray('integrations.gitlab') ?? []; + + const hostConfig = providerConfigs.filter( + providerConfig => providerConfig.getOptionalString('host') === host, + ); + const token = + hostConfig[0]?.getOptionalString('token') ?? + config.getOptionalString('catalog.processors.gitlab.privateToken') ?? + config.getOptionalString('catalog.processors.gitlabApi.privateToken') ?? + process.env.GITLAB_TOKEN; + + return token; +} + +export function getAzureHostToken( + config: Config, + host: string, +): string | undefined { + const providerConfigs = + config.getOptionalConfigArray('integrations.azure') ?? []; + + const hostConfig = providerConfigs.filter( + providerConfig => providerConfig.getOptionalString('host') === host, + ); + const token = + hostConfig[0]?.getOptionalString('token') ?? + config.getOptionalString('catalog.processors.azureApi.privateToken') ?? + process.env.AZURE_TOKEN; + + return token; +} + +export const getTokenForGitRepo = async ( + repositoryUrl: string, +): Promise => { + const config = await loadBackendConfig({ logger: getRootLogger() }); + + const host = getGitHost(repositoryUrl); + const type = getGitRepoType(repositoryUrl); + + try { + switch (type) { + case 'github': + return getGithubHostToken(config, host); + case 'gitlab': + return getGitlabHostToken(config, host); + case 'azure/api': + return getAzureHostToken(config, host); + + default: + throw new Error('Failed to get repository type'); + } + } catch (error) { + throw error; + } +}; diff --git a/plugins/techdocs-backend/src/helpers.ts b/plugins/techdocs-backend/src/helpers.ts index b2dcd1e8e8..4a21800b07 100644 --- a/plugins/techdocs-backend/src/helpers.ts +++ b/plugins/techdocs-backend/src/helpers.ts @@ -20,6 +20,7 @@ import parseGitUrl from 'git-url-parse'; import NodeGit, { Clone, Repository } from 'nodegit'; import fs from 'fs-extra'; import { getDefaultBranch } from './default-branch'; +import { getTokenForGitRepo } from './git-auth'; import { Entity } from '@backstage/catalog-model'; import { InputError } from '@backstage/backend-common'; import { RemoteProtocol } from './techdocs/stages/prepare/types'; @@ -127,11 +128,8 @@ export const checkoutGitRepository = async ( process.env.GITLAB_PRIVATE_TOKEN_USER || process.env.AZURE_PRIVATE_TOKEN_USER || ''; - const token = - process.env.GITHUB_TOKEN || - process.env.GITLAB_PRIVATE_TOKEN_USER || - process.env.AZURE_TOKEN || - ''; + + const token = await getTokenForGitRepo(repoUrl); if (fs.existsSync(repositoryTmpPath)) { try { @@ -153,7 +151,7 @@ export const checkoutGitRepository = async ( } } - if (user && token) { + if (token) { parsedGitLocation.token = `${user}:${token}`; } From cb93d87b17bb025634b4f9a4ac14751f8d46adee Mon Sep 17 00:00:00 2001 From: Marek Calus Date: Thu, 22 Oct 2020 09:35:31 +0200 Subject: [PATCH 252/323] Code review fixes. --- packages/catalog-model/src/location/types.ts | 5 +- .../catalog-model/src/location/validation.ts | 2 +- plugins/catalog/src/api/CatalogClient.ts | 8 +- yarn.lock | 432 +++--------------- 4 files changed, 67 insertions(+), 380 deletions(-) diff --git a/packages/catalog-model/src/location/types.ts b/packages/catalog-model/src/location/types.ts index 3c13393c06..33e443e04f 100644 --- a/packages/catalog-model/src/location/types.ts +++ b/packages/catalog-model/src/location/types.ts @@ -18,8 +18,9 @@ export type LocationSpec = { type: string; target: string; // When using repo importer plugin, location is being created before the component yaml file is merged to the main branch. - // This flag is then set to disable validation that prevents creation of location if target file does not yet exist. - pendingLocation?: boolean; + // This flag is then set to indicate that the file can be not present. + // default value: 'required'. + presence?: 'optional' | 'required'; }; export type Location = { diff --git a/packages/catalog-model/src/location/validation.ts b/packages/catalog-model/src/location/validation.ts index 93ac4d8d18..8dbe7cb5b0 100644 --- a/packages/catalog-model/src/location/validation.ts +++ b/packages/catalog-model/src/location/validation.ts @@ -21,7 +21,7 @@ export const locationSpecSchema = yup .object({ type: yup.string().required(), target: yup.string().required(), - pendingLocation: yup.bool(), + pendingLocation: yup.bool().notRequired(), }) .noUnknown() .required(); diff --git a/plugins/catalog/src/api/CatalogClient.ts b/plugins/catalog/src/api/CatalogClient.ts index 9ba0e56bc1..6b10541107 100644 --- a/plugins/catalog/src/api/CatalogClient.ts +++ b/plugins/catalog/src/api/CatalogClient.ts @@ -109,13 +109,15 @@ export class CatalogClient implements CatalogApi { const { location, entities } = await response.json(); - if (!location) throw new Error(`Location wasn't added: ${target}`); + if (!location) { + throw new Error(`Location wasn't added: ${target}`); + } - if (entities.length === 0) + if (entities.length === 0) { throw new Error( `Location was added but has no entities specified yet: ${target}`, ); - + } return { location, entities, diff --git a/yarn.lock b/yarn.lock index 3bacd8429f..e6377107c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1673,22 +1673,6 @@ resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== -"@eslint/eslintrc@^0.1.3": - version "0.1.3" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085" - integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - lodash "^4.17.19" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - "@evocateur/libnpmaccess@^3.1.2": version "3.1.2" resolved "https://registry.npmjs.org/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845" @@ -3234,7 +3218,7 @@ resolved "https://registry.npmjs.org/@material-icons/font/-/font-1.0.3.tgz#f722e5a69a03f20ef47d015cb69420bebeeaabe5" integrity sha512-aIRd0Z9b/HJ/O24KOaP7dNsXypMnXhpWrpLVYvQB/JesVqXYSbioYND200sR+C14a0LSCp+qWnWCnSXmN1hWGw== -"@material-ui/core@^4.11.0", "@material-ui/core@^4.9.1", "@material-ui/core@^4.9.10": +"@material-ui/core@^4.11.0", "@material-ui/core@^4.9.1": version "4.11.0" resolved "https://registry.npmjs.org/@material-ui/core/-/core-4.11.0.tgz#b69b26e4553c9e53f2bfaf1053e216a0af9be15a" integrity sha512-bYo9uIub8wGhZySHqLQ833zi4ZML+XCBE1XwJ8EuUVSpTWWG57Pm+YugQToJNFsEyiKFhPh8DPD0bgupz8n01g== @@ -3270,7 +3254,7 @@ prop-types "^15.7.2" react-is "^16.8.0" -"@material-ui/lab@^4.0.0-alpha.49", "@material-ui/lab@^4.0.0-alpha.56": +"@material-ui/lab@^4.0.0-alpha.56": version "4.0.0-alpha.56" resolved "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.56.tgz#ff63080949b55b40625e056bbda05e130d216d34" integrity sha512-xPlkK+z/6y/24ka4gVJgwPfoCF4RCh8dXb1BNE7MtF9bXEBLN/lBxNTK8VAa0qm3V2oinA6xtUIdcRh0aeRtVw== @@ -3563,7 +3547,7 @@ dependencies: "@types/node" ">= 8" -"@open-draft/until@^1.0.0", "@open-draft/until@^1.0.3": +"@open-draft/until@^1.0.3": version "1.0.3" resolved "https://registry.npmjs.org/@open-draft/until/-/until-1.0.3.tgz#db9cc719191a62e7d9200f6e7bab21c5b848adca" integrity sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q== @@ -3644,11 +3628,6 @@ prop-types "^15.6.1" react-lifecycles-compat "^3.0.4" -"@rehooks/local-storage@^2.4.0": - version "2.4.0" - resolved "https://registry.npmjs.org/@rehooks/local-storage/-/local-storage-2.4.0.tgz#fb884b2b657cad5f77aa6ab60bb3532f0e0725d2" - integrity sha512-LoXDbEHsuIckVgBsFAv8SuU/M7memjyfWut9Zf36TQXqqCHBRFv8bweg9PymQCa1aWIMjNrZQflFdo55FDlXYg== - "@rjsf/core@^2.4.0": version "2.4.0" resolved "https://registry.npmjs.org/@rjsf/core/-/core-2.4.0.tgz#c50bcff0d8178948ce08123177399d8816d51929" @@ -3691,6 +3670,51 @@ react-router "^6.0.0-beta.0" react-use "^15.3.3" +"@roadiehq/backstage-plugin-github-pull-requests@^0.5.2": + version "0.5.2" + resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-pull-requests/-/backstage-plugin-github-pull-requests-0.5.2.tgz#455355fe5cdcc43c22b80a8ef3697378084680a1" + integrity sha512-GM+nWQZ+aehMclN70Pp35UQe3I46SQCjWiGZ6/0TfDzrueHln39L2UspUj1L/713xDDtDK8ZnTJdFn/qKx7j4A== + dependencies: + "@backstage/catalog-model" "^0.1.1-alpha.25" + "@backstage/core" "^0.1.1-alpha.25" + "@backstage/plugin-catalog" "^0.1.1-alpha.25" + "@backstage/theme" "^0.1.1-alpha.25" + "@material-ui/core" "^4.11.0" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "^4.0.0-alpha.56" + "@octokit/rest" "^18.0.0" + "@octokit/types" "^5.0.1" + "@types/react-dom" "^16.9.8" + history "^5.0.0" + moment "^2.27.0" + react "^16.13.1" + react-dom "^16.13.1" + react-router "6.0.0-beta.0" + react-use "^15.3.3" + +"@roadiehq/backstage-plugin-travis-ci@^0.2.3": + version "0.2.3" + resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-travis-ci/-/backstage-plugin-travis-ci-0.2.3.tgz#2d1c5a7ed3eab4fdcf95243b73dee44c0cff5a57" + integrity sha512-Xi8vZFbcm+D4ykyU3I9hImAd22F1v6M1F/H9CJanRHqj5esJxnuCS2+Kf+w09bwb9DuM8/c68PuMlf3PMIsOwg== + dependencies: + "@backstage/catalog-model" "^0.1.1-alpha.22" + "@backstage/core" "^0.1.1-alpha.22" + "@backstage/core-api" "^0.1.1-alpha.22" + "@backstage/plugin-catalog" "^0.1.1-alpha.22" + "@backstage/theme" "^0.1.1-alpha.22" + "@material-ui/core" "^4.9.1" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.45" + date-fns "^2.15.0" + history "^5.0.0" + moment "^2.27.0" + react "^16.13.1" + react-dom "^16.13.1" + react-lazylog "^4.5.2" + react-router "6.0.0-beta.0" + react-router-dom "6.0.0-beta.0" + react-use "^15.3.3" + "@rollup/plugin-commonjs@^13.0.0": version "13.0.0" resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-13.0.0.tgz#8a1d684ba6848afe8b9e3d85649d4b2f6f7217ec" @@ -3704,19 +3728,6 @@ magic-string "^0.25.2" resolve "^1.11.0" -"@rollup/plugin-commonjs@^14.0.0": - version "14.0.0" - resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-14.0.0.tgz#4285f9ec2db686a31129e5a2b415c94aa1f836f0" - integrity sha512-+PSmD9ePwTAeU106i9FRdc+Zb3XUWyW26mo5Atr2mk82hor8+nPwkztEjFo8/B1fJKfaQDg9aM2bzQkjhi7zOw== - dependencies: - "@rollup/pluginutils" "^3.0.8" - commondir "^1.0.1" - estree-walker "^1.0.1" - glob "^7.1.2" - is-reference "^1.1.2" - magic-string "^0.25.2" - resolve "^1.11.0" - "@rollup/plugin-json@^4.0.2": version "4.1.0" resolved "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" @@ -3724,7 +3735,7 @@ dependencies: "@rollup/pluginutils" "^3.0.8" -"@rollup/plugin-node-resolve@^8.1.0", "@rollup/plugin-node-resolve@^8.4.0": +"@rollup/plugin-node-resolve@^8.1.0": version "8.4.0" resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz#261d79a680e9dc3d86761c14462f24126ba83575" integrity sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ== @@ -3755,15 +3766,6 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@rollup/pluginutils@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.0.0.tgz#e18e9f5a3925779fc15209dd316c1bd260d195ef" - integrity sha512-b5QiJRye4JlSg29bKNEECoKbLuPXZkPEHSgEjjP1CJV1CPdDBybfYHfm6kyq8yK51h/Zsyl8OvWUrp0FUBukEQ== - dependencies: - "@types/estree" "0.0.45" - estree-walker "^2.0.1" - picomatch "^2.2.2" - "@samverschueren/stream-to-observable@^0.3.0": version "0.3.0" resolved "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" @@ -4536,7 +4538,7 @@ "@babel/runtime" "^7.5.4" "@types/testing-library__react-hooks" "^3.3.0" -"@testing-library/react-hooks@^3.4.1", "@testing-library/react-hooks@^3.4.2": +"@testing-library/react-hooks@^3.4.2": version "3.4.2" resolved "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-3.4.2.tgz#8deb94f7684e0d896edd84a4c90e5b79a0810bc2" integrity sha512-RfPG0ckOzUIVeIqlOc1YztKgFW+ON8Y5xaSPbiBkfj9nMkkiLhLeBXT5icfPX65oJV/zCZu4z8EVnUc6GY9C5A== @@ -4776,11 +4778,6 @@ dependencies: "@types/express" "*" -"@types/cookie@^0.3.3": - version "0.3.3" - resolved "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz#85bc74ba782fb7aa3a514d11767832b0e3bc6803" - integrity sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow== - "@types/cookie@^0.4.0": version "0.4.0" resolved "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz#14f854c0f93d326e39da6e3b6f34f7d37513d108" @@ -4872,11 +4869,6 @@ resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== -"@types/estree@0.0.45": - version "0.0.45" - resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" - integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== - "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.5": version "4.17.9" resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz#2d7b34dcfd25ec663c25c85d76608f8b249667f1" @@ -4967,11 +4959,6 @@ resolved "https://registry.npmjs.org/@types/history/-/history-4.7.5.tgz#527d20ef68571a4af02ed74350164e7a67544860" integrity sha512-wLD/Aq2VggCJXSjxEwrMafIP51Z+13H78nXIX0ABEuIGhmB5sNGbR113MOKo+yfw+RDo1ZU3DM6yfnnRF/+ouw== -"@types/history@^4.7.7": - version "4.7.8" - resolved "https://registry.npmjs.org/@types/history/-/history-4.7.8.tgz#49348387983075705fe8f4e02fb67f7daaec4934" - integrity sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA== - "@types/html-minifier-terser@^5.0.0": version "5.1.0" resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.0.tgz#551a4589b6ee2cc9c1dff08056128aec29b94880" @@ -5081,14 +5068,6 @@ jest-diff "^25.2.1" pretty-format "^25.2.1" -"@types/jest@^25.2.2": - version "25.2.3" - resolved "https://registry.npmjs.org/@types/jest/-/jest-25.2.3.tgz#33d27e4c4716caae4eced355097a47ad363fdcaf" - integrity sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw== - dependencies: - jest-diff "^25.2.1" - pretty-format "^25.2.1" - "@types/jquery@^3.3.34": version "3.5.1" resolved "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.1.tgz#cebb057acf5071c40e439f30e840c57a30d406c3" @@ -5821,7 +5800,7 @@ resolved "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.0.tgz#8b63ab7f1aa5321248aad5ac890a485656dcea4d" integrity sha512-te5lMAWii1uEJ4FwLjzdlbw3+n0FZNOvFXHxQDKeT0dilh7HOzdMzV2TrJVUzq8ep7J4Na8OUYPRLSQkJHAlrg== -"@typescript-eslint/eslint-plugin@^3.8.0", "@typescript-eslint/eslint-plugin@^v3.10.1": +"@typescript-eslint/eslint-plugin@^v3.10.1": version "3.10.1" resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz#7e061338a1383f59edc204c605899f93dc2e2c8f" integrity sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ== @@ -5856,7 +5835,7 @@ eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^3.8.0", "@typescript-eslint/parser@^v3.10.1": +"@typescript-eslint/parser@^v3.10.1": version "3.10.1" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz#1883858e83e8b442627e1ac6f408925211155467" integrity sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw== @@ -6193,11 +6172,6 @@ acorn@^7.1.1, acorn@^7.2.0: resolved "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - address@1.1.2, address@^1.0.1: version "1.1.2" resolved "https://registry.npmjs.org/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" @@ -9453,7 +9427,7 @@ cyclist@^1.0.1: resolved "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= -cypress@*, cypress@^4.11.0, cypress@^4.2.0: +cypress@*, cypress@^4.2.0: version "4.12.1" resolved "https://registry.npmjs.org/cypress/-/cypress-4.12.1.tgz#0ead1b9f4c0917d69d8b57f996b6e01fe693b6ec" integrity sha512-9SGIPEmqU8vuRA6xst2CMTYd9sCFCxKSzrHt0wr+w2iAQMCIIsXsQ5Gplns1sT6LDbZcmLv6uehabAOl3fhc9Q== @@ -10549,41 +10523,6 @@ es-abstract@^1.17.0, es-abstract@^1.17.0-next.0, es-abstract@^1.17.0-next.1, es- string.prototype.trimleft "^2.1.1" string.prototype.trimright "^2.1.1" -es-abstract@^1.17.5: - version "1.17.7" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" - integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-regex "^1.1.1" - object-inspect "^1.8.0" - object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-abstract@^1.18.0-next.0: - version "1.18.0-next.1" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" - integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-negative-zero "^2.0.0" - is-regex "^1.1.1" - object-inspect "^1.8.0" - object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - es-array-method-boxes-properly@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" @@ -10674,11 +10613,6 @@ es6-weak-map@^2.0.2: es6-iterator "^2.0.3" es6-symbol "^3.1.1" -esbuild@^0.6.18: - version "0.6.34" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.6.34.tgz#76565a60e006f45d5f273b6e59e61ed0816551f5" - integrity sha512-InRdL/Q96pUucPqovJzvuLhquZr6jOn81FDVwFjCKz1rYKIm9OdOC+7Fs4vr6x48vKBl5LzKgtjU39BUpO636A== - esbuild@^0.7.7: version "0.7.7" resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.7.7.tgz#fd86332d1c0a047231bd6da930666028c40c14bf" @@ -10767,13 +10701,6 @@ eslint-plugin-cypress@^2.10.3: dependencies: globals "^11.12.0" -eslint-plugin-cypress@^2.11.1: - version "2.11.2" - resolved "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.2.tgz#a8f3fe7ec840f55e4cea37671f93293e6c3e76a0" - integrity sha512-1SergF1sGbVhsf7MYfOLiBhdOg6wqyeV9pXUAIDIffYTGMN3dTBQS9nFAzhLsHhO+Bn0GaVM1Ecm71XUidQ7VA== - dependencies: - globals "^11.12.0" - eslint-plugin-graphql@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/eslint-plugin-graphql/-/eslint-plugin-graphql-4.0.0.tgz#d238ff2baee4d632cfcbe787a7a70a1f50428358" @@ -10870,23 +10797,6 @@ eslint-plugin-react@^7.12.4: string.prototype.matchall "^4.0.2" xregexp "^4.3.0" -eslint-plugin-react@^7.20.5: - version "7.21.5" - resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.21.5.tgz#50b21a412b9574bfe05b21db176e8b7b3b15bff3" - integrity sha512-8MaEggC2et0wSF6bUeywF7qQ46ER81irOdWS4QWxnnlAEsnzeBevk1sWh7fhpCghPpXb+8Ks7hvaft6L/xsR6g== - dependencies: - array-includes "^3.1.1" - array.prototype.flatmap "^1.2.3" - doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.4.1 || ^3.0.0" - object.entries "^1.1.2" - object.fromentries "^2.0.2" - object.values "^1.1.1" - prop-types "^15.7.2" - resolve "^1.18.1" - string.prototype.matchall "^4.0.2" - eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -10903,14 +10813,6 @@ eslint-scope@^5.0.0, eslint-scope@^5.1.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - eslint-utils@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" @@ -10918,23 +10820,11 @@ eslint-utils@^2.0.0: dependencies: eslint-visitor-keys "^1.1.0" -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.2.0.tgz#74415ac884874495f78ec2a97349525344c981fa" integrity sha512-WFb4ihckKil6hu3Dp798xdzSfddwKKU3+nGniKF6HfeW6OLd2OUDEPP7TcHtB5+QXOKg2s6B2DaMPE1Nn/kxKQ== -eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - eslint-visitor-keys@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" @@ -10982,49 +10872,6 @@ eslint@^7.1.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -eslint@^7.6.0: - version "7.11.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-7.11.0.tgz#aaf2d23a0b5f1d652a08edacea0c19f7fadc0b3b" - integrity sha512-G9+qtYVCHaDi1ZuWzBsOWo2wSwd70TXnU6UHA3cTYHp7gCTXZcpggWFoUVAMRarg68qtPoNfFbzPh+VdOgmwmw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@eslint/eslintrc" "^0.1.3" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.0" - esquery "^1.2.0" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash "^4.17.19" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - esm@^3.2.25: version "3.2.25" resolved "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" @@ -11039,15 +10886,6 @@ espree@^7.1.0: acorn-jsx "^5.2.0" eslint-visitor-keys "^1.2.0" -espree@^7.3.0: - version "7.3.0" - resolved "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" - integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.3.0" - esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -11067,13 +10905,6 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" @@ -11084,11 +10915,6 @@ estraverse@^5.1.0: resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== -estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - estree-walker@^0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" @@ -11099,11 +10925,6 @@ estree-walker@^1.0.1: resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== -estree-walker@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.1.tgz#f8e030fb21cefa183b44b7ad516b747434e7a3e0" - integrity sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg== - esutils@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -12724,7 +12545,7 @@ graphql-upload@^8.0.2: http-errors "^1.7.3" object-path "^0.11.4" -graphql@15.3.0, graphql@^15.0.0, graphql@^15.3.0: +graphql@15.3.0, graphql@^15.3.0: version "15.3.0" resolved "https://registry.npmjs.org/graphql/-/graphql-15.3.0.tgz#3ad2b0caab0d110e3be4a5a9b2aa281e362b5278" integrity sha512-GTCJtzJmkFLWRfFJuoo9RWWa/FfamUHgiFosxi/X1Ani4AVWbeyBenZTNX6dM+7WSbbFfTo/25eh0LLkwHMw2w== @@ -12900,7 +12721,7 @@ he@^1.1.0, he@^1.2.0: resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -headers-utils@^1.1.9, headers-utils@^1.2.0: +headers-utils@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/headers-utils/-/headers-utils-1.2.0.tgz#5e10d1bc9d2bccf789547afca5b991a3167241e8" integrity sha512-4/BMXcWrJErw7JpM87gF8MNEXcIMLzepYZjNRv/P9ctgupl2Ywa3u1PgHtNhSRq84bHH9Ndlkdy7bSi+bZ9I9A== @@ -13703,11 +13524,6 @@ is-callable@^1.1.4, is-callable@^1.1.5: resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== -is-callable@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" - integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== - is-ci@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -13727,13 +13543,6 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" -is-core-module@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.0.0.tgz#58531b70aed1db7c0e8d4eb1a0a2d1ddd64bd12d" - integrity sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw== - dependencies: - has "^1.0.3" - is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -13902,11 +13711,6 @@ is-module@^1.0.0: resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= -is-negative-zero@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" - integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= - is-npm@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" @@ -14727,11 +14531,6 @@ jose@^2.0.2: dependencies: "@panva/asn1.js" "^1.0.0" -joycon@^2.2.5: - version "2.2.5" - resolved "https://registry.npmjs.org/joycon/-/joycon-2.2.5.tgz#8d4cf4cbb2544d7b7583c216fcdfec19f6be1615" - integrity sha512-YqvUxoOcVPnCp0VU1/56f+iKSdvIRJYPznH22BdXV3xMk75SFXhWeJkZ8C9XxUWt1b5x2X1SxuFygW1U0FmkEQ== - js-cookie@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" @@ -15137,14 +14936,6 @@ jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: array-includes "^3.0.3" object.assign "^4.1.0" -"jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.1.0" - resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.1.0.tgz#642f1d7b88aa6d7eb9d8f2210e166478444fa891" - integrity sha512-d4/UOjg+mxAWxCiF0c5UTSwyqbchkbqCvK87aBovhnh8GtysTjWmgC63tY0cJx/HzGgm9qnA147jVBdpOiQ2RA== - dependencies: - array-includes "^3.1.1" - object.assign "^4.1.1" - jwa@^1.4.1: version "1.4.1" resolved "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" @@ -16573,22 +16364,6 @@ ms@2.1.2, ms@^2.0.0, ms@^2.1.1: resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -msw@^0.19.5: - version "0.19.5" - resolved "https://registry.npmjs.org/msw/-/msw-0.19.5.tgz#7d2a1a852ccf1644d3db6735d69fff6777aac33f" - integrity sha512-J5eQ++gDVZoHPC8gVXtWcakLjgmPipvFj/sEnlRV/WViXuiq2CamSqO3Wbh6H8bAmj+k2vUWCfcVT1HjMdKB2Q== - dependencies: - "@open-draft/until" "^1.0.0" - "@types/cookie" "^0.3.3" - chalk "^4.0.0" - cookie "^0.4.1" - graphql "^15.0.0" - headers-utils "^1.1.9" - node-match-path "^0.4.2" - node-request-interceptor "^0.2.5" - statuses "^2.0.0" - yargs "^15.3.1" - msw@^0.20.5: version "0.20.5" resolved "https://registry.npmjs.org/msw/-/msw-0.20.5.tgz#b6141080c0d8b17c451d9ca36c28cc47b4ac487a" @@ -16866,7 +16641,7 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-match-path@^0.4.2, node-match-path@^0.4.4: +node-match-path@^0.4.4: version "0.4.4" resolved "https://registry.npmjs.org/node-match-path/-/node-match-path-0.4.4.tgz#516a10926093c0cc6f237d020685b593b19baebb" integrity sha512-pBq9gp7TG0r0VXuy/oeZmQsjBSnYQo7G886Ly/B3azRwZuEtHCY155dzmfoKWcDPGgyfIGD8WKVC7h3+6y7yTg== @@ -16925,14 +16700,6 @@ node-releases@^1.1.52, node-releases@^1.1.58: resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz#6948bdfce8286f0b5d0e5a88e8384e954dfe7084" integrity sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA== -node-request-interceptor@^0.2.5: - version "0.2.6" - resolved "https://registry.npmjs.org/node-request-interceptor/-/node-request-interceptor-0.2.6.tgz#541278d7033bb6a8befb5dd793f83428cf6446a2" - integrity sha512-aJW1tPSM7nzuZFRe+C/KSz22GJO3CVFMxHHmMGX8Z+tjP7TCIVbzeckLFVfJG68BdVgrdOOP7Ejc57ag820eyA== - dependencies: - debug "^4.1.1" - headers-utils "^1.2.0" - node-request-interceptor@^0.3.5: version "0.3.5" resolved "https://registry.npmjs.org/node-request-interceptor/-/node-request-interceptor-0.3.5.tgz#4b26159617829c9a70643012c0fdc3ae4c78ae43" @@ -17186,11 +16953,6 @@ object-inspect@^1.7.0: resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== -object-inspect@^1.8.0: - version "1.8.0" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== - object-is@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" @@ -17223,16 +16985,6 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.assign@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd" - integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.18.0-next.0" - has-symbols "^1.0.1" - object-keys "^1.1.1" - object.defaults@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" @@ -17253,15 +17005,6 @@ object.entries@^1.1.0, object.entries@^1.1.1: function-bind "^1.1.1" has "^1.0.3" -object.entries@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" - integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - has "^1.0.3" - "object.fromentries@^2.0.0 || ^1.0.0", object.fromentries@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" @@ -20514,14 +20257,6 @@ resolve@1.17.0, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0 dependencies: path-parse "^1.0.6" -resolve@^1.18.1: - version "1.18.1" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" - integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== - dependencies: - is-core-module "^2.0.0" - path-parse "^1.0.6" - responselike@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -20636,20 +20371,13 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rollup-plugin-dts@1.4.13, rollup-plugin-dts@^1.4.10: +rollup-plugin-dts@1.4.13: version "1.4.13" resolved "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-1.4.13.tgz#4f086e84f4fdcc1f49160799ebc66f6b09db292b" integrity sha512-7mxoQ6PcmCkBE5ZhrjGDL4k42XLy8BkSqpiRi1MipwiGs+7lwi4mQkp2afX+OzzLjJp/TGM8llfe8uayIUhPEw== optionalDependencies: "@babel/code-frame" "^7.10.4" -rollup-plugin-dts@1.4.8: - version "1.4.8" - resolved "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-1.4.8.tgz#3b0eadc285aede11c3f5ced72b56b5f7735df95c" - integrity sha512-2qHB4B3oaTyi1mDmqDzsRGKlev32v3EhMUAmc45Cn9eB22R7FsYDiigvT9XdM/oQzfd0qv5MkeZju8DP0nauiA== - optionalDependencies: - "@babel/code-frame" "^7.10.4" - rollup-plugin-esbuild@^2.0.0: version "2.3.0" resolved "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-2.3.0.tgz#7c107d4508af80d30966a148b306cb7d5b36b258" @@ -20657,16 +20385,7 @@ rollup-plugin-esbuild@^2.0.0: dependencies: "@rollup/pluginutils" "^3.1.0" -rollup-plugin-esbuild@^2.4.2: - version "2.5.2" - resolved "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-2.5.2.tgz#fd7d4a88518898012a9d07e4c3ef8b4009c244d3" - integrity sha512-E4q3ac1AlMd0m0ZRYffdiorOt2eZcxfbdPaqBLs7JLnPE8krgIAihOD6cTUc54UJjoOMA9WcY63TR+JKWLzYNw== - dependencies: - "@rollup/pluginutils" "^4.0.0" - joycon "^2.2.5" - strip-json-comments "^3.1.1" - -rollup-plugin-peer-deps-external@^2.2.2, rollup-plugin-peer-deps-external@^2.2.3: +rollup-plugin-peer-deps-external@^2.2.2: version "2.2.3" resolved "https://registry.npmjs.org/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.3.tgz#059a8aec1eefb48a475e9fcedc3b9e3deb521213" integrity sha512-W6IePXTExGXVDAlfZbNUUrx3GxUOZP248u5n4a4ID1XZMrbQ+uGeNiEfapvdzwx0qZi5DNH/hDLiPUP+pzFIxg== @@ -20709,13 +20428,6 @@ rollup-pluginutils@^2.8.2: dependencies: estree-walker "^0.6.1" -rollup@2.23.1: - version "2.23.1" - resolved "https://registry.npmjs.org/rollup/-/rollup-2.23.1.tgz#d458d28386dc7660c2e8a4978bea6f9494046c20" - integrity sha512-Heyl885+lyN/giQwxA8AYT2GY3U+gOlTqVLrMQYno8Z1X9lAOpfXPiKiZCyPc25e9BLJM3Zlh957dpTlO4pa8A== - optionalDependencies: - fsevents "~2.1.2" - rollup@2.23.x: version "2.23.0" resolved "https://registry.npmjs.org/rollup/-/rollup-2.23.0.tgz#b7ab1fee0c0e60132fd0553c4df1e9cdacfada9d" @@ -20731,13 +20443,6 @@ rollup@^0.63.4: "@types/estree" "0.0.39" "@types/node" "*" -rollup@^2.23.1: - version "2.32.0" - resolved "https://registry.npmjs.org/rollup/-/rollup-2.32.0.tgz#ac58c8e85782bea8aa2d440fc05aba345013582a" - integrity sha512-0FIG1jY88uhCP2yP4CfvtKEqPDRmsUwfY1kEOOM+DH/KOGATgaIFd/is1+fQOxsvh62ELzcFfKonwKWnHhrqmw== - optionalDependencies: - fsevents "~2.1.2" - rsvp@^4.8.4: version "4.8.5" resolved "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" @@ -21859,14 +21564,6 @@ string.prototype.padstart@^3.0.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" -string.prototype.trimend@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimleft@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" @@ -21883,14 +21580,6 @@ string.prototype.trimright@^2.1.1: define-properties "^1.1.3" function-bind "^1.1.1" -string.prototype.trimstart@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -21993,11 +21682,6 @@ strip-json-comments@^3.1.0: resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" From 15515ea60daf8e606178e6e9904b43f02ed234e9 Mon Sep 17 00:00:00 2001 From: Marek Calus Date: Thu, 22 Oct 2020 10:35:33 +0200 Subject: [PATCH 253/323] Update type validation --- packages/catalog-model/src/location/validation.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/catalog-model/src/location/validation.ts b/packages/catalog-model/src/location/validation.ts index 8dbe7cb5b0..27d74b9a82 100644 --- a/packages/catalog-model/src/location/validation.ts +++ b/packages/catalog-model/src/location/validation.ts @@ -21,7 +21,7 @@ export const locationSpecSchema = yup .object({ type: yup.string().required(), target: yup.string().required(), - pendingLocation: yup.bool().notRequired(), + presence: yup.string(), }) .noUnknown() .required(); From 8c2b76e45fd930d755e3c4a48f31be237c14e77b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 20 Oct 2020 13:08:05 +0200 Subject: [PATCH 254/323] config-loader: switch to using --config options to load in config --- .changeset/dull-icons-share.md | 21 ++++ packages/backend-common/package.json | 2 + packages/backend-common/src/config.ts | 12 +- packages/backend/src/index.ts | 5 +- packages/cli/src/commands/app/build.ts | 16 +-- packages/cli/src/commands/app/serve.ts | 16 +-- packages/cli/src/commands/backend/dev.ts | 14 --- packages/cli/src/commands/config/print.ts | 17 +-- packages/cli/src/commands/index.ts | 18 ++- packages/cli/src/commands/plugin/export.ts | 16 +-- packages/cli/src/commands/plugin/serve.ts | 16 +-- packages/cli/src/lib/bundler/backend.ts | 8 +- packages/cli/src/lib/bundler/types.ts | 16 ++- packages/cli/src/lib/config.ts | 42 +++++++ packages/config-loader/src/lib/index.ts | 1 - .../config-loader/src/lib/resolver.test.ts | 119 ------------------ packages/config-loader/src/lib/resolver.ts | 59 --------- packages/config-loader/src/loader.test.ts | 38 +++++- packages/config-loader/src/loader.ts | 44 +++++-- .../default-app/packages/backend/src/index.ts | 2 +- .../src/service/standaloneServer.ts | 2 +- .../src/service/standaloneServer.ts | 2 +- .../proxy-backend/src/service/router.test.ts | 2 +- .../src/service/standaloneServer.ts | 2 +- .../src/service/standaloneServer.ts | 2 +- .../techdocs-backend/src/default-branch.ts | 5 +- yarn.lock | 5 + 27 files changed, 200 insertions(+), 302 deletions(-) create mode 100644 .changeset/dull-icons-share.md create mode 100644 packages/cli/src/lib/config.ts delete mode 100644 packages/config-loader/src/lib/resolver.test.ts delete mode 100644 packages/config-loader/src/lib/resolver.ts diff --git a/.changeset/dull-icons-share.md b/.changeset/dull-icons-share.md new file mode 100644 index 0000000000..aa4c01e422 --- /dev/null +++ b/.changeset/dull-icons-share.md @@ -0,0 +1,21 @@ +--- +'@backstage/backend-common': minor +'@backstage/cli': minor +'@backstage/config-loader': minor +'example-backend': patch +'@backstage/create-app': patch +--- + +**BREAKING CHANGE** + +The existing loading of additional config files like `app-config.development.yaml` using APP_ENV or NODE_ENV has been removed. +Instead, the CLI and backend process now accept one or more `--config` flags to load config files. + +Without passing any flags, `app-config.yaml` and, if it exists, `app-config.local.yaml` will be loaded. +If passing any `--config ` flags, only those files will be loaded, **NOT** the default `app-config.yaml` one. + +The old behaviour of for example `APP_ENV=development` can be replicated using the following flags: + +```bash +--config ../../app-config.yaml --config ../../app-config.development.yaml +``` diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 249fa9e72c..50880a1228 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -44,6 +44,7 @@ "knex": "^0.21.1", "lodash": "^4.17.15", "logform": "^2.1.1", + "minimist": "^1.2.5", "morgan": "^1.10.0", "node-fetch": "^2.6.0", "prom-client": "^12.0.0", @@ -63,6 +64,7 @@ "@backstage/cli": "^0.1.1-alpha.25", "@types/compression": "^1.7.0", "@types/http-errors": "^1.6.3", + "@types/minimist": "^1.2.0", "@types/morgan": "^1.9.0", "@types/node-fetch": "^2.5.7", "@types/stoppable": "^1.1.0", diff --git a/packages/backend-common/src/config.ts b/packages/backend-common/src/config.ts index c86793fc08..6223d3150b 100644 --- a/packages/backend-common/src/config.ts +++ b/packages/backend-common/src/config.ts @@ -14,24 +14,32 @@ * limitations under the License. */ +import { resolve as resolvePath } from 'path'; +import parseArgs from 'minimist'; +import { Logger } from 'winston'; import { findPaths } from '@backstage/cli-common'; import { Config, ConfigReader } from '@backstage/config'; import { loadConfig } from '@backstage/config-loader'; -import { Logger } from 'winston'; type Options = { logger: Logger; + // process.argv or any other overrides + argv: string[]; }; /** * Load configuration for a Backend */ export async function loadBackendConfig(options: Options): Promise { + const args = parseArgs(options.argv); + const configOpts: string[] = args.config ?? []; + /* eslint-disable-next-line no-restricted-syntax */ const paths = findPaths(__dirname); const configs = await loadConfig({ env: process.env.APP_ENV ?? process.env.NODE_ENV ?? 'development', - rootPaths: [paths.targetRoot, paths.targetDir], + configRoot: paths.targetRoot, + configPaths: configOpts.map(opt => resolvePath(opt)), shouldReadSecrets: true, }); diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index cbeaf4315c..b74954ecc5 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -64,7 +64,10 @@ function makeCreateEnv(config: Config) { } async function main() { - const config = await loadBackendConfig({ logger: getRootLogger() }); + const config = await loadBackendConfig({ + argv: process.argv, + logger: getRootLogger(), + }); const createEnv = makeCreateEnv(config); const healthcheckEnv = useHotMemoize(module, () => createEnv('healthcheck')); diff --git a/packages/cli/src/commands/app/build.ts b/packages/cli/src/commands/app/build.ts index 5a9d2cdf3a..c5f5f5aa2f 100644 --- a/packages/cli/src/commands/app/build.ts +++ b/packages/cli/src/commands/app/build.ts @@ -15,27 +15,15 @@ */ import { Command } from 'commander'; -import { loadConfig } from '@backstage/config-loader'; -import { ConfigReader } from '@backstage/config'; -import { paths } from '../../lib/paths'; import { buildBundle } from '../../lib/bundler'; import { parseParallel, PARALLEL_ENV_VAR } from '../../lib/parallel'; +import { loadCliConfig } from '../../lib/config'; export default async (cmd: Command) => { - const appConfigs = await loadConfig({ - env: process.env.APP_ENV ?? process.env.NODE_ENV ?? 'production', - rootPaths: [paths.targetRoot, paths.targetDir], - }); - - console.log( - `Loaded config from ${appConfigs.map(c => c.context).join(', ')}`, - ); - await buildBundle({ entry: 'src/index', parallel: parseParallel(process.env[PARALLEL_ENV_VAR]), statsJsonEnabled: cmd.stats, - config: ConfigReader.fromConfigs(appConfigs), - appConfigs, + ...(await loadCliConfig(cmd.config)), }); }; diff --git a/packages/cli/src/commands/app/serve.ts b/packages/cli/src/commands/app/serve.ts index 6524eb3acf..c3f58774b5 100644 --- a/packages/cli/src/commands/app/serve.ts +++ b/packages/cli/src/commands/app/serve.ts @@ -15,26 +15,14 @@ */ import { Command } from 'commander'; -import { loadConfig } from '@backstage/config-loader'; -import { ConfigReader } from '@backstage/config'; -import { paths } from '../../lib/paths'; import { serveBundle } from '../../lib/bundler'; +import { loadCliConfig } from '../../lib/config'; export default async (cmd: Command) => { - const appConfigs = await loadConfig({ - env: process.env.APP_ENV ?? process.env.NODE_ENV ?? 'development', - rootPaths: [paths.targetRoot, paths.targetDir], - }); - - console.log( - `Loaded config from ${appConfigs.map(c => c.context).join(', ')}`, - ); - const waitForExit = await serveBundle({ entry: 'src/index', checksEnabled: cmd.check, - config: ConfigReader.fromConfigs(appConfigs), - appConfigs, + ...(await loadCliConfig(cmd.config)), }); await waitForExit(); diff --git a/packages/cli/src/commands/backend/dev.ts b/packages/cli/src/commands/backend/dev.ts index d7b5ca2924..88c069a92b 100644 --- a/packages/cli/src/commands/backend/dev.ts +++ b/packages/cli/src/commands/backend/dev.ts @@ -14,28 +14,14 @@ * limitations under the License. */ -import { ConfigReader } from '@backstage/config'; -import { loadConfig } from '@backstage/config-loader'; import { Command } from 'commander'; -import { paths } from '../../lib/paths'; import { serveBackend } from '../../lib/bundler/backend'; export default async (cmd: Command) => { - const appConfigs = await loadConfig({ - env: process.env.APP_ENV ?? process.env.NODE_ENV ?? 'development', - rootPaths: [paths.targetRoot, paths.targetDir], - }); - - console.log( - `Loaded config from ${appConfigs.map(c => c.context).join(', ')}`, - ); - const waitForExit = await serveBackend({ entry: 'src/index', checksEnabled: cmd.check, inspectEnabled: cmd.inspect, - config: ConfigReader.fromConfigs(appConfigs), - appConfigs, }); await waitForExit(); diff --git a/packages/cli/src/commands/config/print.ts b/packages/cli/src/commands/config/print.ts index 693724e4d9..eb814a5bee 100644 --- a/packages/cli/src/commands/config/print.ts +++ b/packages/cli/src/commands/config/print.ts @@ -15,24 +15,13 @@ */ import { Command } from 'commander'; -import { loadConfig } from '@backstage/config-loader'; -import { ConfigReader } from '@backstage/config'; -import { paths } from '../../lib/paths'; import { stringify as stringifyYaml } from 'yaml'; +import { loadCliConfig } from '../../lib/config'; export default async (cmd: Command) => { - const appConfigs = await loadConfig({ - env: - cmd.env ?? process.env.APP_ENV ?? process.env.NODE_ENV ?? 'development', - shouldReadSecrets: cmd.withSecrets ?? false, - rootPaths: [paths.targetRoot, paths.targetDir], - }); + const { config } = await loadCliConfig(cmd.config, cmd.withSecrets ?? false); - console.log( - `Loaded config from ${appConfigs.map(c => c.context).join(', ')}`, - ); - - const flatConfig = ConfigReader.fromConfigs(appConfigs).get(); + const flatConfig = config.get(); if (cmd.format === 'json') { process.stdout.write(`${JSON.stringify(flatConfig, null, 2)}\n`); diff --git a/packages/cli/src/commands/index.ts b/packages/cli/src/commands/index.ts index e5017b829a..7f028919f7 100644 --- a/packages/cli/src/commands/index.ts +++ b/packages/cli/src/commands/index.ts @@ -18,16 +18,25 @@ import { CommanderStatic } from 'commander'; import { exitWithError } from '../lib/errors'; export function registerCommands(program: CommanderStatic) { + const configOption = [ + '--config ', + 'Config files to load instead of app-config.yaml', + (opt: string, opts: string[]) => [...opts, opt], + Array(), + ] as const; + program .command('app:build') .description('Build an app for a production release') .option('--stats', 'Write bundle stats to output directory') + .option(...configOption) .action(lazy(() => import('./app/build').then(m => m.default))); program .command('app:serve') .description('Serve an app for local development') .option('--check', 'Enable type checking and linting') + .option(...configOption) .action(lazy(() => import('./app/serve').then(m => m.default))); program @@ -50,6 +59,8 @@ export function registerCommands(program: CommanderStatic) { .description('Start local development server with HMR for the backend') .option('--check', 'Enable type checking and linting') .option('--inspect', 'Enable debugger') + // We don't actually use the config in the CLI, just pass them on to the NodeJS process + .option(...configOption) .action(lazy(() => import('./backend/dev').then(m => m.default))); program @@ -89,12 +100,14 @@ export function registerCommands(program: CommanderStatic) { .command('plugin:serve') .description('Serves the dev/ folder of a plugin') .option('--check', 'Enable type checking and linting') + .option(...configOption) .action(lazy(() => import('./plugin/serve').then(m => m.default))); program .command('plugin:export') .description('Exports the dev/ folder of a plugin') .option('--stats', 'Write bundle stats to output directory') + .option(...configOption) .action(lazy(() => import('./plugin/export').then(m => m.default))); program @@ -131,14 +144,11 @@ export function registerCommands(program: CommanderStatic) { program .command('config:print') .option('--with-secrets', 'Include secrets in the printed configuration') - .option( - '--env ', - 'The environment to print configuration for [APP_ENV or NODE_ENV or development]', - ) .option( '--format ', 'Format to print the configuration in, either json or yaml [yaml]', ) + .option(...configOption) .description('Print the app configuration for the current package') .action(lazy(() => import('./config/print').then(m => m.default))); diff --git a/packages/cli/src/commands/plugin/export.ts b/packages/cli/src/commands/plugin/export.ts index 39865f3d32..69955a2e5f 100644 --- a/packages/cli/src/commands/plugin/export.ts +++ b/packages/cli/src/commands/plugin/export.ts @@ -15,25 +15,13 @@ */ import { Command } from 'commander'; -import { loadConfig } from '@backstage/config-loader'; -import { ConfigReader } from '@backstage/config'; -import { paths } from '../../lib/paths'; import { buildBundle } from '../../lib/bundler'; +import { loadCliConfig } from '../../lib/config'; export default async (cmd: Command) => { - const appConfigs = await loadConfig({ - env: process.env.APP_ENV ?? process.env.NODE_ENV ?? 'production', - rootPaths: [paths.targetRoot, paths.targetDir], - }); - - console.log( - `Loaded config from ${appConfigs.map(c => c.context).join(', ')}`, - ); - await buildBundle({ entry: 'dev/index', statsJsonEnabled: cmd.stats, - config: ConfigReader.fromConfigs(appConfigs), - appConfigs, + ...(await loadCliConfig(cmd.config)), }); }; diff --git a/packages/cli/src/commands/plugin/serve.ts b/packages/cli/src/commands/plugin/serve.ts index 7c92c8f312..cb9def3158 100644 --- a/packages/cli/src/commands/plugin/serve.ts +++ b/packages/cli/src/commands/plugin/serve.ts @@ -15,26 +15,14 @@ */ import { Command } from 'commander'; -import { loadConfig } from '@backstage/config-loader'; -import { ConfigReader } from '@backstage/config'; -import { paths } from '../../lib/paths'; import { serveBundle } from '../../lib/bundler'; +import { loadCliConfig } from '../../lib/config'; export default async (cmd: Command) => { - const appConfigs = await loadConfig({ - env: process.env.APP_ENV ?? process.env.NODE_ENV ?? 'development', - rootPaths: [paths.targetRoot, paths.targetDir], - }); - - console.log( - `Loaded config from ${appConfigs.map(c => c.context).join(', ')}`, - ); - const waitForExit = await serveBundle({ entry: 'dev/index', checksEnabled: cmd.check, - config: ConfigReader.fromConfigs(appConfigs), - appConfigs, + ...(await loadCliConfig(cmd.config)), }); await waitForExit(); diff --git a/packages/cli/src/lib/bundler/backend.ts b/packages/cli/src/lib/bundler/backend.ts index e3cc8af8d1..9633c1b963 100644 --- a/packages/cli/src/lib/bundler/backend.ts +++ b/packages/cli/src/lib/bundler/backend.ts @@ -17,13 +17,9 @@ import webpack from 'webpack'; import { createBackendConfig } from './config'; import { resolveBundlingPaths } from './paths'; -import { ServeOptions } from './types'; +import { BackendServeOptions } from './types'; -export async function serveBackend( - options: ServeOptions & { - inspectEnabled: boolean; - }, -) { +export async function serveBackend(options: BackendServeOptions) { const paths = resolveBundlingPaths(options); const config = await createBackendConfig(paths, { ...options, diff --git a/packages/cli/src/lib/bundler/types.ts b/packages/cli/src/lib/bundler/types.ts index 827d517fef..00f1895725 100644 --- a/packages/cli/src/lib/bundler/types.ts +++ b/packages/cli/src/lib/bundler/types.ts @@ -27,10 +27,6 @@ export type BundlingOptions = { parallel?: ParallelOption; }; -export type BackendBundlingOptions = Omit & { - inspectEnabled: boolean; -}; - export type ServeOptions = BundlingPathsOptions & { checksEnabled: boolean; config: Config; @@ -43,3 +39,15 @@ export type BuildOptions = BundlingPathsOptions & { config: Config; appConfigs: AppConfig[]; }; + +export type BackendBundlingOptions = { + checksEnabled: boolean; + isDev: boolean; + parallel?: ParallelOption; + inspectEnabled: boolean; +}; + +export type BackendServeOptions = BundlingPathsOptions & { + checksEnabled: boolean; + inspectEnabled: boolean; +}; diff --git a/packages/cli/src/lib/config.ts b/packages/cli/src/lib/config.ts new file mode 100644 index 0000000000..5801632ea5 --- /dev/null +++ b/packages/cli/src/lib/config.ts @@ -0,0 +1,42 @@ +/* + * 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 { loadConfig } from '@backstage/config-loader'; +import { ConfigReader } from '@backstage/config'; +import { paths } from './paths'; + +export async function loadCliConfig( + configArgs: string[], + shouldReadSecrets: boolean = false, +) { + const configPaths = configArgs.map(arg => paths.resolveTarget(arg)); + + const appConfigs = await loadConfig({ + shouldReadSecrets, + env: process.env.APP_ENV ?? process.env.NODE_ENV ?? 'production', + configRoot: paths.targetRoot, + configPaths, + }); + + console.log( + `Loaded config from ${appConfigs.map(c => c.context).join(', ')}`, + ); + + return { + appConfigs, + config: ConfigReader.fromConfigs(appConfigs), + }; +} diff --git a/packages/config-loader/src/lib/index.ts b/packages/config-loader/src/lib/index.ts index 40252b9cec..1b5ad2ef50 100644 --- a/packages/config-loader/src/lib/index.ts +++ b/packages/config-loader/src/lib/index.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -export { resolveStaticConfig } from './resolver'; export { readConfigFile } from './reader'; export { readEnvConfig } from './env'; export { readSecret } from './secrets'; diff --git a/packages/config-loader/src/lib/resolver.test.ts b/packages/config-loader/src/lib/resolver.test.ts deleted file mode 100644 index 9fd71f2486..0000000000 --- a/packages/config-loader/src/lib/resolver.test.ts +++ /dev/null @@ -1,119 +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 mockFs from 'mock-fs'; -import { resolveStaticConfig } from './resolver'; - -function normalizePaths(paths: string[]) { - return paths.map(p => - p - .replace(/^[a-z]:/i, '') - .split('\\') - .join('/'), - ); -} - -describe('resolveStaticConfig', () => { - afterEach(() => { - mockFs.restore(); - }); - - it('should resolve no files for empty roots', async () => { - mockFs({}); - const resolved = await resolveStaticConfig({ - env: 'development', - rootPaths: [], - }); - - expect(normalizePaths(resolved)).toEqual([]); - }); - - it('should resolve a single app-config', async () => { - mockFs({ '/repo/app-config.yaml': '' }); - const resolved = await resolveStaticConfig({ - env: 'development', - rootPaths: ['/repo'], - }); - - expect(normalizePaths(resolved)).toEqual(['/repo/app-config.yaml']); - }); - - it('should resolve a app-configs in different directories', async () => { - mockFs({ - '/repo/app-config.yaml': '', - '/repo/packages/a/app-config.yaml': '', - }); - const resolved = await resolveStaticConfig({ - env: 'development', - rootPaths: [ - '/repo', - '/other-repo', - '/repo/packages/a', - '/repo/packages/b', - ], - }); - - expect(normalizePaths(resolved)).toEqual([ - '/repo/app-config.yaml', - '/repo/packages/a/app-config.yaml', - ]); - }); - - it('should resolve env and local configs', async () => { - mockFs({ - '/repo/app-config.yaml': '', - '/repo/app-config.local.yaml': '', - '/repo/app-config.production.yaml': '', - '/repo/app-config.production.local.yaml': '', - '/repo/app-config.development.local.yaml': '', - '/repo/packages/a/app-config.development.yaml': '', - '/repo/packages/a/app-config.local.yaml': '', - }); - const resolved = await resolveStaticConfig({ - env: 'development', - rootPaths: ['/repo', '/repo/packages/a'], - }); - - expect(normalizePaths(resolved)).toEqual([ - '/repo/app-config.yaml', - '/repo/app-config.local.yaml', - '/repo/app-config.development.local.yaml', - '/repo/packages/a/app-config.local.yaml', - '/repo/packages/a/app-config.development.yaml', - ]); - }); - - it('resolves suffixed configs in the correct order', async () => { - mockFs({ - '/repo/app-config.yaml': '', - '/repo/app-config.local.yaml': '', - '/repo/app-config.production.yaml': '', - '/repo/app-config.production.local.yaml': '', - }); - - const resolved = await resolveStaticConfig({ - env: 'production', - rootPaths: ['/repo'], - }); - - expect(normalizePaths(resolved)).toEqual([ - '/repo/app-config.yaml', - '/repo/app-config.local.yaml', - '/repo/app-config.production.yaml', - '/repo/app-config.production.local.yaml', - ]); - }); -}); diff --git a/packages/config-loader/src/lib/resolver.ts b/packages/config-loader/src/lib/resolver.ts deleted file mode 100644 index 3856598331..0000000000 --- a/packages/config-loader/src/lib/resolver.ts +++ /dev/null @@ -1,59 +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 { resolve as resolvePath } from 'path'; -import { pathExists } from 'fs-extra'; - -type ResolveOptions = { - // Root paths to search for config files. Config from earlier paths has lower priority. - rootPaths: string[]; - // The environment that we're loading config for, e.g. 'development', 'production'. - env: string; -}; - -/** - * Resolves all configuration files that should be loaded in the given environment. - * - * For each root directory, search for the default app-config.yaml, along with suffixed - * APP_ENV and local variants, e.g. app-config.production.yaml or app-config.development.local.yaml - * - * The priority order of config loaded through suffixes is `env > local > none`, meaning that - * for example app-config.development.yaml has higher priority than `app-config.local.yaml`. - * - */ -export async function resolveStaticConfig( - options: ResolveOptions, -): Promise { - const filePaths = [ - `app-config.yaml`, - `app-config.local.yaml`, - `app-config.${options.env}.yaml`, - `app-config.${options.env}.local.yaml`, - ]; - - const resolvedPaths = []; - - for (const rootPath of options.rootPaths) { - for (const filePath of filePaths) { - const path = resolvePath(rootPath, filePath); - if (await pathExists(path)) { - resolvedPaths.push(path); - } - } - } - - return resolvedPaths; -} diff --git a/packages/config-loader/src/loader.test.ts b/packages/config-loader/src/loader.test.ts index 087e2309c0..3b0d8e6e92 100644 --- a/packages/config-loader/src/loader.test.ts +++ b/packages/config-loader/src/loader.test.ts @@ -38,10 +38,31 @@ describe('loadConfig', () => { mockFs.restore(); }); + it('load config from default path', async () => { + await expect( + loadConfig({ + configRoot: '/root', + configPaths: [], + env: 'production', + shouldReadSecrets: false, + }), + ).resolves.toEqual([ + { + context: 'app-config.yaml', + data: { + app: { + title: 'Example App', + }, + }, + }, + ]); + }); + it('loads config without secrets', async () => { await expect( loadConfig({ - rootPaths: ['/root'], + configRoot: '/root', + configPaths: ['/root/app-config.yaml'], env: 'production', shouldReadSecrets: false, }), @@ -60,7 +81,8 @@ describe('loadConfig', () => { it('loads config with secrets', async () => { await expect( loadConfig({ - rootPaths: ['/root'], + configRoot: '/root', + configPaths: ['/root/app-config.yaml'], env: 'production', shouldReadSecrets: true, }), @@ -80,7 +102,11 @@ describe('loadConfig', () => { it('loads development config without secrets', async () => { await expect( loadConfig({ - rootPaths: ['/root'], + configRoot: '/root', + configPaths: [ + '/root/app-config.yaml', + '/root/app-config.development.yaml', + ], env: 'development', shouldReadSecrets: false, }), @@ -105,7 +131,11 @@ describe('loadConfig', () => { it('loads development config with secrets', async () => { await expect( loadConfig({ - rootPaths: ['/root'], + configRoot: '/root', + configPaths: [ + '/root/app-config.yaml', + '/root/app-config.development.yaml', + ], env: 'development', shouldReadSecrets: true, }), diff --git a/packages/config-loader/src/loader.ts b/packages/config-loader/src/loader.ts index cf5edd3ce3..e7eb2a38fa 100644 --- a/packages/config-loader/src/loader.ts +++ b/packages/config-loader/src/loader.ts @@ -15,20 +15,18 @@ */ import fs from 'fs-extra'; -import { resolve as resolvePath, dirname } from 'path'; +import { resolve as resolvePath, dirname, isAbsolute } from 'path'; import { AppConfig, JsonObject } from '@backstage/config'; -import { - resolveStaticConfig, - readConfigFile, - readEnvConfig, - readSecret, -} from './lib'; +import { readConfigFile, readEnvConfig, readSecret } from './lib'; export type LoadConfigOptions = { - // Root paths to search for config files. Config from earlier paths has lower priority. - rootPaths: string[]; + // The root directory of the config loading context. Used to find default configs. + configRoot: string; - // The environment that we're loading config for, e.g. 'development', 'production'. + // Absolute paths to load config files from. Configs from earlier paths have lower priority. + configPaths: string[]; + + // TODO(Rugvip): This will be removed in the future, but for now we use it to warn about possible mistakes. env: string; // Whether to read secrets or omit them, defaults to false. @@ -77,13 +75,37 @@ export async function loadConfig( options: LoadConfigOptions, ): Promise { const configs = []; + const { configRoot } = options; + const configPaths = options.configPaths.slice(); - const configPaths = await resolveStaticConfig(options); + // If no paths are provided, we default to reading + // `app-config.yaml` and, if it exists, `app-config.local.yaml` + if (configPaths.length === 0) { + configPaths.push(resolvePath(configRoot, 'app-config.yaml')); + + const localConfig = resolvePath(configRoot, 'app-config.local.yaml'); + if (await fs.pathExists(localConfig)) { + configPaths.push(localConfig); + } + + const envFile = `app-config.${options.env}.yaml`; + if (await fs.pathExists(resolvePath(configRoot, envFile))) { + console.error( + `Env config file '${envFile}' is not loaded as APP_ENV and NODE_ENV-based config loading has been removed`, + ); + console.error( + `To load the config file, use --config , listing every config file that you want to load`, + ); + } + } try { const secretPaths = new Set(); for (const configPath of configPaths) { + if (!isAbsolute(configPath)) { + throw new Error(`Config load path is not absolute: '${configPath}'`); + } const config = await readConfigFile( configPath, new Context({ diff --git a/packages/create-app/templates/default-app/packages/backend/src/index.ts b/packages/create-app/templates/default-app/packages/backend/src/index.ts index 18b6cfa647..e5cfc31576 100644 --- a/packages/create-app/templates/default-app/packages/backend/src/index.ts +++ b/packages/create-app/templates/default-app/packages/backend/src/index.ts @@ -42,7 +42,7 @@ function makeCreateEnv(config: Config) { } async function main() { - const config = await loadBackendConfig({logger: getRootLogger()}); + const config = await loadBackendConfig({logger: getRootLogger(), configPaths: []}); const createEnv = makeCreateEnv(config); const catalogEnv = useHotMemoize(module, () => createEnv('catalog')); diff --git a/plugins/auth-backend/src/service/standaloneServer.ts b/plugins/auth-backend/src/service/standaloneServer.ts index a3c64c6e8e..a4f2377507 100644 --- a/plugins/auth-backend/src/service/standaloneServer.ts +++ b/plugins/auth-backend/src/service/standaloneServer.ts @@ -33,7 +33,7 @@ export async function startStandaloneServer( options: ServerOptions, ): Promise { const logger = options.logger.child({ service: 'auth-backend' }); - const config = await loadBackendConfig({ logger }); + const config = await loadBackendConfig({ logger, argv: process.argv }); const discovery = SingleHostDiscovery.fromConfig(config); const database = useHotMemoize(module, () => { diff --git a/plugins/catalog-backend/src/service/standaloneServer.ts b/plugins/catalog-backend/src/service/standaloneServer.ts index 23f9795036..73a33c8c8e 100644 --- a/plugins/catalog-backend/src/service/standaloneServer.ts +++ b/plugins/catalog-backend/src/service/standaloneServer.ts @@ -36,7 +36,7 @@ export async function startStandaloneServer( options: ServerOptions, ): Promise { const logger = options.logger.child({ service: 'catalog-backend' }); - const config = await loadBackendConfig({ logger }); + const config = await loadBackendConfig({ logger, argv: process.argv }); const reader = UrlReaders.default({ logger, config }); const db = useHotMemoize(module, () => DatabaseManager.createInMemoryDatabaseConnection(), diff --git a/plugins/proxy-backend/src/service/router.test.ts b/plugins/proxy-backend/src/service/router.test.ts index 42e723e54a..77db35c917 100644 --- a/plugins/proxy-backend/src/service/router.test.ts +++ b/plugins/proxy-backend/src/service/router.test.ts @@ -41,7 +41,7 @@ const mockCreateProxyMiddleware = createProxyMiddleware as jest.MockedFunction< describe('createRouter', () => { it('works', async () => { const logger = winston.createLogger(); - const config = await loadBackendConfig({ logger }); + const config = await loadBackendConfig({ logger, argv: [] }); const discovery = SingleHostDiscovery.fromConfig(config); const router = await createRouter({ config, diff --git a/plugins/proxy-backend/src/service/standaloneServer.ts b/plugins/proxy-backend/src/service/standaloneServer.ts index 160ed1db86..c64d69e2a4 100644 --- a/plugins/proxy-backend/src/service/standaloneServer.ts +++ b/plugins/proxy-backend/src/service/standaloneServer.ts @@ -36,7 +36,7 @@ export async function startStandaloneServer( logger.debug('Creating application...'); - const config = await loadBackendConfig({ logger }); + const config = await loadBackendConfig({ logger, argv: process.argv }); const discovery = SingleHostDiscovery.fromConfig(config); const router = await createRouter({ config, diff --git a/plugins/rollbar-backend/src/service/standaloneServer.ts b/plugins/rollbar-backend/src/service/standaloneServer.ts index 1be2599724..b30bf6fc6b 100644 --- a/plugins/rollbar-backend/src/service/standaloneServer.ts +++ b/plugins/rollbar-backend/src/service/standaloneServer.ts @@ -32,7 +32,7 @@ export async function startStandaloneServer( options: ServerOptions, ): Promise { const logger = options.logger.child({ service: 'rollbar-backend' }); - const config = await loadBackendConfig({ logger }); + const config = await loadBackendConfig({ logger, argv: process.argv }); logger.debug('Creating application...'); diff --git a/plugins/techdocs-backend/src/default-branch.ts b/plugins/techdocs-backend/src/default-branch.ts index e9164c5175..52b8b008f9 100644 --- a/plugins/techdocs-backend/src/default-branch.ts +++ b/plugins/techdocs-backend/src/default-branch.ts @@ -231,7 +231,10 @@ export const getDefaultBranch = async ( repositoryUrl: string, ): Promise => { // TODO(Rugvip): Config should not be loaded here, pass it in instead - const config = await loadBackendConfig({ logger: getRootLogger() }); + const config = await loadBackendConfig({ + logger: getRootLogger(), + argv: process.argv, + }); const type = getGitRepoType(repositoryUrl); try { diff --git a/yarn.lock b/yarn.lock index 0c7c8635c2..144b3c6827 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5351,6 +5351,11 @@ resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== +"@types/minimist@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" + integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= + "@types/minipass@*": version "2.2.0" resolved "https://registry.npmjs.org/@types/minipass/-/minipass-2.2.0.tgz#51ad404e8eb1fa961f75ec61205796807b6f9651" From fac3026699d2c7cad649456faa04a0146daa2623 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 21 Oct 2020 10:31:02 +0200 Subject: [PATCH 255/323] create-app: prettier backend + fix loadBackendConfig arg --- .../default-app/packages/backend/src/index.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/create-app/templates/default-app/packages/backend/src/index.ts b/packages/create-app/templates/default-app/packages/backend/src/index.ts index e5cfc31576..51de1ad6b3 100644 --- a/packages/create-app/templates/default-app/packages/backend/src/index.ts +++ b/packages/create-app/templates/default-app/packages/backend/src/index.ts @@ -42,7 +42,10 @@ function makeCreateEnv(config: Config) { } async function main() { - const config = await loadBackendConfig({logger: getRootLogger(), configPaths: []}); + const config = await loadBackendConfig({ + argv: process.argv, + logger: getRootLogger(), + }); const createEnv = makeCreateEnv(config); const catalogEnv = useHotMemoize(module, () => createEnv('catalog')); @@ -52,16 +55,16 @@ async function main() { const techdocsEnv = useHotMemoize(module, () => createEnv('techdocs')); const apiRouter = Router(); - apiRouter.use('/catalog', await catalog(catalogEnv)) - apiRouter.use('/scaffolder', await scaffolder(scaffolderEnv)) - apiRouter.use('/auth', await auth(authEnv)) - apiRouter.use('/techdocs', await techdocs(techdocsEnv)) - apiRouter.use('/proxy', await proxy(proxyEnv)) + apiRouter.use('/catalog', await catalog(catalogEnv)); + apiRouter.use('/scaffolder', await scaffolder(scaffolderEnv)); + apiRouter.use('/auth', await auth(authEnv)); + apiRouter.use('/techdocs', await techdocs(techdocsEnv)); + apiRouter.use('/proxy', await proxy(proxyEnv)); apiRouter.use(notFoundHandler()); const service = createServiceBuilder(module) .loadConfig(config) - .addRouter('/api', apiRouter) + .addRouter('/api', apiRouter); await service.start().catch(err => { console.log(err); From 4a6a5149df1db7918694fc5c2dd46b5a0cae29f1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 21 Oct 2020 10:49:41 +0200 Subject: [PATCH 256/323] backend-common: fix for args.config not always being an array --- packages/backend-common/src/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend-common/src/config.ts b/packages/backend-common/src/config.ts index 6223d3150b..69e46bd5b4 100644 --- a/packages/backend-common/src/config.ts +++ b/packages/backend-common/src/config.ts @@ -32,7 +32,7 @@ type Options = { */ export async function loadBackendConfig(options: Options): Promise { const args = parseArgs(options.argv); - const configOpts: string[] = args.config ?? []; + const configOpts: string[] = [args.config ?? []].flat(); /* eslint-disable-next-line no-restricted-syntax */ const paths = findPaths(__dirname); From 4ab6f559dd27717a9a05b1f412888b98e904c8fd Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 21 Oct 2020 21:04:57 +0200 Subject: [PATCH 257/323] app-config: merged dev config back into main config --- app-config.development.yaml | 13 ------------- app-config.yaml | 8 ++++++-- .../default-app/app-config.development.yaml | 13 ------------- .../templates/default-app/app-config.yaml.hbs | 8 ++++++-- 4 files changed, 12 insertions(+), 30 deletions(-) delete mode 100644 app-config.development.yaml delete mode 100644 packages/create-app/templates/default-app/app-config.development.yaml diff --git a/app-config.development.yaml b/app-config.development.yaml deleted file mode 100644 index 817847c6d6..0000000000 --- a/app-config.development.yaml +++ /dev/null @@ -1,13 +0,0 @@ -app: - baseUrl: http://localhost:3000 - -backend: - baseUrl: http://localhost:7000 - listen: - port: 7000 - cors: - origin: http://localhost:3000 - methods: [GET, POST, PUT, DELETE] - credentials: true - csp: - connect-src: ["'self'", 'http:', 'https:'] diff --git a/app-config.yaml b/app-config.yaml index 6e49e765cd..05bf39b5b3 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -1,6 +1,6 @@ app: title: Backstage Example App - baseUrl: http://localhost:7000 + baseUrl: http://localhost:3000 googleAnalyticsTrackingId: # UA-000000-0 backend: @@ -10,8 +10,12 @@ backend: database: client: sqlite3 connection: ':memory:' + cors: + origin: http://localhost:3000 + methods: [GET, POST, PUT, DELETE] + credentials: true csp: - connect-src: ["'self'", 'https:'] + connect-src: ["'self'", 'http:', 'https:'] # See README.md in the proxy-backend plugin for information on the configuration format proxy: diff --git a/packages/create-app/templates/default-app/app-config.development.yaml b/packages/create-app/templates/default-app/app-config.development.yaml deleted file mode 100644 index 817847c6d6..0000000000 --- a/packages/create-app/templates/default-app/app-config.development.yaml +++ /dev/null @@ -1,13 +0,0 @@ -app: - baseUrl: http://localhost:3000 - -backend: - baseUrl: http://localhost:7000 - listen: - port: 7000 - cors: - origin: http://localhost:3000 - methods: [GET, POST, PUT, DELETE] - credentials: true - csp: - connect-src: ["'self'", 'http:', 'https:'] diff --git a/packages/create-app/templates/default-app/app-config.yaml.hbs b/packages/create-app/templates/default-app/app-config.yaml.hbs index b92cdf22bd..a0b9f156ed 100644 --- a/packages/create-app/templates/default-app/app-config.yaml.hbs +++ b/packages/create-app/templates/default-app/app-config.yaml.hbs @@ -1,6 +1,6 @@ app: title: Scaffolded Backstage App - baseUrl: http://localhost:7000 + baseUrl: http://localhost:3000 organization: name: My Company @@ -10,7 +10,11 @@ backend: listen: port: 7000 csp: - connect-src: ["'self'", 'https:'] + connect-src: ["'self'", 'http:', 'https:'] + cors: + origin: http://localhost:3000 + methods: [GET, POST, PUT, DELETE] + credentials: true {{#if dbTypeSqlite}} database: client: sqlite3 From 87a6e78d0350b2b49b7e6882b1fb5233856e1ad3 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 21 Oct 2020 22:02:51 +0200 Subject: [PATCH 258/323] CHANGELOG: bump to alpha.25 and add entry for new --config flags --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bcce2966f..f445c189f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,16 @@ If you encounter issues while upgrading to a newer version, don't hesitate to re ## Next Release +### @backstage/cli + +- Configuration files are no longer selected through `APP_ENV` or `NODE_ENV`. The default configuration files are `app-config.yaml` and, fix it exists, `app-config.local.yaml` in the repo root. To load a different set of files, use `--config ` arguments. + +### @backstage/backend-common + +- Configuration files are no longer selected through `APP_ENV` or `NODE_ENV`. The default configuration files are `app-config.yaml` and, fix it exists, `app-config.local.yaml` in the repo root. To load a different set of files, use `--config ` arguments. + +## v0.1.1-alpha.25 + > Collect changes for the next release below ### @backstage/cli From c2ea3cd26aa826b034bf91ffdac31206b4f93cb1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 22 Oct 2020 10:08:37 +0200 Subject: [PATCH 259/323] docs: updated to reflect new --config flags --- docs/conf/index.md | 10 +++--- docs/conf/writing.md | 36 +++++++++++-------- docs/support/project-structure.md | 3 -- .../examples/dice-roller/README.md | 4 +-- 4 files changed, 29 insertions(+), 24 deletions(-) diff --git a/docs/conf/index.md b/docs/conf/index.md index e1dfc30582..2c3ee06ba6 100644 --- a/docs/conf/index.md +++ b/docs/conf/index.md @@ -15,11 +15,11 @@ allowing for customization. ## Supplying Configuration -Configuration is stored in `app-config.yaml` files, with support for suffixes -such as `app-config.production.yaml` to override values for specific -environments. The configuration files themselves contain plain YAML, but with -support for loading in secrets from various sources using for example `$env` and -`$file` keys. +Configuration is stored in YAML files where the defaults are `app-config.yaml` +and `app-config.local.yaml` for local overrides. Other sets of files can by +loaded by passing `--config ` flags. The configuration files themselves +contain plain YAML, but with support for loading in secrets from various sources +using for example `$env` and `$file` keys. It is also possible to supply configuration through environment variables, for example `APP_CONFIG_app_baseUrl=https://staging.example.com`. However these diff --git a/docs/conf/writing.md b/docs/conf/writing.md index bb4d0beb75..06d4b52f3f 100644 --- a/docs/conf/writing.md +++ b/docs/conf/writing.md @@ -55,20 +55,28 @@ picked up by the serve tasks of `@backstage/cli` for local development, and are injected by the entrypoint of the nginx container serving the frontend in a production build. -## File Resolution +## Configuration Files It is possible to have multiple configuration files, both to support different environments, but also to define configuration that is local to specific -packages. +packages. The configuration files to load are selected using a `--config ` +flag, and it is possible to load any number of files. Paths are relative to the +working directory of the executed process, for example `package/backend`. This +means that to select a config file in the repo root when running the backend, +you would use `--config ../../my-config.yaml`. -All `app-config.yaml` files inside the monorepo root and package root are -considered, as are files with additional `local` and environment affixes such as -`development`, for example `app-config.local.yaml`, -`app-config.production.yaml`, and `app-config.development.local.yaml`. Which -environment config files are loaded is determined by the `APP_ENV` environment -variable, or `NODE_ENV` if it is not set. Local configuration files are always -loaded, but are meant for local development overrides and should typically be -`.gitignore`'d. +If no `config` flags are specified, the default behavior is to load +`app-config.yaml` and, if it exists, `app-config.local.yaml` from the repo root. +In the provided project setup, `app-config.local.yaml` is `.gitignore`'d, making +it a good place to add config overrides and secrets for local development. + +Note that if any config flags are provided, the default `app-config.yaml` files +are NOT loaded. To include them you need to explicitly include them with a flag, +for example: + +``` +yarn start --config ../../app-config.yaml --config ../../app-config.staging.yaml +``` All loaded configuration files are merged together using the following rules: @@ -84,10 +92,10 @@ order: - Configuration from the `APP_CONFIG_` environment variables has the highest priority, followed by files. -- Files inside package directories have higher priority than those in the root - directory. -- Files with environment affixes have higher priority than ones without. -- Files with the `local` affix have higher priority than ones without. +- Files loaded with config flags are ordered by priority, where the last flag + has the highest priority. +- If no config flags are provided, `app-config.local.yaml` has higher priority + than `app-config.yaml`. ## Secrets diff --git a/docs/support/project-structure.md b/docs/support/project-structure.md index 277ca3929f..987d6a8ff3 100644 --- a/docs/support/project-structure.md +++ b/docs/support/project-structure.md @@ -228,9 +228,6 @@ future. - [`app-config.yaml`](https://github.com/spotify/backstage/tree/master/app-config.yaml) - Configuration for the app, both frontend and backend -- [`app-config.development.yaml`](https://github.com/spotify/backstage/tree/master/app-config.development.yaml) - - Used for overriding configuration when developing locally. - - [`catalog-info.yaml`](https://github.com/spotify/backstage/tree/master/catalog-info.yaml) - Description of Backstage in the Backstage Entity format. diff --git a/plugins/kubernetes-backend/examples/dice-roller/README.md b/plugins/kubernetes-backend/examples/dice-roller/README.md index 774867de04..bf3e7d261a 100644 --- a/plugins/kubernetes-backend/examples/dice-roller/README.md +++ b/plugins/kubernetes-backend/examples/dice-roller/README.md @@ -23,7 +23,7 @@ This can be used to run the kubernetes plugin locally against a mock service. 6. Register existing component in Backstage - https://github.com/mclarke47/dice-roller/blob/master/catalog-info.yaml -Update `app-config.development.yaml` as follows. +Add or update `app-config.local.yaml` with the following: ```yaml kubernetes: @@ -45,4 +45,4 @@ Mac copy to clipboard: kubectl get secret $(kubectl get sa dice-roller -o=json | jq -r .secrets[0].name) -o=json | jq -r '.data["token"]' | base64 --decode | pbcopy ``` -Paste into `app-config.development.yaml` `kubernetes.clusters[0].serviceAccountToken` +Paste into `app-config.local.yaml` `kubernetes.clusters[0].serviceAccountToken` From 3dec8022d23409877f5f0f51402562949237908e Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 22 Oct 2020 10:50:41 +0200 Subject: [PATCH 260/323] contrib/kubernetes: update plain example to load config with args --- .../plain_single_backend_deplyoment/deployment.yaml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/contrib/kubernetes/plain_single_backend_deplyoment/deployment.yaml b/contrib/kubernetes/plain_single_backend_deplyoment/deployment.yaml index 87dee94895..a20c47229d 100644 --- a/contrib/kubernetes/plain_single_backend_deplyoment/deployment.yaml +++ b/contrib/kubernetes/plain_single_backend_deplyoment/deployment.yaml @@ -28,6 +28,9 @@ spec: image: example-backend:latest imagePullPolicy: Never + command: [node, packages/backend] + args: [--config, app-config.yaml, --config, k8s-config.yaml] + env: # We set this to development to make the backend start with incomplete configuration. In a production # deployment you will want to make sure that you have a full configuration, and remove any plugins that @@ -35,10 +38,6 @@ spec: - name: NODE_ENV value: development - # This makes us load in `app-config.production.yaml` if there is one. - - name: APP_ENV - value: production - # This makes it possible for the app to reach the backend when serving through `kubectl proxy` # If you expose the service using for example an ingress controller, you should # switch this out or remove it. @@ -54,8 +53,8 @@ spec: volumeMounts: - name: config-volume - mountPath: /usr/src/app/app-config.local.yaml - subPath: app-config.local.yaml + mountPath: /usr/src/app/k8s-config.yaml + subPath: k8s-config.yaml resources: limits: @@ -77,7 +76,7 @@ spec: name: backstage-config items: - key: app-config - path: app-config.local.yaml + path: k8s-config.yaml --- apiVersion: v1 kind: ConfigMap From 0a7123c7d6347786fa571c584f80036277e7e539 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 22 Oct 2020 10:58:13 +0200 Subject: [PATCH 261/323] fix(catalog): make the About card links use react-router properly --- .../catalog/src/components/AboutCard/AboutCard.tsx | 4 +--- .../AboutCard/IconLinkVertical/IconLinkVertical.tsx | 13 ++++++++++++- plugins/catalog/src/components/Router.tsx | 6 +++--- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/plugins/catalog/src/components/AboutCard/AboutCard.tsx b/plugins/catalog/src/components/AboutCard/AboutCard.tsx index 3214ea3385..821778d3d8 100644 --- a/plugins/catalog/src/components/AboutCard/AboutCard.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutCard.tsx @@ -125,9 +125,7 @@ export function AboutCard({ entity, variant }: AboutCardProps) { disabled={!entity.spec?.implementsApis} label="View API" icon={} - href={`./${ - entity.metadata.namespace || ENTITY_DEFAULT_NAMESPACE - }:${entity.metadata.name}/api`} + href="api" /> } diff --git a/plugins/catalog/src/components/AboutCard/IconLinkVertical/IconLinkVertical.tsx b/plugins/catalog/src/components/AboutCard/IconLinkVertical/IconLinkVertical.tsx index 580dcff0f5..c054bc0d4e 100644 --- a/plugins/catalog/src/components/AboutCard/IconLinkVertical/IconLinkVertical.tsx +++ b/plugins/catalog/src/components/AboutCard/IconLinkVertical/IconLinkVertical.tsx @@ -17,6 +17,7 @@ import * as React from 'react'; import classnames from 'classnames'; import { makeStyles, Link } from '@material-ui/core'; import LinkIcon from '@material-ui/icons/Link'; +import { Link as RouterLink } from 'react-router-dom'; export type IconLinkVerticalProps = { icon?: React.ReactNode; @@ -64,8 +65,18 @@ export function IconLinkVertical({ ); } + // Absolute links should not be using RouterLink + if (href?.startsWith('//') || href?.includes('://')) { + return ( + + {icon} + {props.label} + + ); + } + return ( - + {icon} {props.label} diff --git a/plugins/catalog/src/components/Router.tsx b/plugins/catalog/src/components/Router.tsx index c6e706c15b..0a002ba907 100644 --- a/plugins/catalog/src/components/Router.tsx +++ b/plugins/catalog/src/components/Router.tsx @@ -31,7 +31,7 @@ const DefaultEntityPage = () => ( title="Overview" element={ - This is default entity page. + This is the default entity page. To override this component with your custom implementation, read docs on{' '} @@ -62,9 +62,9 @@ export const Router = ({ EntityPage?: ComponentType; }) => ( - } /> + } /> From d001f6e32e51057d0a2f23ca408a2b5a736fe4a6 Mon Sep 17 00:00:00 2001 From: canut Date: Thu, 22 Oct 2020 11:10:04 +0200 Subject: [PATCH 262/323] TechDocs: verify checksum of PlantUML after downloads (#3029) --- packages/techdocs-container/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/techdocs-container/Dockerfile b/packages/techdocs-container/Dockerfile index b34fcbd861..49f7940d32 100644 --- a/packages/techdocs-container/Dockerfile +++ b/packages/techdocs-container/Dockerfile @@ -17,7 +17,7 @@ FROM python:3.8-alpine RUN apk update && apk --no-cache add gcc musl-dev openjdk11-jdk curl graphviz ttf-dejavu fontconfig -RUN curl -L http://sourceforge.net/projects/plantuml/files/plantuml.1.2020.16.jar/download > /opt/plantuml.jar +RUN curl -o plantuml.jar -L http://sourceforge.net/projects/plantuml/files/plantuml.1.2020.16.jar/download && echo "c789ace48347c43073232b1458badc5810c01fe8 plantuml.jar" | sha1sum -c - && mv plantuml.jar /opt/plantuml.jar RUN pip install --upgrade pip && pip install mkdocs-techdocs-core==0.0.8 # Create script to call plantuml.jar from a location in path From 0e8530b5fc835f6676c9e192712425383631c0cf Mon Sep 17 00:00:00 2001 From: Marek Calus Date: Thu, 22 Oct 2020 11:30:44 +0200 Subject: [PATCH 263/323] Fix type error --- plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts index 8da65dbd85..b1f4e40524 100644 --- a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts +++ b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts @@ -79,7 +79,7 @@ export class HigherOrderOperations implements HigherOrderOperation { // Read the location fully, bailing on any errors const readerOutput = await this.locationReader.read(spec); - if (!spec.pendingLocation && readerOutput.errors.length) { + if (!(spec.presence === 'optional') && readerOutput.errors.length) { const item = readerOutput.errors[0]; throw new InputError( `Failed to read location ${item.location.type}:${item.location.target}, ${item.error}`, From dab96d0c689f563af25e068b20e04bbcac4a3b9f Mon Sep 17 00:00:00 2001 From: Eric Nilsson Date: Thu, 22 Oct 2020 12:18:25 +0200 Subject: [PATCH 264/323] Made validation messages more descriptive --- .../policies/FieldFormatEntityPolicy.ts | 32 ++++++++++++++++++- .../src/ingestion/HigherOrderOperations.ts | 5 +-- .../src/ingestion/LocationReaders.ts | 4 +-- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.ts b/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.ts index 20a3724079..724de8271d 100644 --- a/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.ts +++ b/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.ts @@ -50,7 +50,37 @@ export class FieldFormatEntityPolicy implements EntityPolicy { } if (!isValid) { - throw new Error(`${field} "${value}" is not valid`); + let expectation; + switch (validator.name) { + case 'isValidLabelValue': + expectation = + 'a string that is sequences of [a-zA-Z0-9] separated by any of [-_.], at most 63 characters in total'; + break; + case 'isValidLabelKey': + case 'isValidApiVersion': + case 'isValidAnnotationKey': + expectation = 'a valid prefix and/or suffix'; + break; + case 'isValidAnnotationValue': + expectation = 'a string'; + break; + case 'isValidNamespace': + expectation = + 'a string that is sequences of [a-zA-Z0-9] seperated by [-], at most 63 characters in total'; + break; + default: + expectation = undefined; + break; + } + + // ensure that if there are other/future validators, the error message defaults to a general "is not valid, visit link" + const message = expectation + ? ` expected ${expectation} but found "${value}".` + : ''; + + throw new Error( + `"${field}" is not valid;${message} To learn more about catalog file format, visit: https://github.com/spotify/backstage/blob/master/docs/architecture-decisions/adr002-default-catalog-file-format.md`, + ); } } diff --git a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts index 6df6d9b4b7..a644dd48aa 100644 --- a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts +++ b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { InputError } from '@backstage/backend-common'; import { Entity, Location, LocationSpec } from '@backstage/catalog-model'; import { v4 as uuidv4 } from 'uuid'; import { Logger } from 'winston'; @@ -81,9 +80,7 @@ export class HigherOrderOperations implements HigherOrderOperation { const readerOutput = await this.locationReader.read(spec); if (readerOutput.errors.length) { const item = readerOutput.errors[0]; - throw new InputError( - `Failed to read location ${item.location.type}:${item.location.target}, ${item.error}`, - ); + throw item.error; } // TODO(freben): At this point, we could detect orphaned entities, by way diff --git a/plugins/catalog-backend/src/ingestion/LocationReaders.ts b/plugins/catalog-backend/src/ingestion/LocationReaders.ts index e23a4524b6..8fec1541df 100644 --- a/plugins/catalog-backend/src/ingestion/LocationReaders.ts +++ b/plugins/catalog-backend/src/ingestion/LocationReaders.ts @@ -189,7 +189,7 @@ export class LocationReaders implements LocationReader { ); } catch (e) { const message = `Processor ${processor.constructor.name} threw an error while preprocessing entity ${kind}:${namespace}/${name} at ${item.location.type} ${item.location.target}, ${e}`; - emit(result.generalError(item.location, message)); + emit(result.generalError(item.location, e.message)); logger.warn(message); return undefined; } @@ -207,7 +207,7 @@ export class LocationReaders implements LocationReader { current = next; } catch (e) { const message = `Policy check failed while analyzing entity ${kind}:${namespace}/${name} at ${item.location.type} ${item.location.target}, ${e}`; - emit(result.inputError(item.location, message)); + emit(result.inputError(item.location, e.message)); logger.warn(message); return undefined; } From a45cea627db4bc51a38db8364cd0db35b9ecef9d Mon Sep 17 00:00:00 2001 From: Remi Date: Thu, 22 Oct 2020 12:19:41 +0200 Subject: [PATCH 265/323] feat(cli): add @types/mock-fs dev-dependency --- packages/cli/package.json | 1 + yarn.lock | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/packages/cli/package.json b/packages/cli/package.json index dd9e82c325..2300612d3f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -114,6 +114,7 @@ "@types/http-proxy": "^1.17.4", "@types/inquirer": "^7.3.1", "@types/mini-css-extract-plugin": "^0.9.1", + "@types/mock-fs": "^4.13.0", "@types/node": "^13.7.2", "@types/ora": "^3.2.0", "@types/react-dev-utils": "^9.0.4", diff --git a/yarn.lock b/yarn.lock index e6377107c2..69f2bbe335 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5206,6 +5206,13 @@ dependencies: "@types/node" "*" +"@types/mock-fs@^4.13.0": + version "4.13.0" + resolved "https://registry.npmjs.org/@types/mock-fs/-/mock-fs-4.13.0.tgz#b8b01cd2db588668b2532ecd21b1babd3fffb2c0" + integrity sha512-FUqxhURwqFtFBCuUj3uQMp7rPSQs//b3O9XecAVxhqS9y4/W8SIJEZFq2mmpnFVZBXwR/2OyPLE97CpyYiB8Mw== + dependencies: + "@types/node" "*" + "@types/morgan@^1.9.0": version "1.9.1" resolved "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.1.tgz#6457872df95647c1dbc6b3741e8146b71ece74bf" From 4cc188a2c81f0e88c835b6da0faecca9e871ae06 Mon Sep 17 00:00:00 2001 From: Remi Date: Thu, 22 Oct 2020 12:20:47 +0200 Subject: [PATCH 266/323] test(cli): system link remove check --- .../src/commands/remove-plugin/removePlugin.test.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/cli/src/commands/remove-plugin/removePlugin.test.ts b/packages/cli/src/commands/remove-plugin/removePlugin.test.ts index 7b9857a337..076f54402b 100644 --- a/packages/cli/src/commands/remove-plugin/removePlugin.test.ts +++ b/packages/cli/src/commands/remove-plugin/removePlugin.test.ts @@ -16,6 +16,7 @@ import fse from 'fs-extra'; import path from 'path'; +import mockFs from 'mock-fs'; import { paths } from '../../lib/paths'; import { addExportStatement, capitalize } from '../create-plugin/createPlugin'; import { addCodeownersEntry } from '../../lib/codeowners'; @@ -27,8 +28,6 @@ import { removePluginFromCodeOwners, } from './removePlugin'; -const mockFs = require('mock-fs'); - const BACKSTAGE = `@backstage`; const testPluginName = 'yarn-test-package'; const testPluginPackage = `${BACKSTAGE}/plugin-${testPluginName}`; @@ -213,19 +212,22 @@ describe('removePlugin', () => { it('removes system link from @backstage', async () => { const symLink = `plugin-${testPluginName}`; const testSymLinkPath = `/node_modules/@backstage/${symLink}`; - - mkTestPluginDir(testDirPath); + const mockedTestDirPath = path.join('/plugins', testPluginName); mockFs({ + '/plugins': { + [testPluginName]: {}, + }, '/node_modules': { '@backstage': { [symLink]: mockFs.symlink({ - path: testDirPath, + path: mockedTestDirPath, }), }, }, }); + expect(fse.existsSync(testSymLinkPath)).toBeTruthy(); await removeSymLink(testSymLinkPath); expect(fse.existsSync(testSymLinkPath)).toBeFalsy(); }); From f495ba9c18f4295b1d43adc44d2c097587e0c480 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 22 Oct 2020 12:49:02 +0200 Subject: [PATCH 267/323] techdocs-backend: fix config loading in git-auth --- plugins/techdocs-backend/src/git-auth.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/techdocs-backend/src/git-auth.ts b/plugins/techdocs-backend/src/git-auth.ts index d77596929f..b580a6f05b 100644 --- a/plugins/techdocs-backend/src/git-auth.ts +++ b/plugins/techdocs-backend/src/git-auth.ts @@ -93,7 +93,11 @@ export function getAzureHostToken( export const getTokenForGitRepo = async ( repositoryUrl: string, ): Promise => { - const config = await loadBackendConfig({ logger: getRootLogger() }); + // TODO(Rugvip): Config should not be loaded here, pass it in instead + const config = await loadBackendConfig({ + logger: getRootLogger(), + argv: process.argv, + }); const host = getGitHost(repositoryUrl); const type = getGitRepoType(repositoryUrl); From 5e8898c277bd2e58fcfc677a0f2e9a6aded59ccb Mon Sep 17 00:00:00 2001 From: canut Date: Thu, 22 Oct 2020 13:32:15 +0200 Subject: [PATCH 268/323] Use Extension icon in the About card --- plugins/catalog/src/components/AboutCard/AboutCard.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/catalog/src/components/AboutCard/AboutCard.tsx b/plugins/catalog/src/components/AboutCard/AboutCard.tsx index 821778d3d8..ef04091c9f 100644 --- a/plugins/catalog/src/components/AboutCard/AboutCard.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutCard.tsx @@ -26,7 +26,7 @@ import { makeStyles, Typography, } from '@material-ui/core'; -import BrightnessAutoIcon from '@material-ui/icons/BrightnessAuto'; +import ExtensionIcon from '@material-ui/icons/Extension'; import DocsIcon from '@material-ui/icons/Description'; import EditIcon from '@material-ui/icons/Edit'; import GitHubIcon from '@material-ui/icons/GitHub'; @@ -124,7 +124,7 @@ export function AboutCard({ entity, variant }: AboutCardProps) { } + icon={} href="api" /> From 7dfc8d3eb26fc4fa7c1f2be6e9ced1d88c1165aa Mon Sep 17 00:00:00 2001 From: Eric Nilsson Date: Thu, 22 Oct 2020 13:38:31 +0200 Subject: [PATCH 269/323] prettified a null-check --- .../src/entity/policies/FieldFormatEntityPolicy.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.ts b/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.ts index 724de8271d..896d5b8999 100644 --- a/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.ts +++ b/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.ts @@ -53,6 +53,7 @@ export class FieldFormatEntityPolicy implements EntityPolicy { let expectation; switch (validator.name) { case 'isValidLabelValue': + case 'isValidObjectName': expectation = 'a string that is sequences of [a-zA-Z0-9] separated by any of [-_.], at most 63 characters in total'; break; @@ -61,12 +62,17 @@ export class FieldFormatEntityPolicy implements EntityPolicy { case 'isValidAnnotationKey': expectation = 'a valid prefix and/or suffix'; break; + case 'isValidNamespace': + case 'isValidDnsLabel': + expectation = + 'a string that is sequences of [a-zA-Z0-9] seperated by [-], at most 63 characters in total'; + break; case 'isValidAnnotationValue': expectation = 'a string'; break; - case 'isValidNamespace': + case 'isValidKind': expectation = - 'a string that is sequences of [a-zA-Z0-9] seperated by [-], at most 63 characters in total'; + 'a string that is a sequence of [a-zA-Z][a-z0-9A-Z], at most 63 characters in total'; break; default: expectation = undefined; From 6f654309bb00fc8401cdd3ff10ba4cc659f0199a Mon Sep 17 00:00:00 2001 From: Tim Date: Thu, 22 Oct 2020 06:27:09 -0600 Subject: [PATCH 270/323] Add Cost Insights blog post and demo (#3032) Co-authored-by: Tim Hansen --- .../blog/2020-10-22-cost-insights-plugin.md | 79 ++++++++++++++++++ .../assets/20-10-22/cost-insights-1-dau.gif | Bin 0 -> 1219760 bytes .../20-10-22/cost-insights-2-engineer.png | Bin 0 -> 238388 bytes .../assets/20-10-22/cost-insights-3-data.png | Bin 0 -> 254445 bytes microsite/pages/en/demos.js | 38 ++++++++- 5 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 microsite/blog/2020-10-22-cost-insights-plugin.md create mode 100644 microsite/blog/assets/20-10-22/cost-insights-1-dau.gif create mode 100644 microsite/blog/assets/20-10-22/cost-insights-2-engineer.png create mode 100644 microsite/blog/assets/20-10-22/cost-insights-3-data.png diff --git a/microsite/blog/2020-10-22-cost-insights-plugin.md b/microsite/blog/2020-10-22-cost-insights-plugin.md new file mode 100644 index 0000000000..ecf73738cc --- /dev/null +++ b/microsite/blog/2020-10-22-cost-insights-plugin.md @@ -0,0 +1,79 @@ +--- +title: New Cost Insights plugin: The engineer’s solution to taming cloud costs +author: Janisa Anandamohan +authorURL: https://twitter.com/janisa_a +--- + +How did Spotify save millions on cloud costs within a matter of months?? We made cost optimization just another part of the daily development process. Our newly open sourced [Cost Insights plugin](https://github.com/spotify/backstage/tree/master/plugins/cost-insights) makes a team’s cloud costs visible — and actionable — right inside Backstage. So engineers can see the impact of their cloud usage (down to a product and resource level) and make optimizations wherever and whenever it makes sense. By managing cloud costs from the ground up, you can make smarter decisions that let you continue to build and scale quickly, without wasting resources. + + + +Are we turning engineers into accountants? Nope, we’re just letting engineers do what they do best, in the place that feels natural to them: inside Backstage. + + + +## Why put a cost management tool in the hands of engineers? + +Engineers are closest to the metal in terms of knowing why a specific feature, product, or service is using cloud resources. So they’re in the best position to understand how costs impact ongoing development (and vice versa). + +If you manage costs top-down from a 10,000-foot view of your cloud infrastructure, you’re likely making decisions far removed from products, especially in larger organizations. Set a broad cost-cutting goal, and you could be creating unintended consequences — curtailing spending at the expense of growth or experimentation. + +## Ground-level intelligence, data-driven solutions + +Our hypothesis at Spotify was, if you bring spending data into an engineer’s everyday development workflow, they’ll naturally look for cost optimizations just like they look for any other optimization. And the cost optimizations will be more efficient and effective, because the decisions are informed at the ground level. + +The problem is that most cloud platforms don’t provide cost data at a granular enough level to make those decisions. And the bigger your organization (say, two-thousand-microservices and four-thousand-data-pipelines big, like Spotify), then the less you can attribute these large, fuzzy numbers to the right team, let alone a shipping product or internal service. + +That’s where Cost Insights comes in. Instead of making cost management and product development separate departments on the org chart, Backstage brings them together — with a level of detail and specificity engineers relate and respond to. + +## How to turn dollars into sense + +It’s not enough to make costs visible. To be useful, the numbers need to be relevant, relatable, and actionable. In other words, not just cost information, but insights. There are several ways the plugin puts data from your cloud provider in a more helpful context. + +### Use business metrics to evaluate costs + +Cost Insights will show you trends at a glance and also let you compare costs quarter over quarter. More importantly, you can also evaluate costs against business metrics that you care most about. In the example below, should the upward slope shown in the first screen be cause for worry? Perhaps not — if you switch views, you’ll see that cost per daily average user (DAU) is actually going down. Exactly what you hope to see as you scale. + +![Comparing costs to DAU](assets/20-10-22/cost-insights-1-dau.gif) +_(Note: Screens are examples; they do not show real data.)_ + +### Illustrate costs with relatable, real-world comparisons + +In addition to dollar amounts, Cost Insights allows teams to visualize and convert cost overages into more relatable terms. In the example below, we equate the growth in costs for virtual machine instances (100% increase) to developer time spent (about 1 engineer). We use this particular comparison in the plugin because we found it resonated with our own engineers — providing a useful perspective for spending increases. You can configure what the “cost of an engineer” means to your organization. Or engineers can build in their own comparisons — cups of coffee, carbon offset credits, electric luxury vehicles — whatever makes costs more tangible for them. + +![Cost growth as engineering time](assets/20-10-22/cost-insights-2-engineer.png) +_(Note: Screens are examples; they do not show real data.)_ + +### Tie spending to specific products and resources + +The more detailed the cost data, the more relevant, actionable, and helpful it is. Unlike the default accounting tools provided by most cloud platforms, Cost Insights can attribute costs to specific products and resources being used by your team. For example, here we see a breakdown of data processing costs by individual pipelines — letting you target your cost optimizations with unprecedented specificity, if necessary. + +![Data Processing costs by pipeline](assets/20-10-22/cost-insights-3-data.png) +_(Note: Screens are examples; they do not show real data.)_ + +## Driving down costs without slowing down development + +When it comes to cutting costs, we actually want to guard against over-optimization. Growth and costs can go hand in hand. The trick is knowing when one is out of balance and needs addressing. Our product highlights when there’s been a large increase in spending, so that engineers are thinking about cost only when they must and aren’t distracted from their set goals and priorities. + +Engineers can then determine for themselves if the time invested in an optimization was valuable compared to the costs saved. Cost Insights puts the decision in our engineers’ hands for them to choose when to focus on growth efforts and when to focus on cost. Control, as ever, remains with our developers, where we think it belongs. + +## Getting started + +You can begin working with the Cost Insights plugin today on [GitHub](https://github.com/spotify/backstage/tree/master/plugins/cost-insights). We include an example client with static data in the expected format. The `CostInsightsApi` should talk with a cloud billing backend that aggregates billing data from your cloud provider. + +The current release of Cost Insights includes: + +- Daily cost graph by team or billing account +- Cost comparisons against configurable business metrics (including an option for Daily Active Users) +- Insights panels — configurable for the cloud products your company uses +- Cost alerts and recommendations +- Selectable time periods for month-over-month or quarter-over-quarter comparisons +- Conversion of cost growth into “cost of average engineer” to help optimization trade-off decisions + +Our hope is to help other companies translate their cloud cost in a relatable way for their engineers to better understand their impact and accurately identify their opportunities for optimizations. + +And if you’re interested in contributing to our outstanding issues, you can find them in the issues queue, filtered under the [‘cost-insights’ label](https://github.com/spotify/backstage/labels/cost-insights). + +## Ready for DevSecCostOpsPlus (and whatever’s next) + +There’s DevOps, there’s DevSecOps, and then there’s Backstage: one frontend for all your infrastructure. From building, testing, and deploying to monitoring and security — Backstage helps you manage your entire tech organization and provides a seamless developer experience for engineers, from end to end to end. And now that also extends to cost management for your cloud infrastructure and tooling. Happy building and [happy optimizing](https://github.com/spotify/backstage/tree/master/plugins/cost-insights). diff --git a/microsite/blog/assets/20-10-22/cost-insights-1-dau.gif b/microsite/blog/assets/20-10-22/cost-insights-1-dau.gif new file mode 100644 index 0000000000000000000000000000000000000000..742536a89cfa6a5443f1efc1fbad65b28a9258c9 GIT binary patch literal 1219760 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�DYt7ebB=V(~A;pIOk_OCR!cUWw>HJz3)~ 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 E(O=6Wp%sq3@_M{f0jhL<|f9TGdW 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

u3H_6&csWmntdvn?$I1MaO-qHC$$E2XXEH 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

%_hcp0Iu5yEnSxk*z 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
*K4{dg66X4XQ^9gb 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�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

;YblX_>}- zE(vR-X9o0E0qJExx|$V01bVy36tc9P&n-a&3J}r+)OWK`4QT=N+fIrJ&%hYGsA3V^ z+ZcKdb;tCM5iXE{3}B!FbP`$t5x7j(?v%AD>X}f>AlpVcN(G4I<~^O~+u+jpjT*G- z9h(PLAK%e>CLn3aNKir%C^f5bj3a;h7*>ODH_B4B#Y+sTNgZS)MBSZhcjNVn0v!r| zo%~tqv|zFSjzD!tyw_dJvKczVzEfkhX9U*ZYRgd70CX4f2C4Th8hetvF6g|}W^ z9ditPu9#^3CmDkOrTDdw4&&?yrL6ZjY-}&q=Rnl?EW34-cpHdY+7vrHb9VEBqE@V^ z7w{}~az&l4UNxyNm}*mxtP{Mw^;eN}wzN(;*phs!;eIe7^6BDyL*uf%h}dkH-ZfV4 z6{V(X>VuLFFNG7Em~to9<{#H#jd`#q2||jtLYsP>!5yA*9cfQ-LzSL(j-k-d&}g7= z0RRyIz|rg!#X!B*Yh2T*u*^UeU^|Bn+oG;I>8)g>j!eiu-oPAz%*R2Z0;wC=xKZC& z@lNb+%@<1$L!|K z8snA$5ew7*qBxFQQb!&`I~Nkr8U$(7uVMhi>PaTLWF2p`$SdQNc+#xpn!<`Dwqsc{ zG*Lh}r?q0>k_Nqy--K>`9hqk0NiSpjzN3MkRo@g~@Wb@}-635l0B<+ggY~8AlG3;k zl|z2Y%&vK{=|!qBJB@cWJ&atPEx)@W@z_IzX*&f`QEx-lq76=`a(RGw#vgdiMNfT! zHAwCQ6OY0ph=6oI%sc?tFIU&8A~^g#rA^dJ-klY4Dl zY8@ZHKw$GNQ}cCA!OeuBP}3#&NT#LT2P%(3Y@k%27U8n>(T#*3L;xM^aAUa`A^_24M6pR@T542bnT3?Js#3K3{lu5)EQsOe&kRgU4 zy?D~)*wq?p-ubo>Uvx*#B@Ge1l=_7ZZ*bin*5ZlukBN=Zz&RoF zflZ^JhV@Yb6}%W#IOEw6qu(GSr}>SN00j3jV?owNL!}@3!A1B16tbmD=b20U0L==T zBj~i>{Sby=prLui*Xmf3zzC2!##Adlnu?KK@+sjiHo=YzqYboJ^5~N>a-kw#A1gEj zOuoR$0SG}FB;@Vmr5K_?sf8BoU>Ww%_dQz;Zev1`*%8X%*S%t6tWs2#32GhxA)?)Z z7m4H^?#mJcVoKtoJEjO~014n6+uHr(G46wuNMcXAC8hl2HCh|uVA4XqpeSi0ChCk_ z*3~GgVk#=-`eg^?*i|7k(I=VWSzhG6NKGw@qz|TvE&^gME}sM{;qD~M*}+D(Ama7u zWFm5ACA8&Rl4b~!m$X^;jIAly>`WM|4GwRDAlC}Xt{WOe#uX=-Pr{3PhbC0&Lhg><4P zH6;v!p?BPzIhrC!wpX)d-E5`>t>DQ60+SvB=SYf~*Vx8h6CEWp>DWFj=y zCQzQCp9%~(lB6`kssIsXG2yBz_JLL^Dk$cQhDZkxx~Oz0jy8pAtD37=+^Iq~WDF!EU0oTV>eYmXsEfkjyzE6$ znkd*&q*a1PoP;C-HY!)*;g}MvNg~jXxLCqwW<|KEx5BBT(5alB>%<~yk;-ejqDfoH z<&@^thhkn*+Ul-;q?195vTJYtVWmzh zzzHH8n5Fo!PsHd991UTiU20Qa^tP8 z?S>U>!R{iUn2{!6D=?sHle{UL!Y|7#!fnfjcC+kgX%5t`YpNYs4+q!cJ2q@ zpfB#SuPqp2m@Tf6%I`wC;J%)xQO;EufapWsU`RCoCD+bo=T4h&J}>FcC3|vRI#Mey zMj%)gr(-y$3&@sTARLoOr?1sek&K4X((cis5h$z-2#YXTk?;nW@K>BL`L=HeVk~Rc zD)Rm*Em$rZiXzpDiuzO=)9~Qdp2?Y%Cx)aHzrso8R%JU1tkuBI^up-rCJ^>Af-m0f z%ZMJ?Y{K@mh6P{oC@_fyTT3H$ahrNV7k_as?Ox6(RkMItF=G4i~R_gWkY&FeRGZ-%6_HiX! zGOJ##Nhm3beh!NCE1e)K8+e@*knMRGF`y{_@i|rv>?|?Q@>I1NLicj2E1;cKaPTGL zaxT+`ZAxjb(lD&bVf^v19hU8UUMM!+D#u2f=XO#NCXsPCGm6SoNfzhMo|rYKX@h?6 zY(O8p_H9~zvyUdNE|arAscSFCu!pXz#Zp&wOo~WRd?m6No{ftsQ zPwQ8foxrWwA!-C9+oTmv(1A8=LYH$x<3|0$0;z~zyMF94XXr&E?b@76t z7`pG3jVDHv^e;j#yWj#~zDg%kgYbU;-XUNOn;`JjP<1+vWHR3~NCGqio21Y7N!ndt zHSsc3fN!L%uWa0aR@knu8E#NxGJs_A4IH)jQZ)UVwAV&%M8Pvx=SAZ*FAt&T=oKr# zO3^<5>*&68+0E@MTc$-Pg`U-s&rKBLXxkEhrsM8_{`Dl>Nfb%&rK8!w_A)3F&hq6%~NPxrTwZuDLf zI6>Lq5LwRqb?hkSCH!p?3BL9>=ypiXbJ*7KDnB!9el07$VS9@-i*oe9zITdEV9%m5 zCV036WBE^c>a>7DJ!wFHrOZ`i4BD)a2nSNB%(Xm=s}02AP0y#nd7N7mox8cK z#gLj0Pn$RFXMSdkm-BSXFHyTN4KMY8CwiDP6rXbUFvD+zuHuw$ht#-9iLOLddx2I4 z46<79h_&=fqomx1^@(Kvvj&+x(4*$;l&Z0%lUNG6PoY2JIQ*s$-12P zx*iQ)n$a7aXH1%>P~T-tH(852DK~3Cx1jH_L{2meT=%;obq#m4YgTl>2^6)R^URf!c;J&&uoT0PBLpHGk8#GMNb&a*@NGIAuM!yH0occIg20}dkAqt1ju=s2i>eae9A;UTW5UNA0;gO5PF5@QBSck`}l;j;&#(q zy1VU1FF8}AH~XnO+4eROyEiLiDon?_PU(FBZ1cRUX|`^83`l?m7=WuEz6L^Bt^3V#{SU8 z&#Pafw%LRK3(A`b2yjV|lqNZvC91M#BBrQFqHL|o@0#~Mz6%Uotru+<>_Mxq7?06u;R0GJnOvPU?W;HQ$9 z0~i?hhgkS#g77$biJ7Un$=T`o2^uOoN?K}qiuy*BN)|I2Gh>#9xk{^68|t!(`-2n( zWi?9Qp{8T+{9i^Ow<@L2K;~fCjwGCai#)^h(>2u(|$STVI z=9bAme<@HO&)@I=4=|v>fdr>1IamydD`QDA@jB?N*Dqfbvmv=54BjH~drXlfqb0VP*Gx*&wv5|1ao~3Ltz5f$dgxURLsDR2ew|cyBBxzQeG#ekgyF}rERg-;&{7yiSUy#1 zv_Y(7$R{h1(WF)r=it8O80RFXGcshQl#)I~la(@4HTOW_tLg)E*r#apjXsS!wd&Op zEoy8n&;{R&w`kA$_}c8q+OB)+MGO4y?!PO6xhg4`#PN!@6sMrO@@4VE)D6ap?s#%g z$vnF^=FX+Ecoph2)jOk^)l|_r*kf|fI==k*^y`Dd{RwUkxej|6t2NeaXX$ncVfWep zW?&J}`36H<`?ZypMI>bx5lhbaWfNi2Rfia3h&>h#h(BooSy0+p5kqE4IXIqLopeT( z3Zg+Jl_v1P(Zh{6+Q(y$KK?jRT5s`IAV>!ygdcOj6nRmT!SRwHTfa=Gpfo28aMN=X z-H=yv&!B{%6<}J|A%_|!VU37tp15W>B)S=ZQA>=WB9TnG!Cs9!67or&FHWLoj!fwY zWTA#0is*o&jAaXp`N7s&l1UN=Mpg(0#jE1ciu1O%>?*_$3f@D+>NjQPk| zr&j?dOK`!eILV+X5sC#HZkQf9ih%hD;rQ+BH<30)Rvmtv2N6qrowrkXB? z*iG0fy|2F8oy*?wG~U20*6ItM|2`EJu)p#NG%5TVOmxvk2Q+Da6epB4Db6xC@sdi5 z)UkseIm)D_{O!E z(4HL)c;JF7dWw)rV#42lOIJGWT6RKc_hB2WFz!YaeTy-)4TgHI+GnT#{JGbnLj)qs zeVG`utKf|w0vjweHO9ial1Honwzp^dJh{twyRU$jCMY3GnFfc=gCCE4@)45-(si0h zdFjDWyTv59jh<^Kl?{D6n=?lY>F`;AO+hNUp`)!bawLZO_RH+U`pZ6YQhWEXLGOuw z0T%3UK>>vD-@ixbZ-6GqfdB57nn&=hZ^~<+1CQ4(CCk zwKeSV0EA$p8s|vnIrNc9gVHryt!(*0yRZ{h$7@KwL`V1^#ELm(#vuz?KNZhvtQ z01=I7fg)O90SVCGQyc&fedQ2;$uiypuh^CFX>cpeI))D@NIy&ead2r7#NgyA!k_DH zDN|_r4fswXJLHUsgP>y}O{g>l8KzE6+=h;djz5))uRPx$FQSnQ-HlO?-Kb?|V}>(7F!cg77S1AAI?k#A_iEv|u0Hrbm9 z=JsNeky*$ICaa?_&let%z0Y**i&aiiM7vgIM39*YC7=qB0Y3mS0!_4l9{>=<1Xxmu zaIj`6KtnuUamHqZ{G>V0SuTD!bBk{f5E!K=3Qj>xTbi4i88^2we5xfm_$*^>v|%Ol z*%6qDF(JJ47(-Zf<8&ixLl03|$enT0cL`Wz4l)4A67&!M02?j90dW*b;Emxk1<~Ch z(TUQO7H)YNsmt>oq(&DKXN?Gg=RWUAN_7!bOVV=9v{WKYb8Mtb8`|kFRoJqGCY4Qa zip&kqk(t=_aGm$_7b6A;j{-O#nolvnMvaIF2W<44S+Q!-%Bj+{8j7kpoy9vL8dE4m zuBAQYjq|Ff%u|kVjJc%g2*h?UfC5yYM+IG)%q25-F_nEHS_+*gBfnA1FOfbB&Hg^h z$N(}zqfFeWW>rJd%Bpp=57c79a^X0}b<3vEgH+Vu+SidUHLYQ8F?&6s z7iC)1feN>%WE=h zysH6YS>7pE){0TRxyjho0xC7*bZ)*9!qWJ3P&t40A~~drNMViI44)2@n2c2&L%9Gu z9?~u=;r%Xl3jhx!a`z9HG$J1;`CUsakb!?AuZKU((hz41rmKCgT%Tqw=BZMY?}h7Y zY^zVJQO}hJ30YrtskI9Mc(|i$A*+mQOvk{?n9QY}ku}m_aY_`CMhs#B7VzXa=r4&+ zE`aW`i-<->0E+SnCy2icX0{@3#lQ6rC`cGJ{IvLSYW@wSYCP9SrK-%d@k03^0$4VN zPYD0zv6c9#SmY`dxj;_AV|g%Hi=6`_%$%G5cQIiBvF=Z-{);pKKbvK#^zXXCqiEhz zvElh78O)@9sfuwbV>823%w%R~d}-TiOZiufno=ATma|)qS%fce1L~$k0*fI8I{?G( z-i}puSUw)~z%(4Pb{G;_hlXVydH}>8s*Q+h??Dnz;Wi=`a3iz6NN1idwYdvsT2`~d zFfM*;D*dTn8oycI^p&?uv8GI(>eL80_+C9zJKHP0#2Q6bPM-(soHi*u(C#ylAdfu7 zxi!jWejCjKL(SnOpL^q-RJV&!LCeR@v! zZ#-b_5V(&)_6AgQ1-pJ>4&_&`2?#6nwGQI)gab!XUX&q|IjSAuG2e;XJOp>tp$I)f-^?XS zUxwGkNXb+*IsyshvM{Gm#mSYP{2Rp9JuZu5=&K-u8e;Sm9-h!Qii! za<>8aZCP$mF<(pOTVMS2oHMG_a_{PKj{Zv?XiCBM}mOE3vcy)u2p|7l7a$uT2pgxRq}hcR7wPB5|5W> zzgJw$@O+!M7}F<#)pvdK(i73vB6I^;bCY1ZVpibvX-DUJ0}*>ANQDGbcqzsr5yCCD z=6fJlS9YUDlSgA>C`*EVstY}V&KNvMR6!Wxm3 zcmFVj9SDV0NQe#;b+15Y6oYs+wRMNsc>jifY^H)0G*|&vLVGcN8e?jb(|najbDtPG zXjf2zW`{u-dZB_dLuXI_5e0F0Gl+iZU{5Fp;pU1yuwfUMbR$@Zy9f{@6h@ygc#LRj z^Y&tr*j|QLN?4a_v6WtXm2Z+l94wO^yYy?3hfCGbXZfT)r)Y{oR)>3Z1zcDLs24XD zWIQ?of_z6B1d)!s=#KHEiC_p2cO{Qs#0sp|IQaN+bR|&pHfvxQd0|s_(Puf*VI0lp zXX(>MbO?^6D0*vhXcA|76B!)CLs_5U9>r2|^RRagq>Jy^aq2XTc9n&GWnLE;LP`>K zu@sNcV_Lta8(hd20^&Ko=4-qLdUF;g&o_q&X@kh7Yz--a%{GM6Hjb@mi%BVwLIX{a zbUU_VWl~{fR;CC4QQ1UO*^aEYfuZq{AnBF!v3&kOlWrDb_J)%8Cw0dNc93{)AxCd4 z*j6s#hGkO&W5Rzj_e(BSc?{Q$iN%HwCtU>66u2-jFw!1E1a8}QNdN$D@Sq1m1ON~Q zW!VO0i(r_o*LRZj572dlO8J$aSqfPAi>Y)VV_9{`SZ7=0lI#^NW4Ro(bTR(+Dbffx z-!n(6Vt~701IE^XmWY=OseKN)Sg2EEcVjDP`B1r1EFQ%~CIDgG)R^tTM3D()&Dlf~ zRu!;lm{tXgK@(bm0-oL}o>euTd-7EefMADx)zFVAfvI38C4M=Q0b`|27gl9j%Bz1+01z4nRN4b=+Fh1vtU)S{ znIMiPmY-=;P!<$hF%YL@NmXw#m!N`t0@jJ9DodyWiblFrZijsarb9-Vgmq#dMtFCG zV4Zt{ZF-=lhF}8NS&Kqbo}u-DC`GKt>U4~Pg6;>9DJep?S3#f>k0lw6)3_4GCo*@Y zJub)~J9tN(_jVA-rxExv$Alg$;)w9*Y3aDHopz=d$*(0_D9$uu_80}Gxmm3cYXN&f zWI0n>H)m&9kWRuiyA>v@Xp@phs-P-!#YtS67mA%HcdHt%%+@tEvy{yxpn*!J?3gV7 zSy>-cYqH1UfMVH&gj0+%%U54ZZx{1>YALps7+?j6A!^7BlQVfW`Lo0ZU@zCH;A*kK z$&Jhvk@X{0vwDQ9zy?FpEBJ~J#A=`;>w!SBH&>fH>2|OMQ7!YzhgL^&jq|czh_kBZ zMLS!ty}+B98@aQzF{_D?d)WkvgIkn1c0E|6{3)DrcVO|eB6*9H$=S4rM2jlwrLq_w zhHI_>(Um=;xb4@TkSm}125YXAb#M5!$|QfX^;((eJ;wWmvgxTydtW-HMG`x9my4T~ z=oiVRwBmZCL>NQJG`k9xB;QxB>+28QSy|_~f$*E6!ArkBa)Q~Gi1ZP5URxIb%GetQ zQaLMlM&F{j@Z@h~f{>w_z;Us_sk^;eaxth1z7NT&6dZau;06)VXr9o0tJkHPRBpg) zul!)O<{^dkdnjQ^W_sl)+{JsvyQ~bOiLqsj!UwQ#>7G*4W=--&$8?FgxrYAexii6l zI#rkZ8BEDn!L6IIUA&2v`v!*qws0nl5Ve~8 zdzM+F1Pmy)Dgi>TnYs3rIraxK`uQb$xl`*RF8fBCt4ov^8O${;T+Df{A0;=hp)?xqSw0|D;|5hw6sTi~H=-LJG#8kO&M734Sop zWTwnBwtt=Mbq}jF2;DpeCCyplZY}r8(EF3vaKIEDTH3aEa45%$CHcnw0Y~-0Z1o zJJDq4DRxPX+l*{I=3^T|w0eqAfV?{6>L%@cYV1iY`dm`y2(@JGca+=@4YD{Hn-?REH+%4t9YXD1v-Ote;)wchH~;cCuNeY84|!GrX3 zKlgCPV?{7hs~X7C9~_HWT&r!6)t)rgmfa(P;BEjd#;v_h%_zV=YufzyIB6s~#)lBO z<|*Z^OWSLZ2I$J;Tq;5_q_TZ;dYwnJjMz>bdPVlTvP&EP&kcyloyg;-#nOGXhbPkq zP=oUd(3g;`M)F$h^tfZ3X7dM|eszeg1bLSmkOd6Uhx`)!(JTt-W2aq5FXYjCx^qfZ zx2kw(6@Jy8sg=krvH@;%p{9{CUPUJ?;PFw=#OMl*zzKYi$twogalN&NY{PZEUXv4_ zsg25ODO78l-l$qz_i3kyF)kD9iL%Vm+{n5@$vQ-!->9}siX6;ZT*cERdjOu}Yi>q9 zo~$SU2x~3F`8(y?-A~?4wnA*=t5{E6M0{ins-BA!8qVIU#A|mpcGF6INZr(&x6$Mb zL&pVk`u$YrYk|h8jvJ}cVbPJrV@}a+*_f?+KQ8D0nh?;}J)dX!er!csWtg*P-OMp~ zn@$eV;jv2thv-IK-tEnNFqxl8yXA=;Lqg%Vm`;&7R2G+s(&V=fIZYb ziNrq$>AOwK@!|!5`l@L#g87WaGL8?O9tsG*+-U{s)xOE0>Dh-skAJY%sLs=*xwX%j zYC=AV{g}P0Jb09hy|uo!e= z0YUH%&x-&OYYP(t37*!CQ0grFxoLb)5u)+`$O(qh%5~$d?f6INC10@0_e!eW@{TUe z#Mj59DC|h9P_p9UQ5EpC`?m|9((lZ^k?qK~IL|!t^KlRK_FE~9(55V4-PyJXsa@$Ei|oJ-gac~m*>0%t#gzuQa3{$ z4^IjoX>FeMAiwu)_jmtyqFxZjVBH2@yao& zR}cB!PJQ1n$JOX~4$Rtf*!kf4pE`%lu=})2C|ym_+-2&^aL+4cbqY69_de3_t{)cI zzOQkv_k8e96clgz=R(UIi8K{;ZConWN#Gkolh)9dy- zKCj>N`~E**px|K49@ybbRRRFxL1N(|W5NNzWR@ZsrWu%wX3ZxNALk|)=O|7LBI=lF z)@kbM4e5@jYYvNSPXfnKXbFog4-v5NOVQL6l8#f-lads33v_hWR*bb4Xek}`jN2R> zcpIO1LOI}h7kD~hyCA!Jy!$NTV*g99aY*!^*UCt45wNK z8xs71${4;;Rg`?<2&)Dz6~Ko7_#jzKmqUst3q4EbvgI>qFR5g+hRtR*ZlMm=VdIkw zyE)%v@Uz!vPB)`UmojbY^y$1;e>6#w)bC%VeVyR+$|F@FPhovdsoW{HV#JTJw!zYr zi;NG5B#2@3C34_SUL#kkQfZO~V3;xmJBt>xu(KB3wj_{K6U4g03oQAj=Vep2NmB7@P@y?q$vx#Qk`Asz)s1+Ob~Z$pQgI)3m0evJ zy?EzK%y=iGGA)=lgN|RyU=1hgc{a{`kli6pIRXTVB&3l_I;nq3x)U3LIAB^;l~XqO zprE^zl_G}+F(h1>6-KvP3TBdujHPx>c_y25vbn@ceA!h}n%(L7-FSHJDGdoYi4jDg zu_9~7IXnXOV`V=7CVFV1_{E2)Ia@eNX*@-8`z^R^ZRn1auw^QPBl;Y8?j5lPm)nGR zgn4SKpJoW*n{onXVj0i1L?W!(4HH)pAmq@E+}H`2#@M$ zEFnQr%PdiOOa_j%Ydjh*$|>?P1yf~qrx zTCS2W4I5cmMo3Doi4rl}@sjXbD(bo&uMrD-#Kc<Jfx7%@9sQ!Z}XZsC%>FT4W~x{8=*A4S+ltK z)o_x^a4N$8cKw~iGlDJ!7FQU$-WY_MapQaPq3yBAet0`K?X}wuu2mdV)g;YX@$JZx z6q0Fg(4pdHJeI!o#Z!sHQ|M51O5e(A0t4(a_0xeneCyOGNI#vvD~4~Y)?WJxMW5gm z8^-AfvG(@t*FG!1Xz|y7dp-8!zkl2W0u)K!wj#5>X$5BnJe>BBx1gW#tbtBT9I6lp zA}hg5U<0At2{=#%>s84kZ#fvQK*+f^g>QU3_})&;=Q&_ijBBE^*r2*lBje>L7;kHx z+UAEtcx~qq#2Ef(paDp+UQpBxZWkac9OFdfMiHq{Yv}uB`e-sXEUZp!)B{-{7?mjd?C6F$ zd?YlZsULRmz)IrnT>QAr@f1`%dO^rS6T;Ffa?{09u?dA*a#g%Uaz*Sh z4}`K>o^$S!IT7lLbG8cRo$^?*WsL3w9BUsj;n0obSpziA3gRJqA}z}rZoJ(V%Ifo+(P(or{6C&D4Pvp`Jo?tKAvt!b#r_&6{f<=3= z8b8Hn9ed`gPSjDMK*Qt0fVzicV`JSNFq$@GD(abMPzu^Ms@1Lb&no7M&1=e)E(7^5 z6J&JIICo|>a;{T*mBWy-^1?5e##5ZYTO%65G!mPdFqgPI5&4YTO7gU@mrT`TVp12w zN7+b*H58&m=>u8%SpjwsrOy>Ax*4uUmb0E+DZh@nB~1KdtYpx@WrorrJ=U z29av(fK-|}ymk-z``Bm0E8Z=M7PL`}lDYOqGqEO!lDVtvC{-F3P@S@x?DQ);$?LK( zmMB(s1AqpP5H$=c_pc-@&RX{wLWDsKu@q~r`W~Fn3)S;&Ny!);wwuU_x^BbzS>#5$ zJ6?@a(~8Iak|k!7KrR7| z#y9pPY`vE&D~1uqm*h~LP1*_I-c=UEGpbMryIdp}dC=txor4JrP(PyoE-5E-YU!?A zNG^94yg6cnMZLgGpj7!=*zM7mLtT$oY^suz_$E=(b$|g#DIgv#N;*9rz!qjZ* zC%4pJQc}=@y=E>H6yf9Qy|pAZZJ7ubmh8I}7|zSZDNYG0?dQ5ksfPIzF^#pD(B?!c zpUy6&!)tI1&v zKD2~aNIIM#)Vc@+uQI#kakf#_ z&`yv0()4SVx#cF}uSYZNHeXV^O`+l#L`f1(e3gw8r&~gL3-6$;KbH( zufRa`0f#oh`rK!;UqxudQ=G|AKf=XOuef4N2EYjk#NQP;>BIjYJ=f!J zB6T8IJsJ>AUh%{+mWORsBY)hFiq}R~Wj&LK_g$vZ5?OKoQZA?)5ER!Okxhr7K^Wt`Py?-0=MpkA4sAX%whgp?9NkRMCA*$d)W z2o@c2Bu^_)#7upV74d@_=|CF=A<}h)!yR57C0O$@ptKcMVm!uqyq`f0Qx;|**Lhf_ zc}8Y6QkQ|B7aob}lpR^2*j<$x8m?BRxSZ6QZN)97tuKExa- zT2jc=%=)d%|B=_tfeI}~5{}57M`cMZ{ETwMqDl?{3hh=*=9iZY+p2AxoMlfAB*(HH zOwQDl5FFcC5n_=YqN3%AGLjA?qQcu0iZM<9-VR07)?uM%SR_Y&764%6m(AfFP{jb5 zRtbt?^#BAFAxO*JSvS7m4HjKGmgI}s9fwrVOMZ#UF&JLOK*3!RUNs$l!HL5;T&kdg zJMB|JPMq^Cq%kJp3us%$sidP_-4#C5rd8hMQHy1*jYMML>S(1rc%`ImrR{)W81@dD zotXQ1BpE_UyloN9fs<+CB@2R)sRg7I?pzI`6aT?L?-hhefx)m5-6(0!5S9=X{8$3k z5kUr;wIL)QDdgiZAt1Q}MuFxYY^2CI6UdQfxL_y#v}J6iS|xo{>e-BGMTvT)A5W&E z64e$Ah6$Q^O5NF*-iZlJ0-K-dR9^!B&%rHNP>l$n5!q4FQS$Y|Ec(-8BAP)aB15vr zgJM|VEYv4poHZ5+R?deZ{lNx)Ab9?Vc8(aX)dTvS+9w7OC9v9QrD&7LWqj41N!lT8 z7R@PeicrDlt0-4WG0<&rKpXAZO%CVp;R8(J*YO=g&M2pF0ieVcdw(W@bwpaA%m3>X?2gx~|-SlxMn}+WMKOn%?HRy(f*@--w>YK(s611OfgzqL@ri zVOB}L2ptMoPrVhz)c9ykx{<&7A`B!d4*XpJme7;_skBlnqU8cqB?~ENYGhg?s9t5a z&I1~VE4Q30xAKpueq|g2?3u1;ZKS8oh!pI>Mw8s7-pnR%0xXP9l1MF(&>rZ~=$&ya zTt3zxC{)344qJRxkoElkBQ5x7^`urkLF+&&sKz=NwJ~KNlsf48G#U(SfrJ7=*=XMnB~qiv5csJpG_kIJ zAOHZk?(M*>&(7@3&aEY}7TUR~IL#&B^6c9g4OsY&io%{J4Q%kbiUG>s4iszeiVGAC z-|sPZuSal zpe{`x3fBz~rvfTZF6zY!RPA2&6>@#A*FtA8I%en62vv@*V)endZD=KG<|JaKhjHmv zwd~3S@cjBLC)sZ5wHg{)k`T9RT=DJI;$+C!Uq$%Nu)>_sa#0rTDXnI&d&XqbYA^Ll zFw)*xEMadxChEWb)iB};;x6dcB4aV?0JfE{8y5m2uG?kSFbxM!$zD|tGgAHL@g9&= z3AP;if#P}wa{vA;4AS7n?ZCPCZ4*gJ-x1KA(VU?rv2hKrpE_zU^d;b0!qEArk{#^g zHtF$EZJKrePvatL{n5%9gRj&{sZ1o)^jWItPNf)}%;`qdWoj5MhnmWYEdHqAY4ox? z6fhEpr5TQ;YO2~G>u#!or0*I8I<6CIylEWV;>(@oBHJtVs6rlEiE2#{90;k?`si>D zrD2jXae^^_5&`uhra#tVc%X2DRqM5#!i{LmAv+cxqwV_A@!13li1jlc(=R0mGrFo) zHo2xbs#;oxqr9P|0>c41TF7h`4S_HaCnPigG10%G5^~;3euDDf{n;xiZePwoF0#^2 zo%A4o{s2p`hLtqr9+2e8iq<$KueSC<_9o8 zg+cfK2mZe3n6>8mX+;qOuqcj{0y&!u#wY7_*E#;JpgyvT5_64pbi??If@BJDbb+w( zXE|Rm0K^i|T`4bi>K+^FSYo z0PL}eg$q2nCyvMl+SP39y{c6goNDInMC+|dmO(bR;%k^FS^Joa;j3EIf-d?Sz%20{ zA^u@;TO zPk$-=YFATqs7C3q%5;=d!0uC?o2r)98LFrgKT(UWrCamd72hYESw)R1EUNm$MyKT! zEiY`%|5{Aaq+z0J1}n*1@8CM)wr@wRoMFq7L(ve_2++hKB zgCZkzuZI)HafO17RSmU7g53Lh-pbx_+n~6c_fKmtg^i;O?WXweZ1#YhH#gY~Xh$?% zF>rgPqyeFsM7U^GsOU1!=da0yHR)90{3a^UHT95I!QrA^XF6}Av_5jNUqE=@i7+M& z|K9*)Fi30p;z%8HPp5;j@e|VW6za3lbZR@OcrukZrKA^B)cM>*HLZPQ&5rj}1A8X% zaDTty%T@@h${tAWPV~awss#|y3`EZ+kFOOUCrx=R$pXTr*#+;UIBTzy=r)vZMS)ij ztFhXuNdN)N^#Bln1PlPXm-@U_f^tZBp=zy7tNIcK_INlI#yz8%Z!7#}SRIF}Lj`qY zbf|Ve(ozRAdoo2+tIVC(fkQL%3C^t$zv|7tD2$@y&7o!#&FwNn`~THB7~+K_H+ow8 zccYt?koKL^n)FIrdbAV30pL8n?|i8fz`Osv&$GJ*uzS46d$gzf0VI7c?&^V^|B1hQ z`Ey$MFGX2(dYhONlhsFJh%ZyPZD#yp6|U>YCOw6Bho^o0a5AGO*~(GP2YrF+$CP=Glrqi%b@%QHZEts-8%thWN3Pvl|;wLf3r!>5d`gUh-& z^~6hxugim42J)G)cD%j)0L5zTt=VM{x8JJP5BPF@ew@~1>lEf@P;Y7wn20VdQ>|0|`c@j^x) zoPz+81W75DrGT#LnzXMAyEJRp34rglaQ3{Qa7Zi~kI1BQ$t(h%2f(k11Vj(iERv+% z)}Byn?g}nrp@~5>r?a-(YZ@oXrPW8Pdr7}~vJ-P$I%+vNYHfvLii?1IjxJmzbB`r~ zB?FC>IGC7eX`BN91P25J00RUAsG+6=5)vA(uCHpf2e!Dkx`ekVgb7$_lfast!JeGG z#~hrVfR-qck0jEWd3)4&+1n%B-rC^b)Z66R-qcf%BI_C*}C?Km?tL-twr_&{C! zH~j$T1*A8yU_UoH3}EI=XN*PJwxY?PotkxMA( zc8E-D9N?WAqy*`T2BH*6z;X{P$J~*oGzUO)Wa#o#FV-|t-Idl=*GMPMXjxq|=so2W zmF0c40wG~`m0g))b(a;G>V-9c9`1!R=WFmqQ(rlI>c?kZ`QcTLKubg<&twkX^G~As z2r*%zOf-1mq?8);Xb}R0aRdOD;tnEUp&Wpzhcd(X1Z%SQy!O9x7pQs zW|sHnta-`@PT2R#TXtQ5p1lnRdLYV#Nw+$hpxpi}#^@4-SzNH)d_U~>-$H=lwi7X3 ztf8`%nK9xKw#LnDjy!4>QW$TDtZAy{o>s`q|Cv<|hH(ohr{w6Pm*Hd-669jbkKTdY z3nFJ!t8LIkYf=YAKLcIo?N22n>zUjJBgUBKmRYs&nE%rMkOvcCHiYAfprIEFO0Ao)ysxT1^N(#7v4<-De{ybnzM8sbR zoc|oM6utGsV>F6UZE!;}GQ8moA!`j9a`mYUd5$5WBb^3)<%%aQC3v;-lmm112iOq< z5hw%6Xk5lZX(HtA#Q7a*EV$-*h(I#%?uqr;B%G9W$HLsXSC)Sf8ytbz{ zdZ7(`YWv<3+18)_yn|o(`_Bs4VJJe?|E+K7qubmH!Gg)8BU70QqZseU#=m9CfK_nd zrT_@3mMF_La9lze$k@gq%;8ihYT#%bXa!S{0$GS8*61Ff0Y)x>NJMH5lq#4!KZfv< zH%f#iRYN%_?1(gj*d)-9coMNGtus2{7@q3n72Q~(4!lTSPte0Ab8#hk=DDRYyyC4M zULtzyS(i1gH@30aYERuOo4ufDHi2m|2BC>FKjAxaOrU}^*bf6;n zpcOb05=@v7cA*F)OXLtRc`h+#|JcLR@8Wi?9iUJv(%YewvL>}QNv~W(G*f!eBn)1> z>7v@>hFhYzOqwPWe1e*Tzn&>gh#0{yg{k8|x(P<2c18d^^5&$Bs?>9`vvVXP+*5hd zKV=;Qm7;M;Kv`BwmEnYNCIdqTAGy!676p+5NL`RPGQu7GVs;KuCFlBph)_N>N@L>4 z2}4Px?5Qk9(0I)x-uhR#sqAW-I}0z7mxii|hiljg69`f2jL43Md0gYf92mQ`7!mWB z8NI1qaQejkNYO4Sk)}M#=hG|-D2wz{;}_evH=+JVa{G864s;s?rhX=x8fs$!B}Pso zhzw#2kzB-%+mF?d0S7rb|ENk95>~NtN;v}1;OI2490@STgQ!cZ>U5zCg^qBKb$vq- zgeK2}QnX4x8^%H@Sl*u$!lACB$w*lRw!-GFMm32Ip0+mF-CVL0q5MTG(KOPp1o4L; z+}e7~1ui&A4W2O#EhV}qT4at^9D>>x{?g$W67LpoT1ZSk*yn~cjL(~vGdY(sz>-EC=t;=K3?Ryq06oY8_8Yndbc^TSO5hJ7alQ)kaC2aatR+8 zNY}Y2x}$vDi&O@q>B6^!V-TfAuoIHJo|BhIR&ni|v?%^;^KdemgVt2@LuU1;$PXRSEKoL2WUWBZf@K zw>8cIstxA1rJ&jjG@d68q8gne$HAROkms(#@MH{%?vcReZg-U=Z0}aEG!V0LL8~-X zi$v}v&c?Fm;2b#@j`@Wx@|=^&gb+Q^$bIMeXFApjz5*Wi5-st^KiCjFT%sW_ z?Rp6xZiS`DbF78G!zDzo3td8d%1gZp4{5aJm6PVvGDEy@OEa8`JhfsCu(*SPc@aS` zUL(dy9oxlx&{2b1HN)PRY7GrgkAy_u9>2icb289HGx2Er$`Cr`{2Ewgb+VMD{G?ZS z&`B=Xj76_(|4x?+)LPG7)v@8QVr9ce#w4g!gzZR;8N%ZC(ve3n;>$4j5Ehgi246oz5-e=aMwS70&|!Hiv=iI z$)odblbsxko<9jGJ3|A@6&G}6_Yb`m31Ex#25aL> zI^Kmw9k?7hw@<+03g2Z_80B&mq;%PIM>TPBrFKU?R%*_nH%>QC2}hR66W;ln-qhguFNJ|bdqe291x z2V0FtH|rCKjaXYs2a1QNh`oht_~--`Xh14Zh#;6w;ZsCkeHZ|IimqS!W5N6gCQYbA9;F9r(76`d?2z;02N5CQhc@{ zIj#7Zo}*>6*byoeLz)1Qp6G+R5(OyplEK#yA~JNwIA@OIQCinn5+o(+g_6Pu5>VlT z2?RHiP&BORINZ?;3GouZ@hvi`ZgY1YQUVr3q>W){cM2A0YjTE+c7Ip-hS=aIf+B|u z_nnnS4LNZ|o0o2w7IEl#mhZR^kMf6$Ap$PuaWiLnXM{I%IZf|LKbpCD{|CbN%v)0xR_xIG+lXS6Pwi; z$it)HRxSzVe&IrsiTO0$5_e}PmCyN-aYO z@M-r5h-MiX{>dQcg%1cw1!XyafuRC!1CjW^fc|+H{x}%hB%rS6mkVH!!lqrMV{FZl zDZ0{$pveTV7=0R}e4rw2ghZN{+L)*WnVLBhBr`}_CyHmF5uG`q|0Kjo4rp|B`D~}E zIMLRFQzcJl`hIb>{2T7GcL^>YMXi*cyLx@I=l{B4ka6AoGoj_z# z>2XVsr6$RPZ%XM|dpz4){H$sxdH>yYI5=pm0Ef<`xDTGDX5I&hu zx&bw)*`p!@lmOKuy&)2;l#^#xZ?(fESwU|tnj7$DcgYzQ|6zD{QF<<4D0f})3sdTp zEp<|lhMifdoq+d5H3f(HVvgA`AZ}A28Q4YnGh1NHpkneEh`Du$8R$Od z$_9B$gHAF@GdG}wOSpfjNZuua{*;gi`*CHc5Rf^sKNYzF#i7MnK)-6a7W$B>C~d-; znWY%Ip^BNZ$hn_dv9~y)Ad(Xv%A4SJixK2(x>>TKLZgi%XR=A7q={@Bc$3&yL$=w2 zuqhGe_8N#FU(c!|OWG~PIW9b8Lf9Bf=qG4fBY({^onxUxWnr{um_$G-Q}MBtHYIrc zM_OxhVq8S0?bwK+Ca*%JKl%U}RuG?k@J5iCru4fo|L~fg1Y-mC%PEChxUQFT8E}bB z_DHh#WT!Jv&Ebe5o4XNOd^QH68mW7sIie0&ifZb`Z&?iOzN)nLy{n|a1> zzEp-5wv9_^tyN03zSM8R&=ghawcrb;VoJVqIF9-!fWv#Q$VkRB`$gYWFmk#By0Q;- zTemV7KaZgVoF)$dddC4upaoi}#AY+vHG5HZu#=>lr>CKtTDuLCPO$h?@9I=DD4QTl zs^@jN=2fwxT9GdJDiXX$aXS8_$2!I~X+=Wv4e%HE` zTWA$rqQ%%6Hh)KH<~zRTn^T+TFP3Mfd8h}N(Z2BO1oSYUzLBr=gvcy#T}4-}h>^zt z48VH~dj@Hc5m2ze_GGajNv|-_Rxnu%YoT=IR3Et%^|W%7vdE-|O7(of5~!G+n$f0V z(HP9RkvPe#I6)Tcp`p2vq#CLwL#i1~!ko-1wIjRrXgMY=eWQ9RBUw3&Lv<1H60)3i zFbZvPb}c01P)V9XHwzye^HrJD5ZRX-|4Q10@b--1!C1N^Xq07l!)ZiSJz3K%hFkkq z&_YaDnVmPKm8WIauqDQ3%%2AcYWHlGeWRA}{H8gQuN4Rb>+p!06sQBL&j2d`1pwH8 zNje%30XD-(fgDNZm6*vU&lIh}YmiQrIzLP-O&>~R*VVe8?1>+Y zp`RJToqLLx8jC8TA}{Q87iy|J@v$tt(W8h*B%8V=+bWgKqm^0Hmh)fGH%G3q(;Il2 z5k(qqRS3JhW*Xy~D+5D+P-?w1%u0&Gym4<*^JemwQdnIT6Gkpsdxqgr7XS8?f#zu3 zXVzuytzBuplQ6EZ=@;pEVr(j}|J>A{?AfUfsh0xKiF&LY14%3hTG$3|;K3Gbv%q?` zmzx7Y+MJz=6e}v2skt5`dU}N6p*V`PR^i3D+IQ{Y9tzT?ZIKdPISjelRAp6`ZQ33i zZ4U{uyIaz?X->oUu`FVQD9+Lysw?_sZov9Npu~>HOgwjm-QQMTI~bDz_6R@-Q(Pd8 zf3~B8mN_YfHAFO}L1cI4H@y>P&EIiSa1zy5S_xd*ciUP_-|EeB7@jx9Y5Z&7YwZY# z(!T0>-vRoj*VTz1xN`yk$Tnlx#A4WlK7tp%vCC3x5M2-*U3x99Ec~j$Egq3qKveD= z1@=1xiu~f9Oa}j}(J!vi{~TPJmAtu~uG^1Zm-kzW410?*p5vu!nvFGN4c*^dCdxRz zb*Yl;Bk7qki@P3EXUG;e+p^*?Nd`vFqq)goKO393%f`*@)Vz8d|KrwC${1f-xBAJB48``*;Ade&KdWP$}ud3 z+GK@ZzzLdju;6oa+qj^(Qv%eG60=ULEd_^6%JzGypsczFF!3;W5187o1~l3bInx%d zx{FNlk_qA-J?Rx}slI4yvWQRa?QeeBu+c*roRDVKAA8_GzcgADIY(jU+I)7s*e}v|o z4mR#i959YHQ&;JK;7qn#DK-Kj-!!c7cTQV(8%AYS@B_{FR)&$LF6lrfe2)!~=LDet zL%)$;={oRv9ev5K&Y9rVsf^dIBM+G~&<60FWuXjy9)7{h&1E9$+N*iS-S<~M|D%cpIWTdXFR!!KPE~A`ShbPO ze1KtSM&%z>)MuA|f)+#*G%n6aJl?KgMY)_%%#`PTtXG=`Yo86j1EyyC-eVhw?%)36 z=^t#{F>~%k|L>6RaqYJKDY%ym0>A+z$q0z(xu$5V3S>FcH4w)s`_8zF3KFtf!iVaq ze#)FqnS8lUPifRib>)h)+fpgry?o3kd2|IQuhnuI`ZBxW&L8}1T^~$ys#&jZo(RGH z<#~}csR#;^u+hyOl{hN-9Syedi3}_zrU;P)LY8n4l?0H^nA-51CYTmf|AGw35l@>{K(Ji8gJ{G@i;PloS(742N;x<@PT}IIO`Su449R)JGl>K!J!2wO z6I7{8N0<)nu!HHSP&Xy5BC66;P0gxGH(4SHbdQ&vj0*iQduNd+w6NaFV_V55sI+rE z$*uNfCyR|4iToAzY6PlNJZfFi)yYM)vzhetVO%egCwhR1%^>V-TC-d5s6i|DY#nEB z^Wb&X_Rbu+0|>C?iOucY>~ZGWp+grgK(Kuheee61uOY*P#0ert?hoN{<_b$(ggzr; zV38NA6KN@uU)$S1?f&OHI@lLw#e(CsTQc zoO%_032tS`Nmd0Y(|7_fwV+S)Jq6)YT>;n?RR?ml6j`kPglkSg$$H^iKzTUW|4S<( zcq18*wZ&JAgn=V1RLi*7Sx^>U_2Y**MjB^{f^4=CCl(5!%L%fGCYra4LH5f_M>x5x ziIz?F3@xYO)y$P#Zj%eaps6O?m$@n2O=+~n1I}yH41i{B<&gQAn9=|@TtgqfIj5b? zkvyl#2XTO1MbiDb(V;9uq-ePtX?IG^jBzp=e->e3W6S)C^ z)8fP+XoRR!i~@6mQ4$eE*e>%h&M4J#QkAeot$CrvN4RLrDR`ke7Ir2y?P^SHU{edd z=&%~25!2>Q2eI31%!o+5ST{&RrZj1yV*}Y8oPJX>Kk;dJBg10w|A=#^l(j63E7J%_ zn%BJONy>R>1dk2Mmp<~HBq*tZl_bC?mKMeD1m%Om9LHy%_k|BwP=laTly<9a9Ze+# zG!}@6C87a^?Q1z}Tm8hwzhK?LXp0ET8`%bmuT5NlB#bna!>>&G)SscDo8CMtx$SsY03v8jYW%ah9oHW!x5EGG9l3^-g1L?!tz?LU%c~V8~wqdsq#V@ubkbgGv}WUBiUQ%h4%}h^9fu#GaWjhcN7$*RYsu zzG(uBaZE<~7{HsXSWe*KwTtHz-tU|f4C<7tQ1%?G$|B{cHFC#0Z?Ge+;OK~=6x0RU zLu4S=5YR#iIzZfsi?E~z?YRs z@U~ZtYF`>ym$ne;StHsD8&Gr?-a6(kjc}k{3J1(n|D>W4JOV(vNRa|3-4Ha5J4`Ay zGYifY=`nrC7v5|U&fCbK9E($p!O%h7ajEWJF^>(>Sx6Sy&{ND(Dz4E6@X779}jWo*=1)w8;Lz zj)q)u)sz+6Ng9o3q{VEE8_~$Iv38In^%@;>O43%961BcMU}(kGEVDfgLREnl3JZBS zHBe%McuSw+j^r#2@$Z4;I%<@u@hrk6(}25FfiAL|jDM*Ymoqe&W>^|98Kfc@JSyE( zS*JR)p_i(9vGZ(zC>w}rY)yZbUB$$TF*QZ3{~J*(u#ODOyOJ>&onB1v$nr#-zfM>r z*vSY*I9=iA;ZvWYwr~#Yh&~keakGe&tYy&?v=*f5YGA`-_u{u|ijEd*9IEvpI|)CH zMlCR5jUeffYJc7}i0asBtTs*Kk5A3@>2}-aq3rS$km?)cFSdAgUFwR(ffXMFg zRGq@?94EWbSdCA7h#131Ra?{5-mz7D|75YS@7U2_Q|O`cQ!+drrV~L zdUHqvAYOHup7BPI2JUa%WTSHFs4t-VEX{Ou^I|!KYd8>p4FXHCuDatmgB7gTN>kd> z0m1Y<6J_#PiqWv2-VV#r-2zYLKzo18nXr)N>x3rl)gpo@uWigLvNh=Uq0N=B={G;I z;X1QJnLX|!ifjcb+vxXWplqkjqCA2{Tcc!tS;B3izOlWi=o0Q>+{P{<0~1KqR>e-w z-gZ$+iUS3_TTU$XA$<2?429SXmxdfeCIn+?Qw* zJD3So7252ui7|~+#_f*hr4xcJ80c}Jr1?WU9nZ4lo=fg1Fz;0nqdc|ZZC zKvqNP91XUCib=uE2^rQr->pR-^z~fup@Ho67^x_d@10cra3AtH6tT1x5-#72Ro1L+ z$ZoyVCeh8>VNh0RnYcYk)nQN-Qq&b@-6>syRh{94Aem0B)VZ9<2&@@i;6n(V--d+7 zedHZ=VF-EAkPZNxcP*2| zP~MVgTn3s#n=l&ZsS^l(|K6RT;-#73D#BCgA&*~V2g!z>&WH+@QKr>X^t8kR6hH>lVgeL^O*YB`@T5-uqyX?_cvz2!!CD%q zSb3nD&ZPiGiIyFN|5!(bjX@>dt@+wicGP5*SokR4jV&Q+Vdahm+Z2x0^F>l3C0n>` z%@}SAx!D~lec`G>)s@+SOGQ;$$O{^h9sJqW9Hh;SG)5fi)*pEpxo``<_{~cw225?$ zE@X^UeaHb82?^PVl^qP{JR-lv0%k&>Hb~$TnNFa^!zEs#JJ5rn$xbqq=6rPn=9yDr zXx>SNU zh&1Bb?Cs#s9TXYNk#-8(82s2a2ASrB%d@ z(1qc*-Btvx|CIL(raB@J~VO{J3 zkW_{X!3*aM7j{J`V~pFgEM%S)$^3bXMuJ8T2@~r8oDS_5it^dOHDEMh4D2i%L#|2W zX#xj`q7;>+quu67LRxLI({aetq3~v;_(p`SA`8}lO(mtN3cR9=!2n>-d(7Y(-X-Fsm>Yp=!SL+PgBq+y^g89+Uxh2slE2A zz|O0?s%s6N>A|LHy|M(E&g%gPEC4KkK&|VUV(h(o?7LP9tEuV8Mr<+8=_9}?X_Xkz zacW6~r4YWDi8bZ0*;=Eb=k!^ns=+60l_ksO)YB+o%Rr9As*c#tltQHCPEV9iYWA>nJwskgjBdu`NsP zi9iSz3C;{mj+z>^9uC-~PjUbNY-s{mso#=o0z~JQTIm*eC-kAL$c|;CDoCwt56K>_ zp{A!azESY)EJH~f%L*UPQBuqn%gTBqc2X`Hc%?B`?s?{z^i^k(9b4lj;fir3_Yo~K zs+wCQS2>1=`)OfUY;Lxpf$kWJ`-Wa*0-6qy??(Mf?|Lk+( zB5^LKy*_6FFlPqfZ_5R00f+82=H62tuq25tHqsbbR+8%e-Xb00sP^EcZsX3LRH`B4&d>U=p3e*6-gnCZD{--kSMF@$ZG#RoY{WKFuxs*t^|%rYTtbt4is|Dn#p?08tv zaD~#1=;xKe#jT!S7aqu)y-m>x1>M0^?sD+aT+5K%hvlHEDp&GSl-XPiuhsrCSQXx~ zoDdxfj>Ji*++j@j0-ogzni2I-6RAm8DVoDXWPK4}G&7_&(S|np!bpPRYno*GdYlLn zscixTnB4>Y3Q8-|6Z~@P3&vvoUYHY`*~)}925uxTLz_&po6pk?DeUC_o2fKp#nVVf+!r4yLpUCIRw z8%bco-3{BDzNNC`(9rYJ8zLU@7ULfV*(#{^-!sgB9U`E-Eb-zz{{|Iruk%)(62n*O zFdzgr5yRb=COV=R*G>hVrhujG8Dm_KKC1}!)p58lJpopy`KCUnTwCk&4ID+{szFqi z3LVv~=E~1@R#dF*UPWVW?51S}>oxKL?V(0+Ij*cB5zQxm?&FGbMGtCe6%etNmxZQC z8|YTpO$ho0s4<7K3R6qEv1JNZ8%)n5LTv@8=B3)CfzxU&ki89G%+S~I)H(p7yb$Xy z?PzA`8)lBqvqa3eu}&CsiB{Q{Hj7m?TT^}^QADa}a%To@EYJ9=Z5prf8msZ!wv#E) zE&WyplMa?Xv)s1AH4?a56Z}jJ&TL`FiVvf- zn8Apx5>TkB*+Y(a4@+b|3W;s&4gRf}W1vu?$=NXJ--=6Bt$N13WegS%j2BmR>U{Mx z5!^b&gI6z6k{`7>1L;^#Ya65QDHf@AucAC#hdoaZ>%m|?s~n>Yv>WK)nld&btAu|S z5?>pgBHQ-^OJSQQI3Q&(k3pkHk1j91Zu-df2|J-e+uBA$@;$E2CTXDp{m-128@J(# zZb4%yh1B)URuNB`ObM5>iD8Wu-{B;Xc-<#apM|Iv|8f5HL7N>{VM3%<{R_4T&ScKZ zLDJdv*68RgwGstu7gKdx`PqF5`I&sRJA~~v2LN4ZpgI5OYnC-%v9pvX1nI4e$hB|F zVCx6rvw6?rJ+B^;6r)_H>2*2+dxKb+&upy>v?B$XB>CW`o@bkzBO>r%&K@@EBJ^}B zZf6Z2C`a^kvQH^L!WS|Z7=|Agicd^G=<%|M-lbovh6wIfUBAy8t5V+`VonYRFOm3& zbh%-unwv5&i-w|5tLMv?6dn-=6J{8(Lv98RJx;3A0!QxjBL;aE+j=H8T&??;paEcj z^?Dim=s6eIvuZa=-lp4*V4OUdKN)?qAN|VZ{}Z)u`EM4s?Aj3zE_N_>RtdwHQBHOS zqq}_`Hn9yMMa8>da$Tq*hLc;c{=z|HJ(o+8(u{8c=a<{D&7@dD z$KF6iZb=b)yQ` zxxz=y-7JNsgTdY81zTnxl#NhRkwlC{|9X>kVZ;L!l+$mqP#(iLB&uk# zr75-~s?Ldx4zPN!f< zDNu@FDOfzG20%V_pkCQ$wU<@7e-of&hg4c{A z3DN1BMNmYMe^-3uib(OtMH3S#{}$|VV?l+2SQ?(=Q0Lv;pe$4p2661{fOjl@ZuVl*&2^ zPTd$UP6%f*Jh%yB#l&#Iz-1y@G!e#V zO$Gq@m&0<~d^zrHi=8-g=*nHYwr;dQfSfz-SPg`4z@&J z^2lxTM_hD5z6yGNN=lp|_kcfX{}f6##S|1!Jw$b&92K2(RTpwJ$OczwG}VSvXr$2v7fuYo z!5(1|;)Ed|nk5NbB$5bMif*CU7b$zCQr9P|%$OLBHljk90H4_c%Vn=zRt;&!)izCL zJq8IwWt@Q~j&Ga6V~{-#twtni-CX(6kkdFRWkJDl2~KXHonvJ@W%4HEKKq0>Ts^WR zbYE(1Ubl`$F4ad155%ZR(wNvZl#&qmymx{{7(t{^bbEi?#Cb?AJQA~|@Q%^{Z;nadtse#^588)Gn5>+)A#~CWnaTOgo z?C{}Oi8SJeS8XlJ|01(znb=k&cFmOuCV0`f*Nder<_Wip{goq*ofIRDD`v*ip=lQ8Z}GTECB0K_>E$oR;nqwuQ=V2_l|jZPWS3a->n3HTqrCJ$e(V^k78PGy^LPy>_?}cnco6VJcPoVJic_&Iz^x|Dg^birAuPo(9A5n8YYUmMB z_{#IDBn@adZ_G8cs*}6dJ4Es`VTb;tKYL9ganI*vs3Nm&J=+H;d1z#?QuO*FUVLO68r84!XQ-8nyrVkFOw)soTZ{o z%HHQX@l^-ta3qgJ(#0XUt}*~hH<}Ns%A2;sMTY8mu?)M&w1xGBjt5477Z$JTfj>d| zh0{wTjo+%a+S+SV=0_!m`n)peE3jB!NOrLzg7`Lz{i975wxtbjhmechs8zQFj$#ve zY0)6=Hlx4YXcQ7u+`2;J7;}X~NsO~hK#XLM9Ubmq?OM|4zLYR{;EOtrbH?L9h^3kF zt4jm}6UGJ>If`j6hoxH>yLxED&GoAxCxcEh)^w1L3CtwP;mF0_vkWGd22LsqUPcnN zvo(2V|2(a`SM%s^#Ml9(bpVMsjS~&IEVsibQHF<30*-7l7rEYGPGI@6<-~Sq8WsLfhqjzqaAI>h zD7kVNMI;mNv_w1GK?hNLGU7W1wHsPsgigJK;y{czs_IQ=oYnb<@K_fHGoGUeL`&oG zo|mcc;Dk^6z@9R|^TwaOF%xyH6@$iSPXMI~kXd2Ss@!MLf@0;MUyBg1Ze<~=$w7ai z|M&{B+GfeLr3G5jsw78MBo_oeP^2U6L|tO!3AzC$l&b(21z#G$(XDHQwa8!#g;~02 zh;SW)f%|1~vW5q)UHX)KkFuwI=>luegQU<9RMBxY6+n5u}bBvz+KvGw@ z&d<6RkuBhpk)k?JUZqCIlQ03XP%DsyE_=0CW!5N}<=Rmkn#izS$U}|XU;Y9i$^UIM zwU5YXh!hB0PA2e0aq}A~ISEP}U2t$b($@tyXgS11b8(SLp+MBdLDM;vb5A9X{}9X6 zO6N8aU%{lI!l>K1pxQ&JHDuCqQRlm3FM2gdJOa`I39E< zk*)013>n&7+2EmJ3+>fHOVLN7_O!0`sA>b)+89?-TBXROT^QI&PoPw`hap97Nhuh^ z%xkzDOj6|@qf2SH24mGF7n-K4-6SiMbOy`n0WkrJ7^xJ3qELlle$3+;A)rpZ<;`V)v7=V%5Y3#yO>%Yl zxq>D0s_?BGn7I+%D+O$q%pNY7R=B!s8n?{EgzCBE6|Z{?mSxW9h&YX@W?nAy&ygx; zFz(E3a6SXzYI@GjXeSar4e^K^Qv#)F=AJj-vj&dkRMO(4lG#O1!Vc#+E9Rq*BnZfS zt>(C=?@&juwa-^lkpmkll*r0j%|RKm--aI4f)qni#VsZvuVw7E|6DJEC)(Oej84j9 z9K&>_H3ITVgUr%V4yJIq_~}eP(pz!p6kWmC5mv8mW^F$Vhf3|XQK6)|7B;s^v~zE@ zZF62Bwp*%Etz|ExEM~1PT%2T89qycTDvA(FcyadYnTys|9T>07zOW)eFrr0_SBmg( za(MH$L-G17htU-2nd>4gGmiAEXzHn%MEv8b!U`1BiYDYD=c$vZA=D~>T;Eiz60Gvs z9BVNL8~$W%>x)`+f2#$0iBkLX{+&$_!$w5|NeX?YCwux)&%|d4w~NduZl~dB9G9~} zxNsYc+rhA)*nN2B>_QpaClJ33@jZUD!yBjFeQMf)NOxKC{}6d#EUKfB6lHr74l&~> z`gT(_Ko0Z)a4e)9>OgRCMjr1(1&9$(tJDSgqp-RK4ygxv~*L44Ho1hF|c(VWOaVhY_a5ZtT8WJICgV~Q{QGe z{&zykwPjaa>!_jN|b zfFvYcc6UsBh(laCWRyc@>er6qc3z;fetL(8*>+X+CuPZTRCO6<{s3MZV{UCFVA8~o zHxy`Km1hR|UUFp~g|{gR*Jp(nKAkvkujp_dX@WkZMV?niGl6(XRC$&uYAmByl*I%U z_GwHp1)|x4BKJNi=V~&^Y7G)$4l++hA)A=xay-FuY zkxn8Plb_iIAomoHSEAOVY6~(S{~vZgoMxN2H*-gkVWPEaThWucNCkbcn>YGEy_r!y z`kRxmYsz;~oG_%yMt#y)eM=gZG(w$c$QeqaF0DXQje~t1WS7VKI8ZvJv!q;hCyrB< zrQ@ldZkeszS}*HqU7LfgX}6|*NS1qfe(UuT->N9VbP#8Di2)Z^>DD`7G#z8ADBFaA zV})=BNfaEDc*#Sd2eASn$RBx9GB$xIkNPMDMv*ePS7x*vGl*!Z7+K&UKPmB9EXZN( z;{^#qP`4*P357NE1EVMlo3pwsl~Aj{xrDrGlrej2L^p*g^;)wsb11CrsKvrFeHxT2~<`Ef6>}*TMJBah^=Re zLgF~5w={3>noH`}r?oL>{JBkkN2pLVnC+UF4yaZx^NoU6ShMkpLvSAyYJ#aEh@VP| zB9|y^v>uArf&P>o{g791}1+ph=VVC7TcCZ7W`*J+Eat<;typ3Wwz2RAQa;S#kRhMMxrsS%v&_qTQC|#4t zr-O)9fw_s~+o*(6MFS^*l#-G6%6}27zwhfhI>3=`WfUfOUl_Ml2OF9Xt4|jCp^f%W zHnX@jk#Yy(k^nhC#=k4-f*ose5Q4e0cUiq?$gj3)ut|HfA~wK>x*lwV(IR6)Il?l# zEZMT0n500;iNZKrh5yibTh6%(sj<8DU`oq+8QM3rQMyCkcR?O>TvT?g;8~W+yTtV% zZK;E1?J2zt6U4Pck3yA)Nt|~^^|qelkK+5hx`S}&=C{i`66E1a#hVm~`FR4{sDqVo zd0SR$R#@6&kS_R-bg~lLkrhMnXZSjp41qM8VjoaJDzLJ^*L-Mt6g41*A?Tx`F*v~= z>v}QCVHzTGJqThm`l9#~e5O?hKG}0UDx9v%gpgoBo16+z=#)7tE?6kaw>!!d6dJlb z!!vZWIZU=xhK=@Gme<=|$cszk22Hucw&`ajR9n3#9j@FKmtw1KC*8vUnK|wuZr$9b zaVU_F$hQNCC;tz)%}w1Yb_>Aai?0D`$6!T>pDE7PAwA)vJ(l8_8hfxzVNN&^&I5&b zGBZ7{5>OYH&Il4=Xbm<8A|VmHxvVN;u{lVcbs-$WA#wo8AM8jfrn(P}jL65yb(2ZT z8GVaQg|*9^QU{g7Ixge5omuy^#qfl3y@J{%-RbytizmLjp&6jUWcW0 zh}tbZWkCIXG2NZd#o_dN#HD?`co|DkRm^vHmu^dKdfC4&w7yh|#SC|FeA#9ODWUK? zG7`rfo9Tk}rQ82UxRE+d{pJmO)+r$PcN-Uy&w$+$c_}`#Xz|ex-2>lN5Cv_#m_?!1 zPhO&?0)wBGVR;QdskSu`yvXRIP&Wr_vig%b>YJ;3$(PJ)z{v=}R%|qKEhPn8OKH2d zHH|G5%ic<~Be1MA)nsOBjYaKU>8Pd+F0OfqmZt4()q0+juDp8Kwbo0_Q9F-PcFgM< zI{#>u-5xQ;Zvw7U-8=Fy#Xc;|V&#W;%IcHniPe!4h?p{l8o7+#w#QPtvLf{?jw(!|5#{JD7G%dcP@)rDEs_Zw(8z>$EKkpRM(_)B=>Q$?>Z zz=+pzJ0Ey?Cb5nyVWXnJ7&3F}O_M73qO`JEt@_>#^@BTTG`98!-2SrQPRYv1QJCzy zHjCJGKK7in!UF#8Rd{T4c;Zmn*-aE(`2L24?xy6&rEiIjiB8%}MbjRBO8tDTz|gVr7~XNQqfyNUm;UU;-TW- z*JC2n;?tz0>?QVdsuP-dH za4_%ftRXToLUO`#GqW=E^K`Pap*6GsvbJ=$_cwTugbcvA&WHdx%z4X6`i@t5yu6M% zdQY6Xeoy+j`U^RL`Nqt{N5dbK7b5K88>0guJR17gP0Y70qQ8Mw4F75jXpy2oiz4@V zB$-c)3>!VboKqRb;FO0O&*0OeX5`G93L~y;7llrcD_?31B}z_Zk`;7nyyOA2PL3UR zl(IHD|AbNw_Dl<5;B$B@2@?}K>opG4@7DG2&KRezYZ*BrYs6mm&l*A{T~~G~$9ImB{7EB%y#p z2_~rYb%|VeAm$enthn-{V~Pp+BWAn^BN=9~C|P7?m&JmOW7b&XSTa~E+n2jFpM+9o9=ywCQ0Uzw;o4mGA9#0xn<`apW!)Fl1Jz1 zStw4~bvGVyh~jAyp2)F7Aqp;`#3r4SzLXO@l)|u7d7K*fTtY+)u~89N5OS0fPjt0T z6H_F}QHEjFQE3$gqM?*lad065T4?AeVjeYSX`0h@r5WX`XNbP zm)xk=vX-Qx)+yVTg2@30j7#JzoejAQxqE%eftZ-TjGC zb18$DXULd_%<)L`!F+|t753zj&6RGvseNiJDCc~!UX&_*KI2zZqxX4HG^;ZdEA@m- zIiai=4^k2a5NWZ9LV|Feh4UQ~wjpg;E=qmt8qRw4Yl^=v8`rci-pGgDdcjC;j+>}r zh$!1`q6i0hd7F%nj}_DI;!PsycxCoNUT?id%K!Uszo%u{4Zr(tX)x%qg>Hz)3j6ks z4rZ=*F{ajWcMqfz@!4`lKK(X3%O;CTk8}m${wT&VGwO1Di9)2Z?M=(9vUIrHZfF)K z`z(|dmzwlD>!#L3-K9k(@m~uur8?h&_$B>_QOp`wHX!H|NH*C(S(U39{Jp@w+2NzF z(jZlzI2D4Xl?59GuoK>z8(#Kehel{iFWmAQT)0Jw!70!bju_0gAhQ_7D9#r1y4(jh z^SH{9FiM;gjpp)o!qI&$0bg>VYzp?mWTeASZ$cfMB$khb%|LZfz+uG-(k2}ass%g@ zVxNY0ozg{&IweaF6qlI0*-6iNGMiKJfdBV8>?n~;S0owDmIH=}Ord8~)0ywAH^5MN zDnnA3UP|gygqx_bQ|9xY(&%%lrnHYmxeApKz&s_2o zthWFV4ka2(009sq5vj#mf%_1RVgx~HNn%EKFy)JoF#uDJvMv<-`KI^`*O zq{?07I+o_8Yk&X>JxoriSJ822c3XzG-!6MkxpZ^wR=xm5|35H$*6t*1lRr=$k8y~?47hO_XT$_uu zA|wcHWy^5?zlsmu4x-Y7AuWy|W&BmEct|=|A0~zBr;nPG~p(>77TN}=}xsUM~$eRtK2_S*6 zpH@LOjxJ#X73AJPWr@Q^&$b5hAH(o!BFY+cZv_1~t~bx)o){dz}!WXHRrKv3K4i6v)&GsFjuTPRy&Tf%zKH zq)G9P>=8>#VC4_R&e1+-#2NbdiK+>e?|X->Y5v8=(4)QZX$ zTKub6sR5Ky5G~hYKrH5nSZxd*kYgO=XH!2KHcRETA;u11G zrLN?v+so@_ITndq2AEO!)D@m4G07|#dBaiOglWul9r>Y~3VhC+Iq{lls%BrIXjp5` znZAe;0S`w;XZM6>vH#?}Vi@W9=K(7ku#KAQNj!$u0&(_!)!T`urWiHyKuuS5J{b|J zP@Y`X$9$W@s6SUs+D+Y0)K;18(+q@_3!#Wt(FsNL{;0`N6xmeR%I$3jn4*jpi-E5t zkzL}l32R+~$wFgfPCyHB6i!!yqvVJ;j2zfH%Gylb(}LmceGc;`iE zE;g`>jw0fHXXlSWJZJFSrxo|KU^c<`z>9ix?8fPFMmhXtQ9;OOeHF(sbUJC7-Wi=o zb)oxs>Qv>U5a~I4YMwpR)*6?Cj6(~et0280j?8^KBFafz!5r7X-gS9yj-pzt01v@k z%d#limmYh9*96Q($ebzU<|viEZwnpIWi-3|4&PkR9mn; z9P_V#RsXfLW-Z|z;G)Vm5#`XuMH9qW4CQ4#_9k*I}QRmkA4El{%P)`}3zkGaUPP*n9{i*QX+(_um>QP4FOj+BMrPQeuUCC<7u z4o?BqW`xihrr|oC-7X{*cvXovtepx$Lmjpo9`2u-5#Bm5Vw{)>Bc7lRq0_(hpA3W* z;kgwmGEw5qLnsawL`u`a;n{aM$4+qK#W`M{F(Ae%k34Ch0ZI{}#RGr*S;!?)8kmuK z;1Sg92WGwC^bp}eu!I>Y<3G_Nszn;Bp;n2o9B6$Y*qBHsfK7|N4G@~e3ckgGr2oi{ z&Dao1!x?BF`WxF8^Yy3Od76(dT1rFvm@t^}rB=UIV zNcx`!US1eYAc0|?fW47#IFue8$_joHQ=p6)&4bOT$3*5+Xy%d7h+1oglxreQ|L{+N zJXR6D4?=ClhnN;>T~=v2W7R+sgq*=se9h2ZP1^8QGXhz(>{f3&&~xGqHd5#I9odl? z7q}c(Uw|Vyih{QBRM@E_JDS~e71jHZTMD5Y{xKCX&Cm;d34F59BF0(2+5bkEtcmng zN6rY!ohh1TYNV(HO5(lOdhABzsazLX2WBFoeI;6hNft=jnMlrzqeO*Txng2ER(_$; zjaiLMAXdpWRvyvVZPtoLg`W9zPZ>p6_+*i4svZz7fv*7LiV2sBL5OS}Th8szwV)ht zqQ&!Hz5!G8h?hsipd9>H58+*b$Yuf!pP9 z1~u@@JW@k=!J%C0qh7unUd9l98cHD=;t+8P!w4oq8pOWAlMxZhf+iSXeq1Cn+|LZ& zJXvV*P+Xy9s3&3|HZ`h+cH%@XDohHLERy1bd1fAA#2AetBDsOeue%)x;p2=220m9BOCM)dsrLgKp@a9qI_uQ-*!s zsJM^i5@?0W33v^DFvuSrC#1u+Ge053fjP8 z;-eZIfbnZ%uGPf)=>cwHJvpF5HlhV~79>vCIUycp~LYAEs6vgYp8 zHPBXeV>n)6PK9LyJsAf800)HU*KO&xvgOpirIrO#G;kN#h7Q~DBR}RLAJPzd!Na>| z)tLNSHW_H42A)@G6>>}@?F?K=7V6+SidQLUWtJ}pPX8XhvJ-^HlSlq3d|{lxvdM@l zk!@BU32t2b$_{Jh&c>ZuhQSx*&YnPwV)Cu5&v_;zA@1-=NQ|+M*Vqa$Qbo?bp#E${ zlEn|kE&+$>o(ew;6|^w(-R^QGOYQ<4Zt2*w^zPFo?UN}T@lLBankBXdF)m3h)<$m; zhbi=Ct+{pWmH5;g&ZQn^?;W}+_9A3Ps)OqMt6m|bVLp>#^5@-NB%?;?;!&X8?k{N$ zETaBzq%xZO9@s;YvA~7XqH*4w9biIHTI(Rzqk3*f-es`gmT z6d4VQQi}J;EKkXf z@zw||Nnf&ZpLQk#lhv|J$VR2X|9<4@Jxcdj zgivxEErJs%ZpS>UDyB9^ixRR}=;RK94T>_-EvnklXv!Nwny~mJ8i@hiAnR_vPt8gt zDv(7g5256i@&Qp)CN*JpLIsi5aPd|j1a)O|g5_9F>50@uFGH6r*wVTFB~&LpNX%__oTik)gCqTpzX z)cM?jCllLh-R!Kw8jjH@OC)0@4W+WuSjk>={gf2e*qZj}?9x#o?`~nU6|D`A<>7E= zEw>W2YUQ}}h+2wgI%=z1sv$h4XHH9R=BOz+glpKUSqtT%^#WoKOmhKRlb>|xUU`*V zEpGZIb>=N#$?zEkHeNO}WEN?fqbXR!kufM9UPn%7!G7e&TuK2GoT;U=)DsG!PcwPq;3ud5zB!f~^z_tSYImS)1R?dmrqltT0iN9wvC%^)*c#V_JsRbvu}_K>f2hxZwG3V-*LpDa}(h&b`Nul z1gNyl@byP6wyH%>((gTKve1P#I=XHFT`5nUicDbwSx_sXw9Xpu-)v(F*i^fqr3Y!y zrnh0o53^->?U~l&c(tb#7eE9kQ>xQN0u;avs5*_OI*qgZ-Tj?$t5@)h!8_2KnS3!> z#luwZSI6ilG&6huIsf;g%;{PIEPqO@?l54Y8YD-0a!o*VAZQ9!>Y&ntjB!pqk5N^jvoR5t&aonF97hH&H~6o@fZI% z2){fGfATLsIwU{v3jp-50P_2OnI!)KAiwlmzXZ&>-Wh-I7k}^f{_rbI^_RaNj=%FC zbvcm#_gBC3yZ_nnD?fhvI=&?&1m@{D*QpqT0B`_gX`W&_t|vQ|t_sWVT(fA7=d*dY zq?(T>6sAzG-!OPo0+q#Hav41`pH!r@x4n9~%j;_}Wg3C9wDo%)mqlb|{16Wgyux^* zHV2UDbTnjhcQFSEge!=Ei++rBdvl8elVpgIlaY{=37r9+37?^$qoSpxpQ)#+tgEH1 zu%W530kp0G9HI!Fyq&wgqrC~g!o|kNodU?b%EHaO01E{X1q%Wh&jkPp0M!ND-kk-{ z+$9oU0y*a+={RR$BfAL zhK@A{FaH{eGI0mQiE5x=`Qg!>l^FcWRNRPBBp5MSwoGZGG0Yo=cn}`4*pS2?E>V7} zpu~e)ji2Q(iD+b$o6~JOpGw_E2~t#|d!7z*dI)ROu9uuTts0gRSx%SGUgZTTYbUd8 zg^|rV_tK#Rxk#bXs|u8@zprH75)8N&VZyTzkNWlN6ES3uk2MA+Y*%Dw%$6~;Cg7TY zY7Q18P_{sHH)-O!ZHqu|v`UH?2gZ{PGUSjdF45#9`ElXM-X=RnJc!%&KHWKA&Lh4& zAZ#==5yIvO(YbVhEMZziUVYxX;LTCKG}@!wQlCECnD2ff>4>c9p(b6rGwQYyQs3W4 zy8r*aeE*Bs#Z`I&%2yS7cKt`!dj|#x$x?be*i;-2AK zk`%UWlJvE zS~3M>Pz^8IB%sY_(kLTk2BJ+5R0*GgXm;n4!&l(RYr{+ofR0NZq zDOva1owI2tU2Vqsh7+K_3Ad7O{k)cE6~HB0-90#oAyg1Q)dv-N_>iaR3+3ns;Cr6B z2OvW8rC{D0P5D>fRA0qLDH5fg2hve1=mCd2cift)8-5s72nlthP@y6%iCzC zhSeJwD?i@*BfhUNX3S+gni82Q$Pir2lT9*%O)uLdAR0I6F!KyS2Rk~`nAfrMD4qXM zH-tU?yu@fp!%=4_KF{6LMRG13nw_h>EgG_(!#U@X7UF?{XH4F;6rX=Etfw1z0UZ^S zq9R4hM5jytyptO1c^WFHK;QSYq?ksl-=t%4x?h7;<7XeJToou(wA6k@6oyD4tCS)W zewAN<&ngR_UD?w0pMBzPb)t#ZiWsA|dDBtjThww=)!|^l7}j1py33cmL;w1C7`?a9 z%P$8^T9$B=!~o1B!sI-O@G+-1i9(u3=mS)r4#D#>O>V}fkeC`9v>kIhUsN>9e8R5s zZLyJjozH~w)acF27ylg2IyHZ@$1@1U8+es6ZNhveaeZ;q_#L7BsY_20>vx#OF#a0k zSE}k$Aew6aQ1B7kgsp(=-H53~Ai}@(jkp0(9>livtW7BaLeM6lr!Qt5Ll>^ zI01PpU4gscx3INA8$pX)4>xGvaOu;B4x?% z>T-w~X0)kwS4hW0{z0aXbtg_Bi_^xGh_vqHu2IOFPVh|fJD<6(IREH#o=u|nJLdJS zX4sk8o@A$|L2ZwUPrDj=yp|mfv1g61%UaN^;67D_4O7+g+JCIpA3O3fJ}fYg_L{ae zJxx^DI>hZ%M>{}#R*jyLl^eQm-Y%~3q!%VVHoq6nh70`Y{(0O`3rSD zOh%J-$V1m%0c0h(qBWmr1tz{kAvIu=&bYH1S8>rgS)8JAm`5jr6bEGzAzt!GCLHJ` zPm0hRXFcoWyVtoDC#CL{CRYwy|82_ITxCb<)y-jR%a?e3~ zWwbE>P;8hqmL>l8K2r_CKK%jJ0i7kct$1jH7bFT<8fJ;V(TywIQjv`u7|UxV4gu>L z08kM})V~!|afstYy9ky`T<$1GyjOW9 z*`=Y5Fk{+HLZUrlB_W_c(9{|U%0D0wbdc^7RS6D6DNNGmQh6*N9|r`-rcAUyXJeKd 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

ibzae7fm`F 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 B@X7!H literal 0 HcmV?d00001 diff --git a/microsite/blog/assets/20-10-22/cost-insights-2-engineer.png b/microsite/blog/assets/20-10-22/cost-insights-2-engineer.png new file mode 100644 index 0000000000000000000000000000000000000000..44f105b7e48347d66f7773d72d8e36ddb29dc097 GIT binary patch literal 238388 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�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�`3FES0&s}TKI4}C_l4>Pu&<{a_oFcV9|;$l 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

14&WgmW0Qa>pjzj#~7j4RQ4ksoXz&O zoBuZc1nVm{1q|okDj+`DO2D@SE|YgY&Ok@bU&*lyS@5s4&8FhwhIl*Wfx6=*V0;Lt zGT%gQPVO#^=X{fbF`X(ztZU>03Z-4jjQuuo{iTVk##?;_Jt5r^&X(z3tbjfVVb|n$ z`P{r&8y4H2N|bjHH;Jlqyk3S zobK2+so|26G`zVjJswr=(bmzZd8G!556HtuzE&<3+YQ0gakHxlP}`2<`UchH;l>jK z&QFY^be?O6X0%Dd>7)uu!-$p9cuD*4eSvsVmrV(AF63i@b1CSyZ$O5_uiFkZi4Sjw zbv)M688nZqqz`W!Wg4|XlK1fIHVnhp_CS|~&Eo=oD0VzOtd!J2L>q~9Uze@cO+F>m zbYuj9-Zp<02#gMka!t1GQDbUFn9aS+oQ+IrtRm| zgw-xY={Dhg7ols%CQ$)xYS)kO1>i_22UY-rJTWE|gb;PhXLS2X9j}Npo;NKw`U%}{ zmIo?(nKi=H`7njo!pnml4HYQmfsvUsWQr;1$g7TS(}7*eEc>b}rf*`AU8l`k6ef+9 zVX9G7McF-k+5#m#oHt`8ZR9|c02qZi8QR=W>G)R2C?ls?&LOoTHbo*=e;*f!Nz@wY z=2(W3?Lr78Gx`IOJZM@>dSdCc0finy8LjfmX71&ZMuInuo=z1%bKf~&NuXRrUjOx8 zhHC9;SEg$&PaBU9bFzpNLme96a|riI`y%r0VCCcik9P>m$X0Cy@z7%GB6eG!*G{t% z^Xb?6BlF$&W5exRM89U4TjdD5ZHsdjpFz;p*WLoY8`4`bRv1f-&o#_6_F}Ao2%Ao` zezVS3dKTd;^tFSwuXtqArkiZ64aCMQ01W;m;IgopwJQF}k-bErb6Hcyp($#@F0LV;}!mP4y7Cr4Z(t60*0_V6o+5N@{q@g_NL; zh;q{F19QGqx95>eEwW%ahB`y%zEtg6WHdKfl|`HqlOM zpjb9L|20)C9O`~$J-yszK)NS>jWRFli4dDu83JNa_G$x#($9pu=N#@uX>Ec(ub8%( zzpbcel%iow0J!DzE>NKL;-fFhv#|S!fR(JHzD5o4H>Ftzt z$~6Y=Xc0Q&Us+N7q1{g|t(v~ga!Ip)P#%aXzv2&#?zuXnn2?@~WFO9bILR{J=vx>w zkh2h{4wZ4N`#KV#B~UnjHHP2*V-|wd5BE|8I=pII6Hz{7zaTnoV0!BH&uC^hey7uT z<$Bck1s`DunUq=FWYxcKaV~Ljj)kVp#nYZRUbIoR>MB|-)qU2)`~h@%X|#MqVD$-T zGf+2By;rxbRo`%+$^H6QBah6kvrqXRC2wrg(>}UyUGjQF%F&cql6HiOJkwd7HSB%c zvoL(Luyp+@yR;+1&WN(>U!LE7`zw-+Lfjc-1j}^%a{cAqX=?=F!UCYWxx)zF?M8S| zuVd4AUs&erq9bjaT{dZWvMcRZrX$cAVI;(A)p-$y)m=|sn8s!}(i=6a`$zkmVOwFW zGYjx_BePMOfKmK$+hKH4arl~AL-rs>9(xX%vZ6UKcxTgvS?3-?@R>^8lSpV!$#u`4 zTNw>maD!9r83_(M=Nn+c&UWS{r;cm<@Nk@A$Ic?MSv2fu&iNhmvd;T|Ca^^9OJUZS zwsh_;$XVcH>5+>G{&ADB%2|MMh;10{0u2V70A4B`x>KA$3p}TrW`kFC(LZ=3Pi-)CEx(_ zuXi~!&Q{?24&_FnDD04e-Dq$rOi*EYv5s5)q*07Fimq+&w~Zz=pq~>PWb;|sJ;3RE z9Hj7SIppjqBG4nq!BdU>J%aNe*a{Y#?^SJaGgsSk;g{{#IcL-kss*W6F0WCc*X@Bt zNtw_Cat*MkIL%gLi^iFBpwm`JVM4NnY{T9=(NN8E*Y1FO>)f(=DmSn4)39Y?gXo;I z`-wB~)$W$l|<2vWS9m7SHAOfeCF4Cs@%Hi0dQQB6y^-m7y z@6qWq>1a#$ULUQd+VyO{>QKmu@d6X^%lovvcU&Qr$9)d9qMoZL1bt~`#u!SLFx&;T z3DcF%e7OI|RMs7iXBl7G!mHkz3bF%;Y_vTx&nkU6Y2OdzRkNh$2l%cXRGVHB@)Zg` z1TL}VOy*@~4A>Wz7y7}A6YT(zXG}R8am5P8?g5`6*zTz9F6{|3o>$D%t+7jJ%y_ zUs|QEuD5UXmEGsmbBlFOhwk?FZE@?CRiqk`5d4d-fH?M}!3q*Lw zR<}^YoPyFJC!ZFkCZ~phyVVzUMO@b+K;&vRIVO{*qb_gGYsjvbw1SBQrEkEI3z@~T zTgQe)utMs?`;3~i-IIRk3i?#+_8P#}Lrtgy<;Xcv&^zY6swhrh(xB5Qt|uweMMJyi zf!Y|lHP?k3w-dKO;L11{@t4Qs9G~GFK47efn-l&Nyf|8c1a@-nMZ+^=c@1F$DoWZ| zPgEw>1p#9|}!OmCAAxooNshm6W6;wN~i-Q$)pVG-^PNRW3;{NN$t8tPo5 zpU>n(hHV&^E|%3`(a!Y5^@Ivmu*ClP@Zq^zqwr~o4d}aHP7;Hfb)DW4gP$zA(i5NZ zT>cLFTU(!&6wr|!Iu{Aiux4&}11?7-=ge(w4J_MCNdb(Wp+$SuhFhyNW#X8D_LHxq zqb(LCxNxC8VkJ69O*!#sI@5mc_Dx#6@O77$3~)`x{AFfb2u1uX%Q?= zR1RTfeo*-G;n!RH~|yGYDTRx%z^T$82}m$z?F{rWb&lT zxb;Fscm$=mIU{kfKP@sZaR>LhvyB&7>P zL#4u?NXe9fxs^^wQEjO{{!}_BzjT3%COZzEf_l4hjkyZ2sh#~nyZPg|*cW4U_obvb zodG&fo^k%l$iis%!=j3J+yco81(8mWJX{p66%AB_u9{E(VlWap#J$w=CLNNplGHn3 zXG}*=Oh=xEq;!ROyd}a;Z!wrQUfXjj8$R)pz_S!cTu#e#CWM9$V;;~5Fhe8MXV4k| zW)BS+F3qU)k=OV%DZKN1M&p(pfA&oh$3sYueoC*6sKp5gvLX~@ks;Y*HHwv61FI;8-Qff>v%7irr9BU089K7jiTX8alur$^8o&0UNp6Z0K5pi z8x1x6eOxb9C~zQ*agG7Uj_p*1w^BT%LnybvC!*%vEE4B{L%QSlL4V|!6{63kwOE*- zZ~kNs|I{jX3sAqh{N$ugaEtD1n|(%3zonIp$7T;^oHQcxPz1-MR7?llWv@TxgM!?8@Uk#L(H*wG`A2a??oeZ54$NiV`t4AiYDK1(B}# zKF~RF9%JTi)Ld)iGjTnDZrAvM9bs^3P$;>>RRX4B`6}(&IXXKdrXXZdcq=Z>Pa4p?YI*96KX0T|fWnKtAJDotb7b8sog~PtaWMKXBOR&6qWYg3*ZN5< zbFI#@!tb0jRa35L~7a?Go~SV_6yj!fie;wTZhQ*Cv}n=sLt^k{!^GbVEH z&!I!j40~1@F#Il0NpTeb(8FYaJR0cxfQE;uQY1qK2YVYmEMFkZ$Z8;SH|ioJUN2?C zbQzPtIJ?>k66@_ee6oe|E>GwhCl9MBTk$@q_uWvbrdF>#)x%i`oYmM9a&+9RMZ;ca z9p%KnU3M>(*RO&3tVZm*d$FMlIe~-yf#Dd?c^hiD%^vrvTY@p29iW)EV{{2myP(NA z)_g%9;^HB+o$Q;wOOTTich$_?!qhhFsgBH%VSK&-H9?MGBb>aw;ZEqmQha#CAC#k1 ztO|M3Rk}WX^e6J9m%QOdYmUYl`o8N{8ECU3cacsswH`FYDjG|m_?a5&QqXw%9xzqL zq*hN!i$EU3ePuL-6}g`F8*j#^gbM`BJ@o5x;GCDt0)0PFW|fu~fE}!piz7G1^~alW zP9|1!Qk5QyWh!cbhD=xZF24TK*I^7N@$4=P~ zL>1ZjuPF41DSoFq)6!M#KbpG4-LQObjHPMorA)WBJnqrR_luu*dAeCmQ|3t0QL|mU z)HdvL>teKdRB-SIZ~T$Y|KRv8F|s~n^oixb+?OeJ@KDxw{-FP&zIoxbEQ?g|4~ntsSF5GyEpk) z7yNC{>-MXBQ_lY`>Vt~)Km6}flFEQuYA@a?VE@aLj+{{WhH$I+sY@-CHKFzA6&Ua&96GfF#MND`;U z?vH%+DY!pM5TAnk!$AKdZG6hy|DLT{KV|NJFAJYC_eUlF)3oHHlK=mmmM9iC{W4`@ U9z1KNrh0iC@cyb|e?ZFr0;~{%IRF3v literal 0 HcmV?d00001 diff --git a/microsite/blog/assets/20-10-22/cost-insights-3-data.png b/microsite/blog/assets/20-10-22/cost-insights-3-data.png new file mode 100644 index 0000000000000000000000000000000000000000..cf5257d773d2ef3afbd234e6ecd2bed53c1ac93c GIT binary patch literal 254445 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 z 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¨)6SW_ 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 delta 209694 zcmc$`RaD&VmhD}*JHg!@0)*fW!Gk0OcXxLvEVvWg9SV1McXxM(;7*;qd+)FN?K66O z=UklbuFJZpHS4#Yxz;mk)clX1Nmn(?0KZ5}a`WhSK@markphhJGQWIPO35w}sm{>q zs_g6Qi#uMii0{#L3{ws8dw+lT>~8ej7&D#g+TGi88SQbL?*~o~x)-iEua7#c4gnX3 z+s^ka$JzpRXTsJdJlmIVZf+FJe=;#K@$&M5!C-PQl7hrH6)_P-33e7XCoWaoAgx?0yfDyA0iA*ER0CHCVx1dP6Z6Q z-N}hpc+;Emq<4DQl@eU92)3eINE{ zIA3jYJZ<3jXuRC)3P2Ll^lZA?9g1hfUGZ$bIh@LSVPR=+xjO|eiF}@%Xm5SE^ll6w z{o2v?RJk)*symr!;rsA=cQos3XUE&iPY!DWp1h*T> zUGas|j(uTBI!YJ_tF9Bxe*v!&E=p5k7Nr8=8 z3%0R5vDG0^zg{fZmCGlxZ^CblURI4gKD44xw zJqT1fUTnw^u24W;FbK*3aI<+d%ZAmfFM}Pq;AEu)`?QwXleU*#JrzMj&!RCYHO4LmN2hYmpGU ziUIk&RlC4S#OTrDj#mv{mQGYQLO@_vW&`7DtI$lKZN)+lu65~kuE$9ME~}`RaKAXDk#BjZl5CRZm(}!KJj};{jR&{auI$B*b(3^q2d2j@4PTiQSpz2w7 zg_CMkGFxS=vGRem%1Ta3x>Hz3f5xuSNr&+J#!28sXys^Yoc!goqh#xSF*G>!X4)6Y zoVxMD3$bve`oPL>Ke!)W93W=;R+k;-jHk<)>Vb%+Z&Y)0&NN(p+U(%Evch!Jluq_E z-c>}}2tBxpucfZTNSUt(Q=lY^^w*I$l}mf{O}VT9mTORaC%w-`L6%qH3dzyk2zhBB)~hk(L?lHs8?W#oaq?!&c3nv z@V2epr8+mr#-7+BL{Rv_nu1VtPR!#i=DL%MntCNr)$SdZW|%&3f)A<@UCdtQJsk?_ z)aU^kN21s_4Y1fYN?(m~;&R><`}v2eveR2IPw2J^86`A zDJmeWTStlyr#qYmx-Oyo$hc)RfkA`Hara}ad4sW}r9ErPFE;D%b&1w7(J-UQJX(&VW@}%B?3NtJ` zADK)p(;*E(aCHx&$HV3#N%uW%9iuzu{}8iul> z?l#D{aUJ*2b|BB{u~@osU-Qs@5m~7y(YJKD^3Y*EP3iM6x>@Gb*a<*I{;l-RxCKe5 z#`(Nn5wE{a0z}PZRT}r$!c4=XgBGj~`<}k@p>?T?*{3?V;tb*bZ1M|D(6+Ai@+ zQ=`Cpb)ANK?xmnxcn7aIc-J>Saw#AtcXEMO?3gO9bf1MCcg+??3|aCWq!25 zex+DU{V-9rl=)XqE~JQY-HG_r7rX^`&{NZo2}e7Pe4sIcS=Xd?ROmfoqQHJ+%9Nwm z4dBan(+>HBP{wC)V!ArlWR=IYKtkq;*xlIi3HB4f_uv}B47zpJzB)RY>n06>_tSUF zRNFR3=Q-3b^CGqQ?l%$NQ?J&JbtVfXvfpd7z-Rp)@~GiXTpZo7#iIV8mN_-;oBE!` zFSH&B(?C?`yF%}A>pj5BWKUuj1hl-lTHe!CYyd$IdWOmQ^ojx6_q*%_c^SD`cFWa^ zhK`3aT~s3BB_PfZ&O?4sadX<%RfS9URGE3P&X~qr1^MQL_K{k%`z9W#LflK6@r`?! zhGNuYx{IU*&vZx$4Q^RIHa2a17HiwyNYhwRJa7+Sw{_sCEjwX4;ph{eTx`4IJ{jCm zLWcErW}Sr-+N+I!dbxOY)px322P=KqZT;&0%(JzxYadmnd)T+vTw#g+fCsscro*bQv+L{x~HKLmJePS^%w{^?GvIe-u~> z`rwR+wX=(KbyC;yNDuW=DWK~TCZ1Kmjs|?Mjsm|0AKQ;I?H@RfKmF_jnm-hyf!}K- z-hX2H3aSW!ndd}rd$?O5`8W$0-xqy@$bmGt0u;D@PCZNx@wTYReqKsGbcKE-YWO-2 zeiTjkDb9X=?EB?oFL8D7?YH-P+$2?yi}egYOTu zASj#wr0@L6L2kE=lsAcVr-?Qu+`*DchL}boj|Yluv2?|~oVNEr$#6paxkCcgLW0~v zLXtzmnnEI$Lhf>~UAXN(1+q6nNyGzp1eqK^w_zLqo)5jg3*D1&u-^&ISJTPGqbODj z1BHYY!Rvxc;KPcR!m66Ws*l2`K8M#2g*D?EXC;R>Eje_!g||M2sc?n0xJ7iBMGS{T zj4VZrJw{Z+M@}?FbW26fx<$?;M=m^uS2abH9))fUMOGX|Y%Ybr{@`&5#`<%PgU6t( zlOB0bVfnf-gY+Nmsdlv1{i26He0WZlev{H|xWhvH6xwS@|BxH1BnDK0k^_U9s z5Ss>p{}Tc=jx^3^1Y*8pB7qVhJ_+0hA$LxO<$zcC_<*~ZR((M!cQSctCW(|N-H*S> zpMFV*5`bfz9ltEAi8aTGi6qG7{-T!t!u2^G#vmbWCPA4e!R(1p&z;D&1ov4jQIjWD zDJ9+jBT4!=CI{meuf3zmFt!IhlSOl)_Qzxnb_r{GT%QyyPW&G4o3K0FTvJ#q# zVNDB+G;4!Y>QF#r$&W^9!R8d2Rvs;r?X+h5^l|sp&xap2&fa>X-%NfM+*uRdAfL;hX+2omh!Uc#LV4eH3HtOyycv%yPQ;v-1l!eKne?Nyp@j}CqFE& z@-`51xLRm@hmA6O^5muSukiClHS&%Ta;TfLGJEp`G_VyIr~w28D4<+PjRNK{LA90q zF9cND8fuU-1u7%>9~juxWHR2|3x(qfQ|k*MYYJi|inNt-kg$tP81iT>lC^S*NLC8d zwu?A0iX1$0yuv75fF4DAWd)EhW&YMZ)T(svf0sh~8hWK+Yqe^01-= z22kvF5^HMKLQkM+f}qWz0uJtY_ZbHxH5-8QfR` zjWLk)wM^Ov#$+~v^10@!qm?Q#$UJnysu=Xj2@oYLQXW4j|JkE55)u2>0v}Ej7lW^c zO11>sv*yViSaBp%&U9M6*PQ}jtf~A|eP&<1j9BYiVx-1f&d*oD{DQ@*`KOXG8P6zn zKKx!@Tn@fEn^F?@QGCDC6nKk91-=H?($X!?LWgN!qYqz+l}yznsM1)r8BMuC{9{v$ zNG|zmN#$^kUTTr)Y2L5Zg1GZALnhg*X&HPZ1%KlXb-J>vs6JtZkuK7P8IKp z*K7@zEhm}kZYjk%w!lLfOSEtf`XT#+s}v8|+S=t}&^_8(gP-2)HBy-%(#SR6bBWXn zJgw|Y!-e!J<4y0WFYOuUOO;u{BM8qwSMG~IZ=ILz|2)=BbJlm4R)?65V}M*GLf#iF z-M3W=zhl|%U)}fJvQ59OSAPt+bdnkAIk1;HAXy`fPLzGs+Hb$wugo|2uv#Z5Q?v?X ztS$RFpcUIH@87@e*|&v_FHBUYQ`W9O)+E@Lj`iFs6kFvjlkt^e*h+3#%)b}Rf;hFqS zycdzViQI2vKfDO4Ehp*~j2)A~89pv6?D49NjBRx%>T_nAbd#IRJgymE!x{6;jyjvT zhsS=8NFC4!=8)^X32(rbA8#w2y5{d^L5eSMZo_@4Jh5oPJ5TPgoHpjK@MZ#zhh+C- zjp4zzHzbnJP@Ip;h{T4R;qZ84g_PDc@XVd7H>CK3IKAPy1bXWDTFT_G!TijVF39nu z<6{wsxKiE)xouP7hzl$u!ygF;3EHRCKF(L9k8@7XTX!$;D9vA=&A!o33~SE$mlW6# zFCe6Ki3?0V4`+Tn{{=B#e)FEf+h#+cxN~jqS<&r+!}K`Q$eJ zQjFG85OG(8HlBs|oC|T+&$A`i^dUSX^=dgm59Ve2-~v{G3@U-;oU!2x^O0HpDGALU z8U7WnoRw0PWudp3Bdp=Zm&|JK6*{7FL+eT4+pv%P5*blXwq`Fm^D0p2EulnyZDe#M zkTKWcx&P1a2_wxs6dlbA^=4lw4HI|q4_xAana%?^A1t+38#}UhP z;w4{=LZHkt9qK0T`W!Im_gtrZe}MOg$F|PjYuj$b{k!cu%i--T?z?Z}>(K90HEqj= zpdL0Ic=ig)4=fGM>DwXr~@MEdngz6iQ2o&HuL!{TRQEH_^+(8g7BBf zWiZSOiuTLHh%_U(MSCqo2p;-I?z*53Q)%qkMA0kzEQ((&DIRS57N?}TJHp!mz(qcQY#IPu*NN8s zNoD4N1?tS!)tH1FLYwnR78^|*n`zYZ1)b}6m+OKSj$WB^uqg1bh6Nt+vhu6Vg}?MgLg>^! z%X;GbQGoRoU&UhOE`67pV7m0>)Wk_y#YsiQN#(@li_Z0!&ovkl=%_N8e;9sv7~ZzP z+}n-R8*<()M|3gIjxFGIfiZddgXI3~_~y$-+*P$vvBG7M&E*rz_1DYWalwZVEf+kK zwTRwlWZ}Ty2%Sg1FTHM>_boapA(NAEylviR%E3661TBj z^%ZBHbh`C&y_@C1p7r&);_~g{%&Rgrx0BMCmc}^uWsh_kT!aRh&K+0ao@-8!?)LzD z!8cp)-I>vG(+-9T=pnB*+nsRSDcXJvFb*qlq(_V;- zOH3`C3Unc_ZfNP~q39o9s4`EPJ~+9kD7n^%e5{E5?#v=DonnQsNa6b~x|ptzHDzV7 zF?4qKhTtJ9BZw#!fh3NDD1)P{ta%XSRsdYDn_c`mxirv!ar5xFjzahqjnc<2%BA-=J%ifVDy%nS2>uiCS6k-H;X2 z)2?BV=x(zTJlddmI9-p|^L5qfo-wUbE>v&`M&5k%mJFgK=13-W3d?$igj;{>ga%~v zGV|+PgI0JnW%Tz{17m`eB(XtxSqtEC)VMVOxFh#nb&}cSRbV!-%yxH)OIxSRhiiV95jeo6ug^g-F#ScE$}N5Yf)RmjBAlb*9+Nz_N@ds%W2YBLX$ogS zHxTF<>I*RIiiOLM!+KH^3-~IUf*XYIoHO>zAU4?`z9qSjQk@|7w_&1ShMrN7W&(F6 zqDKULkmm-xuP+a0%RT`W>+qhWr{-~tSlqk$@P3@8NmEP$WsvkiTsW*@E{>Au%2tBd z+rV}{DU3UL(6aqCDOM)M^L8qbL`_DCix6VQz~VS?b|pP3T}+D110;1~d~_E&Xd=$C zlAqVew6dCZf3qX|{p^W>09FwDoZusGs5^*jaEWOdHXoj@#GZ-k+=vK9`=0m}^BRkc(v z9F@aQG#|V-HDLyy+oys8(*tcHI3~;$D7Xq$v%DwgBy|AC&V5=0nBln&P3=(ythsOs zNk<XC#ZRt9as;Y6;G^iP^rKKek?XtAeli7DC0j`X*IuvzP4D=_=J#?Hd_o4c%dT z%I|!-S@gRFuO=SYR}i(Z?;R_@+re5Nb;p9^d5*HP6UpG0-l;LnA(ZBHeFShDqCkdZ zhZD@+BUj%U6|Ga&r%NrMv)ke!gHZ}>yw+EQugeQ#Rh;h77Dr)3JH-X9Ic4E=(+W}s zq?7S4!W{-uvt9wiG$wQ5ehDx6dwfV2gG~4-Fm8tC4`@k5b#2Orsh|juk?TpAIz(Pw zzX+h#kctbtD)$@vDsjMz%T0#M&P&}zNW%?Q&t;1xyc3Xfg1FfNAT%XV5L5@Tt&tqy z9bq5k*mFx6Z5cB_4ssKiMMrB;klS)lV?Blc@QJ5L@y7#7tkzdinwck2sftF4{|Yc- z&i_CtY#1P4Os13So=?HY0ZLo9qq=~ivPZ0IxIo`yG}kKdYx&4B)~)QsQbU3uZiB zNQZ?D#%~5vnL>{q1=%adB(-bpz|J=?esYPHI(v}-@#iz(mQ>kug(Zk-B{jU7<$i^G zqA~Ry9_LSuOyo|X;Xl0!a=z}5!u&`h30}=1%yFvAb%{UZ=TMvE$)rNltCiY8=7Lg+ zlMVOWp(r~Or$IE?~gTR%JihzTuamww?8FJ^BoE+`N)jR=u{mLX^*ne6y@%> zgG1kzKuH+B zMUwy`ibGyMNSHMgYG)Lre)DmqOPnS*{EnX{61)s+$VF9EdS+xb&M-4C!_^RKy>2kA zm_L??DWxf6Vb}ddd2|F-1Ngz@VJHAB7nM;Jt}a{7dr?H`S`eK)<8CfWd`#cc+$BSC z%%n22g$->T@Y#uD%{FaSCKU6G4dqOEO>z;aV84>&{Hq<(=_8#sT8gvb1pJ^&WYMR( zi1VKoM=Fhih#be`5>yUMy`NDqX8?=cRb&VHUqg{TiG8p%bwb|wAgR?2p_$XQAD~J# zfH7q@QPlctwj6nO*U*#Y9A|ERIar!}$Fdn&gvr^SEQM)}OF5?30>tL?WhJJU8{dl! zSm7U$C%YTF|E;J41%d74y68a3n!ifRJT}sb=fbQyVGUrDDCV%o+v*tX`mIRK?~F@g z9b>Z0(B}uaP%0})f1xZfa8QF!y}@H6I!qdWdD@SIqJB8997_7=8=vL; zBvPpgG2QWoLBdRbLuK6+@;;(ZK|qn*1%^a;_QOZdl>rl+8VnafEye&=6YqxXY37T< z7SF!GaC2Wb)J>=nj4OCr?UNU9Xt4Z2pqVZ3C6lZ zluJY1L|^MK-4O7`eN*zuQEZLDeMpZK$YYuGqKe}9f&c=xNR9FHM|f2#iBgOxm)txlE=I01`A>;y*N6VgkqTt&q3~t{wjfAfXNhL?iC4CXfjjynC)*^~`lR>z zdyo2Lh&yDM2IK^}#E?7W3_BF;29&(Hqzn_3GPz`9%TyXW)C9Q@Q8^A>egJ4;vN19e zYyfmmPI^@iGM65lo*t?WIJFBUhf$Jtkjq9@P2cdd&hBRmN^X}t8k-%) zK9QI4Y}%D9+QKYkkDb@$EXao43vV)Abi)`hjInzAKXWjDtq@o=c7#)-wU5``APozsaYziH~$t`5cZBTuh%a?~OP((H6uiv}8+CzEF zSCZ0E$`q9l-8Yvr{zd}chd9o^XWpm%WIPQp{ysyXMv$(iVW>c3eBEyJ!(!@3TmhmK z^|uacEuDRc4B-A_L4gJ&HgjRb-L4{0eCMLNi z7B(i`re@EFI+90= z#>EQ)N5E70BhwZW|AYOX4aUI>yFm&Wp{W_Jpfx|5Um*k#p>fnG5b76qb%NROyUy7_<_Pb4iE_P*t-9LHd#><{Bp*&L^$J7AY0! zu?@$Cu=_>+Cs~kS3;Q^RgliM)+>^SWAk_g-vWTcs$=y7t{0XDgD}UVj{_ysco4^Tv}|hQKx*GJYd?uo6^LN-)vIU z*ke>XQ3UFtZ`>hlamjB<%x`YNYxiGjXem|fvE)%LwOX8yt1X;B-V~^||Qv@|Kb71BYlC&fG;$d)TeIqx3sziuy?shX;s;ATb9_ znB+v@2HDMe2FgY@Qir0L`V#3z-V-M-n8qp6$8)pWG^i#Q76+ft!Xe6^V$TvVnLDaa zr!CZH7?>v}z{O)8OmigYqb6ljqQ%nY1IjgatHF_TqmuKLxbnDE=CYmhBpt=kjg0|RmL6&wRe|#j%!mb4hSdSn zU5(S71Jlj0%=OITeaww9UY5?Cq zHa!579*PHrbSC}p=h7Pn^jpMrraIjRkb!6i;C>*F-lFnl#_*LOE6PT8O1P`O?p1-wS2~8C0u?40d20 z?ch9r!v)yEZ|YNo*&(F;M#!^6Ed7nRm; z9cYg&RE>Q|alcNncTn;KL=@%4*@H=>;8)(_uhD}gv2)n?2&uVz!h6PpX+&&ki|m%m zH$h6?OD-a)_v*v?wo^@Fn}PH~_*_n5?PN=Kxb-ecO8L3wmA9r)#Gx6#l4PjsoVbDx zqYA%-E?KY_gtZ6!Jaa~&bW9@uz76`^tT-c-)7ED|hFeTdJ*HKva)1t1n;g*K<(KxaSsPc?D%@>%t<1)rSC z>y=ZT)jL0x_tzVbJ6~%%H#*;G=Q)4dJ<*BQ{r+O6>#D69exW=`YXB8$=t^qDm|=j+ zYB*V{&sbu_VXou&LBF!Zq)6v06c@VVJ-;;PRzv;wXqVlD26N5(DgTB-{rev(ToE2z zC;biUdkt_EF2Kh+7uIzbpM`qO2QG7@hAP-bzY8vSWheX54SUK5Rla&Il}5+b30quc z2R;)=q*`Y<7d6W}HE=ykc!TTWJ&$Fh5KE)L#Jx(^XAjwj1k^@;&j)9*&$S&ciw^8R z7QqjW0S^X)pWTxhy&gV?>$(2ee^{?@WvG8p>ijH7`v?r3co4^Zd|q=^DRebwdCa%w z4*t>f6YOdX_qbQc_4CJLfT>ep{6(PYeQ?p-PvB`t+O6B>MR1;5Soni4)~%1`Lu7be zm@ZTJO-XpCTL>XX%&8++?QJM2xBsD=^G$6OZew)mZ9FT_uNzlCm1gBpZl)w|i&eLH zU7R>m^I+g=N=jC9xGhh9oO?Fn(H%*R*PkLfvZ_IiTW0Vhx zU|w<27T+&C@x5+slD*KR`E(YLup?V#XjM78Mn%BOrbOA6Bnc=;ZejB19YUKPXiPrp zEZZ8!ml_VwTE3TBG0!^LmpT>CdQH!WnBIEJmj*}AM$eZ!YKE3;>T!16Qea-JqsJ72ThFw^%hCTjUOgOM zy;;ED3^*0ru+aCp2BI~3$ZD^5J>-=3ZFoi=g8^O<=C(ueUJ)>&!+BmKmj2ZN$8D^0 zq_bocnp@B#UU+hL1R$@8RY2cq+eEb2B$Rgt+}jlG_%Pv9tXKeyA$!77YwS_*G#0ph zq}6Orc3@IPU_|U~-qPFLNZ@R&b+n^}ju?2caQG@1`?j3ty;AxXkgYP>>SbOHw(C?F=q_G1C?nwl&1?k&3a_DOq|c4c#$&xdPhvw#uX16i=d z@p3R}bCLB+fo7bWM_+s~*&fiCRt^+3?-qDZ|gZpx?LZA;4#|mfhg~xd*ev}#K20b})VvO;C%6#r+PKc#BBL$d`7z{DJbB;+R}wNLkvDkslcG+1v&8 zvogB5q#9)-CO}S3+k2IQ*1e5@h<;c(AlE=%hlG|gHIY5e;7QJagjERqQ?+EQgWo&= zuOn*ZXJVHhG}3!^V}BYvPCE;;(-+pfp51S@Pffq;cL3Ea0qhw7_Ol-uJahLRI% zVxp3Ss=G&Hp%e@-^VN;wv3k^bRBcj6aVgYD4>+@B2wR&Q=Xs(K=gRo^DT9JEMib8IP}?r(iTaUr1CbJ>xfGaL6}5M3y1F z08~LWWPeNoX#Jl!Iw3&)pbPn-ZD9f*c!Lm%D5>wkG$W!0VGI>R2H{@m@RXP=6HA6OZ)3?v@? zgA_}a5wpCWeDZNr-eNNIf?qnk=7otCVaJ7;E{F_8xjwuW#rc_t7K(CIy!m+*9f+kQ z(~)j6KX|GbjLKRrMox_Zeo{Z}8g~c`D+fpjPs=D4R-mhSD3Gk{%q77h22~9^TUOOG zHlxfjBSGB5^`C)8NQR9EnXkJCAOdq@|vcu4sc7)adzn24RAISr) z!zhdG!zHNtd`gZB!nKE`gR%D2VNwvy^-4ELnkHCA9{vqjie+>HA%&F74XCHj$X~mf zczug-UdW=>hJqxtQuKw=GZdj$v|;!SM@J;C-342$#fQqK6%G-yYG4bvgI)R9b5*6< zTjaduzlqJcB;1Vh3wbGfyCH4zh}suYw}3-h(Ik)xu+bAYEwZW?4bE;H(8+J;0ST47 zes&M2oM-_Wj{fp@ZYVcf_MR1%Q=idku+mtv! zBts3u&oxBjzCf_^jcUSsb&27_6yNu564N@@nC$?H{ zHJn0BeTHVrLAa@66JClUkGs)OB@!0AzS^HVbg&3a~cixD`J_XiVh zyD5b9QAOFgx8Gflswsf>MdQC)A97p>n_^d`vZyZv`L2Anb^Ovm^;<>Lbj zHUx>Er$RvAe#CDJ%j%9mCJkU0Ld2NMn_JAL?>H54oFB`3gH*DwZ;QlHER?ioseU0E z706kGcz(5fE0S>r(FIt@l!VQfG4z1wW(+x^QT3BGVjJ1gt(WMcDp&}42R+=akBX%_^lQWpcBxxG zlTCHFF7htksM`Q%MRlZY#4eEN)NPP|!yX<0Ab)~}`L~b@1mI8Z1qNyh7xKUMec*p} zf&atj1OMB<@qZKq1pER0--G%;7XDXV;D1Ap|I@<%stf#|ICOs#1pG&&>wm5V!2iMC z|J4HEf3d&+hWbAxjqz8i&Iv*sFa_}o;!mn>i#Fa~4I9nYr6b!;iise4DBr>TmMvan z;R8%OVc^YJ{FNllzenwm{uZ^1Cm+oPnre&r2VAhiQNeSQ2|xO6>Oqoa?LfdIkhSss z)=~JAfTNqOv=j=|Yjveq9;9O(hY)ec=n#qk$GpE_ZU2^lx2xQ93j=H)!`b`Lc>BD4 zae~vs?r?70@RfouCIS1))Fq__Xwdz+#A2z!i@Brwljr=DG#c6tCJSmB4Wf7^+0qZC z3lcF1<4qsh31=Ii+l}B{F#D5$J1EY>XSs;Kk^;s5zCjkQoswicubWe~Jjbq=eK$3V zUUE6L&O-HKyl7H!LjPM!oFJY6(-1pxku-g2Cdh1%;ZtsbHrAi1U!Z*w(jcXW1A0s%q~q~)bm)it_dwGEBANt%^S?H!%s^p{w z`C0$B9^E1NLgSci`N7i^Z+XRIh~omKmgz~tK1zmgwE-wXIg;%u!f28qq~IXfdUgMQYS$a zi{DZ4hbg}b#g?o%q=)}sOex?PAPj>e|1ec1cCjaoi2aMHpwhpXDmnheG%%C2=pRfI z{xHp}*DU{wsYJ`an0ow+Y1eGGeCy% zn);I-t8nuVrKdm#z_E?Ei2{hB6@39P(Dc3`ypYPi_=r~7d$1CzQ+{x$+*Kkm%r?Je z;wi|oyWk+9uSFn8QFgKnpKh$5fp(T9Lk7UqJH8G=*QV= zX;}O2#+_^wcxSg!lOJh3h*jA8&zhv)az-z+&SxV`mtWjGd;>JT1OhpM!Iu7Ee>EjG zCNxelA|W}&F;zW@mi*suGykr_;onu9*8fw*Xa7GcIy=aivUkWLD564=v3WBvMZQsB z@>eznFaY{IG&3sIo{qyN*@*wBI7$9Xh2Q8U>9tC<>GX>?(91V~OVU4(85m*}9R8Pz zxR|i`ACZYEsniK+g2^=hsgD15G=TpR$NvS5pAad4LkQKsMsPN+n=XBvVTzCCafjVm zRJYemZrP>RCAcfw?r|93lJ>_;pcPIU)d!1_T=u-LOw)~HHb2)dl2$RJ-SyL-2XtD; z522g9iZYTEt07o0G(Q#mF+gcqc}3-)q2l3Oo77zbfdz~y8Xg;;n4FrP8LXfE+Zfs2 z+1(Qw-9P%r7zvyIGe&N1@9rNSpPpY{I}YCfP>4iQ=vZz3@K_95LsdDw!RVASoS&<6 z`@`{uiN}Vj^9G~I{R&Ne7$L9!r`P&Qw z|M6R9yrMKVkXHtfKC@K%GPQOKJwqdO7cp71= zs$8M-pxA6@=ug>rQG#*pd9Y}`KK4QcFG5rtJ0WNG-~}UZ3=qVgUG?r7A#V(A$wd4f zChB5}8rz)Kx*p&3D|O`N7dvC;q9B`sL}qe@`#m)kLe>Qf$s`akvia!^3K9ldB>Yin_l_@6)`mK)QY%RKr>n!R4F^>~(kfnpW}gXs0Yw zd!u3!`DIUdH>37AO81LnQ5PKR>+e2X+t;fhAZ_LA^)RW{&FO$7>)Y+z4_$%X*^*P1 zS`H_n{+c4ZZvR%sm~inA%59!LPjWFrm(Q22wvfkCF%_Z@H$PfQ#-bh+WWdyTsogkS z!r-Svr_>d6$WV;`u#8gx4-hv0yrx7M(ZlMn`Dx-067a=?~HfkTJ68b^cyB6$jk3sAWjhQxQpE z7HMrm_V<4G`{<54IBMVX;pzDMz zyqy-z;u}Q~uIk3`SE*tI?pD6d%70!IV=~MAWHX4;xNiPn-MD7<<+X0h2x*!vm;o)R zZab!uxOq43N9Lz({!(B&=YCRAxeK~SQphjxmLFKVWz+Y^tQbznWcKf6I@^w?S3NR6wY`#}exZS$dK@jK6j4=d{Kfb3To5>a&s-KVMkQbl1$ znl{weNAW;Zic1dPPVLK2!oaNwR}NBf)jEWJpWl+jQUdO%TMa-qgf|s}UPxbGNUuvM z2(NC0t)DgL`xUOO(xU4zgB{7!U0$Rs8qZR`zKp(=I55K6#E4aX7`|x4^=7DO$ZkRI z%a`ttv(pVaxWZ^;*}yZ5E*Bd*e{>3TFH*KGfRHdD#G@iK47RYNnPC^IAiCLTp5F_% zDf{*?V-TfOHayT9PnbC&d9N74FjY8swwIJf?O zDz?Yp&4I^U>L&@y4$RXc>owc;MVGZcxHsJI0`XkCqN9XT4tY4{+1KW@VmNJSMxmONlA6Xg`} zx{5#SE94LspVGQlK&#~1maY`<=$5y&3cwe_@QCx$z{?C)I~X^Tw2wEo)b8Do{;GKp zm%}TXB?9E*Y3_(c4HDuwJZm}NGVKAM0WXluk?WKA8E~*s6wfk`9i;n-u6&_bnbriI zfAFnr$D5ry7W0{&DB&1m2Qf$LN+h`|)9-Mm;A)%lqaZZqNJbYH$y&^9nSSdP_*DGu zZhB3sMIjbcSFp@?vh4&nj`q70_^U`{`iwLjy@s4!M;yKGE1yk@Urj_ms-k{mt7#S zoIbqlW6y`os-K3XTL5FcUP9FBpfAVJ}A?(P1j`_7t~zxDTBb)J2;o&ScS_h1L%I`rbkX56eHj9Y<_jcK@(B(J4GZUTd*AaS z;^Gq$ZOp9PVv{m5v$EA(a`L|w6bd`Jq!j(ZW5jti)%6XH@lj2!ZS8dFnzbFhef{b! z1H&VuW8)J8c0+nSlXLUbKWJta{=MY=_3|9>%^seddM%w@UcIBUh2z`%2Zf8r6xKvA z+W*I{_h)Dmg7Sr8N|bhBsN3RqpsAsJgPFf;qxHbE`zY*2aU7U^i{`#KGK>-WNwXIt z3MI7{Cr(vr=*lFrV-%-AhFch~^i^skS%4J<^r{K0PT39PMzTsT^g3%#ou?}0^*h{ElG+n7(MzHO~+#xrT^4o z_$^f=-Mk>fri?OjQ4!8CK?iTFu#_`j`lK|V?8KtHCK->uylz4Iv@(ZD-K0d5_fayT z=aud(WdKU^tY(NR;;e3%v%I2yg35Exg*iOU@~vS>r2M>o&1ChwX@iWfGIMT}hAyi6 zBGsn$1hmt_RC9jtVAHZXM9|PL$ ztm)ZXnOiH+L2BDC*0GVj9wrJ|v+EkV<6{{v4PQAOxYY0fmSCH{TusO`h0>=ctFRPv(ltiY@t6AlS%9WPB1Kwl{gWTrPD0kk1TJsp)#;6-Lr+b94V08SHh<#^*)F=R9&pRzU1Dxuz{p~>Y|Szi$|b>)0G0xP0?En-$iz$#;|>S{&5T@c zfLKQ0XIE2Oi*|!;9yeq&=$b}dzG=Kh&O&ebZj*1>wj4NN*m)f!+yDr@6n#gfkU=~3 zE9F+7Xb;tqd_K&j$5fa$%f#7wko9bW4mg^-c^)pE4^9bF@bp`5lI&a?&N))nsU?JH#*d973yrt+Ts#6TKJ ze>5Z@*uyCrkyEG;F{gbvq%6tP+7F&L=%y=g<_dzBc_)ql;~8gljO|mZkilIL=9EWE zZ1!FsO&9HKoaZb4%4V_}8+vZJm05>MmXDyg;@%-S?Z(bO<$Lb0#PIs&p{h{cD8w`qJmM}s`eRS)>U1JK*Q8v^3>n|eVU(sM&xh+j* zc~c~d``VUg9EH!)OkaMG#?Th3QN2Z};e5guy?JEelA7b0Kg+zL2;~R{mCdEF%Md{r znis^#(G~1XXvCV7WGS*v+q%iD6mK=PXVj|LHqjGG@<|kAir6IU8?3EB@iuv$ScRQf zEy}9GG+0(uN=-Y_f&1+da&_J2=X0D2uDgm2en*TuRi+o-|Ft0Re^Nk$NzDN&RSHR- zOZUVy`6k}n+yi%9bJ2kWN|TdXAUj8|jT)rX<@@nv81HL!?Bu@VNWn5HE0{`j#1WjB zC(UenQ$vY>R*I6R21jOcV@Lp_m6Ruq&VDF(GbI&=eR)I8b(Lz%Z&kZi46TiP2EgD4 zH3w43HC#$;3ntI}-6^p$tlCE1w`188+_ffc48>;4dGENqiiiOWP$)ClXRxa)}^)_v>WZA@xd$gqAT` z_KdBeNO28Zh0t{$E$?JYEzg8RRfTq>Cn9-(N)_Pe7x5I=xp_0QlD^8rov`a#7Nkft zWi~dL{s7!0eB~l%ww3?xIP(^G*THWt`q8W_$mbS@8q!!2WLvH3#&nBIy?&%r&m-!( zU?y$rQPHgUXkD&j4JXRj!(e+U(+G7Pppvzf@e^6!0jI#~;A|6TeI?`Sq6c5o=3O-O7|TVob5G-;iDKLE=N;$v_NEi@d&=3U z{Ho5?J{mGtQ0EQfB|P!e`s9I2Piwt3JoL-*@+)T_Jk!4d}{~1mraY! zQ#U5;ou|UsHC>`QHeT{s=c3JSX6#7L%_&~TzkS*UT&t{(tvU~kC7w6hUtQA<`Oo~Q zJ-;Jnu0({a?YcHMfB!Xk+aj@k9MkN!$3yg3@0fKq&+D~KPjqKZ{dyD3?0rItWZTZ( z!RLF}2I@!Eb*n}8xhgIe*j5EyuYwC4@_iII#w2#!I@P%i3F+K6tbSOZ&i>V<+jX1s z@%Lgk) zAAiNjzoP$>aD4*9`-5%}{*!6@L%8CB?||H<#QnEurKh)9ddX_O!eV z1PF}`=>5)NhlcUJQ?AD0@1$CSJE64`aZKVLc%z||ldqlnt;ohn$)&hL4yL@aRxgjZ zrmnfAHM_9wop0sp$nAOOur2$B$5@-j|8P&kcB72C4YThYHs_DkcMkh+cysuNe6m=4 zhc|KS*ME^uw-=8uzqM{&feFIu%e!^c^N7=-@Fj>v! z*f>ScL0tl1lq_}NN)Y&1m}=QndXQn&cWjbrxL{BewW5v&AoN^_KY;dn1>w@*1prT| z^Fr|2sPiM}=*;qi#Nmz$qNFuw3uBm8ii^^BO4i|3rfADD3ubxBN(+LFmBsmar)5qot?LO*v*DIC14w)a?=ZW#ICT*24@)K2dXkp*prQQ+$P0X` zs9klzKTqjsdZL5tad-xuw;tf}F=po&lv@&3_h=e75f5la(2>npGB@3bv@&=7dOD@( zd0J7tf`Q&#txkNCKDJ3CP~*#@9M9ITZ9X9co$4E%3ip|yyzsPr$d>0=n-Y+4MR`VSsGHzMZBUg`b+YTXG zc{PVneVWxo+3m@msMD`*v2=_j6dK*camreUCUHnNLkX<~2m=CSMb`DG`N-C-<4GVH zn*^mKVM#8=EBiY(;9|4tG$`v^MxHZc-&lo#s6g-AtBl`EUA_;7EYA)*mDA zgirJ+AZm8JKIHh{(2f~G`DaKmsf=kchwzVEG0$>MHOv`yPGt{mUM8#4zdPiq`iL1@ z59=0nY|kjJdbYZnx^L{|9U6P^k7S$tGe=8xYQVEj`ffl~?AG#b*}FOuW)cEd-`{~c z-{zU1E0tNJwYLK>3&NGkKil~bujZL>?;%(S(ZAY!i7lfukgMI(ST1BJK<7vNU|lsU zqIpXFGDN#$C+@6`>-wtJqxcp;o>C#;%Y^<@rWq$haJ1jTdzh=iDfn&3y&~WYE$uWC zrj^-5E(k=9LW2Ls)${g&G2q(&+at??AE6?>>X-19~M~<&zra;L;CumQf9Zn@g!p9hlb!mk}$dqQ+A6h>H3}7%Rg+#l#eB z6g1-#lNLorWiZ&Tqz%{9X!nQf&oQd}i7WId4VOV&(L9bOMplJObUcjM8pG+j^b0pE zkFxoYrvZKtYn5l1Z3F78eB`UfDPqozYE5iw8*ax$YT#y^lwkis}CvwChzex({KD~Yq`iVdV} zV_{Jx#DD(G`ehK}_%Kt#ExtfD$n@*IT2=VZS@oRA?614Yb1k($)e?-d$|efrA6tJ_ zS_PGB9ZD~@t^6=fwL7jhS_w_Ybk>wB+UrbUDc5N*_tYGSYxJ)(>JNG%#orTk@7nhZ}ShR zLA~VYwW+4&T{3O%)ICjHp1hWkM-+#=+O<876r2T*3;Tj{gcGd8rZ?}GGq}`5?entS zc2N35g-ho%P zj6c5jp~!uAG#=5zKEfwJUcz=D@e~fN#RP@3l~nuE6Z!2q@pr1;qIwD6u`udoR`Z&W z8gW2H$NInIJ?|jd=78(0&m6R4Tk(u{I}U_2A+SLr^?C8u*@Y(z9FVs@X0E5z5LjF7 z(z^h>-0DSBgsJ$5Ruo;Lztu-*9)ZEi*^IL>H5?mc>_G87eUHt4v&%dt=n*FAK?4Pi z=cd%&>o3Dfe23{wY(lLlmpv7n!s|(2M|FdcHGehs z2Wdk&rG52o;(dsA3WxfV>nLU-)Sv1VtxU9GwZ1$d$0I2|b{E=>ZmE8c>iVM0ago2i z&j^B<0YKdViEF#%o~OiL!0&587$AxLS=>&l*rm?DVF|&VtTv-k#y&qK$L-vSz9w4s0 zq~yxx^0S}Z_mYcb(_$mufmUkBr8_+S?%nRM7SZgytGrxKLvMT=>z7OTo1mWpJVOa` z&hgai8~#JhZUGzTiLR@wzoLIF!n&S`SJpf-sCJq!m1~LH#5>VrX4%5MyaT(`xUkuDCxF%crP00I z@JRKthMjYlguH&caM3;&#sqrmRenCv9OiL7XL_)dAv~qK|FL(YeOm0ges9v<;p6%0 zv4r1s&hxQtB}7*vXSlO_%#?Rg8QFCo{b6@*lmC~oyqD@>*Mg|)?~T*QmHx~3&;9ax zvFzitU0nMR9^+wlZD~&*zJ6bG?lIA9`?IH6_qfW%do9lM5>M3|yBXvH>E_U5>fn`P z*o3Kj$mQZo?RPY+D?{c*mjXmR@(93oY;E>>xcAX0_I_@1{Y2&omFj_gmX-`uPNh&a3zA(5vV{rZ9wt0* z4AgA#xBME6T^tlW6l8f6BnlI3gcCH~8zPn(XsQf!$oM&$-1{SQ@r1K0o-2he-hbU|;q|Kn6Rh4WwRl|+RQiE^t6y(C*= zIG}sCbQqzk(!c=ug~3qmc=NK-Z`2b+lD2BxwA$9i4^PsJhSEo`S_mRD{xUC2Up~M2 z`n?P7o`gZ~yjDcyUz%=wLQF_viga>nhEzIvh;`l{UaP41FP$+DL|6GPG}brNkfn#@ zf~mB3s&set_Vo7+4h#>Cj*O2@PE1=;n{+h(F)z%qt>zGQa&>HPP3_Gb>>nMTjCN9H z?_TXJ-`w8LgAr!0THojGyzK&@@L?jin*Cvr=`d1bxBGlix<9wam1l4T4N_Qi49DdR zhmmZDtv%Qq4ab5g6yLH5LI)vAe11z8anL&MPh@cFmsO0S?{nF#I*mqz)KgDpNyda1 zP|2Il=A*i*oCPZyNED$HnnXR#C;VIh-Bc^;tCPNy>wNFz3E3xaf6WRzz% zT_KQ3K2og$4Q{kcHrS~L*iUZl6uB@g0e;hEV+ZiaJxt~U-(@UEk zHhL)r6rg=l{xO=d?V~QsU7tvmDm>fsf}@2_9Y>tAFrH)(qZ`tbtyAhnFDNt9`Qe1zWZC;7eJ9h{NR_ApqehO~ZL!SRFL%;vXdIDQ!(pq$;kVBNmFZT< zI&;hRRu2Y9E({v=4VjZWw+9NJd#eY@CJqbB(R2?ziwWho0WnZ}3u+BR(@uE9Z99!L zACat2Z{3Ll(KI*^|AndtD!mfR&_pfI`MZ`xK<&6BJQ$mU`F_imisP>Xiq!s+0v`5`HN!>yZ=zRYl`yoMUM;7ea$G26F6deam6#Pj0%@yv*p-Im}h8vyK;YfD256F|OZMr^_=bAkUKOJcM z=aju<0#5ozf0|j3yxh>xAT!*~$bZ26wbU&ja5t{Y9B{j4=)ZWkZM!4zu&&v0%ZmRX{47U48Rp~OXRwKgEJ!iaP5np*bDI^l*G%eH;Na-m%6Bik^>4AJ||Kb z`ZzF#Ms_D2!~y1lupC5``YuTefhbTZQVTzbm@3`58)3vJjteH&LViTpLhh=WVC=LB zAR$wM6{4U$uE~>ES0QFlzv})tD~^DhsjGmL8fyLXGU(q;yfBksa z{Z2mn&Ip2GG)?|vO?^)2615QK^|T+7NG=qkm@qmVOdy*I3cR-&F#+B8k07yze2-ij zam3mIl>c}j`~YcybD;Sj7C`SRitHHDG`z}Uyz9huY=?itt?FL}lfNu~d*27WXme&t zZbP0_s);PI%Fh?1l~0nzv(vhbZ_^g6`Zs7VIr0A(vHs{D@9%@OlV4yETkzlSLyBoF zSjs<^bS+TCFgSFVFRVYT?B50ZG6WSZwY$UrF4!OMh0=d7*uP@A{zJUo;0v`rhKS zC|=n#%KN=vf3Kh!>*EQ}%|$`4FO)n;+Vc_|xD^vS-PM%`j&`uRSv@KW{qyBd!T!4) z4i*}kga+!(1B#R86Eu=I&2}KhSF`OP9Fr1#BLthHZLJG$nsG3)cRIlw#RIq%=0+++ zVAD-$N)&+yN8%R+Jd!XBX5Z24kH)N08?_|_F6)JgTfnU9icq=lAxiS{=zoY&68TC& zs`yokG)cqdcwd9bfk!G?my^aM&8(>OAl>Rj#3bXs1J=~rbjtiND`qt8(8c*8C9Vj} z1peO|yXE;?g3W0QC>8*Dr63e-@w_9Pr8;DNzwUNedB5Rxe}2E|EBd0l)yctg3!)89 z;NI?dp#ET10}0?UeAlZ*_fNNddG-@@H(C#JHfvhn4wD0P+K%!PVm(kIBp7*+rU#Lp z&$vc(_|D0fviUBEk2d%&yP&7rk@KSTxM!=Cnc6T<{Yd>m`%~<1FF$9LH#>gKC6IJt zE;&|v|Ju|g?y`xEnemv9(|vtDKfBy`eYzM%etYTb*6n_|$CjYPQ6~U3z|?#vzE^_o znM0iMg`CK|gIVH(;8gH~4%7oevkOmth;`riM!3hnMf?V9Esz#L1fegHfx1u?NVDe$ z>zL9yOru`>>%l z1mvv^Jb@>^m%i$t^}lvTj>JPhgqB3xxCj=B>Rt zs=k8@NK>}>^7Znm!AG(GkQB}PQj=s%=m*}S4)JU0yE_dckW$mV6Y$DbpnMva z`V<(@#429g*naZVg(HW6cbm{7OCTe^q{0{cB{INi{VU|EY6%dmlncOseY3Me2cvZLm&K1gkc`eMYf(xZ7E_Tuy)Bd^7TmsTt zA?avU4YyVl$QojMZCAC#LRxdYB|``XOCxK9k+R5A!@a!AJ-VNFuW%+LqBU+4L7(S8 zf3}4p4X&y$_<~d)gBoGD8=Tr}twn+C2dhLwT{nP|srV+Q!9iBvTEKQk#YN52p&z|C zY0b$@A15hMVAC+>p_8719VR=2=Herp{AL{&k-42(g;CNV+`y%qc@#nS#p2U1Q)^_) z84hH;*+qEMkk9U0%F4VYIs6=KYL#pH%GOH19KRKGHjrY!JN2xeqF=R<8T zemPARYfMZgFVYcMAIAzDd&w~`r>Ial>RK6k*YT!(g%L_29&S}aR!jQgT!syKw98^R zodq2nM7@wg|Ldt&WKa+A6VXkx?$ z?nH+Gn$*22Wk$}Bcztgq`T0`>NS+Wgcv(`@L3-eVeZtTSyj%`wnFla-9#e5Bnb}wX zaXu32RY8_Jf}SX(Y1*fSJW%c(s=@-eHF^xdY1E$3$v4|E=6OY1ZXg@2)7nnP0Hx?@ zmjKWSt+CmTgcK7%V7_$DwbhJ+uId<^;(L9s;$=gU<7P6Kz^bmtp8}|UB)>v;u|^g- z8AS?=ss0_QINeKv;Cee)8oaqXB=(=NATxjz02;g%;eTuj(Y>W9x^Spiknby<)wdKd zQMB=dni%MRyuHREnKS(`{bc+Q3KMR%yF;E=BR*9qq>GJwWZn zieZ`W#a-C>?#0U@`SoB+bH3k|;ShVb45(%6Qxb@nxKBmf6Kw6La=E|`CmTiAlc$>x zQS^e@!rA!($U10yu}qpqr!pA#q#!dq`sVzg2?;o9a{Z{vj`AZpPmaFDiqjnzBz~2~ zN=-JQ>rVhlIKW}#rw4n$7a2a#ma!3##FoJ*!oi-DqDztZR=D~IQCDDvwThUuNUPA` zDaNl@e#%BFkBgU2w_p&*Iuwo$5oF z2G}Q9I@=`l+(IWXoguP!0l7QwX@Hr}_cXze0uNL~BnOwQQ>3}DEAh1Tr>_e;{rCTmIE{rgmB#S>rrXDzJi!i)NYyc)fFQmYd zFb;*Ct+q5NtV*aqW?M}V3kDecdp;X)sD|ysz&4_3i70*-i9OILV~gadl-e3p6H3gT z50fA{KuM(nJR=|mK<-fMU?ZY zCd5v~5a0Wug{17<`%A|b>c^I0L8Z7*-`j6Q;J70neZI%46YOEb(@L_wDss8W^a4}V zdf}+xBSA*2I5jpk(t-liuv9 zlbNP4F$D&H#x8Qm$d;uhhR5eHp9IgxIIzilJ4|x46lsxmw^#8y#~Xdz(+lA~0j$G#^lp|85ny zqDU>JK5c4)mJ8WQL&H3#Wa@yZ_sHVdd)Du3a&`_un*oCT;-DCFM@nAle<%L#)m2NgFy+_s{srYl_ zl8SBGae?V`l9C~vKX8ks!hG^Lp=^aq2KY09gP{Z`>uIVvI6fdaeXSr*AZA>fH@tJLUv*b$=%}5u;T%&8SEl_St zTpg^RMbG<^XpP`ArVV{!*F2Q8s+vYi(LdQ!O=O1+9Ekv4H7%4aidDd`NzIh!W9ES7 z@fFoe)p2}NQt43uAa~-kWy|;vrAEI?=W|~Y#&!=pnAY^F>7FK_KSfq zLTX>M&ovUBhFEwb>xkEB)kfVFAaG22fBvxa3mVw;8EWY$iDJ=Pmr@5S|B{MKaHJxN z_d^?MtImqt-b)Kkr}Js&s>dG3%aqotg98XV$hjEnwsbm9?)y(GD1~$7eM^gjN4?!@1CHQ>Q#i zH>h6k+;T&a2g;|fJOHHws&z2gf*pAmuy_-z5Q57S6wgH|M8+qND9)W)WiH?|o>=C! zu2f>qn{SnFyWfAr$wIu~+e9mmt33S}2XBUr=V3*KcndwaTtUNSpTmR1p)~2KMw{Y3 z*K>X*J-OZ@{M%wZv5Txprgi$WtwJYE*Im^&7(G^K&|=V*4MXOsOP`0Ua#D(xl?VKk zF}o+;2FVvUq~CYO)X^&0q$U|v%J|9`Wa>=!anfrNh zE?v`MTIucgv7adOgg@!Xdlh9iKH0cb@>za4OGcdsiL*#_SMFL7seP-uU>jKET0HEaYpvDNTB z#C2zrm+S<#4Yh0+*fy6pp(F@>k}LOmKiT_C6}0)(n*Hg%mh)9+>(x5>{P%g)n>Sud z=kKd-=a)nIH$K_3=Y6jC#La&i3DW>CV1F&y|Dm*ZU7bK~a4+7bT)I_1cjPcqx50vc z+B>VaqRW{uojj@t^HK!#6FK}*}e&X)#4>r{k~4KryfsGux?<)>K4%-Stg#Gf~;JQ5uxhjpbM7fn~=rN$i>;# ztp#Umq&CR%uh*y7X+0^Xp+23@??>wbls0+Uy&oY~cQ=to`1YUikFnEyUoig_F$4Q= zv-s&(Xd(sr^S1&plGyX6mG|6S^F}cIMaxdI%th-#QN%^tNz-Xg8H9`3In2ev_(kX4 z!5_1Ddbuc|q>*>kiSVnYToVMS1P^VDbf^Xi3AAN5fZqJ|x_?;%p>_z@Q1*I=$nnK~ z7%f1HZ4^6)|L4dj2m~?8Cz$C!Ut*HS zdN-}e7i)9Et{+%8|3K^ZG#H{VT5H~Ly^Olwq4sRP+oU1)!(QS{m3(NTUIa1?uyl6YF1}oD_*J!@)6LH`-ifg#+vNM87!Wz?}%=kC>tSLSb`rPr~ybqLQl8D zP2ZF3Y%0^X;Mq<4T0dPlHyLUJ0C%00te4)@TY0cE)BxIiJ(wtrUpM_xX&}#5Qljs>aGdp}f7af-YinrS znSSCN7FruN+0O4+$m=Iv*r9;I+sO)NO9TyERtd31YlbK>qjiimNwQ#jHl#6qKNM35 zHsbKegzJQ@r#%i-t!_F7sF2q@gXv3{ny(6ABQU}8>CsKxxBcA@>O1?-| zao4dUm3((>&duzk2W7D0aQWwfB;9`Pc#cseRf zkeLkOe2uPs-4!tOW|zxC_fC55@fLK4hiVeaI)h!g8>Rf9;lhJz9UcXGn1B3bMdmNUt#?exe&iw zJJ0imV+jTebjqc^V-yhJBqU)N~-?fxZ`P7{gSIbAW^B-)96jt)WI{VVm9OofxP zHWV$VVnSS865UlPHR1E5^_}uJ;B2Kam*zxWm6O@2rp_Zsg>Uv?|3kf}HoZkH>`E~3 z*SB$e4@U6OH07_+$(4q`4W&N&{?G}p%8=(Mw1?$ZGY&^?$DUo$@jq$mll3e0UzM>B zlmhy%V>9169&8& z;I6n@OHQawvM2gTWrAM=9tUnL@#AZn@)6(X9;b>D`g-4SIi_^d=;kqz4{6*syZ^PR zfq=gO*8s@>S=9bcxI)AWUrnW;7J!kbpopU3f(ufw{@2~of9!4CAh;p$K_qfs65k`t zickQ|Oxfpgm&(;9yUnpE8P}@yHn+=@$#K=$r4S-sx8E~|DhTyq6R)4?{jZ^iqDk-L z*3`s}#uHdoeKON-4#u+u0*KbrZVzXJ@FP$%&Fm~@@)dKk2{SnNS6Xb}+o&_{FJ|K3 zhDiKUV|ONdyy@kqKx~L#ivzY$zr9k&wKppnN!QwXfu%yeHTI14Jk^ zk`Ov4Ni{HPZWCZUL)k$=urywpKQ!ylk<1vbWHU)U;ozZwcybnV5sR{4W_T_}vwB5A z=Fud1WEy?3x^Q|6u|)uJm(Yzg)~T@mY^y4TVp35~b^laOr(<9maT#X`JiW_9o)vu? ztud*6-7jJ^5U_$I03gr=vs=W8A%0-M?7@>s_N5mt&VL5A<0y?Gw|bCRA%M3UTR?Wx%O$A zPSS4s3Lcc16IU>jU6ye2!{gR7vuG6t78$^#R4hJ0A5=3jVcC0CzQV(#$M_@sjAEG{ zwScuPtFY|HfLn7I=#%1QPR8T|E(|?jO|W!>$4uOe`tC3sj@Q=WRdrEZo*ft3!znH3 zaV$Q8Y6?(2h8(g-#Mf?m*8EqkE#$i^sFMY9GEIhtz(Rjnqr{XR59hHREP$-B1@b31 zZLpcLRz2v+8b7w5Bu%&*5gc2x(D2mO(4}~hzqK&MXmNDPkAE)MTZ>k09{lZ3a7Uum z2JO}ve&~9gP;T4SRA}RQPVYi2)9SJ(Vk=z<+NF%NtWXX4Cf(YcLte!j;vKJZuqV3P zDG@OWjCOU#!HuTR!Mb6e9hK_kz``d#t1~_6YhwSsp7H$Kq^Y|8PY@9@o{=A$L$NC+nv zVV;SiOju7{3TAI1V@hkdE3A<=qErNXh+dODw~+c=;$BWJY_wICP#PToo~zl90|4P0 z4m-Hx%Owj7Ip7PKsq)Xv%nKOUKW5xtDSmtqD%pSbBGkB5c*IHg)xSq(+HDEMv<6TM zk1zj<%uoV--%X|eip;#5N=^QX%vcjzI}^tyy?aV?RF!l8SPO)mm0gSfM3{;5iOXvm zo0`MZTG~508QL`Ky54&cGP$tLKDXLF#{u-T&-I_=8=^K>4;rPO&>-WcETbPAQV803iE<65j35;3UaSa~6h+*E@J?^U(wbUUI2)1qUgBRC(yu1!6fUe&WO6A#w(BRUru>d6 zBUEB(sW?sKhW9?O3$_|CnA(UMI@6}3nv&(8g$2^NcmXJ#==>kwOFZMH#PC2qO}JSJ zmhs;YvnUiS1~8JtSxlWjoNQA^6Jyj-WQkTd92PBok`|99PtD7R{ssqD#t`nX5*$St zItvB_LXZHeO-j-O3Zto1t%wrpq`yH!Vr=<>6JywwAbTP`X}x88uG!N7i7?1~!SVUw z8DX3#NQc?&!werY1+HG*k5i*Cez=Y^~ z`tqRO&tLTQk&M9~F>#r-`pBWn46((-SAqXxOQ&z7&{C?kclW177}gA}2rqQqSrYC8 zy2Uc%^-I^<<5A$3MG|L35*kKN6p|atA+iC*;Ea84(w+0eOIZl%g0#^zbhd?w;=pO_1CURP#Ew%GJAtfF-q zb_KhIb>-9Mol3u#YCbCd#>hK`gsl7GC)Y*O(XX`oR5#wHI&HMjH{xKoHC8Dfv}$&m z4J#PL93p`1lU|;9F_6;5(Zi(ezoU!s;LwBj@Anpn&dJKn z2!cZ(`Oqi91%N~GxV9vo7U#}{j*rrQhEsvH!|vJVk$2|J+yJ;Ycc1Fp`ZBu>FvR0P zvJY6O$jl}n6(0%SLdu0#O0Uml&oMiWAUTLLKqCf#*9bCyruN*9&9$31L*yWXwlhPM z8jGg!XB7;H>ZTRNAWGXF;uh?U_CeUAxTBFIIzo*NdI2LvZw=sKLxWR*`$v-Q|CkDY z_od*2zLWlADxAbhW&b@DVC1v{QS8NkHUANmdx2L01Uu`M>nhHX5N2g~#%jbWBbhm3KzaAb{E}v5L)4^!|KU0Aew4@15lxwyV-d^!j z7y#2lV;IRXWo8(~y;1UC&T<`7ap)Ir@?9soXqLSMF%eqhL=`!6BhU0>wX{J+K>0!Fd1#NMT`_C}b9JwL2tYkwh zx+74I|Hd&*ZXg?-d2WKZ^l@Rb39ng(tp}}k8gWVM@wX@u-m=nyuO1eq6=mrb$)CG& zO>;{P+RDmH4pz!48!aq$BXT)Sq4L9B%4n+EpUUX#CVsXtRJwT`YlWxo2_L;hMet^v zRjzPan&vOlwV!9@@!|rgdU=~+3n^~L&YM9ISkDzjWNvz9DH~nm$Enc>6;kpB*Lt%&FYwUY0qigJ&ZTn>W!C^`s>{?MX zG+0{53p}-lIGtYnz-h$DE%Q4sI*Oo)Flq`@kP{d#x}0(Fe7l#oJ^d%yB%htyAumCX z5wolwB!GCNtqx%@;Mv;GCgyQG*jn}wE8x^;0(5hZXb1(s5`Lt@J)MN5r}Od}Py8Md zh}ybtMb1IX9~_?>a0l&J9M{|;NdI}5PDutEc2c2WxwgdKva=V8m>eMW)>UxPc`!>h zLXfrj$*TfL%8WC?zCfy*nGbNLX95W|!Z}Vc|Jb)_rr1_MLF3Bgr55lEhsiy=Ix4W7 zVuSsl(JVdc*3kuiKnc?+HCvlO(mFRE?tZ=GDPhxAJRQ_({J?zJ<2^;E(!I~hr_9fP zb;+#B@T*^0+hHm&EJE=N;@+TlQ-_M@+S^tNmoIw`35O*N@j|mTG%$~@m;iL21h5GD zMgqqH^TFS*+QUQ!;J49Lc6MO0#Rl zX-EZmDtz2sd!HY?bvd~K?Cw2>8_#6evLhZWsJQ-2Kic^P9e*u3wD&D9Nk*1HOAZ0v zxe+&bCW!1zDaXL{(=r%x~z!+Lsq|#1~B}452Nt|z@wKjwof`ZPGTZqG+ z0pDO^3EO#DjLRO?UBzne>;jq%0Eg~L%diXf>7JH3Z92gVZ-caS*dO$AJ{~y7{uQFs z?GrDYvUTx<9s_0QrxWgrzdlJJXBd1`xApJhli=M&NzP@h`n2?VZkF3y5OH3 z#(bjYlS)8zpBHv282b|GzNi=rSd9E>Gxc#QNO={z39~DqrYdEdoCZa82x?9dmrp@- z)gHs1#Na7Lb-XYNJOd!MBfM{q!mbMn=rSDyIQ@&I+Hww%+`qHQH;)wZit4r+%dw~tbsC3c;@H311}1$Hr^)%K9P*W(;J9K^ z;k021Y_VyqSk}2vTs??fwLO@k+6VFM{b-yTNg{Gh&^eesIz9wZ1Y0t!#($1pGk_QX z0et3fK$g(*J~fa=xVHCTt)1|6@FcfC7NGeojcpV6nMh zv)TqvP^&c)gtU1Zt>=VwB4)HRI4(Dv1HkVY+quqmI@Bq+y6{^a*Cc=iZa$eU&fD`D zn$=Uuzh{83ZVlsQIgj@e6vT0d;*{QNtk?q@YWI?~-aR`hA~3K;K`PPa2Wd}M zVFxnN6~_k|c0=ajQOt=TT54t&B=Uo-g)`i!bg!}`)7$|BJcQi9Y-6)O>ZRE?A3+V} zWEB#W(t;6%@Z)a`Ol`DZQ+&!~0O>XXB_$Cz<>Ze=I@#S7af<%G3m1eLPpyq3uA zJ15bFp-U&_u1_=S{?XP*e3&)zFy&U!a<@+mh_iKu=5G~qWl12bCd#BT2s8poY$jM3 zf}To+jciYJ=m{WcFBsZDEEC*n*=kHZ)qtmeD{)6T5c(xwkG$zFTge(X4^Gd&6>L?H zsf$@i>q-ob-u`MJSxeT&nuVjozx!!tOBlL{G>;YQmw}h$AiGL8V z-8lNq1m{&`-z13MEY5*J?uMu_F@W_#*DJb!FFbzr-_xPH_{-xol;&AQ}J#tqm*9{aQ z01+4#^EH_tTyHiE!2<$Jy0E`rT`n0EPVhb>gsbTmi409B66%gv0J*S! z4N_h@I)KTOr2-xnR=*Et#SZhs{0I@c| zD*9y!?JY$W6Zm}+vC?+M^t!|nib6X1)-jd3pGj4b#`LDJG8$ub$t@lGa3-z(3}B}z z+wh>G$3WN#eZ2bA5sD(VD0j~FFd^9)uOf~tsY$c1j_C^%RGiK3lQtG}8EY>^+!D*9 z4(T_UN3zAdi=$I6Z8uq0k;VLnQq!q+dJ(@Ss57rhgzoqYM?v*0wLq!-o`a*vd4#lWYg_=^@gBlFCeYsMm z0Y-VMJ4148m}bWgwmi!aQxR*Vb%!{?qS`Q*kG%>{q{>31b9|y~T~V@^5#_r!9qZ(f zm=|e8C(}BHj=*B1Yu1JCndUA)M3LH^Y0Os5`hHQ%G2)Vae$`nRMA`|OM-Q$s#-=aCru)A#7;Hx6~`C^Kp1rx}AgcD>J{ zw4C3T=UiTIGp@Z%c~kJ_?WWjEKM9zsRIiM4Gwm3+R?Pe&Q(AyKXKh_*-@vMOTa@xC zsKgvS6~MM%(njJWkNbV9L+m+vmS!>K(x8HkaXb=QMx}-}$P`W`HB$O5r>F$OZ zx*O@P0fz3D?(XgeNhMX@LGOD%_wRo8dY`q|+I#+=b*<|<&+|CWqds5el*QwjnzE$u z!|*eb)&5fMiW3D(eFTryuew*^)Hli*5iUqbe9o}yaD9JO?F~JA=kBJKQ%(flLE;Y; z-DQ|xMVJ>Wyb!v2?=X*p19ia5q+eVHIn$5*dw(oaT)7N8dS3YTdc;fw*C_)7&r&f2 z*60A&CHIeiS?IaT?IX|D6{8H>ecVl1MR;r<|MI7C4`%bctPpYc>tFWv89FmklP(RS zt&$cwo=bx2I&FdByM3VHl@4V4gifvRhIJ$}oCyZ2S*^~61mu&5_s;F$c1s5>VSJm` z8UC)<J@IF3=zC=UhI=(Oh4ObFNJ9tw?rr5-zqf} zZ<5N&b*GhiK{GP$Dzw4iS)<4wDK*7zWxk6;eC%9ZNT*qD^tWH<0ue!c?Cks0i`yVy zhobw#daBkP;1lq{=GDIfv_~g9U@#$z? zS7}mCAV>ck>a;ckT-XL+l>?DP!0T6F0Ut{?V+&0V-nj1$lP|!!Y*DOV5sae)jj^zO zNltwz0KV!uwjl`)#R&$E>Xz|=##`?|G}pjgN3T*81XX(5o&aLDdf?V;-Ong?GP$$L-YoRbEDJO|Vp&Xg z-C0icvwNvN*6@HCrHxN!fbM%fFHDGEO1lLb`0lGQUDO(0%)H}Nv*1w=5xI1*39=B_ zk-it3v!0B92U-I>?=j8LaL#9$Cdci(LlB(zOcTY$^Oc&%z$I8S!KRzxnUqxU3IiCNM{iV|Xye#tD{f*ZIveWw zU5wPl#sA9bz(t>pz;*%Et05qO%*FSSvjfGI`CU(VutQMvXL}PP`-S`n>D`c!T{)Ur zH{qG65OHVIM6aW3SBoBUB$Kya3%u8_{L})$qWC5gwNXor7cyZx+&1-eo=4p-s4g!t>EAvp1YP#MA7BV$oVSzgw`b8b zzwh3&4(bh|x^XZq7=oYf+p9N7d!mF!%-HHlMYeD|mfLEk*N0n!>BFO;(UJrLX_a9NjII(%Nd#y? z9U8GN`My!zK1T3YGLFV_3G`(MOskDg#7`6>ieoRdLgWp1b}>4=R);{I=VnDFo7gqk zGTW&K(ru=65+QKVeL(R`ZL&>qdm2KR|9a>qRbnl*fn8spF^vN|Z7zu-sWHabQ^f7_}VVUnwy1hafvt9tmqV?$a+o?`9wINgh zY0AueDdH{11X}ELQR=iQSCQ<~z^WJ7-~GYa)Jgyz-{;3Q;92Pmi+Fzq>?}tYkQgzf z>ME7?Ne(d|f{sm);-nZUU*21-JTqftq;J>#pyp203w;jFCRTXf2r;I1$dMH3LEB%orve)VZ&+ZDPzd!p2Kw^ zJZw+_#zyf}{3{L+2S+4TnoJhGbA}hH>TEU#$Y!&?E+ye&iF~D+K3)zYzy3uA9{~8M zjf&N~l}Tu{(Zfn4Zgt~wF54gfPHiL%mvc8ZML6LbOR~Y<1eHtMQnk;*6;azYh3bnt_9cs0e2pFfEm z6DIsu*P92?>0O`~ z>;+-KkKf?%%W)H70_DD!CT@eKah>g_bhQLLkvB|esstYGK1usqtT zaX+Jz*!HM|>IeFxEO&=wi_-MckmCCq2=Oyh4j1%=o_s0~Ho3bwp>lY&+ zEJgctAI-|T{6diH(}m){*6cRQ`qVW6mUs5=#jV{%F;ynI$L(TuZK|6aQ?M+Nr6 zcCd@j6Ewg|6J|fO$l-BGM&kbUboh9q$r&A-wVig-`2t*C{XEp^XF%(5=@RiM&Da6^ zmKedW%3Siq7xpYFM(MSLTeXYd+R@NZv}-n%>vqoC!$L)h*i917c!`aUWT0tIHBTY$ z=g+4bUX&eCb8`?o(K@cAac_u(oVir2q}leUx3yixUFmevbg?J79Jr~Rzv?qxn~Oc z^&QXqm=OQj8*~F02I8Ro=lT1KC2jS1TKX+}Hot(fxPbgA}}{$W)a|83sm0jM_l4DR#+5V~(%Spk>pb z5+kCCf#mp*&uM&&B)UY+^%uk6&+(NcM*A2eBh;50qbS5n6GOqSY3QfIH|I_GE*_ZY zn*-3yjYq}H+)Q|6x7LQDZAY{o55&vV2Y{*zm!j3y&~i|KLCO#WkOd_GWOYgZ35*7! z34tKkSgh?KqfeP;rbke&6(At}0Gecd<%R4g^Zq!KLP27PGRIM~~VMW&ftp zhKw|YZtmeWg58!(*3}>yUgYL%@)#V3-4;zw8I_Hq9g)EN7!@xRMCwu0cl6lFO^5`B zF5(o$oS-}LALMU*I3;-ii2a|-^#@Z;XibIlpX*geaE(U@U$1Y8zIvfN+2`5{4~<)S z66Fa&hc^(*BS2dTUYjKdsjtyiP?7 zz7eJJ3BtlX_YS6wfxs8b=Qr}?4+8y@9(fo?Rs{AAT*8O#x_~@bd@Be75F$_7beGtn z6hR>e#N;B#b#XZ0p~G5fAX_A3%bCE)L?~VD|sxLIeCfIfEZ2n`Itq4Z0zb4@ZgJGzET? z{+ev|iYs^^_R$uV!3UckjuNz@0e+Oew84peaHLJMZFKKL`SAg#JUKNTn_Bwje>h!y z;67pykii}lDL}POO)B`yWD8wfj9?3;DXM%6MTAe2hD=ZqE$@-SOnEMoYqJPilp8y@ZEbqRe^88VoV1hC)WuI4W16r)ASkROcv$_3Byk(N<|PO&F>a;zWnL&iz`q{$r8pcJ@^OetTV3XmT7vS zeD(Lnw4_pK{Xp8V{jpfY;nr-CfCQEcbwS3KY++Bgt|irx$S3;%q&IgpeJg!X7x1;m+~eTjZZ;vN>4ZWeuXJ|r`l#c zvV^vyjUMu%dI!&3DIeqGU}?P7NA1#VJxJ$zCK$R`UJQ-CPlxoV+Hw#guDvlW+JGb) z`fV<~;<8+d-lzO{D}ddBbpQTGNH!3V5PJjWj}pu5!{sT9y}F>$E1s3Gex&62!CwPpQnenfBQi80^gCjkN( z&a&_JG2L5R)<=7l!PFEa&}r(dGD)?$MgmSWh4XBaEA9^Goo~>s@dhtsN-8}S`Hd&#Z^r6} z@iH!&QWvk080%hqR_R2X<$><0yk&AISo~+x#R_N>7z5ydQy%U!cOCWhkb{!)>D@{X z7AvdGJ719;Hj)jteZa=Y!*#BLnDo>9bYs;$cYUH*)~9bB`dL<6XyXObWcUbG%o9E^ zzIus;ofDiybYR`w#1PmdEpH;N`(8`NR>$vySAdA6-aBVMPgyes+9)AUos{HHaY~ZW zZZ7sbVH)WS-X@9$&Z_PXQqX+6YX9(L*VwccV7we8>9<71?^X=@;*P`-xGkKS?KXxi zkkc)%uB?x4EX%HM@9pfY?Qeq*zMgEJZ|r{C`hIwRdUI%!aD0237fN75P6$E7DGIH7 zyd)5a@RimAIF|P1r4OlWbKRJ3m&a576^#ApY#HAtz4w}18n~ZeI4A^_p^Qp2!k_7$ z?YykFrWuLle$5rv@LVe}lgpawQ6WyDSjOYn1BpUgMsa=lpFrZvCp5#E;5YudY3NgC zsxgX93#m8d3_Uq|obSTX-ay|qe5c~tmMK46ZjL&#`bj{zyIM8xM7%OLX|Cg;OoHI$ zQsJB2k3P@wzS)jbq04N4_&p2P%PniG_xMg8cGeR${K7uzItz}*H5QBnn3o#1gB5Kb za<&LAFRfc0Fq~Jo2#?=5^?vVa)V`^mhVD0T{@Ddnl=y4i+qYI=hm|@{6H$n#g6!Y_=b3+}!0a2u|aJ`l5c&WoiBCP9~2VB$p@f(wGjzpmeV-iU4`+0{~GC z9Xnc9zNir5cG(y02v)M4r?vDA&|D8uOZI)1?>xX*81$}jY&h!Y^lTR2GrL5J65`6e zeUYafiMq}-j;c(F>AXqipH;K_^kZ1b7dCO}^oXJNLDRp2c2ZT*3z;&IL? z^kXJCtW&|_wvge?iS52`n1@~3=)H$Eb$GlYT-SG=@n(v&pcn~~n!b6aSS(LHHvDS$ zMJ3dE>xdNTItrsvklL~zk?*Qv|9B|bsMp*yom)yF1Oh&2pHLInw|V@b=q%iwg>*|) zJU1Xb;6BiXvqbw1!>+gDz3p4)$?uhu?{nS=79vNo)z+`S<7VNU%QzYeOTVD#6SIHW zJ8$Xvb1)U~R64mkyuembT(>@Em*BFbjHP2kSD_<|)5PV}m-0~-s+4pGZt|&LMrk_-v{kPP9sawpFRppEnc%<#QR_~-b9 z#1~{qzayyM*S?UL{0HF-8izkTo0{7EvWNbXzps6bHVxf>y3YPw`(jImmHvlY9}oBh z5kBfDcEsaD#(x_`?M&t}28A8%X%vhcFAz{j z8?WYcLmQ{U*RUO@U0SFeE#*~iKqE`VNS{Vk%}9&pwxdaht{(3_kmg)VghuSW(Z8D@ zkIQG09yC$7m)rbQ6O^NqEs~#ZB?flgiL{E(%1`qX)1ptN4I(y#s+2Morh+TYNK)n8 zZhVTPR@_YDf+Aeavtq3n_j8gOLttnE2k1;xSw@T&Ik_uFxhNeS3kUa!NqmjFdGCGP zI$%y54Lhl&ViP49N@|0~#p44;2A{JJT=TP6&60|$@{K}^Di@swEy{`~ZoqrcaC9x& zycUJUy=<=@xgwgJg#+3~_SAX$l*16B!k8zki>9%7CvGg3Hgt=5jgOw(vN2(IhS+7B zpx+vlS$GYw)^VhSY_}0!xobzG&mOTjCsK+QNVu2n zXVUZUj9dE#%t`Baj|aBPke|Rz$Fp#Us}c<`hQC$SnpvKtus;&my)Vq5k~zup-Wjf3 zxX$J`sVs-G@HEF}gr;;*-U)0s7uBZHKXa!}0WqP5wH7DMP_3Sfe*oVv+uEFz9$cL! z$3KH?H4(grqQps)`IchP3-fRE^Z$bN*WO7w-Y&YO7a=g~B;BF5Rk2kk+nwyYTzCl! zzPPM6)$UURG{c8I0mv+(SC@z)2h$4fZG7*VdGLkMLo5v%H7R~!SBQ9iv_L?k0fMmC zAXr`}2;ZyJoAl{l`~ts^&_2E!#y}Kd66nT8LX!T7DYjSA7XI8R^8Ed%9;tBpQz4+2ba zVKoWIw9dm#9sZ_PB3d-+^s#t$Ov^}|wPsK+E|=uyc#r4g=YZCafn1zC$L5`^5NE|t znZNe9gpY>L?Qbh{S9acI~^U0{E9I#yLNo$ zDJKsl|FR6N5&ur%fL3QQ(K7HInBLYtl*eZa(U+I^uZ8Jo9Z!sfUtzU%COLu#P#S%CSc>`!LjC)CvV(BEpp z5Y}|W;dYebZ?(UN`1$nThV)M^iWuDVZ{q#b-^Bag{~+F*{~_MP!)GV22Qrx01N2@u zI09}+lju#7A5u|&;^$AX52+1U;opWd<39{(u}#$fsUejH&jbSK1(DnOF{C$mP$Lu~ zlptX-ai?2&4L{UH;;7!<023II0l|q_sWy4INT`rUe#Yo8WRhv)G%1MXL!xM(#<;jb zJz~dr#nNSyvA5GB5oPz>z4C2L62uXiwkhQ{Pz&Z*j4?qi7ftod-zYBZ_LAMLo7$FP z&C|Sp5nW!gn;%TuCYu?Gr`WEa(G{P1f4imEcWm%Ld%$>Cc#RvB70|7rus`yBtWqGuL zZq~V+y{G8K_`V)h1%9}Kot+)7p-hRFTtn4q3R3z$O<3AY*67LsU(0PM%1Vl%kdPtE z&Ik^COoUORUcRzg%TW2wJm9~1!=eA)TYsGNQ&ZevjsMk-G*_&4w@?XMfwv=#*kT*w zNFk~vJhUT4#GoGGMng!~s`ugOITg5ne*aOy_hEyPMZj}s@OC8l27?4WY%pc>-<_b) zg81yhza*~U2^wo-SZ!?dnfbrnG5Eiv@3i23L-iT}u*R;a->5Pn85KU?EHeFsLQoo< zvcI-wqG!WHWlWxqy6|k?&?U={)$H0kcsTD`G^}s_8Wi4dDGiF~aU2hbPiVEJb_(?bw zD&4aBB<+9m6!8Du*ZFU61AzbjcT%E%e@*!F|6jl6;=eck-;4H8U`r@U0zL+N{!2E} z;4j%oH%l>_r3b~mn5qY|);*r|4-l0y+`2k=JTyXcJ3Uy}z%cms4>S6!8}GrsYDMS5 z$%~o!MSm3Ds$7e!|4#M8^ONpY5gl;Z$bVc^6IKg>%KttY|0t8~z>~?Z!3K6fk#kWx zs=1htK-xro z3`S{Udi0o>%$>X&*N}n&acF*{QA*A)slpspr(`r}DkwQ4Iykw%fH5l>ke8q-M)Z$k z_OQJF?YsXmI7DF2e+f!%{Us>rX1PJRL>19TYW%=4(`CZ>MoR^P2L%r94{hgMaHI3- zy>ckr*u;{-RRjMNR&;Q@Y zK7xO2QLryL9{ffm_G@nqgN^W9l#z4-7)&G^z=Ir1Bbk(iKqbu~#t5&B1;nZ`1#P1^ z2!OU@Wce6DpD~LXwn$B=WOm?fTmAW7k(o-6c!!bx+!XB&qRfOmRHdzW*OBqrj@5n#pgZoUjELjvV!L z_z&dhgWWgwPE1LS2~7KQu`o=AM`)HAu-L3l=YQ?!Bd~R6=Q#*Ox(nAY<$>q`=@HA3 zhOL1v<=sA7*Rv^p6o>_xXqaArXO>uIJYo<+m22;ynwwoA*~L!SR5E;f7WX7-P@_$?o)L_nBOkpz7DFn)@JYhe)m+i)x5FFv#YOW7a9-bs=o zy(2|Q_?+``Y%hOjMDPE(&0sBX4E}UhDth2g-Yc-HaI<_0m7XJQGJ0Msma;R z(s4%eTAdB5{;lKOuf~THC*LoHcc{;6Bok9}4)@DBs_Ftw!z)*|!W#<{cD-zL=ZV%$lzcE#Rtdmj_rnN**c zl%M>{WWGJcWtcy zp2@JH@$%b4l$*HZ!_om<_oJ$@ov1J(V50ZPJ<4p1W>?L8rP5cFeUH$RiVu}*&(Y>X zu#Zu#Gbb71URU#%3au)_9@jf+!B|^&kKH?Jf5hC;)SbnTVb!gI}%R8r5U=BJ-!q|JUg_lnnv_Fwl2fR5sjVh6= z(+eGYR&`K4f%|DVb4EHA(k8^0^T~q$HJ(yi4{a*h_t~@aqq?cxW1Z7#u-3-WijX@j z(`hrA?od=Noc{0-jn+N9c2)?wc+z{3ub_9ov{b()f`%jzX9RFh>AYR_STzqFNmU)X zTt}OH#N(3$U3;=cji+>r0S%41MJc><<6G9~73b(dt}-i|LJA1)9GIp8G^2KAkSiP> zMriMiJx?VqU&K8hV6XfNj!LEnAxGazzH~81za0`wNM*f!A8T@S$`B;^LwXI+?;mE* zc1L>LQ7c?lGVDf@tR~m>jt?I-Q-gH9r?C&E#n;vXTwAqpOnRMJPpe>ike#t)@s1_k zR#6|FL@Obcpt4lCOa!x8eV*JY;?7$R!p1VU{UeWmnbtB86qeQb6D5X`Wyx|v)$;WEWXJ|<~UH1$J<$#6FthKjewf2OTei_ zg|Hco!88Y}QC~$ZgCBuw4zqSF)FjmoqFhnF%|1JceZFur<|b1ee=s5`gylA28|jzM z^0{a5)un~ykF(5U9g{(x%Wz$k$ps)zfS^6&xu5c+Ax(5)|BGxTLGQcyNf8+_zV7k( zOW0gWGef5e)mSV+&I)eq%?p@v*?aFW=x%9)G$$XfLvvX6SFo&Ry{p%S046-HJ~U~q z-VXN7oqF47mM`v5GnxHugM##_R)#mSm~B|1In9wi_AnRm&}X*JC7flVH{oJOnQNMf z?6kLRo<5~Y%YGZ(e2Go(I4t9;`H2+_Ye$nL4-2Ffid4MIBmapw6$HEja3ZYzwt_(V zhY<)ekjUfMb;M6#Au)TYD6laRE7q(wd4&fTO9J?y0HlFN8oe1q-a1GogD*1^o z{%{T4+~`QP+F(M?+9D&inb+Zz;$BQp`3F52G<|*!^xI`sU@H8eJ~N}(1Dfq^m#Jbz5qm+BgU%aVjyIrGnW2! zY3ws4E;wQN^w+}_gbE2yo18cTT*&+0NAhQHETtDcI57bQSpOtPj&lc)6LvDi&=JOc z{vher!_yH?y?5;$jfBQ17WukkZYxp=uJ9HkD|C|^r!2{9@R^@)-Y{N6wjnP}jmtGR z!FVEwE{1>1g*MS9V1FkDFOj6qfl>MIRmPs1kL40B#HikS(ea z6y=`Z`*pCoe)XBLI{aF<764PN+gMSzXgKQ+Ic_{+iZ7}9dfw|@zSRRGx7dwWDr-63 zhKq*+P*}Q z-irx-y==U-9JuOsVqZrm6)MORY?|Q$0ia0Rh^#FlwE?;vY zHl6AOS@~ReQv!H4>pxR^KZei+{`k~0xLyhV#{bf*8H=1}Z|OYIaaGb5bxGHE^YoMF zBXpAy1i=e&GDs`xapb+2K&=VNuWMy~7Nrw6Mw<_J7D&xv1(6gwVqKS7_QDif!(?ei zl%|w@kY?hP|$P9-BM#)5klF({KVU zu#zC>+tJ>US^>l!5z3dGA7oRIM`Uh2DN_zWieM^~P7IWXg*nCCRL$94zB8VDKQ-qCHGd23< z+TP33fFWoUQk(tO*YK;V3R^`(^H{;jVnkfZeRwKwf zN7KSs93Q!?DGDz!cf`1YYQNZme2WC@_q^C}TB#TTZoBg`T!6*Qdos{~zp<6xX*zIK&jBJA8J;?`+k%;?P z(iLj3`tX5T)9rM5L`|`=!lBmU?M(ehO({k0^!vNp*|rGVve|8e>ov(Xm`YF5s~1NO z5TcPmq1V;ouP`r=Q_w$IdDoP+_-(e;0~U9jK1T{B7*X&nZ79|?&JG`whMq1Pg~}%qu;Q>ADB7f2tFMx1J&TN7+M=E1L6dH^i>uSwCJ%J&drxlfACa@}r)FyAr!*Si`rdQ(^ zT5?(F?i=A-I$!f%ceVo;9*nK=NRI{R=w(t<`HxL?np;EiU$Gghhjbq4r?JhtnN_Pl zd<}jc*PYmQUVwLgaWgLvK<;k>Ntx&sLkX0V@gK`7dBU8XcXs8Lq#STi!C+%=Qm`{T z0`N|H=S?c@z|!k78VDdi#k_DfxTWzvLSaLwcc+~Nv(DME*W22oKwezi-zK==B{CRa zNv9aeV%59xoA~Z?`yGAr_R0p6@OaBe+cWjqKfCt3um^9v@}Y3_d7ZC|h6I*~^J8MS zqlm(Md+o`2?IXbx@La<$)L3l37tEPTZ*sW?nRep7!*yTh_Wfea;mQCx%MJAE3w(;| zDmLdwQ}8^4&btVO#ULIOYJ#wI6;#aa1EI%`k`69{GI&T+pGuHeyO`MRxzj5FMt2Zh z3GGd;0*$2|&vxAlP)Y7bvhCw{T+L9txCuk*Y=c2#K_hX#0vevteWAhnVCJJw!3Kn8 z<=nxoJVD%Rz&)ttb3mAVVhAfCSjyPri!sQ^!E_zZkD?t^-v09AuClk3UCf+236Jxc zLvXlMXtlS$v=PRXi&(u9ZW}7XfSxCFl&?lYz;{BIZ4>WXmBHUH?rUM;r}Hu;r{@c(2RVZiED#^#*q^H?|*Izr-t(h-)55P*4!kp1=3C zb4wsbdmZEkU=J$v9nR&8Lk(a=iH6Ta;N3)1%{i^QxU&}cr>Oa8U)!s=c>bybStN$> zC&n_~#5!<%R_u?t_nGs4y@5;0XmB4L!G>a|74IpM}-o$zI2QW6V0r%@Qn( z9Jq19R+n)=Ng^=I5aLV0mrVx-2Y*LnJ0prGaLss;oRQ#?f^>x-)(DZ)PuG-1HgkG4 zlZ$BEK$q49Ce`&3Eu5uKH3+t!GWB()bMK&2)X#qvlW(7_X~1NILqpduK`)}hpw0o^ zhCuB?B;JYT`wx76vg<3%lYPUUZ*LGBqy>IIri#xD?P=j#{h)49x>~K` zVTVFT^demfbB6@0>|1^F;DAMk>G@IwB= zM*gIJktDwI*8-Zb0sA`ilCBV#YfaDU^v!MA- zXqA~K_@=za|TO%K$K+E*4dm4X&M-AEGdwP>r7+#pYDN0~q>YOa&u z%tut{6<-D_q7LaL#b{ze!!wNv)A$i?PI0C=Lrk1Whe!fGs9U~sk8!$cvgR)?aJRKr zYof>uWdo3`$kD@L%*)rnoVmc70q8Vw30+F7i@RAuC|$j1!xL@L_938_H;^@}>7_=R z^+NHzJWXvOzq4zKnGSBkh1{1HlmJ>V31E6Hc4*NyrlFn|qx#aU1#(xf1T!PWAo(I1 zb9rl!3{#>8Xw-X0y-d`-N^ThrX>Yv6s$DS4j-}^9gRoO!)7o~V$bhCfoo0GVII?Qz zVbY-D7TXzmn0DSb`}nr=IG4GWU~}g0y&moZw9lK`UEEr7)!NNq)Q9}aGKb*8UXhOc zIeRTA20*8+i@1Vds4CXH&F8L#+M!wUuy*{;Kj_L+>{0m>qzY^8vgAXvjD)&LxlWR! z%sJj1f0yPyZrgJAKGVU18MA7)jZ)3)D#sLgzef%pEMnGi0s4r$tKIjAO(tc8p zH3;iz@+bg@_Is1|c{BIDCg=%SV0cUdqcE&I7^tEC79(L%@%{&G_t79ibGI9ROQUSB zylF$xV4s+2)CNr#n|!}OL6tAtG5d(oOki0(Ce>7Z+ceu;$*Jyx{WI%{ z`@kd9aY=dOS&UMn>`LjSR*&Mi8U5hrhyC~^by(*8hECmK2lW{!B|1M^8$GHi<%K2s zScZTKxmoH}{&W>3y`=JT^ixXOP1r%*cuP}bOEA_nhUWtGMMK4s3|3AKwpu^)9Ny15 zdCr!+nEj|!Gi6rhDTwe-p{_W96krK7@+VdMkfR_{MrE-G>iZ|C!4s&wn}cdl_7|vO zuUbpv+C?a$<_`|Gxs_=3FHtUk0Z_n04-;IJO93_NPi53yJ1IUH82qn%xRZM6&NDef z?)Wcy7^eXjD5LyLp*!+!)%z0#Y|c&>L>Ie*xgVhEo>~rv)3DbjE0%7($2iI0A2Wh9 zwPy>}rmMO_%{5kAV{)9v%c;)id-c%H6><-|tNz$F;b%exxxaR7+kk(USNAgh!ZKh> zN{>Tu|B_OHQyHB0*8fl$Xj?=#1n7R9F9$ojwkNcu0Lf#2NMnKz67}QW!l4VFHHgh&GUe665uqB0JHjXg@#I>0lq48NdV=dW|Kdx#PS{E zKdJ2`V0To;eR2n-{oSTr#ha5%6t>2b0ulAF-aX9kV4P%(K&kgPAR%6hc#J&bfutfRbRqG)Uf#*cfwVrti-7OQa?}=cLpL!EWJVWt6 zZDRC}GG265yjOA&J+;L4UQ^WrAVzf};nE}b*$$)WiTkV&mGEai69vhbh>@0#`8}#$ zM>3@q#V;=Mr=F8|`mvS?C%2EQOO)a#O?&74)8o?spa&JoC~Esqa~r1(jVOK$VG3?D zJJ=}RHUdrH6V;>S$2h!4>&ATrl6QGyfkV&IgV(N+*^PP;hcMtwUGaX3bZi{%AsWQ{ z>oyXnC_l4XA2XL&A2yeh2#(NARC3pjn+BB-uWuhwxEcD8N5&-@l19)(eC7CJ0H0YW z<*iikNMAHo#uDLqBe~a$YZ!e@;>lgLZvs2cAr;Z^Kny}T_=Q3l9-3+DF_&TjWX-~x6m&*Q~aKVbb2vIY2psMSXm1i5`WhMhw=u9y$n+z41(NdjTRdUj+_Xru8K#DO>(#EH9Wc?H6 zb|K@TCF`_5Y~lxnhsPtUb<`w{d8F5P9OG5H_QexEy_0pSNZ}dYz*mo_0!p7k%JD=< z*ypF7R(}j*8e%|$A|%&zybCJUoF<3@qfF&I6#?A47TXV?qTp7GB7(`h4Uj^67?B-f zES~R(l%Op@&uS{sB>a%sQocOanF%2NMniuF9e7O_AJK9&q~pB9Fx@y4keu~_i}R5G&S2I|Mc^}crt|B60zHJhZ5TSnNtLyc*^$cQruZg@lT z5lIzQ6EAhf`>R}zs%gQOv7%`x_fsZq{~f9;eW!X-GEs_Kz~qeGSgP{-L-C6O;?G9dLw_rL23N`6GrJZe$~ZWfrI?- z(mI})<{o`uwsg}cDV_2%3@gD}2g`lBn@CJs31bE$)r?_MaAb=hTlsIpnGZ3i$()zv z+$ky3C6`CZ5-pahIlSxSfz|`2(^*e2wYG?S=X-)%G`Tie zB^7V^R(X8#xqO>W7Eo&L6rw>l@iv6j>3%ioj!9YS!dkN%v4X#SNO3>;5jZ$U-XYeV z?*ndtdLc{sw~Tk@1JMz0C+l1hdCz4sdk6dit7mKbsrNV4@BysA~1Ww`GeOI3#D(BQ7fr~O%Otl!Z zhGy3(Yg0|9=@fLgmCI&UtrW1PB3|1>HYAswD{$F}cJOo!?Wcx%q3pt^(Ue66#~tT= z^-1Dv&IYCM?5vMu)`8?iBTSu@uG?hB%JjTpat@X0s=s6iH(iT4h8)_HN(|oEKWd@; z0CbBM>@1+eu6^lHY5byfiDc9xCNRJXm%;Zktq9bMp>!V>if=ZMK4Qzt{d3qYq^$RQ zsryf}6x1gCo?mj6gOvZ6fwY4&ihhBH{>%9h>pgM``48V$mJa(p0r|gt-)~5fjyLEx z3ccBDb;t@^(*s@|ewe7!A_@Lmkn&Gg&|igmPT<1?B(&h8cVPl{GSKy3&Je7~y7R29 zXhc&W6j`tlt~Hh~9ESe$nFIb|OK4mSo6MLX}U* zN&yPOy&C~|LG@$2j+1GyuP$B98pFqUI7rAOzhO9@E($ItZqvi~+o$cOsZ<2-DqVuLw@AwROt{#a-KM)5>s! zwVT!o=!-f?1X0lqSw8c}%UA7(&quvnd_N%bYqTRANBUwf>7mGp2q6(i`5YpUqTclK zW3@*4mAO(bBJzj`wvYOO(fzW};6qW3-eX`1(sdwnb?5W>V=J7vZ1gsIaa`i^VC&Fq zWcMJ6dyZ&R&q4R_r3i*E>&j;y0;$=^+IwF%rxpC=8nD{o4k*PUXZ+Sx2=N~(9ibFuJ`ui2#CSsE(3`jS@1--bH`?0ByXqn#4 z%aEbIFige+Fd6U506jziz^FV1OA|SrTaJVVi!~N^*FpVD+|RXL-jvFc@>+aVV)X{A zY@V7zxH0T5lg)f~$ee){I9OCtbSbM2bg7g5;dI_ILr%mOX_Y_nf7m2-z16Bp zqzR(q^1qTdUYJk-?>>S$O%Za;=8pKBZRS3og{z?iR3>K2?+82#fmkSVCML_$z5KGT zXy$bPEiGk1km9rf|xS_>vP_V*RBetD$!ZUQw3;+!IS=tFSD}{ zcUV95r%Z+0sK5avb3nx+seSdD(cif&Ln|D{dkv{X6ag!{!<}3lkoV z!NvDQ(I#v!2KZsec)32q1tujfDK;UTULgt^hh|cp?-*W{26~uC&CU-vUDl+}E>196 zHmbXMsU@H1F^hBG$iPQ*bFp#>4pI+BgG8T$l2t37#omgzv* z@$N3p2)iT{epHI@h`<&rmWthVrQ5hFHNovS6-RU#Tn-t}@C|7#m*kyeX3CMm>|~Rm zTR|09QQ+b;2u}Fs%6s(84lF|NO?)kxFus?g6gH%~FwJ4l5zbBk`4J*n^6U=r(}oVs z`xk9kVQRMMjgbwEET&bkLP3m709K|kmx7JyirD3pKmJL=A6~MbOYjmf|-r~Gh3KknW^iLPNXSVBkF%BMYH2_fi zsw7U-vy^u6fXhZ}4esX4#KzwTUR&jJ#hUASd@2Tvvp9(0=nnTGCs#7`t+)NeoY#mY ztp@*)Xpn62P{*0o2-z0o=#6rl_?5J_U5m&=f0Z_1v&jjiIlaLb)_(K#ywc?hxE1xQ75qAQ0hW?`Pg`o|(1g zPt>ZbuBziK?74M#qUg-o@j>k+@pq!t#C3pplV=RPJQ@q{_>lnk9n#btFMJ(y!}#{C zk&b?MygE#btXIeQwVpQ0#~R>I3|1X+~iCl@@V!leK{v-)eM^Ru-bn5d^thtBat|`^tOS#@z zpp9~V{h>3asrF+;t^`$;wM3mvM$)1YjsL{j;8?v+QezKT4sf{(m@&1lMlojj;rsAI zp`2LReAyeL4QYJL8VWZB3uwAW>MXTsP#yR(MUW4<8d9J*gU}2bmW9=tGq2^q`0PEf_kD$l6yj01}H)`!y+|V2gr=F zmRFENWQ?g`sw}U~^)a#pg_}Xrv+~tim{S70I+ALuhpNgI>=i{~hU2o^^HWlSGM5vz z>y76F(u@~(eEFt_0;+cb`0Y!LM`#zyexo| zqq}$FPPJc%fMN<$H7TdL0)igleaY&e@t2=7Q`U+pJpusr)5wFA)l#Aay#X1^shqy- zhfQ3r?#LQbVIvy(WC9&_MY0UxOwJ3USh+m0_N&ZwQr=Zw8$h9jngZ?H)?C&LX1W+gP zXTMmYC@GE43!*$7KU?I8x8AYY6pfW0BzqAug5^0DCjR;9%^2qiB;ejQW6&Lurya#} z#&iuc>^qINX^@G)T)a)mnZ)Zi^^eu_+TK@E4w_b~%gM*vN9sVx0*&|0K4wO?U=AO<5XkazwZd%qLBq~jboF+5mO%Nt4)LFtiMkTEjB zk5cKO5ot*rBvuAad`F48m(5s|#pvvk$3-3EvF&p7#4?TYONqqbF!>Anu0bXnTl@>Z zn&P<1Rx9Cy84T;1x|uL_?@~+JZO0{@BzunLL_pKbTo?9pv%lHP>m>)iD%aOyhnuDf z!!_4eiucp{8rNK?JSMMAPRWxL*=3ltI zd)a_%!UM2I=MI@*HIM$3T4>P65+*A}MR9nhFO*j=sx9i&3`2#Sd&zALE=LTwW)Y_d z;(@|fWK2btv=!uhj5?dt-|dkJxMz7gIjb5G$U%vYv1U*WPsV0X?|kqgzQFfM!>Vm9 zqe|ZxIYf;9lbBU|7WUW?aJTUF6uEMm%67wcaC8O&hD2n=GT{H$J-V8ZlF3D%^y9-m z-fX@>En0nWm$zL@G;T^v_qJRYG$;M51<hGYLl*qD-kYH1MXUM+U$7IXYg zAi=4M>1(*W855dv^D9`+_ti@RraW>P4Lpt2lB^bNgS*W-&1UJn?CGA9)_Nmu8_j4& z!fVJ$hf#~($xCECXCmD9FIJC}qmlLM|BqSdXQZR&qQ&x0(b@%=;{X2@VnqCIkLMNQ z_{r|8r+(OVC`q&xbIH8+G_P$#mYb}EP8|}9JjZ@^H!nNV*0fz0Q{(t=1z_00ZrLFy zVGOa3+L+>K%!|vwKQzEdG772{N*fg(=3^G)OdpzLALlLUDWB}Z;F!i8EtgEE9l{x% zVZ`aL2lzIGH8xOjH)Z+5bjn55q+>#K0OtC{bi;_rFz0~sMw_TC%K(WL>4fHK-QZ42 z#Lohh{ac<*CrL@o(3zMGpfGhh?nLHnDDmoh3qyK}q`DJmz^p8PfbaAc@f>v~jL65H z%xK=qUO!E7)h~=jUPO^J$>?@*z~nfS$`Nb@&Pm&fR&8yYxeT z1S^4wZ=zV^rU)aT(Ms+8Nj))Rgljettqtakx-Y9_fCeWHx`4|eR-P>?hPnuRVy=*@ z{rh$y3*Mi^!{)DP^W`5r6~NxBY?6I8rIT-1SdE5RaR*3fODqpu|MGO8o^tmc0VNi+Lbbh@AMF_PK_XKCelxw6jB#M&#W4MY*F z5vjv%{6@IFTevcXnTVEI9XDD-u^40z){Ibwt-&w(x|#L+219xzR9Q3~QYgOPsC zeqtwE;;G10R;`)$WiY;ZNZ|Ch#194ml7m`$nwnaONT-Fy9H3e+Ia$_+sC`1gvm!0B zHqmAZlZPz+5b4*qCwk}y0`&w)^mnQz@|-+sV(C!=iAdJ1Kdo{y==;N^q?lLCffeq( z`b2GFlr3%1bmJgVGh236iQR(b8~Bka5>l3I*j)WbM*AR}AA7ns>1q2xDACl6=$_H* zY9$$7>557*M=Rt8U_A3tSCK4}St6f&HFQsV2Q|?$M>(%lcAr6dTi8%oqe9|4Mca!M z4X=ib{B$n2GBm16QfB`8%A3kcK*TAs;E5(g=>kjX9S+M;Dqm2$Lmt&!Co5dW?;{Hz zUGoMK)T!vFhSqi(oH5cf)?3VIZyFsf{!_>rM)b`o-bV9|rrT$0nr!rPPo*MlbIl$J zO$9Hvhx@Rc5=GEZ0*fKnxs@z4{jMa2D&vVg#s|2RKf_BaO?9@?Ch=HyfcD3k%~gfQ z7FA7YJ&}&#c4SHo#vW~53zmN{6Fvton|dMkhIdxmU+lP-6o^-1pWi65m4}2c3%w-f z`EGUTIkD#Eh#AM!EXA|-;i6%QS?xr9l}lf+{>p3drASki##gkMVLg2USHIis&ADks z{*SSy~IYJVAZ-#2r2ZSGj^W&bn*5B7ht>2O^Cn+f6Z* zIjv-u2k$h!m3l%h<7i`2d69GjOVSJL$R^9w5^-8J!cACOjW0@tth9+?gWoORXWe?A zOnZu3zdM!%+d*bpR-^2CYdEnQlKo&d-q$jr-Nxo9RM zaQvs!^LjQw#-X*~F1Qm$&aGgRyJMI0=Mxb<1+*>{@7~mB0|Y%m!a^RE?KVWCT*Iu>1C*I8~<-Is@@t$2QEOauXfB*|rEo$Hn?xjd!&L1kNM1+rw zjFpc~)eg@!k1j4OFO^Oqtxt{*uN5<9D#|C0&upC5<$-E0Do$p;T%FWikAFM;Gz~ob zzU9w$dJYL^-n)R$WI>y4H~HeadpxFcL$)Nsv7on4 zYD=rC`&}82udTu!=8Gn?aaC=|GZ_i8T||`wx}z4%B#k64@LD=JP1;hVl-WHyR6mO* z(dCk8xH=vyR1}r_<^5QupQ%@{)QST-aVzohg=eV`@$Esqxzd|LsZe*2coVDRRq0wP zGg*O)CN=%LG`6)asWG_28-ll*111#qM*L3bvJye$Vk7VPc#flk(Lbkl3NkCEGf(Hr zzF8VxZ+t_;ueh$Qb5z{1h`(~t<%v+>Mr^2oDah+OVQ0Ls|FfHaW8sszd8sf^|EqeZ zzo9Q(DXYV1s%BlpT=BbrmLjZa%6-zm+19_^aBQol&scbW>>*@Ai-+}o+l_tiUi-=A znp(!lA}<$@_Q3aqinhvUw2*^xSp z2Bzg+A!8ODp7+g+i5bIX-?st~pzcp1Pj)jy9HXyLO#UIvn{N@vuneW<+h~VkUzC(D zCZV~MnTa#1QlOof(BQ3Lz(p!U(EJc`KZtr^r!Lf!8A4aC^*0wFh=cRSL4D*Z3X1#ml`I0*Ri=K&x0 zH~OE0Hci?LKU==UON&Q=e5oRLq83l}{`*Zo2vbpM_vpLsz2mMpMN=@++jl0_d9P?^ z8!oMAT)Z4F>w&oUe)u?d@vQkQ^&sqw;x^+{jbta`i<&Ca&azHUN?;}z9VS{7lW=c( z_`512`g+@y!j|=<<{|5CklghPj>KagVPSfAY}UNPHSOvy(_tSJ)@h3sJW&$|Y@r_g z$-Cd)JqXFsuJz)(2O3R+B^C;DIBqoGZQ!r&9vlfSe1SQ>eg-oA%WxqlJaT@%Rq?nq zWotqWCD-njRxHW{2*;uFW`K=EIrc~dF?c`=S1m+w`Y1+p&x{0JLQsp%>5MwHOHKu0 zd4#joHO@|=m|Qws3d8Cq-eMVFRFkx_-KK;a>$mNa-$^bA*)T#68{%~(in~Eq0|_5Hg=Z5w zBaJo99F&v+M=Kv~=MZCWsA-&YvU|LnSV9tFL>L_d7a9^G5*n-sUR(mJs4OfmDXy<< ztgb4pX=-k$XsGRM>#nM8?RW2-+Gy>X?Qdy@ zZFR2ooFm#Rg>fymmVF!S`M$idyWetAy?Tyx$9)gPk@Y&)*T$V|piP$ft+!`QonVs> zd!lo{MAmLN_~6|8({jn%xui?U7UwBxn87u7FtATc>{ zYs^W&Dod_mzngL?tBG=_Q9=3PGUn=RER80saX5#=GKKeT_a}PkCWeuW03re}A+HmK zPeBBc%k+e|G0pZU$eRvH_0x0G4LdxQ4SXUHdGW#q`*KCydJavhyL-(;%{F95;x>K~ z*WKySkaUr-_bnIuvzzxhEyFJ!vC%#drIHFb0f;;_JS&yb@e3h6ut9P z(KPs$%w!ykTh;-eF>R=I-n&Pi_*`@(+4U@oJT)!iOf+Dqu*0-!{l^agRMJ&gj|Uct)?{GT9Bq#)V0P*F7+YX9K^qHd zZe#)R2icvoS84HAgjepZ>OC33rsY`BQ_jzYAO)oNncJ(fIglr!kupW!kURZ;5+k0T%LEDNuY(9E}@d#c;Oi<8ty6=h}$x z;>r;7V&(#SXBn~{cxU7Q;Bl+<4;OVIZXIna(l|MYuTEZ&JhCMvPPqb3un&}I&rxfA zes(N^2mCUQ)rj;; z+$5Muu1$LU0oTp3J%$>)LPnS?IWaMoo*El{;saPbA{RIMx#$A_sk&IDAW5ifb=+-g zxk4#eTXs_IId!5wwv<&+S8if?W@^Go6AVufrt!FteU8;93qx(E?4&E6n2q5FQ3uV;EI8-3fCGpsuvt_j91K-+- z=BjlLKjol=1b(iavn5JYcfL>ZwE84NZ_D(7mHWUJ(9`o03U)Q{unaPPZ{Zj%X&ogc z#fj*vuE7)=8XID6lE#;x2t8)Dwo|I_nZst8FKTfXJ=-nW4erfyVp@|Lk+egVnvt6nXjJpjMNSN4{JUy-CG>J7lY)O`03kB#iLG=I zqC#|5*H}!=kiRNYoqPmm67|9KYmD9Em5RUp-8W`>I=aG~y=(RJSaP zv%CI6;6FdVJT)ASkBP&`YPa5$7rz-^ZX0#hkKlVyI<8nPJ}LirYxZYe{6c7`(3UXM zP&D3v!p&i>)^K_8YJ>H~HK3$QEpVNtk+&ZXCEnB@r1JchU-Na-g%IUU`$Q1g{pFXj zjw$x5@J{YXxH$PD1Lto3eVY_ujhK6f{R@Q;LHi>`c;jj?q^<{~Ns%z_uD2svTr)?!F`by+K%TZaOt6+5b#`1)_y7rFRxVGPy>J9g zokEuTBPl6h!<7lune6Wg#0%vXz73$2n8F-r;suH##$-z=%{?`nDKQ8))`F!yKvAZ_ zX!zE!U^a-)X8?THK!qexBuF2zSA%ZuVa-gqX{)=jCgJiDK4+da6f8@T`u38^>`kEG znnf-&OLNipm(GJWfZ@AC!W_~>nrR5JLGsD-<^JteM39G1dKBUGx@pNyfUHHuEUot> z_+8BP@vtXyHi@WBVX71C6khF;V(tcLz^EeoSk#>^*tXP;e3 z*6PP$N;|wC5i(8w9L1^aRd0TLYN=Lysem|C^zBs!25-1SF~FMGRm%Iy5K)!={MZ7u zw{hESu-eO3oG!k|A*Ck$@{mZ!Pimk+UHf7MAv|L6W6~j0Y{l4-+Q&0_GTow@2o+DS zN0dZzO014xWNzRMsnB<=Egkb|vG8ebYF{SE5CKH;y-jCr(dV8!co_<)L=Z& zN0tqg_0w^y`viy%y(CA|q2>j%OfMNzOGiRy`E%mjtC;=mlQEu4A0&(E(1AyO0vu|- z%*}T`5fhZLWWcV11`~xwwCoetkSgnr4>=f@v#*rTZ{)T>Y-0M^Hst8{7L|^*)PJ&Q z8h1?Tv1U+=N>dlsb23`IdP7n-d;Z&z`jGa$<|;FJD$uf3EAp;x?*m%UrOw6jxEFV= z1L3`}%aBFaK{_VZpHjr8sjk@@L!jq4?lhoF-F(KDNdu-D)^#g+`pzDmd{)T+kERS_ z_#e~^lcy*3_RmjNWqpWb*Cr1+pMT?y_x(c0g*?bpKmA4>XnCmSAen}}v{3qUEu8&g)~~AZcUH;13e9iV+QdC-pv(#}VL` zG1d=sqBO{fRf`WzQ;5uDOiNaWmByzeGjjTfuxUBE2N{~j7!`+hYG`zN#lB@W zD4|!9E>(42oKczmm|ti~C#mT??q*rlH`-VOXLix;1}=5F=NCKD&Uba9vabZ`6A$9r zMqD{G54@zq565&!?|s2W=AbU=@vg_lq8TNZosV4ju%x_VE!HurlW$y%@@L*v|2hX>%0Z_-Ko@g(*0(bMvfHuW+CC?jYr8fb% z09Hqy-3N?Bm05$LOKof-vudFhW7<|KjY^5A`1ft`QoK@`exEc(NibiK@kl>?XqH^f z6C{N)DA^{xfaRePn=Qp5;9T--i2NP#)Cw_(!!>)aL#QGutOG@xROjbKRSt_vEf3*$ z0m^Cm8JVJY3m{m!8KKC0w~})XQ9Tkd;{J1>ZBa1C^O%(oS|%P+J{Khxg2;0q5u%2c zwPJ#GzI;g2_WN}zwqTFt1nPMO6C}E|2LT#~E+m>CM={DY7C;*K!h{y684W>IV75U@ zXIPLWNd@Ja4kkn=j%JqNf^Y^Z5&8jIKJI`*WK?VVLu7WI~E znXx$-Jm~P1=X95_@oTk4zo23O60$5Rt+L@SR~#rJkOm!*CAkU{AYngXUxp>8`9p-q z_`UaUiMP7ZS3^Gee`^WRN#;|psb{N;ejWn6N@x7BF+)wU%EySuP<0wC)G8|-7P$v+ z>&c46nwqaxWpGJKKV=NnUfQ5t7s5Xt@(AFH;N_aJL(vd4&Hc=QrbduEG@x5qTT<1cKT>JCAMTtK0$ci8qzV- zdQnNKSoqq;1Scki$4gp9rTC|d=h&+z7Z@wkg>f@zIcjUMXT`#5je_{q@?srqazAJ{ z)OGVw+Uo0Rek>bsc-t9kpVKoVFjDO6+-k=L6`Ncs`P8jkS)o}>x9$O~>P5tlA8pO_ z(N9Y(`3@MwLywocE_;+Ii@sW`X|Qm|X7yMs?|gB;yP&FTBN+F`6C_Q1h4XcJBC%~fdekH1nHl_<|IdWOPVl2V=d`%5ffgPlhkSA|p zoGfYzBn4_Lm2_CxEm{F1jj>&p&TjPPECjxXSnkL1NY^?n)<+F~jdr3clOYU0SL zyI~($_2|&}0L;^{V94884KIdLO@aM7v{q4^S>D{ADP7{=(kzJoQdsXK=9v)f zmV&(Rb_k~^kq7MS2uZH)_JUlRRAGo=`NFVN{&`5PKWp)7cMgC$c}Q1#WE};{4?T9c z&KA08I$_9V(5pH-=Pn6V!H9Z?XsYe*a1~+XY!d1n<<`nJb=4;R3=6c zNTJNPsj_L&Cy_l_WzG#O3cN|1R~HziwjsuYVzrwvE9gpKQs8-!V6o&&jIJ@uIFO+8 z<)BMHzgs04^Z~tJd3b4}3=PSzJo!lQaGeIQhxBkRv)phzFDTYES%Xe*$HT7YxXqko zNQ!3N#ireigNVq?DE*}0m+Q0RpMy3M1cF-0Nr&2_41@29c*bq`K4#z&T1t(U1pcHj zi**P(^`1`fjTR40Xh{q%D2h^SV2qmf;a&9)u|T2;2mtDDiXt~Sr8kuhR9={S_AL_> z3V!Gv%2V`U_=%f6N|bpB{)RS@q{OGyM(@=A8jqz2&q#wsnBFs3(U5XD`4W|q)qk9I zu9HBtaYCsphNWdXe%FC)Mr4&0>vQxqrp%NQizC9R6$^W(nuonp%YoH9`R-fx%`d3` z>o^7Y*L3=4jU@6vYb4JeoSA68P31GN`)oR;3`U~K7@c&BJb%c#M8USB+Ye`Wo|8qz z4dxlqmPA&Rd2L(RI}FNw-hcCPD=M}5kKB;cjKbJ5y{o!wcS2I%P9{TA@yH51YOPRvSaY8~`)aqi z=xD5RXJDp5gsInN={9M6zAB75rqhSd?`DGQoLJNjIqu2NkIm^UX81|I+dlv?YLNd&jj5*>uOcZZybTs(rrou1G4DViGo`W+)p;0JQk{(E5 zlqjr|GN@0Nq!xioI!%N$VzLOl!fIO~&?tQjrQK~Iq7*?~ zN|qu?WRMbndX7QkHGBsjxli>r{Mks&9hFC@74FiF6c>UIhcEM*JQEnu#os5!;tj#4 zMlOL2QMg>DZ(0rC?$O&|YK?086gfa$#_4cTDEOn;o13B-ih)N6Jf~^hp6-?8PW^YlPeQfo ziTuC%*}v=Ue6K20iasBL-%lfc{h!k=dU6b*fQbLK-Y#p(Y)<8;Z=NNAD3zP?ud13r znJ<&U9iy$JRKZVy#s>3Zs}e~;kaFE6VoC3$win2QKP$h8<7;W+g zUy<_-7boEs{DXDXLR+FGAy%|eY;Fjah4I+bD5&XH2*N>qyF^5it7P(u`+*|zuAD0kEvx{fJ$dJKZnw;o;h zU!`CWD&-(lBy4=1RO8vdQebqt-L?W{KN-@6h_2DasugwLrx15!DKdA@q8F(#VOJC^;eES(Hop8Sba8eWor zURjYc3XbG2j?a!P4!NQ}t?n2&uPo}vZ@7SEX^<)63^fW37fpkIi8r}*1K^s90b0=I zQ^{QRKB8hwMQ3_jppY5_!2>k08o1}z#?~1UoO9J>Tkl`eas9aO)brDi#<}-*zN>Rz z_#gYtUIgOl@cx%f(|Lnf8Nn_?xKE-k!-RCYH|DQq`EEwueAv7hlXJkj9d}K1XvC#0 zsCHvxLB%qh{5-J5rA9id05neT>^ZnA@P7T>@JXa#%YDua`w!WiM1q6I0xsQ*$C&(w zn)*dG?Khsw8iqY&%R1uKo~sXTHE&RjL-Q2Z`wAWT_{`|W*xT%hOYfW;T&Rt_vSW&}Q8)9FSM;9`yTm zn*ZzXZ*$7Qe&3h06S8hr3gGX_`iVLJpnmrERl2isnl<IB? zZ9Z-&sEB?tL+)9D58$=XW1#Nu8j6gQzE+D2=C3D5kmnHFZddU_ET?&egEoXet)h0w zyyxa5lZ{Lb3!xXFMa7|}q&Y4OwV>WNN|ZqYcS1B{)oBP*d@=yk?A<6n0fd+CE<{gn zWai%~dE^FEqahpdmLliR?Y~}39PMJg!J)1U#yMHTBqc+W{1A}wxX~spq6E@jE-GyC z;_jVZn*W%`jRF9vyksVlvwfsy8=A_!Q@ zR^X2|WykPX2S@DWZH_U0C@ylbfl|6*q@zq!7# z($X^W#nG~A6U<}I%q0dfdKaTe@Y|vt-)>(z15-r*SnRsvQ=F4~8K&X6TwCYUT2HN4 z&D8d#mv`3=_E#@Mgz(#l!I)tgXPK24*}KZNp6kH6fNlBDKUcha?`GZx-TNEg>FvGV zwPA9#G}|b`)&axP(52<5X%8t=tha@L|I5aCLp+cFY~v_3CTC0^7LjyJG&6Igmc8$0 zQh%7#`P7(BZgs@w|1f2O)08=;a4hA~!D7wMjaO2AJYLcv}T z!RLN!4a|JOsT6{ybU7T;uM?XL`M;n`lF#W@@?A9lanM$K*zmY&Z68y-a!WzjI{ru4 z`D5nc??1f-ShaP3JG}CZVc3bUXzRIGd=>ai?5N!F_oH561{1so{}l1j!*a3-fA@P2 zH=$jhg#9L3|Mx!0SELc{PdD-YzYj##1jeP6Zj*DmTbZ7dv9&+BX*d5qGL#dTw#Jdo z-VBiA>g)JaBXOEX^`@L;(iD*@+oT|6pBW9-Jpa@p2CyT3f8%YQ*$mCk?<#t0NTM|s zzo1;Q*z1tDZQM6i8Mzu;?JRH>g!U`SEg!GRSrfrr8B?a*DHS*5XlZZ{m20KGrai|} z`Q7!qMQ4b2-CW*V=u32&tsT(2@<0}I5W*l1fYDtq%z2P4&K;2Di%&0v>D5*(&JK7w z%oSc!0Y&eliZvfsy8iyC=O1CPnk}$epoAqP1X8%ugU#fLhlcaw|~yRM%=IT$(T1i5$(AHtZw~(@4wFfxQPsZJdOM6oJV0`9bh5F|o=;9?F#fU{Ov zj-LYAX2I*$p_n$vH`l>;h{174{5+~b>t*UY^$;#Jo`8PM5bDrS+OSZ3Y}WC>IFwKT zSWwCp#hO6~<3YeVo6Rg$mbje(;-Cg3q%+bMt}tfpd`WS zHb`Nhm&e*c9#K(*pzzE!&{z?)kOT;S3M_xipaL2d#|$hFt!+aGQOAJ8qtbpt{~kdr z>Vt*bQE+9T;%i23<55f|VJl;?*J)waX#7Lv(dq(m7m^{L(ql#F3F$~;M%5#_TLUWu zqH29Yo7>~^eW0p7tg51sp*pcN^U+7;v5eFZx|7(k(`Vi%-sUv&lp~~228ij`iNXwx zrT-b7vlcUI8N|#RdE*n`h?basYJ7nfeNi4m6B_qY7i$nrwACh1)+Y3qOdNu29HTCD zAT#lc4oDr8c;5iMmJ#0tIpJhQ6@bFUq9W;J2`Dq8*W9hx%b`SB(6uObD&4@LC}{o~ zH0v~m6Pm(&mXK~EnBtQJyst=lVta_DH%VaD7Wys|CpI33SDuy<6?w7-JrD?%6G&8J zju3~c^=n72$Pi4132!%~SK7qQp2khcB!Xda1?4fe6Oz4X8IbnW2A^cQj;Jevm~oqw zq0{)Q0XB1J=6OksM}>@MrqS<29~639u%{SWeFW7&3ezr>4KWs=;mj6H^m&%1vwW2s zC$gdZIcaNIF@h=M>G&-b-kINh84+^*lWkiCv-=owlGAPTwX;!%vtd~ht!Gj7XIYIE zKKB|qGaWt^6}i-V;ds)yy}sGY4|sLH%0~}I^Co$~T0$wQ$zc}$6}lyQmo)2>PGZ(UezM*-9;J-;NI5DJ5yW@T!?9DQ;|4|4itVST*0 ziw_0gWntMJz{PsigJtS zykkila)DvTRcX7LN7!2Er=A#kDe?Cgendu^2zG=$Qssd3#czD8M7M0t-^j`G~?@6dE;abCkT{c~N z0U@|vZ?gbOma&XV`yvVBmmU_V()%(xhq*qYiWwgUQrO*n^|q__3sDWKej_VJ*@Rq7 zzo5UwFYEY-*k2PBealEO*R9;JSAgAGMWj$^cV+U=hmt;<3io#fW>t0dEaj<n0 zW=Izb#Jd5Z&@-nrM5tq%6rSo|FDF-e$&Z;O)s{Tk9jhPGzm8G166dwshO(E7LRPPY zS)IROL?<8iXQRXu)XX7-RA!Cz{J`}vX$Na!qhs(3Hb#&}cau+5zbDTP1+ps{D=Q)G z7)3D^PgDpdr}n5WVyKybJL0%Q=#76nInM z@vGp*7IvLht{WhRLpHDgZV#U*<(X{3u+1VkA5@IV+ld|-I*YjM8nu-h9Fni>mc>G; z$MCsMNQ*A3#28ZuNC)gXHY=lkM+o%l7ud(-=*LzDU3R@88&Q@68us6TGD)iT^#{Z4 z+Md){viVqi-pN!@brtEc6ytybcHZ^X9>p#~1$|&n0 zZ{zlBTP7|22yQ5R-zr1_fadM@gMZ&l8CLb&u?BK)R8@7);>cHsu{DJ05AO+fae`}= zHp;E47B9{hhbPB(-i()R=FuCLcsPu{)~h7BT>fa+`iNC8)YFYHGg5Ec;U+gMkQ8;` zj#HEz*5!sH>H2-W8=qw!S9<(X3KoWwP8d+EI5{i^ZlDH79fl1=wG`)dybs)L|3U-% z?;AUA1TcaK^7%hQ9+UgHj6E@YQDgxF`V8d;L~3MukMxW`S%@S+6(T6J;W-olM%hG3 zh1kQ;Mb*>CI5^x-Kh`@zH#IWQJw3WGH@Q4Bw6-*~IKREpv43!QbbRux4PRV-x%zr- z*K+ebi;-Nvf7XWo{Cz?|-pOXDhdsmTs5AQW14D!10@Oxsne|1If)8`PyDqk}H3%;p zWx8da;dEjgk|*GiL~sx>vkspiK#gZ`YsFPT z0%P{}0#d7IX zFGfPQr8%z_(fF(^TaGyyG#P>qC`5BC?1dZo4Y{2>o)!)JO59LAig!GAwkGp@=W{|yo8OvD#`9c?KXnTp zKIgw-9i;$O?v?S*-fuqy)i(dBY_9?vZZ4t>5J zvNX0vzL64`J`(-K<<7tH?cVAJZ_v_dSPyk^VeC&kkXfCzTR8XdR#Jr0^1#L z=&$)28^fuwO|HoIZOe|{XgWq)f3*Zkd#;=o2y*wA#)wdluOOhJA^*Qk~W4Ii(9)5vllCp%iS1PT}DDIR}qy=+!!w-6H3o@167IL$IksCU=@=nCXzgX<8NYZ6pE9ke{v9^$;P=f4+qQC2Va*QYPwF-(Y{ZF zbmKxrq?d}Ri4c>xaBdTCPZ4d{UlI-d1hA75312Ygeh(3qx=qfUKFkv>nNV^Hj^jWm zWs-j0y<0&BpSVJdu5Bi@YH4ihCDgGDWv3XU8qHd!OWD0Ari>nMGX%RB{#nB_Bm0&) zu5b(wtC+SD`j(Y&O+K`-CKdVdTlNQ00=_orRGLi+O8OxqAMxO1vZ+GuDeC|gFl(zc zT>34K4?#&V(q+gGe4{h+7%pPpqHIBQpfyo>B7!=p9BicIGYSTM{E?*`F62@8Dh?#U z1fGvp`(E^V1|-E#rfO>Yget?z0g|RUe@1#Wia}q>u(14CAzU6hOh3wH)a4daHk#oA zJrzpslZ$b8)KE)_9mzrTSuYMiU2}q<;I|5d!V|wGM>_5W%UdnfO8kLJ+re}4YOq2L z#z0j8RxFk#q^WFlsQNI|S`VdEOROa=z?nfqBPKe!eW4}It5m~iuS46oh=|=gP|P@x zLuYB&vo@GW+>~HSCktfS5EFdK$M7q1kLRwD9p(_E7OpexHXs5}lv)A8RlHMLrp+au zcy==;dI2?jEq*>RlD@w!ijW8Uh)1FEe&h&R2*K|t6mA_o0XmoWRIGZh!!kNW zMeF@}6!zpWB7@_XOG9JO<1p1tha;mnNL3uUf#LBMilawzv*-b3v`Kj(qF11}Q%AmCib>HA>u$ z=$RI}J#l{^yi3Lnz{jh-28@&Ho9*s|$+M8`k*lHO6juk49q#gD)?Bb@!sE?_;F#)u zn+6aECd|)}*Xr*4-fUR;wf}W6^hN~z3QymGPgL`Qql2O8`=~C~Ic4=4up0pfSkD30 zdD*CwL+Pa$3)oSff&(aj5CvT);?~&^_w%BG&oSWu0xY|B6CB_Je|P)eRj@X+?XAac=^1i+LQyq3t;SsFM;7xZvw^# z;je|vr08W;l#zf`28fry;C0V>F0ebs`^JOh>rr}{U`_*>vH;D`Vi4Z(g9BsKiaAFBA!CnG)L{3<$8LvBrO ze&b`X_{9HSD>2f3tFRIO&c<4Aq6X@>LK2n&-Dd;)cLL+*0<>~|FoAyAHwg)t1{pY1 zgZ6W!pj|w%WG5hha#Ytf52$*)cX}#_I1$K#jK>itm;)GBeKzoEG$<;21%LOn3gP7# zVK;bV_jdwNcpAbsj@1ksI1U^aFdR{9Nw{cUcP2kbCd~(Uy5|CFw^FAge`KU_uLLPi z=x=GTB?5SWF>r<9cX%=APVQ4u(olhJa)TP^Zg4g#+ouqJFR%>p$AWiA0&CcIX4VUj z}m||LQ)dAsj zLng2xf9Q8*@_)u~8vo%HhSAktp7?z)(Sm6xh2Md4o;VK&)dq=pcmI`Pt+Hy2)&pS2 zfCtctO=eAh)I?T0Xazt;3NbPZpy-QH!~w;JW}5MXE1-fw_!Zx{hJCk7XfhQ=0XsLRAXokVSjQ>V)UugyH zwbBlrr#wQPbJO$PxV3$Y${>098pf+zTPgV&RA zHxr7|CRs^-NwAa!;c7MnhLz_8EOC<9cmt_;j~ilIq^OXr$p!L;R9E4F?w4Yu(Ip7(F?Oe94y@u!7#l zlT~?-b}4em;E7x~m>YQpk|LW-)Rj=MmMn0C7ZzS2_Xl zb_fcTfM}B7vY{bwQLdS1I7BqoGNmmPe(4 zAf`ZoXho_Tpg~ZuK&Cw)mY?d04x}^nyp8siT@KmW=#Hp4#2KM)<`PO1Dhp98* zsiF!7s9F#If*PLaw5lIDD6pEUoph#|FsrE&68a{ms(`CAvsASDa_-Tpt(gOVl2RPT zP>)~at9?MM?!l(=B2+&!t*sZVFJ?sT^c&e)l%T<^eySPZT7q}!7~~qR<7%$uDz52z zuIh@e?%J;K%C7RduJrn@cPXy?uy@<%t=&+XHt`Z~WD?Gb3j^C@d{F@3Q5Og+l=fP$ z@#?Vi+OQJ)uoD}x6nn82E3f{4Kqh$6u_frS4GFR$`>`Y&vL!pRCY!P-yRs+SvMTGc zEc>$e`U5drvoL$JG7GXPV6!=kvpoB=J{z<>JG5jPHOMMLY-p`pz^}?_RPqs|QGyn> zdI(H=2me)j6Ic5LY-&w!NTgG%w1CA;Sqrvgn+{`(ZkqZ|XIr*x+qSiTsSj&=S#ir; zbBhZu_qFCww{+*WIiRe6zw|`=|XTZ1tVXBefxMxtXum!o- zBDrLMx#Fa`jm5dBptyo-U7j1d=ry`uV7kzRx^$(wqX4?Ld1b8Ym83hnQV_dZV7tkL zyIMfGX`{QI;JSR`yR?gc2EseM#yhytg1BgVygHz{#Tx^_yC=^JZp>Sv)hi0hdqC5B zy*58b-qv_zwnzTyz2_|t4sN7bMBkA zuUo(W|FFN$3cvv&zy!<$224x|%n0v`Ckt!@4_rzSYy|gvz-Tjn!9#$-iE6>t8z>EY zO&Z)uA@#sg-Ts6xx)aLVml%1orom*mTTbpXtbAk46g#iO`>@QE+{@4G!K9+i717510?v6v&TWvxYGTgoo6XKV z&FrhrHVn_}oJG})!(F_&9@oz7+(qJ?FW0&|w6z>q~G(Kjs6tn$yjo6ifq&sKG7-sBD3ynWoB>;y!zJVz_dlN~F|VcM)5-^;SuaPZ1GN4r+@jQ`() z-&kN-0Nw>7G2ossO$29Tza&9Qn$Y z#i8Fwpy3tqn%>b2+s9#w_W@bK8AWLeByQwFP>)2yIf^FZP0$ovUMj%p;6*wQEdC0A zg9s-aehv!q;sYTlIZmzW3|(s zUL@tTC3+_4oc-wj)fQ6+>6BjSS3u}BZs}*2-4z%yx>?)W{pp{6-r7y1+YR0Snr;xG z8Uy8mnSv;YH@Z^q;_7fHVD5r0nEB&>sg4d`zUxxd>%Ok)!LBd5IqdZU?8bg(q@3){ zG7D48?AAho&^|BuIqlgp>DHd@+P*)?zU}Kxn7Z!moX{p#E`#FkW3ce-=PnA;zAfdx z?wT2srVvZ;&I*|D?lK`iRMPGBE~2NnWS?j+m`V`>NdCq^KJN^ zCa(+8;Sv*upa35_B$6&>_e)aQQkIWH}y_`@X%># zQ|~#nBlcn+5+TU%SsxW0Ppq@R=9XuK0Z;XIpNk&90|Dli_D!Dy94z*OT=do1#)-U>dPyDg( z{3DpK8{hpb0Q-q=gtPzr_ZjQc&j{#;`A@$4Xz%mC3LkWz`_So(J0Jf4ArAt`7ks4| zh^D%ZBZ8hOS-vgJeqQ%~?YRE~gTf)PXgng5$|bYud_tqrDYa_7Vzb&UZ$+xjQl?sI zwt9(gW7L<$W{GAn8f?B+k$q^GIPCh!01CFGb#WacCMqs6Hab2+MoLanE{TBc;mG8L znU&pm&Y`J%&AowYz6HjFy70BynZwzd6zr`bstPb2n^ z8VNbtioF_RuSADo>>fglC~+diiV=JG(TBr~K5et$VaqotR*G5JT>p(~!KP21Le%@Xkb0^Q9J{;zF_fa98QEv>MfS1r&L74Rd-q;jv;5($qnkHQ~fHS0>Y+->rqs#;vWqLmI} z`_JSjxCqnkajC{-M&On4woa~mIrHXK82|D2_@6%C`~H$H<`gcrl6*)BKLdAf=3HynE0H7G|oaUZ~AA%TSIzSOM#(i-xsF5rUHdscAE93`ZiY?9)V1;VPs7!?! z0`lTLrP0_QgFVV4qLD`;nItehIK(1_GA1ZsgilflrG*y?S(1hG2ubA#C;D}Qj5Cbs z$vC2NMd=%H7F`Qv}9 z_IQtwILsJ855IyMtgyp|xWfyS_Sog9^6hA4gq0Pt=cw|CivMPQ)$Zp-i}qRfk)PN; zt4Fne#FAUCxyyBk&8eX}`(j6F^y+B46wZfgynXJ;?Us1VsO%;EmRTi3B%WKa!3X!G z=`d~TOW=7=CR?b!{=(T`snHUFZKKv^Xf3|+8p>+KQMULR!Y8Ag@2Wfs;6vI; z`?~n?pMT;DnzG~Zn{%wW*?QJq_<3LxLnfy!q8d46!p)rjU}sWWXx*Z{me{ZgXgl72 zy6dm!Fz3h8atm#48UjpQ=65p#cX-x~2RE*K`IjM?volEWIIuI{eB%oPeEH!LMofyM zRHgo?i)YQ}bgF|lOZJ-o-rTO>s2=US`s=HGHbA6J87ZQkFich; zfdkw?DjPfyOne!g^d_Y&4{EPf=POMSyXZwb;bU8s%Kt)qC@4bojpT0xHwiczg&A^CksBlrPydjX@ow1IRoTPH{ zMTGb?F+%}jK^fmchoZx^%M6f09G&-Gz|8@whx>*jGUWY#Y^F+PijQJV zgAz3->e83~!Vg!YUy(SY$Tf{Bau?kkR46BndWA2Q=lN4YTME;oB6Sixg5%`I1&SCg zXhq4wsg`&+zjDe{mhgKSA|>}KRiP4u%1bI)%le2iak4YKV^oZED8_t6NpsH{YdC`% z)HR}YayYV9FwN@MzivT)k<>BVTq2jba=xiekix?s-Nd)Y8YqO4RiXc!2-wSFRtvGT zY*g#hqBNz`uE+}1CL<|X(c+b7TpE%bjhfll!uAM;O{7mpVo|(3Q6M`zRfOo;+0-s8 zDwtd7V<|_z*djN%N+44n`{}_mI#OueyLopUjfUwhF~S@)+il5f^Zdqkb4RXBx`VqMT0 zDbxbag(Yolk-Hqx4uFfH4!Rbby-Ml>QkdS)v8|g6gm_F03rDV1q1*e04y^AB>+JK?*RY>|KKN=!7%|H14vdU zm*Fu16PF)Q0U44<5Ccdaj*}q;8UtdGtCOL_6@R6z!^X$R$;!*j&Cbuz(b8oB9swWK z*V)+C+}hpS;o#%n<=*Gw=IQ9(le}^})sV`TG0({r>*|0}32Su%N+%2ovVO zr?8>JhY%x5oVW-Q!w(m4WE|n4!$yiALpBR=O~l6=B~Sn0LxAI?$d@oJxg@bc#mpEk z3x5c}XoEw{pFmSN;HlDM349DKB2XY=$qA+@IwtjaGpN<8ky>piAme1p5gm4#fK>AY zf+a|?s$KhuX)8!WSs&;LS4ai!%)2>t}Qmv zf$#?flRw0b>bEmYzGZaBX&rK}5OA972-PKq7QezWfaN1BA-lE7nZ?QK z*W*8{{eh)-B`U+K(0lwt0q|tZv{*6xji3Naklc4!{|Nvtgu-kc+&7+l6q15KgMTd) zqksTnxxiF)3X-sd0wf*Qp%D(8xI;0UG3A|V4j`rgh9oTJ0A4d_hk^$xR_LQF-H0GS zN+~)Aoe&O$C_+gk4W;7`0_X(a4*+WCSYpA6P}7k!92XajC9L=3n650P8*D7Zm?dvv zYH5~O0f=W>0ATJgB@h#Wp(L4nntwvy2nFm3D1$M0C+Bymnb6p9TI31VO|9Iynxtn| zGm8%u@7gv(QE>?X=WZYc2n(%3iDOw$D7v?YH2DD{St#uw@Jp0i}U+svC%z4GRZ@4oc*d#}GE@cZw;0RwFBy9g(&@WKo??C_86 zJ}hyj*X%}A#1m&c1(T#=(=o>$hYa$_AD1k$$t0hwa>^{D?DEPcYb^83G}qh^#x|3I z^b>z^Oqf(~7M+ROtYaDGQq#gwebj46XDv!G+2E6|N?*^5(KlL`jfn(FoVo(kIsAE^ z*>LZHwgxxMMUsMVkG*4tDbUBAHvX0PWZZ=3p@9U4w^vd}gQHNur#l63>U%q0gBXwa zty%cyZ={5_4iSGO!2c3Mw(?a0p0YIfS)6~jUI*QDcZ@=9maEXXc43i#*iJ(RH+V7B zxh^~(pMy23kSzdy0-RZPSdy)B-A5e)Y7cL{85z+Ruk3xhu>A<9(N#ljUI%>r`D}QQ zC-hOTz&`r$6M}X8^w)3y{rKmv|Ni{<@BjY*44?o9NWcQV!Xo%UOJSBk6%iTmfrNih zpZWrZpb27wdK|Fe2RQJzfb|Z7Ahd%7CAb^`YybfxM8J(4BLMY zgw}`>W?HDeI86ru|6yIA!V;t9sL6&%bi)WSA^-`GovpxSbQfYtl#BRrP=Gzo5F0df zqadZgfw{~@g8tbMRc=(V(pV!N`a4o?%XJfE>z((`xr)AKJ%MLh^8Ftlfo6I$bz4wBQ}zhByhU32;#Kh z9VHmXLwc=r9%SP?_c;W%#o&GX45&Z{O3;ED^q>e$s6rRY(1tqnp%9IzL?=qoUuw{6 z+H0THD#}nC(*F@uo1tFmzW9F@yNHjY3XLZuw)i*HQE#3e0ODM@gVKgZ^P^k~3o{>Q z5y{mDh#o;*O&97>oNC6UV&TqfBu5es`A45aeJ3(MN)qaEN-U2fU434O7@;;nUHa2%Hu0F2{cjK=zg=wQXH^dof7xJs$+3mMa{O#|2WfornMPfVFOOs!WHHLf~#=h z3E<86`R43(+s*{Ao9{-pmd`y8|4>>Iv1Zt!>OTQ>4JtWkPdD& zyfkPAS*z04Ovto#3zF(HtQyqBi9xowHtAm1+R4Ap!i^(i0|qCX61>G8u>YWIDI27y zzIHOMod6inKzQ2`j5am;0B(1FB!e_~b}g_y?NKAbu55pTFS|)x?ot)vURt&+tBo<$ z8P|If;S)3qOq!5>kGp{Xj>K2^yKG+1JHsuW#-?Rp7lN+{83rdq!ga9mheSLYuNF3^ zIqvDQ8XMvrXR#)_U2Kz|Ji_LI$;A0F4qAJdBq{%dr4%wsasToKIZs&3d5sg!?f}>7 zCeGsjUJifFN}4C=+?zyks_F-uSDma@hbCa4j@f8E{mWU&`W_t1^dBd^Y+pY}c|+%g zvgaXQZcl>Pk;nlKa9tH0wsqXGi`+qTBk6NjxvvUmcQxGIK|qhXjH|x)w)b5(>h}4_ z30TO(TjITE@2BL)5P0_-rSsvm`bI2oE)y4|+7*9!IOi|5JyN1q^hwD)roCQw(z^m@ zvbM%NRqZI7yPh~F2R-89=98Ig!S(ch24C$Tz}&+TP1*X-x3>$*~`T;PIwgDx8A zd_w3R?B;VQ$Ss4WgGUF2v>=5iFkwX4FG+vM1MNbCHsNYpht$Pop>~5dcT?gwhjf@d zcNm6cTj&{ z|7j-?lz0P#0cLfli7S@|R@jLt2!Nm{iRre5WtEB>K~kXzdBsSEJ#>V02m|*Qg?s^v ze`o@0cv*Q?dz-L~tvGkEmw~=0jGzNq={7srb&T-@iOVO3e258|Xp0^fjU_OPPOy%G z=mzzMK&5zy8G(v;vW4K-6`P_`Os9WRIMGAj)s2j>j_ybguc!m?_*HfHj9nK9e%6eU zp^HX^jC6XkyQwguvd=ENRXeFar4*%wP=kH!IFTeZ(L?^YL{T$HG?M^ zce}Tb9;q~Sc1!wbjE|ThH;Im`Xl-_YkSQq%wYY;Muz>e9jqE6LA#q6eh)93*!~*|0 z=>r_8e&1zkJvl-fxr73lAEW_>y7zZr2ve*G2k(WD)A$gz$Z*US9j*wK%RrH&5`AVV zPU*6i1lVc)$c&=mQEC~9WBD{9S$oJ7mIQeTE9sIA5tmUo0>&4M(E*k8)h$CXXd}s& zSV@FR=q=qKd>1vCSBX<1nVNs8nTdtTm~7?n2$M6E7_dDIaQ0ve_$A$uqi6BnUHLml-PgCai?K?|Bxwo zee;%4X_*{nc}Zz%1w)>$33Q-|jQNO~D#e=eDM9YJly`Iub|IgxIgW=Jmg|R?tR|ZQ zlc5WmJl)xfE16%GVWP9Mkmv%VOL88TfpY>U17Vb++1YlM6MdfsQ#1rqp0_s_Dxb@F zq59ctg&9v+ccehsb6bCji=|?n?}(y_u#|f6o|iPBk+EXAS%ox;1M8Rz5QY>-7=*C4 zL`UkJZCambnHGl`lHbFeL8zo(*h2z1rO$^3w8>&vdI<8U2MV~NHBd;DIi!^rqgMKk zxpAWiFs3kxl{qM>VbEmYhNf`(f+M&=8Ty`Yx|$?qo|W>PHW`1EEM|30x~c!GDv~8p z9$;yflPU5k{2sNPwlG@6O;$TeQ7l01q7;h8*v!D$wOoK1?9 z=7Fo9>YlAyo{%<5CzU7NK$WMusUZo2u38`br=+KGOBA>WB(ahxu!h!J2SXZ0fBKzc zK&Y1u@ z%AR%_8L^6%iZ@?eI-|XMul;$OkEx>_mz#@<11|~#71yp>DyCH^tjF4H@0banQkF)# znAaMrNC~dU#itcHoGbW#p4o*}*s9`sp}oj8Kueaj_OX9oT5-EtVy~8~|1mJLT!6Cu zDwVcLsT%}?3hS~liw#ptVL95A$+}yiN>4kRnq_G*MA?|T#ef_Mclqd~YqPLLtFa!s zw08;!q7tYlN*E;zf?Er+Q0oF%y9HW{o4;A(YtlSb&%k>(mTBwii#U0rzgpPd>f&ls8?N?ivQBO(S&HF z61x~XuH>nykdU^3`mRmcoxh7$IBEvLi!Rh!zb=0}ptuIV#JhMp>aPE^gSnony!uL+ zhs%(CgLAdjGz{#tAgY@CNxkg4ugyBTMXH6g%e~uMg5Mhzz1Dg}%a_Y4zGo(%Hu)(U z+^1Zi9n)H!>{z*pTdDZl1@RlT8OpK&o2XpCzf>r>IZDAYOqnOJwI(*a7e=|D>Up#K zq2qtssuQf6gP64z`+NH7Si%9e2iW^I(8S9`?%A?j9!7fRxS6X{t;lA}+ z!-K1(2Mn^f`o8>WiRU4}O|Y_qi?%bG0?0|n>lJv~1F+}2wwVaQj6$M627?=_g*Y>s zkb-Tr25*ZAtL@UodJDnYahmM;2a$R&p8J2k(ulC2Y_)Bi!$VxS|IRDJw7HJ9It6dD z%Klp)o92bKD6f3{rL<8SsEjV0(L)KVmg{=I83ejqtZ)71h3zA4c#@GEdvuDno)UVJ z3kQdCn=dHQdCdvCORLB`ILBn`xd0o>TpGa}C$IJEmIh3+C5we6QI(zG0@|9rzL;1mo*jZ3hufjG80YQyoX&Y~PJU^~4oU3+t# zpuLedhl^;jOc#*GJss)+QVY=ZB*APw%07`44VS-hoR&5EbbhT^lWN#=_a}c`=U`UW z)XXS0(;U_0gRyqj(=wP>(V5Z8RswedD=2UP5or*vJL>w{~sH0j-!X2uW z=Cc*yj;+S2H0Obc+{GQ24~gO^zLFV^;v`<;8h+bit=qQ^+_vr2wVmN#t=234$$LKB zEx?%yufl1}MEFpk#rJ>efe+!Ac^doIu@FX=6+=Ph07$bP?OeE{430V6U)-1-@+EKbTi^9w zZ__dE^rl^cJ3o!%^gu<^a@35%=9Zs$2} z=b(?M?A^--OuaJw)5$*P8?@pzzw?al^N0TPxgGRC|KW#D=oqf^d_MKRFX`>xx%TY? z%u5)jA?73hAU3_c&3`-3-~7^#7}QUx%460)mHi@5uFK#3-2eTm^NbqQGAHBSn{}t0 zMOJ^}{bGO4{On&JbWzmlPgt^%FP_y{+c5I31y}#=4+6+HlBIc~DJg!4=(22E#{c1%C78q*xJsr-Uhl#o1kcAW|M1(jYbd*V_f7ayOw#hRnjEQ6VjB`tQp|Q zhyZ|^;P5HK#j-niyd3?fuARQ7VB|SP$A*L$rRSnz)dFNG)Tb!oecdXD2#bQD&K{Du ziBUv`58u9xsCJ?!i=%9i2+A@ikz{;Fj8uO??Jtd$)r8#O<#I7hWHSkyEIREmWLB{{ zq`(ZsXjOb(zb2)c6>8V4Yvz>}yCya0u~U(nhQ}{7*VbR4Y5nW^m)U}I)iP|mu#yJ2 zYz-a!jhv#Wx))#khx*8QVmLQ9F6SGEJf^uZr_$rmL0S_FR9J zUhLWX7-i_Cm&-=q$rRKRI1Td>gX-1t;*Pq7Cg6Tlbyb>a z@&H($ew~T6WHn7KsYfb9diJB0SJHoE%qq}9XrXd!S;7gJlfcyoCkNHlTtG&FD3D!u z{q&zKwOI3tbbh^ngfenAgC%4=`uSrQv6*3?KSC0^ppdF4s_166y<_O1L^v9#rI%{t zqjolm7^0_bask6B7BQ!Y0EV1;z^M|fs^LQ%N`&Shagb;tP&TG0QVF|s;6Z<{z4~hF zuGtNXBc_o}cPwE6)mJHO^+2kmZGp;0|LLU4Vw){@B*ge*0KJlcnYbTxAa1$jHqjz1 zF5*%Qr%#0FgKwcImq>8;K0@XrrwYKTzx^7aDyoW9l$8tZZuzKK@?cwq@~$s9QwWkymmn%{i_F8x}~7FV6M)+wBuq zw9yKJk~%uMr6i}*xaO%~zIiV$9;^TI5R9|*Qi)=NO`hm2?ZtR3xAYp**{p!_AXHk*gCZ0e0!O&C61H!DDbrrEMz^B8 z#3+C~${+>TH7s9*(1beNArE`#LrY2UN}|hO5XaWS{GmXG<)MFJ4f7&{A^s4EQJf+b zsffbnmF-wZ^vmLm1;Zq&urk=||KF}~NV+Qi;EHHmBOBXjLSaQPgMcvs{#+5mGd_@s zfte#6bLhrD0#Z9_3}kr*xjaAeWsEP(QH^w!BSf}Bku>_>t`tW||Lo9^m)s;LJqO7= zk`X2N2ZrT>Ezc~>B?7PNt3XgVE>jez4_5miAzi+*upr=75p-o!W^a# zU2-F3sA!Q4DdB%Nb^r;^0nT=Zr{$7zlXo8*zDHpAnXu}uMckIAAg)k8r^&ghd> zTkgDNPS7a4R*NlLSx+d6-YONi)~Jqk3T2UO@RnkYc* zSrULmOqwpENxgZplQ0L3=XL)&ijs^nG^8TcmNLx)&0BWSJHF&mV+wlFkz(m1FT}-2 z+=)k+;xwmABasE~)DbRXOKu}V*-drI7nha}o)n~MyAtKpr$W`K8jC7bt7_FkT{Wv( z-Re-Ap@x5CfNHDxK!#Y$n$>JgQmHmoX;F>33ii1*t~$AA0Uf$DqRKTvyhLhVp8?Xo z0#+5$5o{f^X3fC1bFBsCD`Fe_m%qA|1BLCyWbdjaj5K9qZZ8@&yS!@>*p} zwh?uLHno0&EKXUg+GW18YKH0TYin!U+wu^hvQ>WxJzb02-!2rmD?_d7cq`oFA~(4N zRNB@ILtJ{&R=LuxjBkbe|J+R(ce=4eZgsVr(C%h!B`Xakc)e?0E0y=W*>bLWf0SN@ zzPG*d)hp;~8{PThmlg5NFGcgh-)(aDzXCR_cdq-x{SG+6tw6AX&B@0G=Y+u!p74KZ zYG8kD-j~7xmavBZV&M*Rgu~htF^Eg-!3-0U#3qKEa8wvLN@?$VzU|lGlsmCJ({K!jv+U)f;0SS9!x(hTikGoB}F) zIn3A;!i9YZW-;IP%xInlnlX7?HMd!~WX6ATocjY@IEy*9XvQ-u`CMn)mUEhZ{xf0+ zonVJ!^X~Vn_dW1>hq~bX4)=ehm17$_ zLB-C)b%hcA;Z2gCJmo8I`O9NI^P1m0=SMNK&VxSmq8~l!OaC0xqdxVjUp?rL#`@R8 zKK8Poed!TTlx`?K=QL2f2s*$Mgvp%XBd_o&wPADIlOqPXH-hdZedpj?dgF_SLWxWy zl!-$>`xGv$NhGIX)6+rr!8XWk})I!xiCQ&{$+og(WH8KgCorm0;Goo0G9?F zmjGDiV#1QIn8Qoar85TREF|VM`U1%W*=e>;YNF<9s%C4l=4-lUY{KSj%4TiS=55+$ zY|asG@@8)K=5P9Da02IW3TJDEA6`BWaw;buEoX8v=W{w|bT;R7LML@fXLVxdb!sPd ziU4tXXK{aiXLy3=c#3Cvl4ou1rg1vZWmP4>ITmteBlcXHHXpzEqtZ7RfmP3H)A9jN50uLCO)qXgU@u7$}b^L560@=ZwIB zid1@7=mdcSVl^m;Qk=__z=(bt0=Q>DX-$lvg71F?Tw}!$jKUO(ep!O8Fvgr*essXK4nCo~d+oDq2-)kGhdwh-#@m$8fWO1z6uS>LsC%B^TC$i$4xSDIZ;)?YVtF(?I z54vmQu%Qu1zw+z9`fI=f?7#|a!4mAhYDJF4t2GLN768i! zmd>3tObW6UJXtKoUaS^k?8a(r$5t%IvXwH3tSuz$!ZIvU3`2B=--EGd%X;R^vMhhh zcA3k@Y|YMW$}%UuN>*x`EHaW=h{%*{itNOCY{q_U(SoeeDs9p-ZO2Xq59lm{_UtkG z|B4py!j+w-ia1xxo(zgyE!WNw4t%X=cCFZQ57~z8^UT%;rLC^2l+||G)CyyPS*?XZ zt!m1|$I?lTF;(lRRE$9_)b@zoZdQNcp61^ouHfcvf%UE7s^;F}K#2UP+#2HwZqRFr z*V-;8US3(|Du&ro172=!*an&Bf=+=s=jiSQ)~0S8yej3UqG8spYhvx)e&F67Zc-U8 z;6`lVLT=;gZtmu7@bt?srCjcZ~zl9{{rv<>#qTeuIr+&{RSWB0^krO4=-<8Fa>|xE(aH|3&ZgE&M<0H?+L%+-#YC0Dn{OV@ZoxINBL$) zv032ytpy`7`6jXVBJdKI?i)-l4zFUvN)`qq#tJZQ2a{QMI;zjv+yXQ42xP-I1X(xK zLdFRJ8vkYugYOI9?F~P$6wg}^#{p(!tpIEQH#mR;NahLJf&esVfjNIb9)G|FlSj(MQR{}|AQG1 zX*e|UAq&AC?*JrA=FT}PI0Qog5Bl~g` z>@p+-BW1EPNfbATPU4gx4Zpl-uC z&vHClGC1&YkZrROJi!JusPW};58(1T^MC>{K>-*wQXk(21j9`uvq;x2&B6a^3yVk; ztMp0(#`Hq-O6;)+;PDZ(bELMjA1Htbe6vn70}sHmE#vXvS~C+YfkOLqHdyjkkANZj zZveya43~~R7c+lKOYK$H;WKY?8i#XGAGJ+qa|`%%A6xS~$4xhLLqbbtEu6DY5ArrN zvSfn8E(gFiH+EsybFJF#K0|RF3wFEBs{#|l5r7TESlow#P88foFf2g}q_I%9_RH-Y zF1U6Sbc3G!FB>ay0gG+>!f|T<;S;xX_J*udZDHVwF2sKtZwe-%QWdmxQ}+kcaP^`l zKU=kO4>myOFI9&w-mdOnKeYlg@pNy88xMC3v#>FPFksiOc$?w+o^;_R|8ISVuqN{+ z>VmXhCom=hIB~CT3FCJmt~P6$cV5#oeTQ^=oA-We@r8?Y8*^`RFSr^q_Y}}Kf*&}5 z$M1w^a3+5@F^MnmF}F#0cX%4&FLD1ciWj&7v$q?Ar-=V>aW=0Bzc?8FY)i+l2$yFj z(|8Myc#5|#l8bL{p!Sc`8eRtUe&;okt1yJ)xP+^>XluER%QuUk=IlZ_v+_Xx4*80Q zr-*Ym1Ize{uO@;#`IzTga%cE_@AU<{xf5Ucd}Dt&0Y`0|%XzCk^UfBx439XL7j_L> zxts5~q1&eA1iBhhuaV>VXrnoz6Sx!qFNU|d3;+3jNBRRQ1N#>GmJ|OtdarkZ6E_ey zuH&})^)7G%gLkN_p;j|oPpnIcI4Q1E5)N$-ukU)Ww+*h7YOo9YDiJ%dD?6{x12oh6 z6XJhDSUDAYP!(xp1+`PV7`XJaL;Ko5t-bP8xMC~5lDoZ@`?;HYx}*ELt9!e%`@6e) zyu&-Yca_3&yQn88ulUNtwgkW1!ms#Bzytii3w*&7{J|T1!Xx~`D}3y|XH*p3wl!Q; z4Kz7tT4-_(f&|G)B`S&{Dk_2j5hN%`?gkW)94(UM92*IZU z#hPDiMQy$w9YG##&pa^gt9M(&Ji79Kb_F3*5}y8<}pA~d+vQr{~}u-jpv}CN)AWuZfnh;*2%8{Sb0cZrPJ`mN6TM*dmf*@3wAyF zH4^r7_}Q<1U(YY4KR=&%Y{vf@_5b-Xy>`FEbKLjmShHsxZ|(T3C+6ma$b{D2(fwbO z2(KxM<0%HOX^!J*UauL^y3x(rpW?@}T3&Pd$8%a_P&Flm+BPMrI?(#cL%{2^GDVyj;O+n zTXz(Pk4jccw(Cx4ScMdHOs!n3O0z3FKIiz5vI(Enz46%f_50b%&M%!X8M}z0-c4(E z!rpMa+vv(6IftlHcd4~|zD|C1_t@%Dx1XqT0kMroaAHBQ!T8$GN|d;Y;ccpe;0c@B z-ih^Jz0u+lly|tFdW9aV)b+*xy+@D?AP1a9)cquPS zor|cHw?{V6Et~PpwG*0}*}KLAM9Z{6%Af{EzKrY8ECt9csEX2kH^&hgzk`*ts%$twDN*po_-F z5xFD9Wu|EyBEoNh67a){H+e%B-aJfe$i z5C7y*)LV_WdwtpBdDLyh-bU1iXUe>HN!E@5lHWq*%vMw0q`!sAeJJIYrhLoAG+JL0 zMC*uNMsaJSF)lm~W}Q~N&rgVvzATdFjkA}L6GHdzou${{B|k@_-XD1>WC6^{x>$NydfkjMBFA%99Ha^^sCEr1yye; ze(`zG)gZvEa>|UUH%>{2w>QFF?$990zAIdiGHM(B38QyGY+)&@ser6m@f>+z27~OT z3tM(h)%;_M{HzrbU3`tmYC+ksot=}N zi(XzUYo*PPIElM?Lw~*EQ^$gO4A)NUdgVdDs*m+t)+$r!N`?FD3h|#An&6wp)o-=s zpLcw+Fw|Co8};w`_}*M2$d+Gd!O>&nvAR(QhaAXo5gnL1Kn8g z&R{g_D2_rm{04k^DC~w&~w4TXQWy|<-u0h=A zi{5}Op2{)G_Qiz9#`=p%JEXAoR}2ev<@8JBMR}#GXFh1ph@De~W^O+(kyDRN7U3R? z2}_luV7T+O@W^^m1lt!Dx>)IGghP(7(Y?3a3hLGj+td zgeKS9WTB%pBDqzjv1n?feN=5Oqxd<6CQynABcN;~CF0cdBpj!4|I0@TII4-+BHiy> zTq;$ZU-KzVE&nNy$Hzjb`DkarzfU0zjOb`#5-NFpn}LV%wpEK)=cvvr(ww~~ly$ax}O!Kb`;5En=&mSTS=Oryqdgy3F^sL8 zvzXXG)viZ8_CEo_&5VKSZ5MNk#fJ>Q zHKj4{HQySV!DyZgFL zn_RWFk1Kt+*%qVbun?K%-C=TYcgIpS`#qn6BRb_%S&Nb#Zot?j?^>k3l@Q6wsZIVX z1mhDSDhX@)kd+gn)X1r?FN8+luJkfwlus{lDqGiamoTPVqaV}UccYAs56J3s70!&u z_yW%*bTgP<3G>?A6n*;@nPbbnQeYpC$g=LqWtSGY^!=Gp?mHlN+*^eDs)$;Swd`3F zro56mk>PVMon#&vdS6M`8opgnPG>rC@z#S)lckS8#9y51G-HSues^qLtd!@QW=?MU zb;pV3)x5SvE5r45vE570I#w%4-Xq;Pcf~RA1mgM@_ZQU+U7`frm!e!ps6kB=>bFjp zD1GmZu6R_S;tC7yJ{mApq2w=nza#b(K{v*nxr;39)v&w1;@{Y3a(kWfo2Timx6^K| z?|DB9ayUQfydpHBbF$H;BUki<{oBnMd}vCMZc9+gSI+39>s3#!?mqDu9R#XyF;N!J zFztDhZZK+5oJhKH?COyH2aN?LepJU`=&yzmlDP>zn!GN=-dFGX(#nlo8{i(@CO+|V zqm;O&{_XC%v?km>{|g2ih}N>HWvCp-BdBq8SCgOtbelVpZ;h4l$l~qX5H2H7eMbLt zY-_Bk9j%)U&y8UwSo>*)4`6*2$%1FaoTNIG9XgmX>BMoLRg@Yv%6yQtWLjLJt{K@0 z-6{X6pf2rc0bdB8V<;_tb0^sQHAu|+cxt6b#@3$4BtJ;*LRpt5dMmzmH|)vO*?}|m zB{aL;59vapYT|#MoKHY%G}_*A9kA)xAX{;>a?XjBd7I>0PF`^Laygqc2 z5?hb0nc@);GTEinT!)w|sz~Lh)d5reZ^o~caP!X$&!o(h(d<7a-q`hKkFftnpNt-v zx@f7glt=os+awvdUD9Buo^>fqdkmx9;GkYj*=w$TgrK?WR85Tb&QQ=rF!mF=+%`8E z)QS&OaT3*S%sN)BsPDndxzsh^NVB5NssX6sOav3de!SfOR`f!-?jaC9AmzrmiPl+Pf;dM_AZ)m9elZ0a%fNBhW}J#f;e z<#A|C0SJC$PI>G@E1I-RFLQzV z+!Ag5;>*ZS4mWvR+WjF+gS>Mu-WAV+EWhR#(C{kgylnRaF8#`vt~`!PLM${Ru21%z zjF9w8&Q?_O=mIH2cGtMl_Z4l4zV2r_R7@$pLqRefP)D1HO^ib}l{@ zvJVu)`I2p(KG8aTDe#ef(-}mK;1d@iQGDeo9%e)`-ODt22(kw-jV_3c{kuZgv$XmASP2iBmB!rnK)SXRixsligB(}vRKFMWh%1!J$NE~2$E9a9q7{|6Z9q)7F zZJEZ~Q8u2>U*6g_y*=|iT5tR9{7`}xPm+vQl9okMX-ZPBcakQQJoTRY+l^#B&14A% zpqK3Q-s|M=WGN>k-;;4E$-g|y7RJiW)7mZTNqm;gVb)XjY->d?J?nesfclS-z52Gm^D;)jS$wEyc9aNp!TS5O?i33Urce)q192PHkaYF7m+LCng zTcTvQsEIHf1tep*r7hgtW^Sl-NmNP+<5&s3XbMV6JDt4Hg!gw$~+X*s=hi zJP=*}t-0)E@m{%#R{5{g@)h6m=H;^1hH~GjaytyVVn(Y%bCvla2k8?fQd{?;#}uUI zO7V6a_)hN%=^(r?Ns60(!m}|(+sk<8qu0LO0zOCQwcRB>^&{uVnS&BY{6%HM5~8A3 zDI)Tba5pk8=uAxYskcEIuaw-1AtrOysx0>^h0U_oo}HYXyXizSPIBDO&E{%$KMi{4@Jlr#5)hJRI_+J|^J5h2 zCX$2pg2cFn_KsU8X>JA%O*sHR14Sb#5izAfEgEXQYG!ES(R#C{)oi@=a$M^jR2#-Z zx$VBPp1E1ua4C~fit>8<*#;TKrv}P(GVLX^Z8oTO^G!t;8z|Mc%`3QgmboKT;kP8! zOOFn}#EyWPj==Gb;GZ3#sLs&+_BlZ5iX&|*FE)-6d$MQoHdr`W`7GGc*|E@>>Cpl? zx1B^M)*9PGPs}iD?TYRmXMbD}!8BWTmydVh3%cJMbk{OB=bKSwSSoprcePi@rFe9u zp}M|j_w)w$bg%Wa7j&ktb;k0@2eS9H1DFUIr5%=Tr<(3MvF;hlz80D8h2U=6@zBvV z%C9ZNLB4k$7|Rcg_w3Zxhh-a>qKze=Lx{@mYQ?rE47}2*!R6q5}-q+ z@FJV^J5(d@2dK+i>7P-t%S-{7!Vz9>`br}PpZ15~30m1yeW2>sc>V46TCoY2 z`R2XxAyKM{c!NQLB$aXRL}z}mWNq7m_@~v{p`}8`zRzDjhbZ(JPVV=9e8w;t8#7sZ zT>J4|$K;)@NuoRB@w}L+tOj=Cx~U%%Q|lp9zdpQHqMT0D7=yk|vGz@|hmP9lPNNW1 z%-^OPVy62GKctQK3VF?hTMh9PadG!e+72sX7G2sp6Z!d7b@uP}6sC1zH|pjMZhoCNJD$J8xnQok zU~y;Re$ss5Uf-phlOx6vOrD?Kh2k8SMdPWg%mZ)3fEd|$ru^FMzl zASgHlHqQXrt|fTJ2WA%(78N_^;!4ZPEAV>6Jnt@%)>Jk$HZ^-w^P+^?bV$McbM-AB z28TY%blG+BQ`dQ%tLpnSO;C~7vg5K@W|HZbj7@ufFPR?ZO#7h}_ssp#ezA9M^SrT|c`cMh zFyRxcSeglvY7N zebwage2nSC-1#?V&ddB^dmh3MV)Aj~`UHoi;+QNsK8@ix z546@X7U~WiXXc--F)hihE6vyWOumbM;nB`Q*dJ{xHy~PE0Cw}@#4x2qXEQtu8kZ=$z&1+cy=Uy4tF%BnpO{-i&6(`* z=Yz63_E>E}@}{0`og5x-_(R*LQM)p!;FjLK7bmXaB#Q#Kcn zp*(kxFJvNL&^*8C**vPA<7@Cm81T~mWbiq78$?Mx-6JK{7T50fJPQW|_wfh;K~Tv5@ppw3M;HAq8|=5g|mwvQq5oUU_Rn|+ASE{jvLn_hOZ zRs8Lk7m7jfk(6xNTNbsL&%#z~PQC6!Q%B_Gh%)77J1NeZ-d>i|KS#bP9~1QpmTWvw zkyj{E`uZK>DsP(?q`e$XmL|7UHx$h#UFIOJEg+^=P7%BA8xI>x^~10 z8IL#3OKqewt}&>D+E)R%br1k+yhj(ktecKUT<&OMuG)Mh6`V@RLe#{j*?N(&?A~ST zoaQVdod1PsZrYgbW^Vd(0q4&I)DkNRh;X8CE?(Dg-7D|V13Vx2&u#nhKYbVW=4XaF zqj1-i`0eN%gG`a@oqEEoMQ~~nr~>zggO@NNYb9x{y*cOQyDsxFolK>jqRQ17lfObd zkIT3K2KD1P)KQ_)f4MYYfGliVbn)F+lNdFovqW|Pg)G8EzZ zOk0~J5R+pNvT_9`|CGe(lr4XId7z@Jq{#6{{v9e&({_>Jcac8|9vX_?9LXClOB>2H z#xUiX6L()z^gd)G+qp{(1I(FEz$QG?69<;8BVM5%rBuD2=f;=*m$%&IlM zH27`9$w&EDud#e-r(VmBr?R!6(;pp3GEX#&vAKOte^lk>kCMDsg*Hk`Uv6Vf5(fYq z@;m;DR?1F9_48}S>Eze)M9TA8RKD4VtPWvvE6@O4PnI2T`YrmaFK{P%<+jhtkH)4~ z%Bru;FB`QUjc#u5CcY0Day?r;mPS63w{h*MLqxaPz~Ek8cddjq;uguqA+?T2%C4jI4=38q%JJH_G^ciJy!r`Fw6fsi zbL5~g2Prm?z)_)LwvY+rt4-<@9v7dG_%=zJgNMV<2qbk$&dtjw(3Ti6PvjMsoML<> zVXw%cG}h>K%^!P3`Z_U}>%n&TbUbMKPeddrd^I`4+%R2Fd|MPK%{49krY@zQKT<4T zsPgX8>^b@4{e(~gMcu!u%}JoBD}0@N7~35c;rVF!v$}tB)IF1@ zxuZ8U+`ioOvZ!Nz7-yCB_(Poa8|DWI_HDw8f7!=|ZaqwjFX{Zt1>_~O^-}7=^WQEY z+cVzDA?HO1E+8h>xt!t5c}tmu-J0d>lyB3IbI!WrvT2>db@R*T8%xsWj6j6Ed^<3 z)1w91wVSK#-4@^1NJqRH7P!U}-!+k<*4=3%l0!q5&u;#Lis8u=C9W2VjjpA}=7G&^ zew>5?6r-e8SV?iIpjPg~B*KY`zXW4O8dYJ5V=*e;5NmnII6v%{!3Pz0um02$5F zSZl*`an9wTjsiRBoK(U(7eodlBX=?c3<;F8a#>X1Vq!{hL#K|8v_(mt!8cH%6d{n7j&#vET6bqPONNQbZCXYEV$Te;AmpwBXU(`Ie?Hr>hRVA`|J=f2hloeV5WFf@065Y6Je zu;b!v>7Afon0N_@ZFDTR3}dy9fQqY^#^wo)+7uys`GIU;RYv`G7W!?eh;hT!qgE4J2)!SBSOS zY=4x+*l2w;ZB8uzc=JW?kC72jeuQ*igX3-|+IQXQqg=|m+$X#1r}oC>(w(jw6RRp= z5=Kw&3CNG%>&Km*yv0(tJMHmZW4#M=%W!}CLAAQ{RLIcnv-3@ziTKioTP5!&1@5ah zophuRjgNK4S0^4$$&`k=t%~8l;>kHZp4xm#i=wUkme4KXvyp%4qFXonkipL_oKlkQ z;^Qw#)!UiRP_^yZ-PA|j!}Ud;yI&+HKVw+M{V~7xXJ9VZviT5=@hIDTYp8R!D!d;V@MnygQ>wwkYUB6|V04*^!$Wg>J5r;`ZQC{EWOMrO9Q4!TB?$ zo71)-)usv_ydo;#>(o2(BC};4n ze4(h4awIQz&tSBEq;us@Vi){x0nhO-;32@j0q@M@KLAhaAA#rjUjwgj$m%cPDI&n% zz`OVt@G5=8XSkOI=umy}+9}Rr?9>*mc~eHa7RH>m6Il`V>J4BmHexeoa~inU%v>01 zRO3@ZRbzz^bui;;1c_h@)PDf4VU6AV&RXCbUxK5pjlF=s8cIMp z%jL!PYP|Elgf-4tX>s~G^j5EW`egTY1I+ewS$@!JCX*X`;yuNUNB;r5{+ho7-W#pE z|26PtfkeA^4^U%mID!~Td-b2d3*PGBsAq0>5=$T7>XOPQpzn;Yjbp0hb$1WP z1a@^@v+EDwdD_`(esM2W-fMrsn3>-fm)?5F$L%Hp&4k_Qq_`hvrheU>rl z%B3Co_2Y`uc|(-dYlOSa)RFE%7hTu+UVc?tji~0VS(ZpPd$!flU9`1Tjk%LF6&_Wj z)Sf+(sJPzM9PGI^Zdb2@`DhU|y}kbhzI1%ht9EM`HjUjNh@vGVmy&IboE-m3zeSn?Jir%v8ozCAW!&9B^JdMgZAWSe(rw6_7LYCh?Z4BVotbAbj;T4?T2BP93Ls zeE&{mbtRx-6_k9r@C zx#q^pu}_y7xdA}r|B>GRBfbAedjA&EllhbM0KyMQ_yvd&Q!Ia1g1tpZbLkLSf42$^ zRJ4Zgk<&3^!a6dfubKX5wp-xbeU7Z^Zxz}2&t}z=e^zAEIW!ha-~R_kYI>4#`u&mZ zhDTiE5Oa@&V+q;rnNy^Rc3?_+MrKx!ZT278ZZUsy8t!+Iw$kxb;G6e#^}ma>gwDwJ zj?S*`o~VZAf6jGdRZqK-N>vjWuHxCyF|HcVbGcrPXv7eO-&zDr zJM&ngPG~mRq(p~MZ-tmFqrU0zVpLE*miA0b-C|K5qVk_-`jw_!H<$G;0A9a2%)gzWE)Q-17(r=n~fm7F{O43W$lf1 zQVz_4cM!2ChL5M(=_O@oDH#fj?P7TG)2E5yI*O!QwNi94Ng!Lhm{H32owTshkm#8P zUaY%ToY!z0s@#BP{rS-OOWE^JyI!lyej@mqm^twX`4UX^V@RnIb-C}n z2PA=1p}FTUeom-ndm<#lOs{znol?QADVR!de6d11U>LpA+vJ+f^hx$+kpcU7l#);N zj4RrZx>Ev0e@CYGlz88(lZC5;we~^hh12$ErLTKbvQ0&XCa+2Bj(9J{X|J6{d!&Cj zimH#&RA_Bkm1t@ddFtsVpp;P8#v*zAw>x1O&gp- z1imXKyNT06)WAPs5GD9m>GY9KGyCYKpF&S6weM!bsl!cwb;>kaf1MT{_N@RNgEUwz z7UW?4E0xucsyx}r%ng1}2C}DDv{8n_Iz`}{-xW`0%t22+f4ltrmf@$V$4RbrL&~$S zLshqglRQJSleSyfl``3|&)LdSNL6w)8M+2uDVC+udgf^J>V0^9vn-8{>VaCbWq&Bi z$#bW~uEq1`^sZpypJxd63O+N*t1;ADOz#sG);s+O5j(n*#M!!Rs8m&cIwmYCGwq^U zVb)OEwjm}*+R$1LRve0q2Qq>_(i^7x8q=MT%{1~{xro2{G12W>5--kBAd}r>)~K8a zBJL*(MR1OnU6a2m`@~^JWcdAPjPjw422i=DlRL}r$ge_m|ed%lZQI!0nz>Ef?)A`MSJL#u(p|$a?FD4al$O~>4 z+E}`qUT)hZFYOh#y{@lEgWDyqrYd^6rPno0zE|01DB&0pq&wQTe1G*jwS(I9tBgRL`HG_xjc@)sr`7~vIMf@cyNv zxw>42opI0HuJtn-9_x3}VFnMjid<4Iqeb7O3aZbFr>nQzp)QTZT-Lb%_qEGgKpY{c z8~+*9qZ~{bR5MvzxVVh=Md`!Z?n~j!s4*8G(d&xKd5+K-mCd_8p4fbD)*2tDDITr= z)L3nx(&bwbVt(^|l?^^A-RAaP__P*%LKH3xY4~@WV0mVp?=rh#Da)=zf=zO7g2J9QwJH6Y{Aj|45cEe7INF@oF>4K)vDpYMn>E3bBnZ6 z6JR%)XJbGQGfm$>lG3KXTFF>4KuWef!xAAq8q&j5@^my`3DB}N8;dhP$PiIZ6^e*J zqG=z5U0FbD2xG2oH#A0W@P7#mktf9herp~=WN;EG+B@L77hR@^)u{P`|MP9_VIRk| zsdgmA?v2G{ubEB+vmv9NQ0ktIhG4S8!obILt}}{=SXts_U1Jvs7XWFzy^}?)RuLDF zedXaYM<#5W+mjY(cEC$cZ)KmAa)uheT$p%X#5X6~3gajE@(C&bvJ_|djeM%&ZK?T^ z6W2}~xxS=UqP*8TE}19gZ$h_MPk+#q6En34D4nf*KexZ8zVPt7NZ4BF*h1*y%A<$) zch*)ek8~@U+F34!6y&$&L!g$?gtCjUp!B!jU#oAUo zx?hXhwu2A0+3pm|E^ut+EshFy5=5k5u#0-T!^2f^d9rAIcg((Bd~f{ui07p-=f%Rk zuO55rdy|ze0t)a{8OTYokoe-;!D5QP#NkO4+F29UF9+q}uP`ByE%|7rPWxQRX=0M< z@Kk6k5o!aoo2RCoS#BXD)qCD=2M3_|FbqJ zXgwEyDt5Y8a_BVDjfNI}#mldaY-ZT?&iK5cGNKiVPGe4vEn>PK;cKpJ!CEhL{)Eox zoR*eVO2{AXG`t|%mRtPsUFf>QTX*?O9S zy*lyPzY(8ZC+Pm&h}S4~~wFK?lLF^h!FfFaaM^HxMEe)`$9X zO_4crwjiwqd%ZKYMRuH-FTIg9DdpSebh&1HSMY)T`NMY6&YRhCUvS1nicw@2#m&>Z zx;{|F#T0(JnxZtRcm4VyeUS@OxY5M*ma0QpCU;wF#aPUWs$F2{(miJ|0l0w{;PHI|Kx-Iho6J_hXwh+ zaNxhj#r)qhg#Yy~gdvRZKRk5*zZ^NtKj%dM>ofkx31j|OuIm5(5yb#v|Kb_{9e3Oa$nj$M?V3-$}h-yL5$j zbclEVIexMp{E8$YYp^400P)T3;0y!?;Iq2G>mYeJu=%zDeN+cxVPp^J%ua>|h^GLt zyFjuZAj-97p0h2{|5CIbq&9-#9?(IE47W{=1DSDPpd^sL0B|(y7br#*3jhiz>W;rrC#>#zIwb1T*h9vxXD0fmiXf?x?ae!wB+MJg7kX7}ji zEe&+8iCE(b+}aCrg9v!B7rdtI(ok9Trh%kqc<^i6!pzEO-^}su*CJ|$#SBk=1)G2r zQbtogv`{g?$f&?bYI?)?78jX)3}^NM$({*+mcYb{!#*!_W!pr^OQ#MQQdtPsF*w8E5 z;Z*lUluc%WN^C}~015@zegI?<17l6EQ@nnk$qYT7b_#{o2Sjoaq)XS-Z@Ioz$bl$! zV%3X8zpj`*82yQBfJ+C!8*?KX;2zI7z91JfcN!I%ao&qIdtB;@p3F`B05Mab-eFRxSPy}E92}Dqn z5Lq;Y+z*F4Wl6}R{iQ#{&~=g z)2C!d)+n9h1#YY|V6x6LoAp*$MEWF#hw@|}28iLtc`%HYNGf{s`t3^vvMg8%pYL}e z*n9yDLbCxL)@YFKK`T~0`$)JdIh&}MY18tM|2$;LViL=Rgeew5J4y$fU@|f`&pw^C z-U#+vB+Q=_rdtBzz;HN!354jc;#9Y8S!NKV1z8{iB2DS&{;7YYz06@o1RouU9{IBEm*rXj|L z$N_PefPgu46d4YLc{f21B6Dzp6;9s-!ysaF{FyC~97K{C#bpeHkizG-L08HsQ1)?@ z)3fqx=l~Gz+6JA7vA{AJfY<&GVo9!s6Y<_4nF)v#>5BN~9xssB2NpEhclOJzFGLkS zZA*FlSt&HSd(K$MRyyBURE}fQh9CvL$3YU+X(4l{yqhyLDzBW!%N>4ALnGx9BfZNQ z*Ih^*W<3NGK}xus@W6%jRdrV$##wzxPg0g%Iinel2B9%Bg{ivUBj@!g5Vk)8391mV z)K4&xm`T0EmKgr<6LcfH3Z9F4?Qe667=QH_SVaPHA+u?TAPD5a(~&?fAS8gq2O*(J zh=7YHBM3qw@l8|^5yY!L<*K2ZWD!_owOnT}*8lu%r98{{i!aEkQ%3u| zO@Wep)ZXwi4Wv&;c0HL4NlKQX7?YMvip)f!;B&N4BB{O9e5p{sA{l;}7UBXy6ih}B z`G9DAFg-+1c#2PEfJ!0o9p0E3I!g?a;zKwf3Q`0L0PqRCkOU;FOB=u|ADL72?r~hG zopAH%Ly~|>m7`rBdtNq~xv}M08^btOwXH7<9IZ~FHAOu4raBfsLgH)TuO0=Tbo z1UJ7G= zI>Y?5k{$wJlq^(EC4e3Fvt@g3J5pgW!VG_vh2}}^0c9M@&lZHc<)B3(J}jUBSI9%! zC?Z;QvTWSMXd%(2P}sMnX?h6?wP$w`SQ4NCf|(VdJn$Oar~v6Atkpq0)mi8YNMcW5 zIT1&*fhgrk0hV-b|drlcF1Jk}}UO6TYsN5)?pV-^d!EA??_iDj?Bb zMaBbAKNKwnr{8L|{c zP@{xg2GE+m^px}pXzm#;G9te7(J7#1OE8=4iQ|sT>HFFMKom{{cPK+*pgR0R8B!tR zHh0^XGNv6945KKqZpmU&WBw9o#PJ5-WMgnNS7pX$+AiFd` zmLX-wbT9SXl$Mxzr<7@19yjLa5Iq|u9HtKaAkYflPXh`EK?Rsa3zA1D5H94)T2KoD ze2Hhi0O84v!vn@O94#!;9w?>>=f7KBt}D%7alJEAV)#jMUBR1II@e4(B56)$Gm$gb zL|D#k;$ihoJNa=`RQG~96!)|!YI)CriiS1hY56-(ZPb367NiNm=qpe(I1QIyf!3h- zW;op#T4HJf&S4LQv68v%L+3YR@~mE&(=BP>Q?5eABp?=VbPFOS0`2iP?m|k$2qXaE z;royRf)Qh393@@{q!} zt)R~ksRk_n7&-&dc;js!LuMe<2H?A`Asqw=;2EDnXb7c%wS9s=W4F+>eW`rSc*$+x zy;)L`^W=k|H4`b=$Q}wJRAccI_P^&rk6(BWDM6G*02EFRY*tb!Qjo&pFQ6VI*;Hkg zeIr?g3-lO7&4ZCYi~U6^fybQz91jJrYF6+8%tio+YXptpSFTVMx*E8rK3EA123-aK zDN;Xg0BZPTcKf3W6;L!WYC^!yT{nmmB*T0CegMtzZ`~nTi1f7!Ux#;ql_Nar32D>4 z{eBU_-#T&Q087mD{{FQ>dsxy7I!y?$_q-rcC7K)rvZlGcyMJiNy=HQ8c4Kw#`^ix? zi+W0(Hwl9CjHw-Wvmf=O1C}M?9^}F#c_LA;e{r@AU>78T+r6NAs2>3bUKr%=ejDm)k`TS#} zNzZcX=q2$}6z3F#&bx>0tO&p>Q4pF)LF|bHOdSnLLd_1aS~R4k(%yJFTzqu>Jypm> zLyy%E+dfWONy+}xb{NdY>EeE_ffKHNUsVjz2^CR5xOw9%3UJ1q^mLlG2N`tokpf>I z4WWn#E1L0Gs1fwWC&fW9NI1iC2~Y|(A0f2gh!>2{(`|SyHl8HbSyggsz_IYiizh&V z==JOA)3H(#bnsy=qymBd@Yy_wmx#9gi4Sa^2i+xF@@{E`oAaPi=qx3ioDU5{?Tzq@ z0*D8+!p9fL7d#4>i#v0Y>#VwLpabZ&X6HT0H78%)s}zwm^nBV840@oitc2tG}_vl8~zZ`nvIJ)b9A( z#_?$J$>7Ebi4?H60n8R3bK3uszygv|pv)#Hi6w$J-a~>U`s!p)2!ErhAZ}0}R;_|u zpwj?cSp`WDo-S5FiXa5@R1=JucnLw#pc;}SJol)E;t7P#QUjquG^|hqiPM!LUF>$S zyT05vLfRW9RpM4R4NmVh}c605u-o7Fn| za3YlAh(c%51Nm> zJWXURR7Lzm1BDb`E8g`H_7Bl84i%yx)7LW4QzhdxkS2u<2@8KBK>ryrY}WvxDS=|3 zWr>&qioZ*Yf)g4bJtUbAQ9>w_I=t2Z@qt%hx<*1oCx&k~LN`GWu55&aA%7%1+X#(7 z6hv@M6C_AD!gEc~dC&nCZH6>ReAJa#N5f&qX2N0R!w)w@IuMkB#G~7w8pQ8#^R*MY zOeze7gX>cSfgsYzTC(t3U~?c#njTySxXw7r0`{_*ZfaVwr#{sFGt}3< z&kLJR%Hja(aAa&RLUx+mniHTPELekwAWvlg;E>`a30ORtU;=zj3_~4er{4Z1A~{kkc7+@WiQM(qIbMaUfzg zA|`n{WuQ)H`}OC$U*L+c(-Sh7TpT0B0-#$VP0%YntWB|K* zGN8FZ+y9MP)_f}5kmy1^@zn7;#pW5H4s6_>ymt?N^$9Y;cq>Hm3JT=hj1)dfN*8VW zR#T_Jj^{64d|Ibo@CL!--=0CcFGHu>#-Fdt#GF}2v^dAaE%t`doL5JI2=ty8Qx}sX z^G2w@V{}1zSg5}EytK(LmXSJrPJyw<_A~#~xyOY+O{a^rqxoy1*AVEiM zR${Di&VW8MMIQG2rAT>p6ihV&`7r?T44}~zCEb!vOc5;(dzdIjiq9H>1|U!w|6&x% z0Kr#y)HuXR0utkuW}p)ikP22>hKz~afoGI(r6o<@*ZXsQ zK7ahK-#?CVxz4%o*L^?7$j{RDL%F`A_{Q3INQEsGtfbW1Z7_h4b5+x|#O% zLv3=ejQ73za-P~~l)s_9^kn(S>JZbPP8McfP8t3@rC;LU7$d4j>}>`k>Ijo*>x}3; zVc@|C2|Xb|=ANVCyxcBK5NpCx8MP81{}ED!AX}?Yq~Y9{*EN+VO$&(a&6-dKz)41}l-N3+3_d4a zwGd$;+me_ml!N?MA|#Eu4@w(IQlN#1fLuNVhfy%L0Cv|~Ad`$*2o$2j%ScoAS@s6h z_8nv#H)Y2W$~L!6pj6+;sLoD?W-8gJ6hX%hvdOF=h$B5)S`5N8Q_L*dUA##Az?=n@ zl|CzmIvxr{n5#r$!cbCG%S-xut9>|2(72 z*>)GODrrdQ15UG{ zT4d&C=pCZz>KH7>2($9JGIumy

suj9}0sHz2Y=@A&AbSr>QWwCxiwOf_YV8)SvLXmA?UlDYzkw9ygRS6U)94UbSrB zzC4s2%kuo&u9eM;y?;l(R&p{O;>VJwd873udlMU0Y)QnKQGlt`4F_P(=(25NiSTBE)h6!I}u6#L1`a z5k>DIggg8#hK92v!Y&eIxiJLK??Hs*;&2czj+*njz>Kzp%eoD1aGT;Vw-_22;3mur z7R6CJo{m^9wXxmTFe=X#(?r}BvP@uNM!-=CR6_=)q^Ul*RH-b$d1cj_PwTmMhS3*J zuwo@DnAKs#%}qznS&8upgE|S+o^*-DgA=#%s6_#*Bx=WHMP>C+gUu6qbthGyurz3} zE-HZtNz{gcG)O_+1;L~wYRPaHIULwT0`gL*9g#!R5~R>S7}ITtjzTz*W+ls`yf8y6 zbeptafL5V^x-b%E30FtIS!X53+Ga}^R;?5UH5N7peJOtLU#_#~*PTr5{41%NlAov3 zq$5ULFMB&06KbS3{eFd9QItLW?I*!fpxq8MBK!^oSTauYVI*Z;E)C? z#3)9uo;&1?fHNAXj565-Qf7f5m z0y}WrjY`4{nvgKX451|&pq4N)1<@w=pe+Ac!G*o31Hz8b_U%J65SW$rct5I*!7vRo zMn58Ad=Ni7i_q`scuJfUiSnOwP;zMvD8gj#%>*?CNd*8-GgMKN`Pn8g1ue5Ru|_Au0GuMqb`|zkrDA*Gh`ZN^g|IAkYjI#z;Mi5V&H7 z@)0mztr=>^ixQ(=^)4NId?f#M){I^13d;$D*t`Y6Z%#n>M9!*hj;f(7kPh%ONA(%t z@cO0RZd#o=YDAz@6tHm^t%Ny1o&~B#c$Gm5v=8OwErlnvD=h=Y};ZM&Wgd#op9a*rB4~u|H0522op6PfJ z5Ic?vaaO^y{BerY;V*RK|5nA%`$TX6i{oe$D;^NvXNuqf2k%kiA;5G39pZ0>c*k=2 z2Xk#)VP&zribP)K=kX+2h!d=xK-IVvV9Y9GMi5_VCtwO% zgFU(n=0wHd431Ifktr{OfL+Puyh4e0zMAPe-s0@BL9%>0Fg4qTry)!fX~ zDQ_5g8)YjkrPxaUV0?(Nct!z)?Mj z4V(wg9_TcYKl)l3tlGX|uu%0Nc&ang75JucP9lx)ajKr0m8W0L0*aZsVo zc-X8mb*gZ!I&xk6_ru75!aKt+>gsY!r_H0T$vEgULk2Fszpq8_4p4=P1TEHnAHH7s z+b=`N=Jy}t^>-GcXNo{)D7sTf7lM0Y*SQJ5f99bk|Moeu}oi-Br-nOdO*Uou1NGGhIGR;t{C(P0`t?{ zW6^pX)}!sXgnmU2XCX zS-YK3!F3$crER67!8j}q{Idz;+JJzxY_xX=b5<-;T1pT?bVS0ANQj-TqPJNEI@+Nc zR!FqO1D>!1qB-boMS$2+XUNIg)7J;`e9pakClLNf%AZWO?Tb109qe=7R*sFaT#fm6 z{dhM5{^k%pV-QfEi^?-$>4=1(8v@f_=AvhazyP8h0w|Fn1ki*F3Ge|HqwTzoUPTbX zS>7%|`(Q>8QHrKJXS28mK??ynbwgc@@@b#$G<~AJ48E7$@g_O`8hlLis91}K46v#W z5^U6Ov{E`IR1NV>Yw?3y(UvS%N0sYgZ=dB?*%AMmNO1Q;vw0z z)JqU>FGGz9H&|Cj>>Lp%m!aNB&wij)j^087A+TPKPT;~!ZLcBFdjl4MrHDLGqoE>47D`_UTS~Zm|M9mU{>8)0EGWaktH7YD ztgUP=W2|p!$RN?z?;CXXVqB6;NNS!8Q-0OMva_vqT^E^6U9OL~xxNr(N`8-gd&o4l z)W^hy(yr6cb1(spuy&%)L?K4>y?t2|i7k67Nz~l1A$eQ8M@u4gP*e!q8fF0hI?*On zir!7T+4Y}`VTNhn@1jf0$ZLo;JAf+VF;evKWXXUc`AC^sQgVIgLxrK%+xIrZ9OLKX zYG*!uzw_C)^2T_j0ZVGi8r?HayuRJ?;PLgPu_bH$_C`7P$dFBJu!t! zBPcd<%Zc%$WuZh;)Oai*>P^t6qrt<%3>U1k@;7WBa@)Qr~*_niq*YfD>R#XeRO2SC`Np0-3dWi-y5Ma5Ej@3$ftj#>W0q z3ZGO`=s1}@tBNW9fht&8MvursF8dj9510MPhoG!jW)9nC`WLdtrAzQLKGna$ys9ca z$Q#*aDh!-f&?8!$E>t9WE*z2*hb?V&yHhBUQ)&CZxUk>nWT!&X5FPS2MIdf^m)F^in{C&6l1?M z0*UvZ?^{behVcTOHPngOkjw;S$#AbA!k~B!jfE9~*gEQkbWv%^>nMR7!nDPA=xZi| zt)TUOLs>Awl8$Ym1~KuJY|PCrTUsYouC~11FZE00>u)T*N@suQzP1>gZ8RNpZvdJC zv6j-!1#?n2M{1`|o(Z&=61%|F&8)c5=m9>gB`}AX~N^6ctmo(HGS{yK}^NRUo%7Ch^;-Su>r`b7G4#WB_U8KWaT3V{7UrF-pICb;% zCu8_SMAIv)ldmUuq%IwwY^iHcT4?aP?b9SX+arN8X)5putbH?cTJ;|^*?sm*g72fv zYqL6`@8&u00EK;m9=Ku1L1~u*@(VBJ_4{-ediryx*_-1e5GX4q-^A}pLv@9;iPVwJ zD6P|#W7gH38RoAJO=x*aS-U$`<%FE6+WYnuLsyQ&xe)tLXZm-Y=s4A6Hg9&izDtMa zuH7{TqmPMC9z>oyJ`;NJWZQ|ZeV^E$TIc@>yx`9&hz<7q3fYXESNIpT9dJGR_oe6W zb{2ts5^20}Gu620jF(GH>~)c{0`IKos#2f4RqkgAHI2qaq=u(e^NCfaOve(r?_U)^ z`gHyw*QNHO;E=^otp{&#m$WC_NrnCshdCFdWcbow98?nxqOIYHq5JH)mUgUh>xgJB ztM)EA=>C$so}-(9yipOFp7|Th?P}$%Yf650?+be1Iw9Kw6c4eQw6iJ3b<>uQdK*CObogP6q>v zVx?PGO*++H@Y4-YF2-DbljTRwoqYXYxmoUe+FZ|ebevqUQrY|6KG1UJm|H~YUI&LO zBX7GZlvY_ADx4;!{N9-OIvI@G{ChoLn{UrH&{DHPGTQmbOM6o(M)1kQ$TMxEw$A0- za{dmc{0m8^HA^JE`zo7Cs;!5VRxxWmtIAcNox3Ntxs*G_=>2QIm9%Ef|LmB%D+KJy5?cQ!b7Mb2>i zp~+@TpNewl&+0ngPIs-}1A7ZM4wwzyEPlQnF}||=Mz*VD{>{16#;-9}O0VCh0d@r{ z!y#6Ba&H$oSHW3nA#G$U3BA=(Z9II#VOqh9o7qxch573%%3b4pYZui$gXq<1>-^Tr zt^;B!jsmtcYzCHbYA>KvqwSHxk1(vbnF1uqyk6HE_FTlRX z)t5wU5(0Si8J=XxoxVn{DIc-pDaWv&NR*S{1W9XZ@-pYq_N06Vp(H`PB*;J~iBB&VB? zr1`hWcs$qlFL_w#($2>P?J+7yt!ra%jf(Lkt?7GU;^-eA(^H$Kh7u!*?S9j|lX0bO z1uSPTrZJuy>l_ey-FS6{<*N1ryQI5q!#hjUz2&~9jF!(_cKkDOb+zaFk@4o1TE1a7 zB?0LK=b$UpDsf5ZJgxsh+tKsi1nrKu%MN^=&$3agt7+a?r0InbqpSpDmJY_`KXFXw zDOmI{wZC*;HC!J~){tV_lw0fV&Ow_srB{A2J9MZ>s|6*`j$T+cn-~_%&CUNV+-YR3 zA3CCLZTGmad%<|dHROb|(-|Lrllruy5ghp(C#tH>K0Rz#n3E|uE*+e-YPS|JkpFa} zws)j%+t6ouO7}*3Hs=LHix_vRQv7_gD@Snnv*7Xc0Nxhr=$Z5D+}^;#is0HW|QNyZfzEY zd++1&jPQCuKPm*dJLE&V0e=fWvQ}<1Y_*f4}yIWi;(rrF=~GiFqEs zr}roGuthJU-Vvom9?lAl?3zL9&wKOZi}!?i3I-0F&#UN1O+hLpnimCG-&+Wgy^fyU z!5%H0a?sk%BIl!C#s!Uc3fe7WFV6OVZg|cg^~Y9pzNF-)MbHHW{o0Ge?L$|@=qK4! z#<>JJd=Fjl9qgY}Bk63%l*0$4idi{Jw!-KPJks(jCXBtnmF227K6G`6f zES1x{Ve|Ht1 zzmIpkSmU((>h03<=9$asTA{PpL5JFqN&nNeOfuJ9_MO+6eZME7n$IcV{zO3DWw!a~ zJr@#g*>~KJ7>r<xZgNjUweAJB>4hC1fWsk3S8+4uz;Nc5; z#N%V~EsCY%NLpTyT($Fkuk%*T=efRwkFD64ieHeLh{nE4Hgp^RSconQJ483Kxqncr zVBlPXmczi)*uOR>_W&E#=RAt>CnfTDKJx~}A3G2@W%E_XcDyY{#`v@wUsPZDvCf#2 zM+~Z?-fQ@bZ@Mi^Qr{jtn7K(ck5^`iv(h?mO?l{iZA`H2VEE*iyBQqpksn=`D{dL5 z{o=g$T$sJnl*1#~&#m2g>4)#PDXohhuH}rL#<6jl{HLGx+oa!i)|ZQT7UmFc8$gu{ z`{SKp8lIqB3JpYdtm&-jQ~X^O9Lj;SK`NH zC3Tf}lsH#H4fs;FbyCbt_nrc_94lr8x{2z%sin5&tKshHVTm>!jN<=WeuqFiK{E}O zW@zg(m6Jfg#uYYczJzG8BV+IWm)ZQk9%Zo*IE!K71njqhVXlNG&kV;7aC_1piVrG3 z8h-h;U?tZ!?(7viE($2cF$Gv3Ji;+&BJNjUz-GuWO2auZMFhD6feoVElZ_d|nwhx$ zyFFMqJc-0Hu$;|@Cd7l8AZ+C3=h`10dHat)6+VPeXaRg!HDW^5Wp?w;^yzB-5SiU% z@T~2^VyCi<@4kQb`{@Cu*l_w?_n=D0*5bSSKY3R+F-YucEnEoebbfDY;EA;DYyCcQ zIREJf>CHldTf!9Nf)XtA3X99D_SUu5RproM7WIwaud7gkmU>1$uFn)Nr7kINux&p< zK(ip`KqR9qLYNuKK&1d%Az}l#XitT(HkeqM@xIZeU{NCf z5y7$vSX50ER4=Azh9j7X%5B(MZw-uzz^53*tMlHs%ITxa{|`&m$zd#A~A(Bv+5 zU?7Qwi(Y{lbMCD>bKE!nao-)vdWEc+9oeWBjqPsI!B47yaY^i~gdK(9o6zK%;p9Dh zwlc*|>tm4Yrg%!ykDD>XW%UhS-X zWZx!qfWd>ok%9n4c}$j>2kOzTBB?j@Aiz-`J1Z*%wHwN3>AypcLq>n(Xoj-FMITX{jV}Q_8Sjn7hsa1rW54 zfS5DR4zIKkd{ObDZ?S;Oj@R^lV5;e|EitKOa^Gi1&T+5TMsf37Y0Qc%2# z7b5}1k%k;nWpU852P=`_D1{kR8wFiTqIs&`s1_Tz zlztwnHfb*YY*y@SUMfv3A!zlzSc0H6eAwgW+Ru_7X2_o*WLdtHl-l%b2xTD%NA`VK z1Iz>N?ZXln7_wjnF&LOoutKa9o+<=yDOfBI4}@+!z8KBRXE69St}FZP&g8&BPFmD{ ztQ3>Vf)?enSA5HwYf#SDXLwT31 z_|9*==fnFCjqe8yjTJr^!l20*3r5BuAZdarao$FFo0Oa9CVNz@oZ7rLut#*@YJy#5 zX9>@k8-BNItAUOTHi!O;1DGimiS+FUR8x$9M=s7$!x@X?$tPqlHopX*+7!!1AQ7!wR1q&+{53Bs5W^^q~{`w2_}CPaEPfs+`H<4`gk z$pMm%*j^KZ&y`=_d;c+e09H1lBhHesqv2>sWa|0!?3$p7$V`Y7Q(~Yc~w`=QLNT9|M>p|LK;O|7(lWtn36UGBGlNdw$Nh>kY zn+3E+XH4urvCWfH*f|(6gup&mY&SdyqFk{i0xDE+BYu*idAVUFFaaqtcwqMkoUhLV zJBA!aX#$=Y!Te%C)C)@?VB#7ttO0{5v=gT>V+4k1MQ5-CjDe11RWdOFnIKG76(&ti zO;lcN8*lF5mI2SCN%NW#&1N6I`EZ|ma3c6~`zgUJyiWQj=`8DQ;V}7ZDR3bOlOi;& zx z1Hr_K`1)fd2o8=RU?>E$AedjiP)r$_gn&sX_7mZRfMFPx zAi%rPHU0Upset&@;bhO~AH~w8^~xpcT4fZAS0rxr#4WzH z|M+th#hj{hHhdf_!v@_(v?8l2tR=>o(%f$74u#a?eBEvhoYC5uL;g);v(B_TQu7|tEkBZ&pdzj#3k>tM=KRh97byDeuv zV_pc#k}*LZ{jB_=J1-0G{&^{!F>G(J>&(5P!@I#)GR8wHc5!}iv1If~8Tgot5zHm2|D}jEwW~(;acye6VtI+&q8gBhv)CP8p150iv< zfciXa7ebtenLI3!Ss)-&rjEdGIw0T+uvun-W?6+uK&Ey>z%n0OVc~^3_?6O!eL8eq zAh5pxI|3gDR|+sbBI2nnzzCVW^zUsOwE^u)yL7`pG@R*_H~FCZv+Gw^6fv~;j{#8?LlL-m@y%W; z_)?6?^OKE|MtqQ`W>=&vGDnzN-=+gTr-vgoWk90@i)F!-1I$?!xGID$n>qq|38slK z1c1#FY>Jyxl_DCO%w8lH^Ri%oz2tUMisTM3SBjY;Gzch^VI#;I1h&flyQ09Y9LqxF zVrk#XiAeK5f|;!XQ)49vbxI4ig2*B4R8!LmJw&cF_XhV(?}+SB^GA`5|1^ZpNcDZT zF@?m+62#5+zbyqvZex6k$jkU%=vUK&q4DSo%;&yT22o?8W8=e6QcP4@QhZ{{xs>GS zt5?wIEIB!(k(I6hLN9hPS22E zyqtYCH~akc!VBqFZ)aAep9_Me+n5q@^EleDNZ1ghw-HfxH&|`MdXb)3T4Vcvi{pR+ ze+Q;RTtKT1j149z;8UHLCt;Tuz{4(Vj8GlZ^6y~6Fj48&b{8WEE845OSPu*z0Hyb_ zV!}S}dw|_V2uJm&8&gIJR#vee`-kz9Ats54!g5vQk$$Q|Wcy;*LygnzX}5`^JB&#R zFr7-#x7`~S1+i}ZI_(?zaBV=Jm2CaDs; zWq|A>EQ!t6N?Pu4jYqDv8t?Z@blROq7(qlL;LBqymRNVl6O00r`RV&-0(bDdUXjIU z4@R*S7$GszYMx?A2%$z(nZQ~JL$feJ#DO~@@OTm%BQ~OV3i|*PE;)S~dy0_>Dn3W- z1!EN*;RZghu=^|yms~?hi&24(Mk-n4Nq!MNuyuIAAiU(X2zE$ub3O@=b^9 z`h>T~+ZN;tbk-IymHv#Fdm&&xBmb))(kC@lKS1=Cf_@g|nrf88wfZ|zkM{4rQ&0Zm zuv^$Mx~QRuMGOqiVZyuayBuxKdOCgfKKqr|MOQ9LNR+qGN8db95u;rAhy7Em8J(k0 zw>kCww^Zl%kpRa$rnYl}f)1NslR4KOk}qj;Sw^C0tFJ(lft8cOHNGklM**($gc&5f zX4X9B%F@Fkz?`LObvfaOAO!x-V;>lu;8&hvR2Y0-Ad*20R4-z3#1k1?#6(crW-4uC z5xWn=hiNz85|0RBrULgB><`LAg=uc9gtH(HChIy@$V5EnnlFSb#-J2_#KbNwURj-x zS4ZlV^6ip6Lt84CxtGS+3x_X_bAMoSv;Q{ia%fKdT`(uxkc3SH&LS1RNC&=~ zm?%fj{F^dY$ro@j{{UbCM&6*OHmEbX#Ug_ zm!P#7s{Ny#rX7C1gZBNr-s7KxdR=W@#+|=zP>Hx>E%? zmIqJ9m70n3@Xb+l45ipo#yrM1Oj|1ULlS-;b$`YUTKMeUgM9D);+eva0qY;wewZKR z{2<&41L*jHMH9=_+QPI^go%xI<~LS}z?OjP9|04v(t`eB^QibssLylYY0}4tli`0y ztgiD7tyOaG9T>7Wy6wUI*GTX<2Q37_&53&r9$>gIF)@+$3d4snlt_hWbtF6qiIFhB zVXG|Vhb)&D_(tZnGLK3{Jr{I%L{B^?L)hTZ^ zSvQfUmOoxbAX_%-wNGdgfticUF({;-2$?NqR8}F=>H&u`3rW3|-T` zE*^xE;`3cg3vXPEDh7qcS3$(p$~th91?P)_7zf&++ap-h(37aAk0;0a9u5wSJR2TI zhvvq|XQ4TCad~8QW%9%NGUNNttKZf?ef{}k^8-qH|K;E3tF+Nm_hZl}0-CZ}B8D-f zf7@p1OlmM=Jg1srAO97%fy-iwkt}AM|1-Tv#zlsD?GUulNrgo18v2d;*o7~o>Z>j;hDeRljY z0yEOmx$tQij-q+;5O4rtOPTm^37ja4QWVA+8Db!D^F;|n%CGLmot{2hL{q$NEvI>pX6!XBfA|=zAv;B!Oe+YccJzRPs=IQWC_Vrcp6#+bF9 z?LhL$bK-37-ywyZ>B~+JaqQd$VgAc}-Pt_v5`n5Dz8}e@fM7|ykFcG(Qg}G34l#mT zQg{fl-Ez|Se>#K+X?!Ol0D(ej{2$A0Twu(a!qBTExE}@;GB`1#JQgvc^KU!Qx6K2G zagZ;IR}-lKMGjXdGg6tkDSQH^`xzv_1v&hMnFAG9YKGvx@!GUhg^QmK72!r=h`<=- z#8JCRmgBi}xXF(y^xg#~+jesh)2oG)=5ZbVZpMqv@d6{REC;rF#XdGClSW)vL5VzW zC%y%{Gu*m*;SZ#8V+;24`l?x;zPxKzfWCv;x?RYp>dguS6mSdiQ}n5S9h8O}2eS4a zP<&qAq;a#XjY_7}Kf$(cx9ne4Vg;8J@OQ+5gB5W(OpwCO07?{bN4Nz1QN-QZvhmd& zN^3`smvKVegw;EvMEr@^t>ImGKbaYNf24$;2iiJ9pd8Bh31mM8J}cviL~cQBoC>Z7 z?*g|}@coQZ)RN8X5&_`13N8hE05Mg(gy9uF-A!@?{i^sK1}3;>Vq6I%so}E75g6Q5 zBi;m|v8dy^Fye;;V-36znT2Qz8n`vaA_b`?yOZ+0hBJp$0Yw+*HD+m{~pn} zx5cqh=NGH@^%sr7zRUj42X95ORzF<%*7aAJvk!{gv;Br9tE;;}^X7N&P;Kp~p>5IT zR#uqCK%p+4PGF+4dbkKeAcV$xcsU}4(AM>EafFz9!D4{R!Z^@0z|SE+AW&(5%MiA1 z!~nlYl!d6$4jbYrFoF?9#|Q9~oy~-@4(4liSU8>}L4nRk0Io#=LR7q?nJG6gUxor= zjBu(_AWT3hu&9kJW`-ATnL{gI$T6eThR|rBxR{ z54|!ktN0N!=?h6>=oezm4Dkd24l!iD79IJOR9H^sQG>7mkZFuxWzB;5=1>7E_=j(? z$u*#Cf|qe^K#vqE*-P(08+R;dXE{5ve^}8LOmL#=-WQ@_X1F?TuPP;>nmJ&bSJ5TY zWLl{Hx3KB-!1BwlZaX@@l2S;oKVK5&H9^_f3yMTrV z6&{IncY|M6crJlpWF5uTV50oB#~SDR&mYg&<60g_$xZlNLG=zB6j$nr+Z+$=h9>cWL+T-)g7#_O!Hj(C_s3jdVYFGWclx;lQ);j;B*IvoD_= zR6aJ>_GaPH(yP_u>+^aicN>5FxM#!A*?HONc%035`QK+;=%05>x*fj8=fkvJY!_!F zBFua4o7V9yRkwbF;Ojm~JJn>|5&W)!#-4cC;kw4xX zOAobT!j-+1)>Z-^7v?j0X4(A`;yK_F|4X1|V`S9XhoePgr&@bEW zD!cDom>m_7eema3j{@gjXVWe5n1NH21P-qZkw9W9AJ++^r&NFT@HuMyOOLBN8O-IL z`4l@P+gmg?+L&4DT&NMeRLe?vW`5s7V%A@Nv+9}xU0V8Ox~Bbjk=hGN+ep~cE1|iz z{ck&NTz27Ev9Xyt^W#ZnO znf%;Ej+jnJ+|hr*d(1s~f6d(Wvxk%B;zFr*_Q~as%f^%UHg3)P-ke{SC`+|ux+E)< z%H*ELH#L3Dx~bpP*DB9V-6_O0@1RG`#Hy)Cs3E8PdPbe$fN(Scn-d-$T zNoB^ob+HAVtm_psNxXG6t|@8)_S~t);-T{9-}9!go_ilu`02=XhCjpg<2*&e^}S=i z7He@uC6UX{;xFrS*p9q(YC6Wd`}M=e#sxOkZnHH^#sIA|RM35cge!3B#HByDsnR zS1X`nb@KO51>f^|j#P7|EA5xiajL)7)a4gelU?aF%PMqUYS#O)MRPwFjVJfb1r>+Z zt1=G0+wX6U^6u5$E4#D($YR`_&a$(HiBLfy{3YFcG-ltsA9kK>NxN^43glh8?Q?D` z@S9(zgrM)4jEAR%?tZJgbM4MXQ0m(Io`ZfWFFZ$+!)AGI6>j#r3_VtTRXg+8K<7!n z`T3q`zEPb;>Y>HY1}|b{cQjevkNd}2xd9?f^5I|q!JjJ+;o3svR2c=>Nuow{)& z=FHgd(?a_H3f5u{i|QXxesSGnXKFJ0$Doy((AW=tEdoc=R@?5x{7utNnX!N0UR9g> z&FFMDc|O>=*euIdmU!}iPhHm%s0w)1f55BznZmf&f!t|y%iAj_ILiR zsp|Ug;%T8_K`bd zeJWh-1x$NL+Ix4M?>LZibOx8;Evu0W)P2gp`dy+WA`Ad~bJ0f4xS`($3JPmr2 zwnY_<)x5Rh)3@)JR;$kJ@cDOVi2vAmdd%LRtv=ibWh6|k2XtRQ z$=?rGbwztK@7Yv4-L~d}y$cn}p89zC!H|r?dYIwKP79ly<3hD8%aTSxjBfA0)ymv@ zp7-H8XR_%lTRm0Y(JYS7W*6NrFJ$GKtBQmge7suetZyu8n>k)4|8S?wToQZ-=M{#<)-XI$?2HJvh@+a#?6T|60D6)%m;V6D?TVwqV#Ld_n01OTn#Y z#E{XdH6vTgGcznEyuMcqu2+z2pFgpPyL`#`L&IF1XJ5GUT8e_khpifB-J=plwK-{y z#kLQ#VkUS)PFGyDSvhWlsMWPK{Jr&TOhMn_8Ar2Ego~L;D(QL5^IgqOK@IN7OhTsC z`4gw)`#o^<&?%K85qwEb_L?cD#b&NjR$t#A74eX)R!EuKV^g>!oE^)8Q8 za}zVK>Ze6rx+=p+_TC-33@Z2MLjvn%nqRrJ8xWPawD9nM&Ltqv59c&O!>?pz=jL3= zhYGG0UN0&sE-XcFl;l^J*H%3xg~Pyn|stqG8m{mgSQjCTU^fK zg)mP0eHMR2B3@mkS-FYoUfRox_&J!|X9$&>CDUzN7p=jD603lM6pKgvc!){ecsb;M z;@whfmD_r|foRd=bt0JMcaWPv!niQ}N><;|kt~w7}q4Htxh_M8|F8Q8s)Z2i5BaouAsy?+ALc zaZM&G+IohxhHG)D(WITu;hxWB;S~*gQ z@^Z{ni6kSduMC$?o5B-= zF!ASIIhg2qkV9}6x$qvtnsTGl9i1m{qMkhZaB;s&hRC&7-@p@(?uZ@PT9yMFdT|D5j648AvfQ9Zwlb@*02aSFJRhwD&wH~)_Mbz1lE zMwCDQ=YY+q?r)Im>Pz)GmVjsu*Si6((X3DZvOjIK*a%>STthz-o!QU6j&6x~x+fs! zLQJ|r77zruimV(}(vX2$$!?nJdcf!rKiQ@==S7bUbCI@H*PvK%Rc5J#&pNlO7zhBk zk0vWS@49Bo%eb@w}V{8N>7|w6&;DP>OP`(emUojhH|uM zEE8bK$M+EwioVp3jjm!+1M z3}IQHvLzRpm9hnK2^TmCj5gqWTw<`Rdh45@VE5Lqao;qwz6DFt!OsQ)yV^qse2w@; z!+I757LSf^p|LXvQ1Z;5*tB*apHXYm5|fL6eJJQtIdenpS?o~a5<_YfO<8F$c~@U{ zpN(>*J$?B8q`@Y?kKqpRyb-V9BCe}k+xA1KS)DyD>f?aqin*zF&QEo$sGyKGDi4=aY3r{7U z*s(jf6-vBT+{c^H-G)jPrkT>IdGhZvDFS!A4n16tc&GoQx9SADt;SEU8x?9D8}dgx zDm218IE%`Cf}_qLcZ_|f4#|W(hCoISE~Sc|ghH=Cs4qBKkds$bh=H=g>t%U2DoQIV z(6YwL#=Pc+mio4ardu=;t%cT!g83d?Sc=3U^;&t3{CeSy=G(WL>&tU<_~OQg#gf}hK;-GXGFGt%c7&!O{KfupNKhrh)N+SHhomclB z|G0l{?UTp&Y$sm;t@IH-1QR>#_n0{Be8AxeUPMqF|BtJ;j*H@r+K1ViS-Kk$5TqNF zmXa0)5or*lk(7?5yHSQxY3Wj2Qt1W}L{eHn8dMZPc<1{(zxVUTU-MyiXP2G5=iKL< z>pIuVspP2_48_@ob+&0rWMj2>q>^JesH zWwiXDt?%cjpZgb1pCZz{z?3`bL{l(z{e!Q^$uD`|uk;?Rxitrqh(C>#LQwe(hJ}hs zl{H--8S1KUVMg&ZI@ylS0-Bz|@RE`x7Lw5fCcp@WuP+KuI*UOe$o2C3?_^KZe&o!i zx}BIu300D+t&z{h{Z{6Zke@S#hX zOawejM85(rCqjJf3Wf-Qc#LmZ{cjHvz+=`iniwQ80d(&>28SYtRfi_N!@DfJVhVOJ ziU>ppesvdasZo;*vZb#Xz3lFKr~SE0n16DAln!#-$6Ui*U2Vv|?Ox)x<8xzA4L^_| zd1JBR&4IW7`z3nrSRnu1y{+giydlHPYb@am7Thc|%J%VZiu2dVXKeO4a<9J^K%{>1 zJ=2Fhz~rHEj7FW7X~Nle!q8z;Sz?!5-Zqon;RLe;xyl9YygY%R^97PSB5Z>41a<#r z_eSSONnH~l;scB!9LKB=Fn2HqQTh&7p|=MZJVhU>;!ga$`Ra%C<%l1k1!A5FRglvp+Ug38si^u;(;_qL%u&T25>`S zEeml!>G zA;(@~U}W%!ps^5mhr%h65FkjtW#yC(G+1lK^0ifTzgTUm&ULh&Rw49m%I9smFXlVO z{dty!r@X)N*Ib@weWx2;8!0(mS`=fFLgnNWeC|IBnvE0jkgs+>*0x$Ktt^*bnno|0 zMRF9FsCKTduH@#ivX_`&yIy$R{`Kq42#(F}*H;{Qo%ps;JG@NXoygr>mnx=elO5Y9 z%)5f$_k<3R9kA9B^83L~!``8%o2a;;fan}_fd-fefAvass+?o~bwTVHfS2mEQeS(r z7*Ai8LqkswCE0_Q1dtg9FhbZujTpdybTKOBw2BvcO)6alqVaS9&<;zBL7zb&0BM7U z?qLB#gah;%3+%yN?&pMn_J5aZg$SsHZ|*c=UKAy+D3>^Ac4qU6wGh20uK>?N5AJG-gh)Y?KS&3;L< zivyz00Wcz9Ht3jQ>e#?$eMzRZ;j>G~tmdF_mgC!~>$@gLwKJ#I@kam(qXx!Fk`XRE z!_84O@yIbo$eae?`%j`Qjt2OGFoLXTf$KbWikR^|tbN@)(N604v5>lm)%bBdogF68 z;l}U18`BM9zPgymHyj2~4J}}fd<{UPbbvlAzhOlONWoL;*>pey$`j21>Cyv&$T|QD zrUz<~@U*-T18^5kV?r1JdV~^`$p9Q7f54y22n^%o(Tbr!C_%9j2hDSP*q0((!3o{p z;M9db7r6WJcSpX6-zPJnw$*Q8E>v`p#7ZiDa)d?%O2c23TM0URbKB$ViA5OYu0yr% zJTyt|$|XmRSMK6{r$a-{QBEe_5hju7c!J2}r05va#CUHbly?@+)io#KaaKXbtN546 z#RViu32_C`aJRF(-&gQE(sh*@?xqnW?GOrJ3Dt zt6K+iEAxAdOpJV|5*W%eiBshE5A}Pm07#4(u%nceh?Tjo`h|^xHJ_*8B+`TwDrW{p zk@caF9}6HvLe9|n`L29%Z>G7UIn=-c6u>e<23G)I?JCfZL@J@6@9cmv;u&6r1L%bXMNtqDC(w*Q;d?lNBQ&a+fDzxs3#6jp7Ne#h zK!d^!Q^j#fXRc;9eAn#aF&Xd>D5`YYAbzp;I9sDwQGhCDi1UY3qFl-ZFRe+nlUNQv ze&=6^`tsTqrD*r~gT}W(*W*XGVpvX+m%hzQywbgOhPXJTq+?>`pcCQ|n-G-wE3Y7@ zudHigs9*Epm0JM|f9lx=k~vAq z7%2utZPhb*MGF&8#gw#igzXor;xbC_L2NY z`9ah(yo4BV2XQ48VXm-hR7`zmp!YV-UslGt4pd5*(G^v;FPKM^_?P0q2UxcQvbX`? z+oX81n?Mr^IYWRSkO5$^K>_@xERc$X!=;}BK!|`v>hKY_04oIII(}UdFhL{z0leaE z;3@(~L0_NBq2#a?o5|~x<5bmhcxA075*3-Ef(Y!iba#-W0(dsYn-j&7bjl>RTge)< zT_tnB%79b0*(7Yay@U;|d#oMb+&lx5U+?_#ZT;|({?DfRG-xlSfv=;e-`bjKVrVw% z;2~_j=kItrbILF~V??Os$lD@)8pjwvs5x|tA*~>dQqP%L)>)g`w6%4ZSf}!nY*k=j zVqR6-$U+-QCCOgU@E?jtSK?m?m^&w#2cIp!s3v6s zmw)4In#Rq0Kob5-HG^1>)s94Z8rGhzqg7>6*89(T96Txen6A+CC2EAPML>?~KrVs^ z!e{`uDO!m+Z-=XvUsb;uW}qA>O9`210QXRmFafMu12{mSywDivl@@Rn`C19zp#`KO z;N)9R2Y?643GkhFfL1tNC&7o@1>|5J9lrG*9A{yEVYEKrgkZuS=>y_u7&V|vMHIOY zP+;<7@*vTNz&k=>#qlH-B8(MG6n_ZI)jT19YK(wJGK>`hxTkl`24NL5j(&poFa~`7 z3*uWQz&IiUYBmMRa3Ume8tFE?h1|I{TiQa}5+56bC#B!7wF_}Ce0QQOB0arE6_%FB zuEPJgIAP?YMiNc<$7?6$o#~zZZy1Be5~r3la(7-%?)bEB)GYmQ+*U{DzshH3W6Cce zXD_7W7`0xGc)WJ4aGh(z_A$J_*==l;t}Ao%mX>dBaaHh^@8G(3zV&WZRcv=*YJ>z_ zs`q#IbzFrVYdj7;8q^v*#Dox{Z{P0!bU9Y3kvKty?TbtL`uN=p^E>suiC6oL2|VeR z_LseRv-5A8M6;aysT8hR&U5E8B^FEZ>U|_3A)UZX&2mflub-E9TzKjWBBKe2Tsg-- zacCsb-SQ+cZdj-3LvVn_oca2;+K`y#Sk>S}=^X;d%N!7cizVo_Iba3)JYp1@--OjE zEr1MUQwLOJ0Z7AX*H;Sw?r|vK8?AsEN~exSv(;Y$k!sI)W~pol@x&GJ{O1&BvF~qW z9dZPfhe#Xj8_|&6kF*!7;G}w?TPRlHBvzDOCM6&gF}g0+Az(qhpeJ=cnoKsb^XuO} zu<#un7#0x_5ftqf81ghQC@D4s6_S8TPs&6QLZhC*6&xjA5=JUo+nSo%JKw)=!gO{t z4-yZIjE#->nH+9sl?_JHpiQlYHxJ zg!1g)#S!%u`SMLW0@A0$_q2ytg@_AVz9KARiai@iWv^8Y>Ri*e{hU1>@RGzyP z5~ufida#rNrXlBB$6=6%7r=xp1E3@?APmk3$e#iaVQA0(DNqBG{^`8oppLi?jr+hy z7JR%f5Q;>az{3Fn04D+ii3R}Qki}sTLm(i7%pkxU1OjI;){emI1p{)hx+;_$2K+@l zz{iEd046StL9odGWr>>F-T9UZV*C#E>qAz=|Nw_q``$u}Ia_?|M4ly2_D-Y>y(5B7^w z$v#>&1>GCb#xe?Gf6Y}x48v~#u1$hcTw|n9k<#jprmaW55Y43PeNlmN`#M9po zNxV0q3Q!VCKAB+A`*D2?3kAgiaJCAK#Q~8lomv-6m#==N2VWr^SW^AxubQvP$h)Pl zt8AO!iFb_$h7rgX0=#S@u!Ml~8|Gxd4si_%PX?aC>-cvv5Qsnw;Js3TZ*V078AHH1 zoLC!X!I1}<2tXV;fH9#ezz~XgOn`d~Mdkn_gbW0x!iqukaMcRWGLIu05fFbKFvR*e z)EJ7yBzl{22X((8HtqK{A^zL5=G*l~GGqMn4#?#fEk=Hs=ox-HO+=O(u)}6SDhLJJl=`1cM+TA{*j+M)IB>2?_Ry@C%1?l zv77j>-}Cu;K2f`MHp(6<_qO=(bw4XXp_0&6F?Wx3fcm&4SP`m!3DELV)e}gIX&N&& z-#aXG9Q6P0&r8TlD8txtYRqJunnw9(Mdp|&`w^vMDs=D?;KAM@aKAS8_N_Z~^%cOt z@?jbAA?)8FrCe6+@~tQ=^QGA1EuiCl+zN*w3v~Y#phbBtc`2as61Miv-q#)SjLPwCaQo)7wZ6u~u2}34HlGZ~eXZ(-G z=m5?1K{b8oN+IAvMA*hsSXMrMu8Dv$3IQ=DMh1#@V-50ayVjQ6hJ+WV)WeqzANkHc zbU%ic3IQP`Z7f7y1Q@_to{x**TTl*aD+0twu<|=(Gm%v>cA)>KiNi!z;rG}^nz8EiyZj$RVWf0=390ZlXr*S|hB|tx% zS-&p@Tu~`l14#HaAPjF=mal*xL*BP1Ngvwq}Vm(XGL)pJIGkav!U17 zbKgkV9&XfGENr@@oWm;cr>k2-gDewR_MEgkOmzAouIQ zm^gHs^c^GV{W?sZs>h4}fgSFa2`hx4pUprH7xrEl){G5F=`d@i&`5v{T1C({b=GpA@4&NKrO#3z#;=LA=+bXHhOdU|n5Wp=IVRbH8ngFWE1tuS$ z2!cJm!$PA%f@7j#)rrs~RBCd1YHZrG=g*S~gL6|~prC~zfCWhm3o*k-c(b4%hHFX; zG&&4$!D8t@hT+UfABr3Ss$eY<(NQ1@iACU>Mu89n@)`;+^%1y32p4D3GeA0g<1x+x z1|W_c30Dy|{_&6Fb4upADn?!&XsZK3zT6 zUgHp~Irr81gz+S&KXg@ZI5@X_PE6KSxOLDj0P3*3_09I^^xxE88l@GYhF4}=a!9)7 z(H%QIK0w#WM2$?wh5ERhPBD>E>qh5EqE^CAW&n@JdjJ5?*-)*1qnqt&G4=ei)vA zHM#SOrYFCtQ`t(9UIe)0=zMhTKLPKn%83qKgV_?ag1RFENRr!$`ZxGy)728068vx# zK~*Z>dRQ`9^>o9^snXb#eD|?%=Uul{-viK`povW^zFYhkEBR}{U|jt*K#AF&oYa3% zlsMKHZwTuHWs| zdylAt*>9lRqNQKtj=UYq=@AhVCmLsAagX3fd{m~d9}s)!WgAy|w@5chv|s)6J(={L zrUsIU+1Q>o){J?w_~*B@`<^zW58ui4biHUcH@$njE|+xas!GkrcH?t~6YaOx>OixC^cyuR|wE zG`1|}uzoAyAs*Nj%U@<&`BpxUvW!ZoOe(BOaw_i6lJYsd<4`Jkr+AO7AX|nbfun1t zqOvyn*}Bt}UM$t^m_L_I#h(5=<+@v@~7gqSWQFHfb0v zosC5&NzMJ88sb9pybQA~QB;Ym7{`ztGcHZ>Fl;0U6fY z!(5!%#z3xZC+jSykJ4&-ZP(kp!mnhGO3f2)Z{JeW7{*XM?jqw(wx_+3mf-KUjXrum zN%Y;!jX&>C0oNi;!tNvCONDuqWqVtHW@Gc6pzp+==LaDC>!Bs-HV9)|bzoK0i`<3L<$75JbGA?_Roej8(F<$V zSZA*haHYYJyK^PA$Eam~7OTP|v7uT`F&Jn;e8+=X*KRmtv%$om@24OO>o*-e;=;hU zDB>HGqM0Vz98~=`gx}3p;#`6o=s%qQ5XQBCV~!5bwZT5ew@Z(>rOvL3QC{!sWKT{! zi!i!4W@n`L+f7cdv~k#CXprI%Nm*s#-n{pvgUI5scUQcon|sHA@jnNScha0X4i7(4 z{dLmTji+mfeaFK7LPSc)Ffmy-t5kX0Wyf#&cyNkoyZTyYLqL+lG%qe1%PrB!Ytd-H zaWY_+a2j;r;)+nC(Iy(f6D9@)A4M0ef9bX1yB`u(UMhA?qAr(C$ldm-WpA-#6YReA z|8-vdzxA%K|G)LFD<2px`6M3%e7t}~Zr+QRuks5Di;7E1Ul*ctE9k3gs_QBm>fgS3hi-yF`L_1=A38d_T2W2C=>EaJ z;oi}Kk7J+4CsCtc2Bv1`<{`EXfCkA(3B8&oR)VvSm1*Kf;BHbRf-*)NTHXLW$dM-| zZ}gw1G=>CK9yrcgLROo=GlVZ>F-t59iEII`L~`!5uU`H?64LL6m-@)JAfonOqovghFtitJ`&^~Y<0dxJs58&P@BYxrlutXqe z@nT27HmvrCzw!$(0dUz;=_US!XNAvsA+hR-<`=hDFYH4bEJ_&UPW;s8YmE{O z^2f?2q}FdIP4NDn{pb3@nn#*hx@dA+vNb7Mb@}+mxn9cJ!SDWSi}>G4=s7|J-58CqPerllvC6D!1$pHEmNHduKN)b%q0Hwjz+;IiQ8%R=!$F3+11~g%=$}`wvh?;2@)a zz$DyU6Sx3!5Om}Q?kDlH5PMK@e7xL2?hybAt?;#3(r&5VL%L; z6h;lrDlul2Ppo!47@#gfPz-L?{UQWq|Ff=CY9I1&QpISjd(O)7MW{J`W{R@FFVy@dCQIml z?$B(kYyWx6``(qop0C?7!RDIN!yfV%uVVVS)fv+0XMD?=2Fe_aj%K!aGzlFYV;KvY z2WP*Z5>^mWikfIK9l6KL1UTjVHNTfbB>FdAi;q8$nfPdEhnV=BpG0RQ5aEHy9U*Qz zPdz`UkbgnaZgwRpSa0;jXgevZkOJ$4PKfS%_kv{BF;-o7O7bOzyH-LUu6%fPYpM1! z#o|5goQUd~z5CTL=m8bzL0g?lR8wYJyk089l|aYeUU_ed$(tQNPX&7a$NkWw0bSAh zN)hBxHw}Ebkocc8ATbuk9r1`OU>kno9NX-n``Tw-&SonH*C2|HcB_S9m=+N z936UB9M!h@wzqh#oNqg+?o{$s>{dHHsoLA!sjb;_6Yw~4jPz(|5c9+wzwwgzDdz3n zBmU0or17Nj_f07&)gC|T(_ep1oBexGEoY6ga*;u2-G6S&p8mV|(=D$UfJ9NTU=P{k zsVLPrBOwzWkQ1&5aXjD+xNv{R1Bx+-v${xZI7LHSYiYYQ&E(DO3R>m_ z8=2ulm;RuXiS~T=toXyk0WHsR7OLFg*r!?#^lN8!Y4!aTIZ_6EN$6twAJyluxaJP0 z5&tf%r9MkePJBk61?6Nu&xv}O^FP5j zhq$b=suXQmR$E+OTmSlP&YK$gW_)|=2lU&n*6z-(zJbA^;UQGt*uePs$IpWkozv*q zv4y$Cugi1G3v25$sIAql_3wKd`#b;j=6;?0{&UKC2ArQ={zLv99zS^18G$86j#xpa z3Sc1IVw+X~rI7&y5Y;WvhE2}u-D(k1g>z``ZZyyq#(EgQQXIEhB61;KDyJ3!HRaUhy zv9lI3;jrKd;0y6l4hm7oD=ic%&8*46y-!wd;u!mq*flB;s28h|zpz;@DOMUlQpWk#{#4u)AIzWxEYk3aN^!?o#Y0B{C&j5Lw0cgY#yoxg_z-QObejk*^YH9ps z%%LoJ9Us6n=l_?nwcJGXY@0XNd3e}#o|r|zrIKmI^pT64cA}g>-U17Y=pFMX@=u68 z+U2XS94-H2tNwR*rC^UVOqW#8;(~O4k=4WF;?CkC>#Gk-A3rV~D7OY6ul6t(q(pX7 z5;4lSU_ByL-7i0br$44ct>KP@hZCp??|!XLpaO;@z+)bk$aMlGuOq^)H6@P7b3jm`Lba&@_lIr;yx7X0#3t9 z$IzoEpbhdV2H*Dt974iYRZzM+7=qBlQ+mKB!M}=(Cuo8CPo~uyybsUV?RkSSFrCEP z2ew+xhLn9lXZX1qUyvPP2aWrJAK>Rw{lF^#13~RO2Uzae4{V3e^6&>ABc!1({$M?w zKca@^%G`}`2pif=$;5>jY+?*8(RQ75bgg4&9hWWSsmpBDr={0G-yLcmvK z)C35p+7p_(WtR^p6pBzo2si?T>Yxb(X(i?WW#CO%ZV*!>zj08&Um)fA_Tz|K7o_tB761K4wEytOw)u zL-5BBlOM;TzZ$%MsdyZT{B}_}#NX_>dHTl>b$UBO<}Bccthmy7RFM2X`LN&%`G4T#nj;9R+ix5b90oZp8tcJlehX@ds04{@qB0+X)Q%owl#H)OVHiRX~QNNz6z4MxHuCi z8LAXk#kZw^u%d%1{!bd%ibRs5pvGt5Coux{|1$qAtBRtb7BoLul4-wJa`!nadB-yO zAAYKo&f@>g{I}RtMvW>AP=>jqP}6ge1!ukS_>o&gAR~i=eT+$bv~5g?QA(P1xpS1q_SWeaHYpA%j*d=FfB!ufrY9%8MBdn% zc6+51{9B0UE#zLHj3Z_JoAKum(VM^^e(Cf~Bh*F}Nh%Y4K2yI2g=c~>)SHB#3-$6( zs-NEUn0^<9vfrPJz_UPLGCVL1Rc3*V2y=XI7QC~=Je>7x(BMC4SUMNHM}bt!gc2%2 z4qOjK0f!^NXJ%Y|?a5T{UPJyWU4-FS-p8#^%?(1(*Zn^MFVmJjdG@hbu1r6`l2QGK z%wOjd65~*oB2zHbP}4QhQc%-TQ+(>F926bklN=wP93G(H?x~RaKE36A%Y^dh#kmb1 zi}mB}k(Ki%H3Vax){Bd9F zi@PGN%d)KZcp#ngZlO-OC)aSMkmdU}>uV8FELs*Lkp&qWNsKoi7|lGg8cZvYk2r)X zt3XYVb!KbdqH%w+>m@NQswJtXkN3Ijz=nr~i|ii$6x4x(L}r1DzljE?QLG(Jniz zoKbynTJyyJL{mCPFRY&e%E{>r=nH6Zn$rqolFfB84XhldaIQ3EmxC3;%~k^c!_{}q zNc1S%SE;+`B++xNY6m1^Uq*c16U!zsiJ{5-svf9m$n-TMRE6 zfHb?|S3H8AcY}_|X~oPQkOd(MUFm_NtqqzQ3hV)yk)|jps|S>U`CHKE9`Fvl({S{H zm8d&t8vJ-Kc!@xcVxdp{U=88ERThDE_!h%&54(p=THTL3ywe^Dak~Q`s zyZ=q!x46Q}98pT!1x`Cr4=Npo z*#(-VUz){lx-7R9@IU!0vHkfAYjPdLJ_|-+r!je3k{ogLP|Ym7o8E?Q%)!Bx6mLBT zb|R1*iV)WV9CJybtOZaCmXZ3j02aVWkJnfD7ebT3vy)K$68wlbbblF~q@x1l&hDuj zy(>tqsVksZ(lgsXE*cVnA zS;d+!i?!wmwBFN7(0#?q*+>ql)9GlTA(J)mI++siER5A9@kH{o!HE(YN?rpC5eks# zI=BNYVFWtj1@Ii-Kt2TW8=QV^fUr{x8gkhHU&7E9M6wBfMQLEnpxsR{k{SUhUUGf3 zv!!$wBU|9B-`L%;fFia)Uf3X_dJ8l_rXe8IcaR^+2m3C42Mb6>P<4^ly^gnUeD+Yo zfBg}O64!A%mh;ie)pD55mxE%a{=vMoojB>9aw(DTF4e>s(aRwgt0VS& zuaC;VL}lgn+{GP-#~i(Yf}>{FtajU%Cjw^hnEe6x7T#wD z4#4Md>1c5X_9GB}`0K}@8v;c*4ttFL0M!skI{?4@6HeKXr7#ip1nl`QSlayol~71h zcc}afjAoi5fa!G|El8%y`sa-|diab*m+MiX^^)*gXr6YPE%j>;;eL~f%|kCs%b*C$1h0$;w%k`m zmIB3ZUe#JsgnqzJcF!;6_P^@i*_l6E+WGCqhJftR*g$gA&d(7<@1=Te8@IFPO(>xw zG?tE$RQcVLxi<3~H)~jBp5)Dr-hU`8@jj?@PY`0mU?t$-`v8NLf$dnKGz_-yKd(w- z0DB8LsR-o&SQdmV9uHvEkg(S&{t}DTMI$8<_`9Uod?fM;0)Iq~JwOoZV9M6TXNH6Y z@ZTx13Mhmvo`)9egvN8y=J3pXzL05BcE5nLrSsM3d-;CX48@ z69*q$e?C?rN$6---Sy;zKS;G_(WCgBHshm{r|em1_tc^2`cYrX+8^1=gK6#o->`>% zvG!$u?hTa1VjcaY2K^p=XK*ZU9vqA_mY(&WZDw-{Pzp8485+cGJLL?;%g8bZwm6>U zR5G>JX)h-*$(r%&q{`;OJ{JqS=eu$Q!2+XZ=IsK(cShUcc@I)o(hGA7A%*-Gy1Fm- z--qlkUMwnHhNQfz{Q#FaDX-Y`6;Vjgj?E9wVMB?TFX@6{|Jj~68h(?uSkblQ(CcU) znn#qdXx+8Dp}2ED4qHt+0ZZ7tNuRJkTh{3m@(jZ`l6_(c&St~mXC zvmBYJy&(v}mhs*9cMKK)JT9=1QT99OmuGw}a>V@F!{Bt%&XJrEWzC6im`n1wk z;7oV$R>r6DTeIs6H`X28Tj%-rd%^|#p>#efW?Ar9!Aeg8@e)J*T6fyW{RRHy;J zJnHWZ!mgAKCo6k?;b9kdOn$kf9($D!tvOn7D@}&>^0FxSZ`p&lx+Ub^!~Y~K`I}~C zo-^6`(e|?fxNSYQt5z>ctXPSGbVIhN1(vDXI-;qQY z@+3QYu0Fb6$Y7k9&fZNdIv|q4XfLCTniH1~H=J`UDpy;VxjhzL?7Y>1Vs_P4Ahdn< z`}{hkQio{dr{{f725q4p-c3r)uIHawysck8E%li-e~r8Dcatk^GFQ6Ss)uB~zW6hx z+UNC`caJD(d-c^;)XPHjzj8kh@gymuWx!~0sTn2{WwGI`3>>yVThtUPm zLl1daa!e{>Dl*IBVyn9RltiLOx2>xpJH^%n_$MZ`YcHE8{EEaz8ElM`Wm$J-QwuyI z=In=a?2>U#pZbcD)6ZxIixo~Z2A|+hx4z`Mt#UjqQ85aLb8Uh312>)yD^0WHOboW_ z=S)^No4?H{p?^_hG>Hw?Q=h;o!}v;6IY_mW*czEM1>-D5X`X zIcbwac;G@k+iT81Z!yzX)(!<`MWx$@*F*PyImO^`aa$F!C0HN+gq+>;mAKxjnKwKw zRmVHEs+XQ4iCrATjmayqKFO&MRGfdMtBVcJrPn>tzB@A&pzSkz-;lRP8K@rinSXMP z-cE_fT(#Eg#E|}l_uq;^-w&5#gs+!EhZI>?b`g!#uP#;VU!(NHwAgQVM=F%?&^xfS zU`j5sah?7fmQkP7N?jt8^O+s8pC6YxORmPerg7q_7#4}}CavFQ-14(Kk+$z_d<4m zZo{IuWPbm{$9_7WUzAJJwryp>|G`g6G`*#E43t=Ho9qV8IGbP;YHB+t&0^x>5yFA&iupc-PtkRqOoT8 z{(R%^yHXO0qk6W^5vxIDl4wI7s#MJK{JDlCmA(%FV@Z#-CUphIo6hM4$B77pH_-4Y zD4sRnw{D#+pNPJ>gXZ_=mSejRx!v7;d*bm_0*-xXK&{`1DLFAq^|7Fb)97*9oBSqu z0iTa7Hb3UXYQ4#iJv?&W`p0Iz*AV*o+#`3P7`rf@l`he%t>fx)ZE;~sSbAUZdiZ?U za@+k#f{iqAOLOKW9bL1E%*vzia2DDvo2x`7kJ7HRehy~6j8oD{?zJH-RN+#x?V>Cd zpd`ix4DT#A$dC;7Mlpx4aOn^Z-}nDXqZp|7DJZjh`HA(zTL!%3NuZp?z*9(7f`jS> z{m7_5n#POlxf}VhBfPG)lIE3}E>#+%#hJqF--xa;@K3yV)si&d)7RDHu^wx6q?LJU zo$=88aI9`aFI1J$>c#P?dheB958|LacE(r@T*Y`yK0!DQ3!nQmB6y4sqA?EBdRGoA z(HP|AjI&Wt$|luR6us8r+Ltrv{@OWV->{nf*d;C@o$RO~B|GgntFLX4hB!c4P>{M` zbc9z;G`p&|u(4rE-rlZWQ>%JUwu-m!wUao$^+knS(wgvPbNi0@+S}ahWK&_N%&Ykv zr!#aJVErX$SM(9cG9*u%b+<{OGmN4r+$YzXC(K$m{IWSusWN<=Lg8s78CR;Y+PiU} zn&kaUWtU-^z*hPjbj6ZID;o0k6N6nuG4ktE0v=KNA1B`WKlkW!c;$0{(ooo#+V#ub zT!x%4WRjYyPc~d^Z00G})NblYPBY*Vta0K)wQRQO8ir}kX6=GElYJ6(-TzGqha=ou zqP5L}PM&^gBok_NjandI-KGiSJGS=T%i`=0tS3z$%YPog!#!K5NqEIa@Z|!}t`Sze z@BLwYCA#i0Mn`)@-_RkU+&0I?MAh`We&;aCFhbMW=kt6P1lzMoG~`f^9X z-Q&*6>om)MAAf7O*Ti)_ejriy5Hb2l&)}qzi}3BBRrf>NoE`@?9cYq&54Zm+N%s(;lN9=fb}u)las2dmtsdwic@uBl><8b*Lj23 z)ZVsVJ-+=*k|~%w`Rxa8{VB~?UL3-@HJ#IO?#MC6m5}>V2;V|=xf8uGMY>`nv--e3 z8PQ;7QDbjTUi0XK{Vy-q*aiS}SBEEz9pC#p#1?5JoRMyDnfhdRe<0CI{MG7g11`}= zp!(mB{7Jrtt>GhhdXhPhwb_N7a*^n`*?s#{#&LsZ)s29;8%|?#QTy8y;5cbM_%d*} zA0Z`;(RcKG>9uG2O`;1mW7dSTw+fQ*Ufa!Zx~053K(^+3i(SK+N0@QC=^}jKrVmdK zvBP7Y-&sRT+Odx!Fj2pMtzYGPx{J&H=sHridhpo8$BwEqU8H&BU0!Wh!&Hn1|P}W&#%YS`Z?6h-+0nt{C0X){bYUKsLB2rS*Pfz4@0Z@ zi<=f9NyHAnuV^pG1=RYn{rk-Nr!8QOC56AgYq*U2q0n@y>Sgvb)U)GTWqA?2IAXMk z;y1B&Hq+;cv|ibRW(;!n#`0eJ?wJg(cA-z~h}B<9e54Nin#tHB7Whs*Z2LMV&B@bd zd>~6-*hA3tQ}Jy!o*<4=x6XQnf2BdZSu6r-Ww`-qbw-b>-_BprMAIX(=xIwGm5{ z)|GGmNFYGQS0yvbu1DOeqF<%4?umGmTs7Qg^sv{u8CIC)Dr+02bZoz`CTKwKrWR$u z&J%vE%-~VKK}^;i$D;5ADaZYZ*s)FP@o66so(Q*ocgRouG6?N4qa?DRj`L7H3U;~u znBlkKx10BtC6#D<9y_sldP{1C^j>wVvp83Z+V5rijmKubj$)aLlI-^%$@EHyF@(sm4Oy@Tz}1DRb~J!6N2rZUYFZ_BgSe90xUCCZ6u-@K-xt+=}E>K_Nh zv8yg_@QZe7doj35D<|n}KK1hpqb`kU;T8@iDeDdCw z=_vipljET5>(4)N+dPlGPQ-2as5kCV&uIlRRLT@_OSOr0EyDG>E$$t2}4*>$jE9V!D@!Da{%|2I=z6~3gciU)R>slXvIGf?XICp6{{+l zZ7=0-()2n^Pr~~vgToyhGFj2z;SKvURbz$!zox%N&+~F$QoP9jkIPX+nqNjy zQB_$}R##c~rlFDa4gP-{y?A=k&hD<>p8meR9(3=>80p7P^kb9bW79KeScB;6;?nZU z>Jn=48+!Bm*3P%R-Glw3-Myb%C>TBbdv^Zs;_{CZ7B0r~Vf4^;9X)W^4I>!tL_8pa zdzz-5T{J8tkEN%)AEtC))}821s+M=fRA~U;J&4GI$QBG(!V+`1GebTeM0Zho9Uahs z2azUC{Lp^t7h6Q}MWZiff9=cG(ns{LQIWJDXHWY@3Dh*|%9 zq+_CBNN1>Pch6NnIv`pgGZlG^Pz3jD3#dV&h*xz-ypJo5b_kJG!Lw7gsgUY?nOY@s+ z2lFZmXTQ(5MXXRb;2*83U!9e5G!Z*zB+sWu-2e@{NspArT5mFmU^t26kunO}m&4}L z(ejCeCh6RG;z%9;wJ%t}x5<4qUe5}8C65(^8z7_dSa^0-AL6`)y@nh`Lz=g+O-M2{ z9;Jv)gc~GKsuFew=?yD0D`UeEitkjgUc`tS_@}zq2o%mrE&BQ6xSSdP(tYCo%K5Rx zJBv3UHeaU@Bh=)gF8%%HXS;M#+ica|r$p6I^Tbj@73qszB8IH^-}uY*R?rp*=l z<|I{gC+t3(-}@XS0}sQ%!zN#ctXOR4jL{!#^YplsrsH=9X=7u;`q}K$^4VE7lL~*W zoQf8wfV6E{qWNV$ZDv_*8SVUv%G|m6`3`0|fe~kxAf0^K(1ngRogsmws$Ca(`D&fe z;ID%1dsh?)gv>+Q6U`N%dVMU+#2^rXi*Gt;L?6oul3vF0NQ+s$%b_AV;A9G zoS*@=32r!U7+}?57Lw2dYza(x`uqUPfl!2gKfu1k@^!>q#b}C9<6jtJoiXrQBs9Zr zAfDn6&9IIr*l^aw3Tp}=Nfq&UJFGIokU)<^I+-FTeY?3PiKyR+XgD=*t#x!Q81;u4 z2vb`8l=W6pX!JETUpqzkR9|D(SCjg$d<@J$N_*sCewtx!rK9f|NywYY6PXKz)SW4G z`&Ucz{5eJFt^<|n2&?3;+!c6Iy(j2eBP1C8#7%gsR!Oan z$K6A?-n{|w#!LLC*xO?_Nwr@hCz8>gK9b(zzfPp2eNX-Sr2l%$1WHFptF)X;$^+;B z-pR|UT*~8skW+%=9qx}-9f5>rf+P-y?8>oJXAeS+JXU)Mx&KLcKF+Vd8bw5{b{UYz zmaa5F$g5IH(>!5|Ari1Lq@c_w(aDqGhDaT;J(MJTIhJmz@@gm7HxH^DJmsUHRY$mW zgn;Osu;nmL*6D=Bpy4_8epf8);bDMh^uoSHBd?+HAAPYfL}ZQM_rsE6aEhq7JJRW! zWjS1PH39+_UYe7nA)7%eZ>ufqIDayxd?*$jH2eE(WXY;Lk1XfDV|NReL;JFbZ<}C7 zKiWAU&@T5Ys*+_ad3w)7S^@X*>{nn&a2PHs1c;5Ji%p12OioQsg309RnOX5!8QDPI zi~pE&g$!|}&&py;OBpM1Kutw;Z3R$PU-z!LsKpAI zA7_}Fn3^ zia=2l8+}z(8ye>MN-s19wZ{;<}EAMXyC#?B9=og zgb;|senP5Yp*b9u7iPJmL$SF?3KUcTTXw*RL{lg>2tlJK!W)=Ty3Sj6QqB44lUi%b z)4Mcyjc}|x0$Gd1w?ts0P>2tZVholKA%S;}!NQY+zW5t)*t!2OZ^|U>QzUIDJ|+qK z1`P*S*>r3-0!PECTq2$M*s0>4&HGJ;)^CCH{>lBmYps5r><9KFOc_HO>%`L8OZ0{e}Sf|>> zUI5G_#LN_zbSX^2mrN?xWbdkjpFE_{_!=TS`U5>yg|;nBH}9e*SBE zo%&Lj0{ZzJ`xS8$Kaq)zf*FjEQ5JR*`5eFtW@GD+u%E(WE>;PN_>5Hm z5#**b{U6OPsW*6*m??xYef-`zXPk90tartk~DFv3dnkry7p_yuALJ<^Iy0ih82#nw=sZLu?gJ0VaA(GJpRs*4{Fz z>Zl9%b#KBQbeD94bc3WKok~bZvk4I;q_=bcmiVzBj`&pG^F$1R8sqN* z79&Z5b_+t`XRI12qMi%Civ@Q-qG(DX2!J#RE`r81fmFJSG>njQjE3FY3G34FO@5Ev@Zwz@GFjZ-c}x0@+cNNb5`@c>#LHh zsrGlS;ix?mI6tfVed<~-ba7fQtk`hr=FwN(cwKYl#1v{pTJJYy2jgft z%B-|n!~^GWt4QE&Jx zt8$UOFj2k=21>RQ$T{*rDCR{bZeYfJt?<(GKUQXP+a^NbuVm8l6=G$cz-{T`6I>s@> z5sg=>i2-;gylPu=MoE#S_3r<=S^6J|bo)jl#c^ik9rbT0Hqj9!5s?iE53PuR1qH3m zPY!u1Ju-PJH4A4&zkpW}G4c1a!Yue?ZOSU#kxeCC@@@4c8clryyF=SYCI61f&Skr$mG&^2y2-8n`{3~5W4dGSwrd8p zhv=F^h%XqpviVLR6c2%`T=^2x0TYvrR*Km8p0__#qMt@I$~ErrNYta^^4BpO46Tu? zG-ob|A7IrMXBUZ9F8(YrYJpY)qhN}Dt$`>xFq9aH`={-0+;);p41(|oOGYRa&F@}8 zC^^KH2Sd%je+akB8r(~1OgZ%|R+fk`w5PWp+W&sD@0G%!8sQJ<3x<^?O6_mqI4#tG z{=&yNz4JlKpT#oAMeb+@+*Y3_!?C{VKSoC%_~B}lKXUSm$*gD_!;|jhBOKQ{HI*}$ zk^920$#5+FZXADA+UM@*Z!S4O7iKUHd?EJ%zr|As3H#lvvar*fz6df&`KtLWi-9OQ z4iqK^wCZ6C3Yn`BltUIt)MuK zhwqALIiinApxAhsRlP57Jzax6ah-Yb^DBu?%(yS3mC=hAH(ah9Pz`ckBHADlg00)E6UXP%{_mbr* zTIfCq3`haf>7mIWdbBVD)CdIVrQ#Ux*NF%dRmucK0(*;#8M+R&c%bld=7qX0RNWy> z$CxKpyWvGlF|~gvdZ%6s@jU$ znzFC;^^HycrANAZdMQf#O9rtA`^QEGhNea*#%JedDCZZ)f6P*ht&RMkSXf)#rQALE zx$*PfOJINR7X{Al)y>xJ<@rC#6Rh8bZ&#(Uv55s_i{55;hY~Q|siZ4aTl7HjHD8!z z5%wyQ;HYH*hIvq7urUH9#S4|B!1kB~7Z~VU8dupr;Zba?*&0q3)Ge^-Kz-tcJ^?AA zM|q*Un4ku9y%6*S1IV}v#h}$dq%ahR4uU{9XeLRhB?boY19Z4FR2~HKM~}!rqwj~G zypn?gPhoNNjy#kDB%`hn#;BacE|L0kFQ$^Fc67B()C)gv>|cNgwSNaSZGuu>T(aY@ zoH2hP!)Tpa)i-2|f4w@FDxzPJed-PQ+KJM93Z+7tS3Tyb5U#N1Q>2pBlaNs1v8QtO z(hHE*PzjLGvzNCJ63HB)c zBdNf~%Oq%}D@m+i`GU_D-=Q=>Qs2zMA*~eMT&l^Z^+Ihzb7p*QPO!&z<8HcC*56emmc?7Mf{R~7WTmBQdoIC=B{|ribzrdW& zppC#|c=H*Q88n50Dgq0Nfqt$CRlEl~VxB{1uxGGpSi}CI5lT>Z5SRcHy{ZiT0|IfP zf2cwoFo3tRvL>+F{ODUvC;}U#gSOIxR$#~oF-{U}dM2@of37Ghv6(KY7prm^o$`a{ z5q|9c!XL`b>LSEg^PT2F;Z%u`SGmPkL(Vz-;DG+knwgIprMO8b?N`867#gP-W>chy z2+KxHC?&^{g@=jlAMHEBgDiW#wLt>sK5vMm^5~}y33E;z7@W{@r zrUS0@YHDL{W3{N3Kg~v+4}Rbrs;1K%QfFkC;EtC6#igZva-Z@s_^7fvkpEyuk_bKqc?iyb+V}5XV*p3}6%dGDL8&o3v*l3KM$k;w z(vzQtLTf!Mlroo&0q?PQQw2l6X_z$cU6*Jg^i96B!xkTUJrqN&7y)a|k4`a$%3y$@ zn5c!<=pwauVxAh5>+w3j(F;vukcvFxDu50M|Oqr&0}lrlMon##rda7LrPnyfUG z+)Bmj7vtLX(#P=^bF&fWCy1A6QIPEXQW;hGy6i|MpDkbXS#Z|JRJZ3y#6heN*Nb_=cDJ_^|Z&qf<5i317{7UeFoesf){*tdMY}o4|z|@1?t_ zi0Id=22l@>>xSzF5HP-}8SBrjRI8ki@87@8($Y_mG94em4~e)D6OXX{q2KRVjFbJd z{e$qoKQX4L&gh9G#dRE+KUwdOp_hrEC?-_EQTR-wUBhkIWv%*|5=HwC%0j>=Cg8?N z#_~K}R(pMRFd2&0eFvQe0m&qr3-lETaH38F^Fx+}V zw~{kiHd5b~bsg_6d?-66oj#T|vDV4Pq3qeTTIalB$H{%in6FVf$7nr#=+#c5DBwo$alIpFj5wPj*lL2lR1syG612Z{qt92`S+^TbDW+F8QSJH=k4o0>w;53$XF{oTg^q6kGc2Cr zWd!qgM!mAnwPr0OlQk^3sc5_9jufsr^)FAnelKm+ZdWk0g<~@OQb0^FcKP3FSOgVK zG52RtC8+$id%vZN%(pkU=@r-G)J?axUY;!#;(6WSN_g<~RdU(4nhL^Uy+b4P)Od?E zyl`|u#J!u!^jBir43F*NLTT{%HNH6Bvmk=3ABO$0?g37Ph@3Tk zPHknHuc1WBJN}!dsTL29PY}G+gUn=U&fsAr2$`Aq9|_ zAijY47zu&;WGh*ionibzMf0ZZNlBN==gQCWm5B`=d#PM!>)Vy~W;x>9kB8WqrARi1f^7u#|obFqaLN@s{i ze@|-turIB6;(F|g)6zsxrl;$W&k)*glTk*-5U}g_$|Ce}d4%itUXg{zC66Iyw{+_w z4WUpZd1K!!6T@D#k^(1D`~qnMwzRTfR-8T$y;wffbWrdWjKU#AuIe#muJF)o^wqlGMjcv_x?qo;m4F z>JB##o~0Mk?IupYoOO7qgQyxioQ=p>u_OpgSCoE4a1d>FtzuB`-0$nO>)`FEXY@e% zr4|V^9`|CJY@sHxUH;-&F}R9wiCJ6}i6))+sGy?H49IHKn}+?>Ep#x&<#<`2g*)f) zZ>{O!0RjELLf!w*M&O$jMv?vNqf6P0 z2|l0^sK{XRAE^63jX-3jPM=QXniu*q5s<`^;KqLrNJ@x}#Z9<(TF?GMfD1s~|D8rcURYU)i&;=tn_pMo zh;D9eY3!)Q1k&=p{(FqD52I%cb7HD{Y<6<)+xL0GMU3yule259KQ_0vcXoleg5rpT zMq^L|s@BFx=u;4Q=K=aI3i^&1nan_C>6yc77?C&JRq&_8t+XB;b6Q{d$wQo>T3?DW zVTeU{fL=O7Yq>U}+M;rS6SejiFk9kpq{-x)*cUQ7)M#gWhi-9d-`M*6*_}o9N!()@-OP1WPfB zmVbYG6_uC`r2`CKzGg#1K}6^$IZ$d$@GuDdssKtsz#|kShNo_sQz#z8#Zi)9mg?@a zb6#=j<^<0P!eBgo$bFO4y?#>cs+gv2J#EI1%BqLbBgqA^uULw(5Ml`TD_eSx-2uoo zJEgK6!f-GwJ6wFP=sLyjx>5XJh{%cBia=_O}f{}O24Vt z$`!N>8p?fNDRXRqGGbsxDWT#Tp!7hJUef?IzyQSO@D^ws*Z>2a*#iBB54iP3v&UQ6 z73?oiRi1a%5Kg0`ha07*#ZOpi{snb1@(-&17fN_!;WRs!s5ffb7*aOU+#BD%#p78f zQaa~^BgOM&dgt|3E8y05>n9dyY_>$dYD~|lxSnIN!N{nPx5;dszs173h1qSxwqt9{ zUbu^Chv2X;+26+uK9J>l=D_ve#*`DrVZ{LtX7ABkzIT<*{J*N-SMfdV7IdxqE#&s~ zt8k}_yMnu@Xx(MK*l)2b|5q&h5*5K;~vyV^!z*M7nv!^ve5Q z{q7;P(fZ+X+}AsRA}}~8G$0%YIA%bsT)RWZLH?%gkG~#yjcJ=i(_23Q-kBv`EPK{$u%#zIZ%+C!k^e`^s z&aSL2GmSBBE@GniH=xDXOcOk>8$syR4d`Di&_nd{9yARP8G;DkGKep1OyvN)831V3 zcSDr**hc2gys(KY1;mn53ML z)PkCdrX=-Ld7+W1Z}%;gWul2+>o>o^<2NFh<9HP?}U3!h;rw*)|uGI85G%-{Wy$!J6_IMaL;EO=LP($ zmoTar4@QHuY`gu{ripd+kQKp)phymDm>1m*y9y(O+OgYthNl=_vo)q%L#a3=sD_;F z?87;WnXZy@d!_j(A2L&I;QO?W*P4j9>308+ZDa;8Q`2GSlEEj?_Gh+%5-!LrUT5Nhd{8>QxQ(d~HMEk9H zECUTuBv7z2Oy^4;W1Zo6qrvvFSQwbNRsNYbS%5Hfcw11S99y)F0G6k2hhA~LqVZeV zxxQ624m8U$%l;32$tb6=k!zM~xoOq?V2e4=+IqWSlVx|)dLw_whJC--9%u(2+z+N; zhLK}d`TIXZQ?S7JL10pUlqxHX5`6R#ZNmx!`l`6-U^W<_2v9{YvBNy>Yi%zd!#Ht~ zvVuZEh@_3MRE~rC6L`PEXn|17O1(zA!0Sp8=7_MijSe$@u`~^v7dPqhg){c<4zm{R z`fslyA0_-Jm;thuH&I5k`N%^JanmoNC-;m=U_da1S5RnZNK{}%B*4Un#V01Al2a&f zKBY%whGwScrsd}q7UbfTmX%k$x<6)>#5iBk_ra{bg}AM`y$gtD?IZ((B*eo*|2byU zgSZ30G5kjI?c4m1?@QlTH`li|f8g#f>>u76R-Ur3oH1XXU+>>sUH;>|y&#+r?dpYr z(FT$*=KI^jR|=L6224_^WMGNFI#kKPrU;P9=3%)8F*aWD_P0sZLsO4UHj)8~1NqOL zd6^F(#TbXP{C;lcNp>=en|--Of`Z5Vl(Z# zL^>9}t#`#t;r$%jUcXt!!yu-fqg}+qXXj$tkq}gsQPrf@*Vi>-5_I?=8i=1~5Jim= z)rPqN&A@VP7%i9!gdWv~0pv0f>Ou$h8~E1_bYYh`U{ehArWq^~3n>8+3Q~%({2se6 zmIqW}PFgZuBNG~Vjvh-6Lj!x(I@o(S%#{kxAWx+8hlU{9{k^18|k9?oR zy(tIIC9bp_zlH__kLi7BdiiKM7EcBbUk;@C_6skva%KGP?J+GTB_^CoDvU21ml{Hz zqb1jEjzcM9dWXYz8W7scNP~3!gUC}#VAiZtL-MCs4U)z_YDZ|>ZEX#+J6u7Uig)m6 zMUfsCJ%-b<>1oo`lusgr?531bQU&sR`gB<|vPxo_>=P5el@`=k;LfTfalNt{j-O@W zo+~%$T)?B&8%bGebd6JQHo{FaedCQbhd&fsYH~S(QA?L;n6~<#{hHmlOa@zi{QMV- z2FZ@$(lwec*(`g?xDh_VB~&l~3hKk5FM>8`JYvdoOk#eS>6#Khe8~G!MXwXwqI$Ao zptW7s*ter4KeV&S5s^?hmZ4It-yZYCJHN;`^F7^G-R+FJ`e54KKIs#KT65h-s>Q@s zpIXF0rOCma$eod8`~J<{otmk~b+5iZCK5ZuOf)bh&>#@655wFtZVf}rGV!lMifrba zh7^PVpH-{^e&Tkv1E#ub*R#SzvNQ;HM_;$2K+IF4HzGIN)M_RZNgFXOYa+zz)9U@t zT?Qu!XEdLI!5MVwuS5qD7Sxruw3p>x4(RFx@4Q6q8*rZ&pZ#^$Uc=LepSz*fVWML*Pw|!S`M4nMe%a3|$ zQaGHApP~vI+Dq$>$@r*$jMC77YFL~NGSK`B#uDFAVVs||{sLF&v_n7V-tTXwhJ3ip8a%0#oXoa!RD~r21Z)uBes`o5NncvIALmjA z@4junEf_dfAhjMUwtrkfW?3j3B*EWJDw=M&OnLwz?kjzzMx){*;}bL#GQM!|jzKl0 zp{xy+xb4-h3tIVf^vBroa}l=Ld^cZB1LX&OP9+YxiJ1q zSmD#96_Pu>>G#xC-}sOG7)~`ckZwG~EkCw;{c6s3EcQpZk#|oVNDH~> zzaCjW&Z&0tuL#V*_{7j`KcQh<-)tiB9^L%IBwFjxe$Fb0twoVA&$Pc*KYz@IV<&D` zNAhaIUSNu9%IDZ?v3Bv|Jw}NBAT#Sad<^g0hFTx@Bm0PW`rypmLyinyUu9-S#%=v} zcE)wTzPlVuUB)=^ls6SF1IT?kj?~10DZ(l>Y}cfTpuP?vkrV&wTH=NttbW+5DjJFr z`lgv)$q##RbY$SQmUWgcA}<@y>nRjmUx{iPI`S}6er-VnoJ(ne&nz}$dJ%w7riyv{ zQqc3|8bbJU+*f>+N8O1;X~`K(D(?~>Ghvcd2g&? zc*^w(IaNaJkYxC_hz3p8;WN58+NHMVxeE`pL%SI4KTUj3JGp+WBv$D5Gb`1m*BMpc03%{u{KqUR5~dm?>ZEU`pM_paAfugTqSX)Bv1Cf3 zi=%(XY#87?EH3WHFPU)wDa(nNNaO^(*k=$dr)>*y#%MU4c{6zn(qUtL;eJ$LuAHA- zvMMgE8R4E8tQs#HSET8mDZoDA&uEW^Epoi9C`}s9k*ADUJn=coMi4Ri_|<=_sT20^ zbo}8baL1`HG3n;+j#Otg{rmKJ+|jul%lQwX!t1$CBHq}rN6c!tjq<4yQ}l0daefDN z=mzHNz7T7QBY(x%aDlB6pAnpB>zT}tOj5JX&a;6S zI1o-&3eMD6>wonPTH|{}QNK>hUroL;hu;xJQ-*Mb?rfS{Ic+q0J${$PSogf+S6uHR z3-^cDWd?VYf$Rm5$Tx9$%<=UZIfpGdKWhaG4I3QVG}Gp;Y##Jd_ITx-g&pD)A#zBn!lo*u zjd6D0xVw1TxR}T2o=vM?f1Z3|%Im`x-OY?o+P;c$7>6XTMy}C2Euk$Q54i@bXuSSP zn1_uh{#s&<#YLiOHugrL-|-utqU*Qmrjvaq-=&7_S3J%CsyY>nZOy0)nhvIFyKAZC zJ--Tlhh00V*-33w+eyVqiQxW_b~;qXuJ(SaUb1?GJ=4jNxTq^T7Q6YO^qal2f~Lt{#fVe$!nmy}l0on9|O+B*tUNQ#U2$vXkI1 z6b`Z4)zu)VNCcO_L}UhuDE~_^m?9M-?7QYr^kG9q_tygRF}E#}LUW>GsV!;jc4V?J z!COz<`VO z+N*8D3;9xaaJ=r4!^(3JiNBB*UQms2G@A~`bc96mu&M4UzHV+5ZTp4uYhbS#y;+)W zAwqX)H~quPaImFB)b?_{^4P<|?K+~QfYQ+D$?peL8K{oYmThe`>qnVKzlWZ%&Su-3 z?`G1T-xVWQZeCX&Bv*Rley`Rv{eBuO@+Q<>icjNV0x&j;5IfK`mE?u+%!eLw{*rZ3 z#l8=oAKsf*y~ZSSdA2F0ib+DBAjWI!JO5lu@`L>nTILs-jk%)d^*5vDr;6K`Ftt#+ zj8KQ4Y;MCWasU`L{Mq@pKC*S%`AVOm0uOb9}cSWp2P$Al6_RIqw6`R&q8v;wuN#*9a*VxRf z$h2j2{R9T!X@#=;m!4t>a)~QH7c%6g)^pi;yskbkf43k-11a-4B^&T)6r7qCO~CIUz42^z=OFl|rgLJZ@bhoy4@F`^`RG zTF3Q2Yn%nCO4Mt2?<#U3=9Y&$>u{3M>CNfXMHz&P_VUDjM=u`! z1EQ-oAGAJi@YNO}ft}ESieY4?i7xkraX6yAH?_Mdz!0>&8Lk~AO#lI56=Eh1%VfwzIH zB;s%MDi_K>AN&aDw%DFG6EPaw7ixNAR=V-)^1eb0RIb{O?-tDm02@alDjFgidI2hK z5h5xH0Uns1fQpK#o&|-4v!8{Rgx7l;*Le4m%o6vSHplwDp|PoozM3WrJ|Dj$o1gpG z7?-fSeJVkEu47g~AxQ-pQ98jpmDkVj?Kf@p)qM1|f<6TT?pK0p$+eN1QMxUW-D$cV ziyJ#Txf=>vSN|0QBMBbR3WYgmcVR!IqjjYq%uxs@Ws^sBhQP=$dV;Z03n8#);GYjr z452Vxa?TfKv62f%%ZsdH7_>C0&TjkP#B)2cP?4c9ZqO;ZArxkKFZv}4hcSWFP$J<# z?Fa*X8VR>li_VXR3F09slH;PS!&5jyDh^WWkJRSsN19j?1SR`0V8N7` z;|7?lpH!H;cO9i8#|vY%i|vbFR@A4CO82gue$bKAtUGWG4#;nzL^K%tBIhXIt7L#D z$*&Z(5grJNBFI3)?mUE$qgcrhI!_;-(kR{-UR(?XaqcVMa4a~N+zh7f->|}(z1Ad* z7Wur>93s;qR0(bu3Aod#{&=hTM740Mbx2J-i000aK>4P_D5#`m{r>UD982@QjnS+e zcY6J{op=0Whd7oZFjZw5>s;3z^fU|!_kFx_Xj)~Q@4_@7g` z6@ijpOYC=UU=pAxGGVs>azXM1HgxYGvHAs;49FkSnoYv zQB?)w1R=H5*Ogw9xFqEuQn&Uq3st|LXDG}pe|f?S2_lGmno0Owl89PyXWGD3o?)U? zSatRl8uzW}pL4&j*1u8~8p;+OMbp(OrrXc@d^H+2ZoOnyztCqcugI=uGMIOpuP-q$ zGi)+hZgrSiF%__MTG_BMT~YZS#$Hljsxd)~nVhiW1U)rEaBs z!4Hp^5PX51ffock%mZ2U7(s-G>OChDIc*X6l+JYx{N1Rr8WW3 z!PDNL47tF1b_vu?4QvBnhwlZHL#hZI%vZ#h2q!@OtOfR)EQ+8GRs_ePPb|fe;}hn_ zBSv@E!D_GpOEmXpSOp0D6bsGT3IirHy+nt$!OFnkXIN}+D<%$00hAWvJ*SCAr4FZ?*&CuZ0Vkai z(ofVDzZ;_fyJ9D|6uzv|Ez8@ik>{6}4$gp=nYW)`aQMB(EGi-_GCCq592=EPhDuFN z%lML!o|T)Iou5*WSyGsro`WpAuesM{Q6!^t8&PO9WeawDb6ZCMz-`iEtb}LjK0%rWjK_x)TBSNnzLZ!kgZ>nfvZ*MB(>gOdN0Ms6h-Baa(`hQYW z6H`T3Qr}cbeZ@CCq22xMqoY(jf|Gwl#5m+^#DL=L3{Uh759PlMqr#$YXm2(`Wi7)< zA5pAYJAdHI_78^P@=48~WORo=d}I-XcxTxc1m{OhEyFZ{=~j#@FlVr>Eb8+LEDL0c z5?+Os0`mN|RoD@r(V19-xq!gT5Y)2`*cmW{M0^wW4&;a~-Gl*X5CwX53+4=hJpjdN z)I4)k5(hk)c3`1EU|QdS0rGh?!!FDY1f~I@qxN9jFyLcoJcF?#aiYZtHk4wEUe#Dh z#2$^rR6knr8ru+XIy()Kw-~b(WJjsx=R<|1P`b9iIeRTi)haITJ%=~nlLS5!oOBG7 zsCA@XwZAkDFIYKq_ia8D4b4XRcV2wh4H4T_)Hh&9u!|!Ml*9p}_;5Rp?}p-oS_85i z5ppW8!b`kT{r8azH=NXwoDvSyX-1tLiw+0>)!hP}J}G|f>ZPbCV>$mano%|LN3Ckv zqt3054si)_`Q_e~zsY=K>Vzk^cI3n(!;5cz_s_4g9se!<Q!%i9dqG_n_j87l}oBeSN>S})wI8#rD!nuq@w5|nML8yb@uvySQ zbmut?m=wl`1}ZgJ7@%~N=nX6r3s`VK z82JwM=pj6gjD$W$xOV1Rvedn|oq?Lp!n3C7l`|%~=OLU71nzx+T7tlpfUV5}g|{I; zQd+QDY$r$WdE^*)mN+fdSE)5iu3T0-J)GfJQN#fzI%h@ZdLM;V~N7mdW0&5CJI6NgXmV@Zc&9H(^8J{w~Ue8)HWA5p(Vp(Ug z*M5{gE85v%f7-pvQEXdc$93Sq`IEz;q|Bk5+bOW3Vz1nR_icCZUT;N})2Y+x zFa8>yP9E35-@j|!gk420+}%Ylg?@Lqh>7~wUwriZD&`$1=IPyX+u|c7Cn0&;>Mi|O z7TJpY^N*0kU;=tX+zA9|dT9yZ99RItphOB+1Vs3sNa3Hc0Vsu; z1`fvn=0x(*!M`FOJbh^?4h(>hCqBr0!98A$&=t+w@U9esG&r$&%9Hkjt~BNVETJ|`C$6I|A>r? zh(`KiU<3qwh>cDB6bCpH$7Lj?eo4#CPD{?rD=N;zF2_caRaDoMS5?;4e678AimzyF z>%4En^!0aBR1Z;Bj}Fz2VvkIh18QIF`T3zAv&-W@)>k$tmq%unSHAtE*qH{DtY^PZ z&bEJF-`r5*P+a}p4NB{>WvD$z0Sqli6q!NqYuIhXN(7^Z% z@E5>xTQR^5K)_|t$_UQ@*3*ay?hgWOp?@&LZ9yP6^fOj?GX}7`L7Z?lIJo-(ic=Wa zvIQ@x0>WCs2IPm<=z7V^{gqw+Jb+Pa!O|jdfz#8iBvXTTM$1x&Pbu z;cxuela4~1yS0k6ti2cYc0w%*x(gwX`%kc_tRUbnN;0Bf9AHKfX&!kM4GjSuuz<0R z6VZDMM-dx8cfa=mnMpRuNlpR{PDs6~wz2=TU&l1~e(C`_Ud-mBHf-uU>{|_XraMLq zNd-+UEj3vKOI?SzZxysW0+ErS3CO@NUp_^O`qYYgH0$=XE3^y`&+W7yA6%Y^{wXDQ zrjzx5fX}GraT3sljY-A#l;U(%Ar#7WXMuU;ock<>_7Tzil~&I{jHq-xYFh+uMLsNh zT+&&D7^K=#(W~f-q1Inz@g(QRMwyGkAA#ghNKtqkV53MV2B!f8)I4JF|2zhCCEyic zPyh=21fBw5n(0sA8hCoLpOs=*!(;4RGGhniPt}AgP3C?%UH&uWhmYo|w<*oTDV^UVsilm8QNofqQ6o}I zK2g<`cx}%cMGl=U7f)Uf({}yAgdLBbB9x?;qHbaRds6#dQ zQ}E#fl%P7?4Ht$ZrdLQiwb>WJB&>)2st!Me0w{H%KD_iHVCAR#8lD0MZpsk$_#MNT z0!|x_r9Ni8Iid7KbjG(z+<{u$aG*mRKKVCRjT$2&{96vC{b#QXo>~b-5y|t2Zkv-U zm}%|ek*E~jmydgigMY^+G;jV%W6<_uKI=7GdrkLjEo+S)lOd0J%_85L1@qZ<0U*pM z+-42hwFxY=Llo?BVsSkc?mj>`IB=J}d3;oURQiVZEw6Ln3E%0-v+j4*ziRkE)h>ax zuD?&}gwM}q&+0B*6)r{HL_w%53pgqB-wx@&Z8E+xz|{!lPR7sb^aDYuev5W>g@qB( z-D#vls&o8N-!0%QKpu2w0jCBgB~x3%AA{6U%9e0d@FRazk|i7g(n8-^!XxivQ=~Oq z3y_ebmTcf>;6V_2(iWbK1zvxEc6bA)ehB>#h^b}$+c$qqMkhv%ZjC;zP49d_1_TBL zyZZQryv3o2ij0o-ilU54jKy(JOiBi97UFQSbFy;&hpY;RIER?DqP(2A;wv!boS3A# zg`}#TpsJa)y|I(HYiN*UbZmT#fMjZB`rE9*{PYaL;tcNG+!DzO!RGeH67JN>{^1s2 zuyAsA`0IS@92YQH_(P6+_h*lZuj)&uFMvE67gaGRgy1pV5hb&CG02hN@as8>DKI>X zrWe<1*{!zhkHo}A9eDr;js^wygd5?P%5$04A->zsmQqx`YNbHAdBWSlSU6}AFE}S) zGYmpo_`v_+fJq;qEW+U-4@n8)u(^aOP{-l$r$A&Eihzp%7zxTD63zvDiHd{+_T!$Y zkZ8CA5{ETDSJ@_isA_MwrYQX7ym;Tc)D6$xKkvJ;ox8IBL=7op4f=4V^}`Yb@?X?y z!1AX4=)|tuG|+@NPw#$hY7Obwc*~RS^r>`bSIFd_lk9^o5K*5ngp3xONC2CMmQ@-M zd+EuW8d!*!z1OoRqVW^?7!X67l#?1?0?@n_;&{n@B}8RiB0bydG2f2*zJVVS?-Fg0 z;o}^$(%n+s^6>89si}(U(!JKCe*MBxeY84t}RYq_zlKVyh)XQHr1748VIH@d=&_0uU3N zIQVlgp!#@`0RMi^vmF`&kd|nQ$R2Bmu4*4pVqcba?!B zbKl9qkb@`wmF)O&JNTc9H039962?z5EBuXCBKafCpNE7DaDZVL!$0i1P5I|>SU=6~ zxupG#0j$}Z{`&QQJU8_XIe3UTvCSfr$WA^=_|Sxkp|^LMHuZ2b{B{v8IYMvjLz5mg;=N?lvPkpDq*L~> z?+;^sxhIn*Ko_32t@X*WdbWvwn|kNRe@7MnDk|_!HT;oZzQ~v#Yo7AbcliIKr;q{= z(yl<*;hnJ96+!mXa6oe2f*{CMj3lG;+Ptdv?~i3vjThp;npzLWCP!W5!E1nLL2*9Z z5lHyS3gA|NkE?e9{5R+|+PM&Z1x)e;qwR~~+F&4fx0J%|z_dXiuHP=QWHhi`7ga2p zo;WqY6;bCxp(m6^dB>FirBDH{29Xw?SHR)O2imhrDLcyX3G+HUe}*2vSUith6!*Q= z$|d^)3huMu7kj~)pvE%uJy|1v#(pCn%f5EHLZ9oOJM=|)W1ODm+_ot7zogoSr%elv zY#oQ*eu1yeXup^)XPGgs=g`UJGFj!WcjSGsHnU*eVrAXl-YT@+Wy>$(C@w5w;o!>m zNBZ~PTQHQBJwD_a?2JtM^N?BLAN#We&ZT=!MZP2_{S+Znq4 z!-Y_z_*LV%tGHN5bN#I=cHaj{-wlPt{XDcY>-|a|{hAfE=bC?$Dq#3RPc+^X_z%7Y`UUZN~o;Xi=p;$i20)B-rmAD(0M|TbS6QY0kIs2^e zu2aP*i4oQU)*7EkifZMv-5ZzruyAP8ICfoAOEnbO0evh_W%mX_%fE_Hp+6syo`FFD z$Pmvk|Hx3k&}iJ)xENs4MnZgIB6(^WZu*z(tlT(E+=7C{;?n$bWKm%iW@S-bbtOi9 zVNG*0ZbLysdq-PSOLu2aC*}~w@Niql_`vAQ;0(sx?EHM&;vm52uCI2ktuO8F?HufF zZvEWB{&hxnc5!)*eSL9zb9wjR^c4PIrySxtPUC?p23ee6^ft+&lMkMTVY8~Fhn`v} zM$(CT%|NCA<%pa}{dtDgo# z@}X0dd_kKX?*jK;(5pnzSN{q)AY^%2gb4348%bi*Zd2nMt{)*0bogGk#`s~BQq=X= z!uPb$Pb+dhHw56P1{14Y;Y3FAzuC1c)uJS-f0Shqo5s+HZS2o8(BZw!Xm-OsJ9pXr zlQL z`>N&xDr++&oP#F$bAYgH{)?A7TN8mqawKs-d;kP&j3H zD4HN9W)&m7dK<_ec|WkRd@V-hJ|7ds5|V5Y#jZ%n8gESWJvPP;JAzHsX4{HA^WAz1 zXL;Cmgk9qRI4!Bgu`!>&*U`?%sls<7O>l~@J1u1xiNMfEn`_xydb`$emM*?g*PWhu zvXo*gHRs8;n-xT6zngvW;YxxIi*m>L~R!Dnn9fYWc%|0d3Y%%*rg7`|RZ){RG z%N@zrhAdJv5!5RskD34Gu|XfrEkAD_;nQqj6(g?0V->G1vdNSxH2B>n^<{W|qCvb( zrCnj-x70W0LyBs=btmg-DVWX0HtFqOq0w(gk_VSuhOyALE+lu*(=W)O>2cRN()VL&fesEp&gG6VDI*_UL_`Rv$~Hl!pk4g$K2noaBDHm*DC7F`|XW5oHg!&}~V55u(0Zm9(7I$sV_A+>~e4X>kq65|`m_mypbUH61v(QvJNbFxTon8x&@l z-h_%ajXEvZE@<{-h#Z=4(wB$wjShu#gl^$vHIKNv&X1mWK?SO&*hhh> zF^BTlv5&ToLS?zbhI$m9CZFSZL~@#r+)XG5svK%CpBF3t(i4c!>I{-*^jI#23AG}5 zM0oA61^i26r=HNxWZ5<5$bIY3$1I{Shfsj^^u&VNuCy8a#OaeFGqXfUv!e}7lU3z8k>3=%3QCO~7(ZE2rs%Pe zAhvE1WE>7DDpKzJ$=u`3NSYEFzj8QQJm}@w}0DK*04@eEi7Cnq{JK<`t!@vT2fi$TU>(p z7|f}LKZ?p&1;hTSd^*jmES(QS6iu_#>{?G|#f+SxW+q;Hs@a`GqjF9`72*jRZWwIg zYw_k-@NG$p0XFmHi6WQxCI{G6YL>LMRuVo1FA61kP7D$~RIOg*2kF;3=yA#jdM+2Z zCdH??4q^U14WAg{c#{3qEJJk|Y5LOnd`ytXTK_s-i$=I^&hP(V?JuLMdZRX8c<;4C zVy#UmjYvy_G)in50TGezZV6E-g)Ja0rLq78DM{(rgdimnf`oyfw6qF}fPiuq|K~a9 zjQ9O;#yIbI`2vIH=3eu@=bYEPegpnVw_Ze?#9tT@0U58koO}G~=WBEF>7O+xO?Y|5 zJ;@w@1q$$sQ!VUG9hi{$I(^B{I7tlOL(_}Tl0vQV0dz&AOe0xqT|R?ie+BdO5qqz( z2N%W)2d_h$w@PH$i~Jt(So=l&UjV>xln4rW`Cr#K`~Not!2iDh01f|tCjkDhYuv)( ztkm+#>e~8-Ad&e0!2@){{Xf$H1>v6)ND1seBw*?P7Y#5P{T~QW3!a{&&iY>(UW3`jc-vfep*@I{FNAh5Cm|7=7ELb5_)TDsgu zx(1exu3}>Dw=BhIHLgcT+a}&h*Gki^tQ9L#vwc{El+t^r=@)w^)0WouffLj;Cz%ci z>OK@=>pm@Aww} zOQZ&wxJBKML93Ceep4qO*L1UXsQs|`NE|b%))J;Ypq9s|b^x&60kt_$j)tEdP|qU} zz}Q1-1vI4=#u~-1=bI}75B#M*i*|&6{-yS1#bDhf`F(W+menvfYE@67)M6ynoZeqh z(!!8K|50zCfn8LC2N(>58-LP?Ulb_H45_RX*2)AwuGu`>1J}!+CTuyU=8nYb3khp3 z(SN!vlwj<(7(ayIMZ_5C(FxtDCz_FLXNabT1#pGCf5?4-9F}*#DId)+Wdx%AM_n^M z#_ZYm?afknOvDPTng?@bdSu2O7lhXOnRQuP{QND~GS@Ep&0U!+qtcVuk6(@VqAm{| zWb+z)EX;m*K2eYKBA#7S% zOy#oOvG%`8WoGQD!z^5j0W}$fGq!?XU1H94?RydT056y&dA-9r76!4P6WX2ZhXv1| zk(O=>4)nwt+fQTQe>f14-IFEo;9me(Ly^TPK_MKlhk~sLpe6GEXe59)k0Bx=^xzH} z%V>|nllf19?bvV$T5g4`V)yit$@Hr7v~I;=X`h)3IlC$n0>`rhcKn&r0*HA=9pxR} z@(-@k<%zb%Q@(N{91jMU0-Do|-6p=v?tcj@|CB1D91!zyJwWNHou*yx1V%wPQR{6NJLKK*4~XhTw}0YOVFS5p{)l82VM6L z&nqdSZ(sO#;UDm?y)~Q(yC!^scDCgX)d|T{dvEi)5z<^g3n-2@C;wpqk&OB}oXrNB z0^d>aZ#HlovA5`F2j$U#0tJlW0C|yh72p8nsNRsohD>q4g5IKF4-PPmDjt`}GM*vk zP=qJr&VWcm=ovuv;{?fQgi9d64F(<4(zrn;0La3TTX?|=Jm8KadkBMfFyX{Uar5SB z7L3o9SJEU}OshQ#Zd4}x`hL`I!Ye0Yn%Gw$)^E(nV_3XRi5O>0h+y|8l(|#H3xDFY z+vn?o*OkcKo=q>NlvGyc6vJM&HH|Vk1k&EU5qX1&CN4fOAt^B~H65cB670bN?PzklJP4vOwACo`kOJ5Y0KZXi ztRk3%gjXgdQ1KXZW2^!)0!W_cr3$J5NH4!!9UMl}z#$r-uPF_$?fkEYE19*z7F|Nt zYQJyZZ=f6!xR3GbV%c<6}_pXh{9$8n7c!xg z^*L`Y_IV?QZOBgJz;MM_&<&Q0gCy10}Xs29lNg*>|fX2}nHk7H`Nws&jY z>w?zq!8+|(v&HfC-GyV!DlKOe1&&8iBDR`SJ&Kw^NMF9op(ld=q;0G_#!w>){-g;C zBIPoS7N`JxLBq;g;PH@8gBFN%ClP78HYkCdM{GJ^I~r{PPhJF@fLt{EP#5{^6%_nd z7xV+FNwBIO_zRKV$moMTXl?SoKA4RLXxzz}24FP;oyWp@hTwH%ueTe5sW{*&hJ3{o z{D48L!vdCIH#gX$lRkejH}ZV^>OqS)Th*%P)8??5JsOZIrYFB9*RT5biOA;**pf;a|Q(9!7#1}kL7{c$g4-Z~za z(mhW_=O4nlRUKkU*%>d?8b81~wZG|?)mk>#LT%N$o;qdeA+jOJe z-=0h*wpAd=)H_@i)T*{VK8ckaQyp(OpsCz-j?)HqzP>O0s$O2cocrT#@|g}2_Q(eA zvI4m|AftziI^3}|r-`NDY-Ec>ObD*91@8$h;w&zByd};sVQ)>$Eq|!c@C=wjsVv({1Re&o ziUxl9I+-0fZS7fjgo3T@Ku+K)9uBhu7ZLr4lRa3BC>&tW0hGqyBbqhulVB|ea0Icv zVsZpm(ZC%P3^;=}Ck)UOQ90}B?k409oL#$^}%QeimY*B;`}8??Bs>KNE}Oqn;nvx=P=T;I8%oE&4k7p#oswC~}>I^;Uc&gDBg z&GR_TMlSGjBMpS5?pOT$J-jQ$D~p=;rS7ZFm{P$Wk8nYe9-)nH&+cW-V@tXp-y_62 zzc2l`S1m4n?x$ox-PW&~>iR9|yD~DW>WvMu4Lgm}^5meVhCg!6&HKn9aiJ4+*s6Fy zR9C$7qFwP{yUG!XvlmIAkYa)e}p9qMq3yuSfF?kNMG}`IY>Fq$Kvt z6p>~g9K7xi643qdzCU;xxP*gQu7d_ZDH`^;4nAe0u}?D-c+PywoUioxb>@T`#ie<> zIKcGQ?!N6{HPOjr)cn$ZtF1tgw8P4M(Rled#gs+aA(sqGkOk z^dakcNa@sbh6DyT$`#4;d~<$NCraCY=^kZjuL_`yU8s$C_uVxePuOGtb}boWBcZsd#^{?!OxSHisBK z08__;vp)Jl!sGs z)>fK!v4wtir|jR)rSCh8C+%og7}?EukOK}LE9v^4f)CN> zV4GZU9MHp%CG)`e<2!0wJ`(h_;G_Z&Mj{)3At;Q&AZT#1aWS}yMo^~urJyl>3QG~2 zbpj^V zUOv`EA!(?YUVXhwVC_TQDj_87d;7n^EmBYZ7LowK1Bv6aiE2+XJ$}bO(?a-y(oU;t z#ikYHjZ5XF&KnsOckC*@?tk#tB+27 z1I~e8*#CZhV*PjHaP#?>=WX{P4np1~WgjsyTOZr7t&HSZ8D^Ecm7};Abt0Uv~ok5@4&%jkX-S*;#wG)46lV*t$b@0q5+~Md!u*FHX+keeZqq6IH+Wy&5?Lq-y_XxL-ku6CBGra-Rk^6q-8_)-X zbeB$#AQ1%#ej}g*4quHr4Hmx}0Rbf9ydMM42}pEce0qWNvzJ9r#x^iwUG3j{=cX7# zZVxBi4T;jRxfG@-NUn>(5`~LCf}vEVr1ta*wUAz3NwV++D2oPskx=;w z|lwqw& zFcG=9j!%Moh?H*riXSU`MAW*Ej+2i94>ec#v`S>4`bq5HkL zez3pwo8jnt^MQ6%Zu<>7#PL-C=|$e7IddfTgkmd4J)T*3cB-U?NBcI**&^nPwS@#m zB(>R{0ZGSg@Sr)62dztfGKbtE5Peqp{C|7s%{-Ds(vW2rKtD9$9V%)o51mGI;~OcZ z0Lb-=;3*8coZP<*#^4aQl&?{hk#Uua%?2xL29|*to4g*e7rDMuRYApG-;h&`NcR2? zilLDt;qedTXJAi}Dj{;kCTM^SM{t2(&9gMl*Dj9K)(E_;`#XQGVkYz-CbEmG#+}_c zjU}?S-&-sXsZi~|F)te{|IhDXzNRr>`tgI+H>?$5bqlM(PqLF@dvozVYSk+7o)oe{&jdZVjhS+LF{g1n9yqZRdmZEX3UYT;qaO0SAedUMB zX|>POYXd*=ZP*PiJ4g`(xxjbqf|;)>P=8WHlqPyGj1?wj5!TK_ae{ZB_Je>8BMFJ@r&=jvyuxMS^m^l3-o&ti3h ze@(cpf8Mgfmw$Bfi+W@Ga(R2VDXe&g>t>kJ{BExt^A^fHNXI>+FV=lee$SoaoS@*| zCNVS4qT~~0bMRfk{kXVNqUZM2E6PMgNMlKM^(XOA0f{LFU!}5q>E9DI?SBwofnTzMN4x z`tkNmM>uAej$MA%UJYrAABlPIjpY5G5Ws@oC~kw?>XDjzlcLt*Y70@id+#9 z1g`d-;?*uZMR{F{{~^C(=3Wo5tvw>AcCXjrmy5oUoc{PjI;Wyb?@EGa^&iDIym?v{ z-ZDmcL%^FyGU1Sx8|zNbt?i-GJoGO8z=f|8fvmC^K9)=sZEU*%Z{e- zmiVjsEcCi&;>3b|ny;u|xVPxUSI=RI@Vef_fcnuH-B1jes zUjK0TQ%d)3w&kQ-@XI6VBt{9x$v5P(clv*2wZAsij6XHC3V!v7#W|ex)r8aSbp8iR z7fN6*;*rDzrPb{>H|OlKMs9xO=g8-#jN!!N6CCa_L}!RK9p=wFyeOQ=aC*cbRp2!4 zoc;z^>>rTeDHrkKja>1wXv@@Re}V|ID=!+IAJi)KCtWidcAfHRnB%whwE&i_{9f}p zKT)%Ft^XY0niJ=$!+9?%Tfb7^ z7kI6Cw-P+3)F{OswrB=_eYm?B{oU6-$zvpa{e09D&2Q~i{8>BG)Y&@TT4&v||NTRf zouFaj_@%F@fwn;uRmHX;xF1aRJ@mqP##fD08)gdWy+HdO8wU5+B-g0@7>mRX6RxuR zxz9dCJ+tKg7*!o&u4`K#-dLL#BStSvRi(^ykS{8{zvh+Lt7H19Cg*kl zQ)&abPuw1b3YIUsottVhr;^f5rwgo9zvonlsrKBou-4dXhveEnbgqu-Of>t+b%d;E zYf@pTSy#GA9EZi7B&GpB<|D)HYd8iY-T{Hjmo@hVUZ)!QlokQ=;jn@UXUv92e}0m| zc@AiQtB;MQOvbZ3G;{y@y}DaE2X^OYd_pVv()Xm|Urpwl$M+j84LbMfeDId)x8iST zcyCbWeeUU3W>$|u#j1t(6SgYD$Nl3_4w~n8#x?Bwds4O`))8Hqqs{3^jB7R7#a<9=DTkQ&~}^Cl;l4JZG9XM z=|*}tI|ON2W1a8B(v}*S#8T;$&^-_6S?BCzgzvaVH)C+$Z!yK&Y$Zvk@K{#In$>d( zeRJ;?p1+@7EV9OOG2}{u<0U4+EgdVS&RCjAw##9 z7xMjHxXX$@+PdRvY<1YOI<(kRet+?Wnf6L=mE16jbj$m!?q)_L>*45SQsG(54;EaX zsOQtT{Nyl^B30=deojZ385F;dXuA{zN}}?mK5<+2_8Z&i+!GC-8Wd2&` zItG6-{v?EFYPgZQ8Ro8-i#unb&hA*7{tWc6c&n`=y(C-0G+st`F@A8{RQ`p(<}K3Y ztSyN%GD9+zo|QCr^j)69y*gFC`BxOaKKJ}w)Xm@e>{s|KHkw-77b|l^2_vmM%3Iye0hQ{WEJDP zZd`J`U)~jaR{pK~eE3}11osC8^o0cBNG9RH-kD}6sy-^4dlx@Gzs>#*2!B&8tdSyM zq2o-?NGVt`^1d?kRkuxD{`9Z?-&fa7EVwzaGZ&3>?`_{V0ZriZNn`gOJvVX@_GYlB zp&SiteBt68MYfQyi`9B+ll5CI!L3;4h%SEQfyAYTkNWPOqFFZK4tfTb&V4-;l!RZxesID~L`<1O)|#Z#WC z-;S(LgjN4|8jf&nJGJ~PU(wY*|E|>U;g3f)j`wX~=-D%|5{<7~*JM8(E+v|AiV8js zjxz$LjOr-E>LTu=^}`+1uEpyoa{SJ5X}}+BXWAqzeW1GL9+p^<@D6l}{qgPHpPN$p zj`O?Ej)oi;*Jylga1EXQBl1hr@_sH#=4VE;B$Q0xyX@B1XHBDM`#`v;#ZGpyC1if`rK3%b^D+NcaH$}n=DqJ5}w#K{+@Aei8rE~MX~bRx?im9LM~DFVNE*;fVL_;D#a zGWuJ~-muV;kW_jdZ@2)iqKs#mCAZzY|v z-R&+7sZfvROv4oVCrZ`ko>q+P%l_=#_2BkahV)Th346FX{Mc|%EWA}fAW>9UQr*<8 zWiUHj^;8JD@me#l^b{rjP5NxJDt@|{yWcqJWtQi08{ zP8|couvxw!2JJA8?r<;eQ!XzVz3CpQ(c%KWpOx|%W!&Xsk}bZ+CPP)dEp$FcJ^fig zzBXynG=vz#qNDBxHHFlCbh~2aQzIv;$gQvF5;M4MS>@nRarZ7O1x*|I=Ek^j&#t?j znIlguZEP$80Yvdvt7I`crBXybkT(U-a>&KT9ns0z1ip?_jSUyLcOtA-R`3zVkOK}g z$uqlLWOg+@s9nn?bNfW`!gbNtk{0P)H1A!QZU)!?WR&X(ekovdzCHk03ZMug;a7}G zaF(4t_PH*Wa${~~xR|0Xx5}G$=f`8%8DrUt+|M-L=iIx=9dz56Pkg&O_UktAq&MQ= z=WQSDI82mHL9|~uEqrGok0U51nU?3=7G1m-t=A!)p|-nW)UN6YK9?&W!h~O|31HO) zjJ>yCQIi-pevQMAE z^k!7F=BK_;@?5A1w=BnmyGKCm{EDnsooswi66WivUu7@7hdIWkS!yuXawqragvx+Vj2&8w$y9icjfgTb567*ta~pMQQ2QB##$wpS$5- z&JV|W;y5)hL8&Qej~=FGpfVq49UE$9Ve#|w!u-mb^6L6Z%EnrRtXEFP zw70)(E9~g$?dp5=df?6AYi_!cF=}|j6UUAitxe9$R8GTZt&4Cjlc?omVKUySWAuU#;L zH$@;8Azsiqa_ok7*;qcx+hl#Qw#ad>gHoQ8Cp-=L`-R;o-;&P$HWq-kkWwl7z0;{o>leV_6)rN%&$(w3?_uo5Mni&?B@M z+=0A02Z-3HGnCp!FeYP@AUb5Nj>CC1 zEF7%_r4cI8Pk=9u{@BmH=$(84WI)_d;p~kqz&HR6-yuR)qC}iX$05B8mvQP{+N z#=@PUr#sBnDEF5rtTn14S-#@&t6(>n?CrKj@5S_rRDwK^lxrM1g{0xR2jI)QR zYT4=&Htpxd+omN?BTa0$Sq%~kXC75c%5-6|@Gs&i6T5aQ&*_>Awf=*_zrXJ5_T-M9 z)nH84a~Y$&&wXaB>^GveD90Lo+--<%?yLHgV0# zme4`%oyd@9a@Rqm0lTp}I>CV@I}^BBw?E|7)xO40CH-;z3ZC#lKkL96?5YkiYAaR; z>!*McxrrO(&-#%Us);zd(LGv!wBJ_8n-{3O7k+b!9hWvyTf~%0C_00GVfqNGcl1y~ zVl&rQ;AyQBmQqr9!j~8UcdJ7R5I1vQ{{!ssDOqRKUk{j410tP~M7=ruOwi8l0wS@@ z;7e2$T{HC}$qlplBbPi!BLtUdK$1*2#k?NU<%y#koOfmZ*v~@BEGP%Os0+NM0Wknq zu`q=u6h>z}0;#V1Ne$7=B%0m5fW40)!(ig;&#JiLovhlhzc{^;lc$o=?h@4gAS{pd`*z2%$7N^Y(;K zXZE^DQQgx`HYqG7UIr zaB@w&E3rQ@Fv;wQ>>gkIe$u>CIE$q>-5BiY=< z@qEgKY<=g>;E$a@&BMjZ-$)@5VRw9}V`8c4kooku`!Pw0F}S!i#2)rR0xl^h3x1IG zxGBHdX$xjn+2S=&lr@oLD5Je;}`$D@I^nLP70CW zWgv8wu?xVvH+Wt=?U<6_xX7#BTq?)ssHp*W2SO5vwr)ERibn!-co1|N83oD?f+F}E zP^0_DDH)OhcVDvqRlLKn(*|gU`#n!F(n-k<* z@B7jG!XSL=*P>F+%s(1lSmhqXuOwDjq*WqT-O||GUN+n{);qn_uC-CQ-_F=ki~l%D zbub`?WnGw5J1{aPL0l2ezXxdpOdRm~J%|@g3)4nJ=YY>> zvU)Uxp!N`})>vp6;K7i;#6juD8lf8rP&J~&;!8vhLQDa&m3@&>0$eww#JH> zT)&pO%dUlo>yjZYq`9!443(kLqVTg+XaykQ$;oLDi0ni7$s^?Z(UPUokz*45iAi!^S^l$EBU&58D}4f$Seb=*}v@7$H9JTl4!10~qM*Z3ug$*aL^k0Bl! z4^COm6D#}zygKd_B#KS=(qo8OD^r4$l@$^n($Y83GAR^lDSQES!7Cy3@!$dVhL`Z6 zo}ywkZC=mC66_wh+`=_r#VNiuAq};BbbIAxUe+*fjP~`NRTaGvZ zLr)-SfER$(pFnZQDh)k>`Z3)&RyZ>o@G%J%jg=u-}< zT(t8*Ufz5cW^u-m`&36^D$iH06xg-~I?c(A=JDA8PY_AI5!z2q)D+c1T+k{!s@RBBBstJ;aIyRC6KN zwjRIiPIe37uP&52{cl?!KtI*3r)zW#73rUhAyFzhOSu)B!y+aOJxivwLtxVEe^J5 zMV`}B@O~?Fg!FayUqFReQ6k8Env9f=+U_x_KnkTG4NU& zR0Vk8;K%LIJX#SBdkGBy9(Y){1KHLlSXitfi*xU)3ymDdo@MW$q? zvrMct-gR|N)Xg+?jb#nkR-{n&y1Dx`mbIIyyZyzRS7UJ>Mr#II>acI$j#0<;&%UMk z&^I?Xw6q$B!Y*(Ap#Jgu0~Q6hy@t4P7@;G2W_a;6BuIgY@HsW$kK98T`XDiSYG;bl zyvFbGWRL#&mFrPDry$s*4|<1qSP1n)?9}G7Q4h@QxiaiYF7TCp2%&kAcl#jjZ7PNn`75r7eHn1F7h^~sW-ASyJ3Pr(U)!}3*+afvR_!51f? zcAyQ(L#Ci6&<2I4Wx7;7Ce85+4-ZX2mB>SR`!mFbz6xi2hV0B}YG^+?Caqj7bGjHm zzdHO|(_OIbLFMIIU3sp~z<@6#&1d4f!h}G*l4Q>Y0t)->{lHho&M&_H)k^C9u9d-; zBw{}PlxwqjNuIK7Q?i3;Q0?eN9Dx@$_yVzoi>0KCoyri?C`m^Qjaw@7TWX7nDto)q z85ftctRkQ_8sH^K;{$+5&NzX~!EgT8p$qx`6^aGXI{9^5r z6PWUH<&uxBGlQ+;;|t#xKK`0IVfeHo0#C!pYwm|uiauaJe;ZZ9^(qE2572#6lFId3 zkeWuZa&yAax%VWEW|q!H-LKjY_?03OOI7)XQUn8Z^fM*h`ckAqr+HzzY2>-^fNQ5A z4Nj)RccWCN-xr=VJbQSGOHfc^uL~#S5fnjb%+fbPVeA1j&LEkD4y-c+DS^wVh8L!K zzSVS=dU$f`4Ag}N!mzN(9CRPh1jvhXkn{K@|{BX*5Xbr6lhyH+`Ajb#u zCNu|xYg~~3Z$kw@$sDqSCh) z_Wb<#cDa7@hIgx?H~Xau?@Kn>qN)%n8=Ahhaf#?dFz`_{G^qaGHq1fu^857kzhT?U zzAtCq{-7aElSoJSoeL8_q)rmmNoivWy8Q0glRQU+68TXCW=x}S{oS5~)9aMes$mb! zMSd>watK?r+*T;nxtlJUFp?Ntw=~GDXtUGfG0s1j`@og(zS+KLBv;%hc7)8c4Yi^mGOi&Ae>e-0kOo+%;EFQ`8GJP^nCc5 zMTu*T*d6MoK8^TZiqs&aC4LDS4;FFF)rMp)e7W8_EiQkXH!dN$&mzjU{H@2&Q5)W8 z%U%k~5s$_>-1eWI$$H8*$H_I%l|P4>o#)}51Lk?3J+pJ+K?d>NTwE74-IwPh1WG)f ztwgT8S`IJu+9(uUFZ3=GxEt-gQ7Pyvr20L!y0psMy?PykuB-?Ms41_!fiyDEQZ-uJ zecPIHO&;6ZYSL12LCx|F&5aVlfzk-xbx%<>Oqu-Ww#u&Zoxj_2<7c^Mh!K>O^ztP% zMCDi-o+ATi9b&#FfRU#EOyR$vnZ%`Zows?*nV~v#Ke+lyy6q-?q5nv zeMECV!v;=$2K!`251;@OW9BTM^xq3lmMRgrbWn(S5p{1sQ31%YKbiAZ#f7RH1 zv4gsQh^b@f%^Oy1+nbTGx76?7ynjD|efMc$aHJdiabbFDV~%NM3=6+JLtqi5TiLD5 z?TVtNIbzjsf*gC|8F-9Zb%}xDnNK} zERcj37+4CBaB-}#^h_`Rd%eohFVM#run6fS;}@# zy1KL!bBC0jyC&5JrdP*+I%RN>ew_8>Sz&Q0Ibm^Lb#0Zamp>Bp+?;&v#I3EvY3!Vn zPr@;wh%)bEh*#*-*48So=Wl1mt3J}do3xvF+e$=D$^)!>&^A-bOaweFLtw$BcJxKl zz=tw~K=c57LzbY6pO2*e4S2#mvIJH1MKWHFV2K9uI?0amgvjH2@R9-nMk6xEunS21 zaV9^xKtOzc@Z=I@LJJl-C7jd=W5~N@H3%VSv@=|zN$3G1aONGSnThDn{_N)PT`fWf zQg|fqRYoy~~Lv6wf01^8UbO`=P>O#^XSTZq@(AXPT@JQZqeM{xUjdc;C zqc)?X8@#1MxXNctYA_?>q$3*LLIvFqob+~1$G4)*0Br6I&)K36U*>N`1m5N^bUn5kX*DpM`9vPjEN}C3IdQoa8kkiZnz_gpEtES>P#FcPwZ4A zQPezQwo0^39&t&Oq&9~4E)m-Jm~%nf9#+J*Bs+t?qCUao;FE&JG$i&VEm&`%Dc+g* z+^yH>Dm-aGkU*+N)RzgiNRr@rnV<%2q2S8Pgmc(t;t>{JxJWjT&|~B7X!&PhTN8 zLdG3pv4gL194S5TZ}N~6uMoV^fE0$jZ$zL(NI+z)DS;k~(L*tjSu6>Ejdz11TRJ*{;NmX*$b6|pVPKlG^l-+HDMM9g7DSkTL;k7@%0@A zG;Ft#deHvq%#6Lg0Y@$}&T@u8nqJ7~DRj1*&spH(;&NG-&0AjLTrX{Ix8? zO~?5CloJMS_aGGE84c0*4i;cfPr_q1O(LGyA=lq!Wz(^^_5OlHhx;3b{MGk>B0HAM z=|!MH;saU2mw-ss`N~B*i z>ht6FkE4!UzdfFb#B+t$V|Zn_CsY5ebiFfcQr)v9bINj zC}314l%oz9e=rIQ^Bm}2o)OcYY1a{7);jVGvUB<<%z z55e&gQx%6t@$qF9m9{SfCud#d>o=v_9c^Y~)$%Uq zRYRzOjkNc@@@#7D%1v_MWHjY;pf6s&|HRkuO#8E$Tb*J1vzL72ooZWe@lnmExDWRb z-&5qZ4a1YYG#m`RcFvu=JZULyQs-CquJCT9@s_{P@QK!AQysKg>nzY{xuT>M%3bC$ z9-LdCmJqSr-?y}@Wu`6oe&9%`?c>$r+OBZ%Tgrd;cV2f*vguV=*ZZz_eWi3RoiMrY z7{2=Cy_sxM>iaj+sap*OvN1BINiH||T=SIH-SHTg9Hn$aXzFZ#f==82Kv!wa+or|GoGAPS?a_ihBGX3TA zU!}E!mH%p-G%&OMG!CoZ3(QXclv?vH)VMTUfy#Kr;nj4onZL}k!0udTagIH@X~2^5 zr=w}OFN^wptA#ze*@ytT9WzqT#7#(s%E&xZicKtpS?Q5a#+;mtZm*?EdUnt}@l0J7am@sx#C%0IQ7{aCq5HGI1qQWw*B7+@UJm7T(H zBmL1!ai@c)94=ntbnv7u;{NE<&zI$vbnuPcLX~eB@U3m8y#1||+s^pscZ;gF-S*lK zx&OYgt>mWC4^)x1^6i(}~Z4GQQ8eI72)3YPH=hs z%ykteRqUnWKBK8#?^c z+T8Q{7OfPz;;>;ak4jbJfEB3){n2WL11)y?i@JFtBjgJg>+AaRG;H3fT+BXw#m4c3 zOqNT;?zMN*X;ww=XFPxR8S5*&FPgM7!|hB=1%7GVor%GfbojJg+ARp#)ia$z>rv!J zF74hSPe(RiPArIU)6aBeh%U;1c0|J;er}W5q;w~b>rra7Nq*d@%AUXQLzxj5dbGv0 zkowGwS0XpdBQLGX_O;M3_MhnR&#rmMOFwnf!J^d)sL%Pzo42arArWPoQC;|A4rxY9 zTjXT=2)t0$zeK0Ta?)r+S}Eib%~7a}70vFNv+Snox%f)jnfC2R;^CC>D!v!+f5O@M z<9lR;!d$K-{%wgBX!{MQq7tcJy({UZzos94SdE`Il<7!0ZK(dQ&cw}_LG}G1oknRK zdx>H0dA6^8CS?}@I^v2BJ-4vDN`iB(Ukna4JIre;l$Bw=5-p@!>|t>ok-cX$7-f~m zeErFo*?TqnDwRLDmO6g&y$eI|oKg6-%eOy@JzE*Hn|vMby+y-t@S9Pr_g(@@n1}WK zX!XlSSFU2>6CH)5ll&Ej9S_zg%CxXq|1`yh7Ig>CK-g?U!7H;znzWr2j4y<^2Xm}EWv9$ zpDPqt{5eMRm-bj9@Sj2et|p`T@C`jWNQwb(rV{v=qHc3u9$DXe5q6Bz{NMB}<}M0G zYLG!_KX@67bwGU8F50Ce***~990noIeLa&Xt-R|XwhH7|G zShDCdLJ6Qt5{OL*N-7OWD>>-$8SF(6f6WM6EF+h6mMf7$f;G9@@@KJgOV%*FEr+72 zGy6zxyc#1VAVVq%?I)ayo z$Pp2%(b4Wc;GA7de|7@QMEnYpKatQRm$f(O zHa=9)yn|K#R1;bguCFIZ0r@z1wVq%t4rp|!6FMdZ?>+=N0>nB_s}?1qRIxXf88qDR zv?yBI4qTK6({sMeTb%*JQ|k2ajRt}U8_=QFYp>1P(ZG8KDx7Ty;?8d*<&Rl?;^Ifa ztqlYVX+D%9>PA+_gRG9nIrezPGrWo(rn{&>M8KNVpvK>1T5hhkI(bhxm?Q1N z4jr1<0qZmpilyv{4Z3z>)mXZ`Jql;%1=|@JaY=nANX)^sQHsIgX4NA(cP2?PG84MECf({sN#gz zgxx@`hk6NCWA*e?y?ju4Rn+uQ(uR6T@62gL)_lXwS&c9VJy;p1ct-J}{K$QVvC8Kjos z>#uZ(nu}b8SzCvx12F6czTTqB!eo}nZE8A)$#qDSQ7XFN5dvVEJtXT}>URJY&9dF# zg5LFbtVNY_dtTM{y!tU0=Ey4D{PgVV-yZ0zVd;ut8I6I^z~Vh>G)2r4S_zaUh!I4A z-+lb0X(07JHIBl~t`^IJN%UqK5FDeH@`{$hp>JxA8 zuiU<*I&g+(co=+qj90QnfILN&lclif<>eGFI@`>;5{mPFwM<`-m0dC$M9N;rulTOi z(7hADzA36V!ViJYDJl+M8i2Vesu(}TSt&?*sFK4%-6!%&obmxn4jn+Arbfw8Ik!uG z`dNCQ&u(n_>{xttV5nI4wJZwn4WpDi4#L&cwZ)bxP(4ir90cghvM(^5p*A5k9AJHh znn3hoa&Uk%PpE*)g<1N=%;BFektK{fJt6!$_Dr%*ner+!;mBi~Qfps}Uyq1cd|~YF zo} z`h-Hb&a{`GE`gZR&0n}|$^<$YzltrC9 z+4}Y%N?&NvK-<~>CxG8nbT*ydP*g>-tR6lh8_?vSp|8p^_Aa$Sos=yO9k+bA4ao}Q z*5Am@k~Obnzq#F&(1L$Py6y9;Oo1K=4z@k#=r8$j`L^=s9`hDc4TW1SrAP5o$6^%4 z@0inxY>&dzsWo|}Ek=dCxrfm}n3y|)`ryZ0H5j!fkm%AN5=Q^wY5}Ja^ejKmm<^ zaN`Ye<-!HG-#6sPY>g%SBy8w$ES`lv#)fgT!eJA2=?`ipCe3_bbI0`sEH2&W3 z(0DZP(N3*dXQKMwSw_}oasQsOPZL*3OhTpTm2V4(8PYEHdv4{!#ZGbAr~UleRW|Wk zbn7-F$FyY=t=#Bgsbv>A#5BH2u5Q16>=llcXX1Y& z+=HlKSQvFgNDLq2K%`I>eroQOLZykYC~IC8^+O~qAgW--uHsQb2ZG~U>tg8X(8t76%o=1eSl=`3*y9Jw9mZ5eprM9J zATJqUj~Xh%V-^$`TKleP^*z%y9)zi(LWm9%B&(q^@@BhtlWy+71u}WWhwX(K?JfpbQb%*}oN`73?Lvr5 zprMJLg2P!=n&<_BY!}QP6}Z*8S64Y;#@BVy0Ww(8^{3U-j1Gk6{|?i;7WDuIHo9mZ zt{Tg!he~jY2y*5>?-y!GhRq0Z3nfK}=>Ye{LshGM5p+ZGuh;ueW^XJ|JB82kcR0vF(p_;sW8={UECkoXP2J&G#i)R-qgCHE7K+7DxPWTA%fp_Mp z27$(gSP~X^jKwKEe%2`KKi>|?J!mHku^#V1LkO@Ai(!xAit4~MY@Z`w-F5qfvfQT-rbp}UlHXO6LOEGi zR)&<-rdD5ktc3LkLN}-LAx`mfJgXe&gem;au8^_poV-z z4`~O1-?tTQt{LC7J{ZWvhx%h&(8D-K_L&QM7a55Im9FSp?i1L!QSGtA4GrFkEZ~Ob z{@1@yKa4WC@W*3*s3MHaLM-5q?kC0ajA%hshI0Oeo$BvuT5VB@e~Z1nKmNSurno^& zHXh{DM&u)&om8ltGJi;62VI`=n@Tl_zxK@k*XnJ%jT&nqd@}#{ai;IxiPLiv zBbGlb0=9wbLrQnSK~8d>$j>)IwXgi2T9G{ixrClrO$yD^>LhpMXwWCdA?rCH(@$Dgd)BAbLY$iw5 zJ?`uQ6~|CZ%59j>rphs(LJkIBj^SC1$kIKIp7~E9p)m~4oZKvpaP&EzDOo(HP`v(u z0UC*l@Mpn7VGd$jYqe%2Q#*qb&J6{mWB2DDO20t%x1H~wGnqQQ0 z!96V9cjJ=F!X;5pqTXsA1kh;oDX&mi-gXfADW9Lyf4ul&5_b;Gyp)4LqtMK*F znmVIodE=^M%IIme+2}_APC)rX6(EG~d*SU9*0UOs@3y!#bF+Un2v$8@`Sifct&44O5qD!4W^`FSsX@bkOsT}gx)^f(ZgfU08ZP?T;@QFP3gzFTK+{%gGm`VvqT zn&|?=I`x)Ks$3wS@6F5F`>5bY0_u(1!?-1)XXUw^FTHe7FyH9ve6&}$%`wYHv2EF5 zue?see9&0YOBds#h$UAOMs8XmcK{|*yjPEJ6N9#76Z z8IO20H66h{;V~_%_GoEgdG^KI)urc)t1{f5zi4uQ`||nQ?_Ynve$oB+zgIVsCOmfX zf;)xy6(Iw)BGeUM#7RZ?rsrn8E<$m>sTlZGjJn_f?m!8uLK%Z3RzKG%!#o%(sRW&c z5jqUKucAe;9BcC`I?Rplkl{vDooJP&WV2kC!gj8(tg3fw=E^#u5rGYWJ)H1gX1tG7W=8|sBe{ReF* zzRA=*O<~*Jm?_1`96awpmrzp@g>DE7gu{6U2A71gz(glruRR8uU8t{$0aNPuxc%`c zZpFBUt|s;tr4p`er$nJE{E|Vo;R=E7q`a&+uc-ry--uwK3w*xgX90DJ&qw*L`H_Way`4Dtu``p~e)7gqZwg*ik2E@q;f%YD>Ofrl? zt-;zPq(1)}nRmf1E>!{oq>R`0W^^!$b9te zKu&kLr3ly@KyiLAXuXLV64aS6cz+W;h9e+uY`k9IO%ef_Z1ggLh!e?W2T@l9c>%Fv zhtZRWE1R6Wq*Ey0(_S^(tETqkd-|K-<3AXSNPB{;*TW=TDv+z*uW*SJ{HXGqp%~US zBQBN1F+V?s-#Oq@(#&if;9S;oG z-6JN5#h-Lz2;_eq;=80wSh1t15G>{oNo;s-GzghBk6MSW{Gl5E+)oWsTHh-}2iNYQ ze)yqL=subTyRa(m;};m;#=+yLBtZtxU))(bV*FfArqG95B%xoBxHU78eT-xv;p%yr zhT+$)@gaIvkpPKi!L$W%&75MOi-@ul&5?Y8z1TGqT{2p8&73lzJdvBXIdKDu6tOK<#6+lu`%_Za~5c_!7l&6ZD*z7<|;VX7liG zNT7y;8O8t0ou>*}QZpzUcgA8ZJj36QAD=d(Coel^uNY8@P4D7yA|@(Dcmr{Q(s?uq=_q3x*DkV4`6QLs`t zl3!2Z1Q9RLm~A~!7q{^S)Fteg7TWdfbmIqP;rzSM>)e?A2adO;w#@E#d>a~lpYCm6 z?<3p_)`Y*W6&)Y=O=ZcyM7QIzui)qcnvWxGzZcL9GJ(j3SZQz3AaZOx1A!Ll*;R%$ zwfS|c?*2E4_?0~+`z@+1%AI}k0-J-n+;bw=aIdZ< zWmca_(&(YBf9GrF)_~5SrG&KP%#7^J%a^VsWh7oHxL8n} zmtIy;nO_BJu2$DHHZ{jKGF#eO)T=u6%34)>WV>%94RrVRU2J9Q4zY%B4eh(vF@9%U zub-ejeEZ&Dr@Hww>&FWtjK}7T#n)zU_pPm&x?0HXTiO4~+Z+0B^V2!-(7#j1*Bq^7 zN774TqknD+O0Z4siW6f=M5~{Qw&tmVxuYnc zkYsd9Ru69h zP7z9zhPP8?4?jM=Yrbb!r*G_*DP^Mis5m#+A@iNK@?ZD-ccEVU;knDNo=C;|!24_HmPOTm zj{-FgU*uCNYFlv)G&%fpR;eY>U@l3It5)KGbcXZ1(o>!ht5D^Y?{lI3J;}xUwd`JB zIWz0y>rR~vH!sfAcY5-G>!nZ9(wRQ1gSSllpDVpEvd{Q29kb3b^flRgrFP#r$Isu; z-M>VMPZ`PO4hrHw4NueKMPkzf7bLF;&aA|Xg|;6JsB6|QzZjG8T{JlAg>`C>4~#8vkDKcw*Vk?

H>Zqx}K`h4Vgf)Lq35g8bFYKW{NuX$^cKDB^SMcP#C_&q)R6 zP~S%N{jaW;IowshcpBHtwS6YG<`Vq+JhxZ*3aMfBM&~o)mMSe*o%Pz$t-_T9quS9b z2UWgvE9={NSzgI@bE$3343Zah(w%njUfN2_>Gg3ezhhMDY+Xkv&71al*4WbX`M`X1DMswpwzW`*Eu7MD5{`TF=vM)~_->Wrb)oEKo1|rG=+_W_mA$Sv zQro$&S^uwHroQqg60%;?7yi4V`m5jVZ!_sKuji%*Mc=ES7XOqQW<2^Ap7XZO8ZB=N zzxv}-&hdY(ZHBhVAv#{pYp$D-1*d2NO|f?>3YzjY^#qRWnn8U0UW4O45fib75q1`= zIS)Q*f2$?KmeuDqI}Z2@3)$3NU5mc)b*i&=ul@|H{BVpt#7b69xx&|Xjjbz|dwg&o z{6-~$PqAR_*dr5(jo~UIP5o_$-`-Vmja_=G9d*$4z-QOBql1lt?2FG%fV`cgvc=?G zc83s&eEXgGXHK2})e+n>8f$U)bL@P)@uHsb=*LrUQaNnxr1dxxgX65lOV%W(DD~4H z<9pMt%-vO}X#2Gi+{@*b5v^F+7T4_Xi?3)}-)bnaK*fjZCfRUzzxE+P9&3y2+!wv9 zZGHbfkk=Zg^TMVRzcmde|0$pNy(u)3|6}jPaBBf80US^%?!V-xo8z<@)@>eJ%B3YN znC%rvj6r+W;7|Zm$~o{M`OHm)hm* z`xTK=+h9M2`&5CNVMUFz*T*z*2i&8V%c`ZOTHB#Xc2wi`YrV%+s)2WT4vDE-4Q?~) z5IkKhR%?+wRJj_ytx!iiB4bJBLw~$iRArG<`vI#U&knKUx)!&EerZeiU5c?ADtftg zTGiz>!RMH$jJtjThg?n5IbGX%e(fLp*YDL|D&u-&JGP;v=(hN|JdzCm*ELo7zXq#4 z|F6O7t(I$%JHK!N?oWu4kYVW0?RH6X>;G>{H3~i*AC`c3P(L9O2p1VJf1vibgCwix z6T*SOL9Cl!5S+Qm2eT$N(IlMu$lCD-xx<0`Nn%;}FD;xHAB=NG2gz7AjGs&#DHzUt zWKB@8d$=7KDCEIT$>?NPM^)7Kwm1J7YBPR}cT9gtu=~bO1PyqOzR@Yo+Tr5`w0SXk z4aMX$ozb?BO5aX5kKP{SkSOd?7i-_LL*Gn6=8C-?FW-!FMsirg$vo!8wd5K)NZ`e^ zRe9xv%pyiUMWG5GA8^f@S7@h-H>BD2s_F-ZD%iV@-yeH9oOik+JNdVGE?D5jb|8xw zi%!L;xEv@;6UCHZVT8lkJ{&HA7~$vsnYuJ{2p@7|5(Kw{V;JTrB+zPlTd1x-t}BGV z7CRSI$!MDuY&;B}Vwkfy_cAX8Ax$R8+_liNCrt4n62`o1TS*)=J=0~~++M2bBP%Wp zqP&kZukFU2fnS&TgDaQF2F?&6gnm)fvxoq8^I_65LRcL4ZcoTb;DX9t29q0OVnk<# zDt}lUcjx}J0{hnxZq&?&sVE|k^5WjOXnKoJ)<9Di2gC1N4przZh zf|C`u2zbhe$;+j{lvcd?wh=CeH()oXm^QGFC+wQcZ;l8J$-N6IFK$;&@C%nNK z`VRb_KKn?Npx4t~N_NJSKyg2%LjLzVtN)b{~u4v0~zw za--A$Zs#b2g%E=A+b}7EF~q{Gv#ux@7RooY`^(hSSyhBI-&-&Iv15Rn2dKzmVp@CY zsf!YUd%l00H0(B#*0R9B11dQb3ysS0qvFs`3tq#`2-P>A4$$X{o=t%S!@ry z1q{k!fe48csL5eQ@FL4!4&%g?cENFZOcLjfXUJpexNR(Jivo5Srp3ZS?~j|p2^%kO zTCN^vD%=HWikPYVBCfo2@a9*~i;^9?=!(SFIG(4+V#6_rmL3o%O};!J0X`{W z2T@xFQGbIh`+Fie+?m104-P6}dr(Riyc5z!_I5I*AnXD_Z8iQ z#MJ>+8FS#xL=5PK`?T2>>B(eH5TcA#!rlN=!EEuPn7aygkk1Pi+E_MN)lAu^!Ti{s zmTX}GhE*^d_$Z*NV&?F6;HZiz;5_&kRqPdk3xbYqlyRC7Aza`c8^Buza#~mb{-x8k zFe{vQ3!Z3UmiUmIclBOjCtufljj{GDRc*`%Z?3Yk^ssoMnig@?Iom&*v=~^ZQhe`2 zU$0Vhrs3bkKN*}?I8Nz#Ls4?Mg=5vK6!~yIGT32=X>cRZlBw4#8Sf#O4bI?3rU)_u zN)0h(aWlh(DB(z>qc`X`V*36XpEFTzJS*!hUmz#X28)JRJ+38v$p|Y)@E((f2_}so z1mIwT9fA!&y$NQA>zT8D{rC7EZG?fnN0=~6-xQPiFPOWSVFSp2b55e>m;(%lv4Sly zHH1Kia7Kw0R)rv15Q|}p-G`Bv5a8X51yZabc-pI? zHv1+zZjiw5y;vxxE%b0AW`Z9av%^jx+aa)Mhv~#Z*+gsQylQ64T4Cok?i+f+Pq>)t zU18t*%EGMF#4_(zofuU^N;%orQi!|JDYfjX=QE}D!5=9a-sLH#dbJ(hbHQSYqt(-v zjWO0Yquco-+>L?^4TC}xy;9SdF&P@}auJ#Gaq@)pT!Z}lz`$YxMC2qAAp((5S6)Np z+rlS?%T@+;aduy4^(L^C61bcLbJ&F?gQdm&BNCu>A0~%40jKw2uG<2Y%suNG9XkAO z3-CAPDXNWzn3SxI32Sd1%QF2i{hm+9%kw66A*)Nd^yu`S)W_C3?$;xpFOqD|^7v&6STjwd!u z=765YS{sRBERUmD4?%(r%Z-wgS9@v#8Yw=8kGEnY%74bMr&0LYU59|KFSbXXM@^vy z*VQ%43&V1WS>yS$8^sFwk}3H-`GGo=XZMB{{e=D}52}1I{Vj?DQY^{ZwWXIuzn3<- z$*sBUcmhF;$3E=UAdw7y_+lnFrnl7(JB^ZCU#C3yF#kS$Wwv~mumyD{NPtv-?5P+J(=YUO)~|y6N6#AzeXYOD+s%ck5i`wV+lC=jD_Gk4yLnuLowg~1jOlK*dQ;0 zcloBg5CP_1{d)-b7>3>B_krxk8Fmx~k<5U}gLXm?mk+ofj+G$@CkQ=(N%Ffwd*^-Z z@|Y*|Yxm_b_v!c}YM}H4c1K-<9d1*<*W+#8iX7KuLP2~zH062YVqjr=u;v{$B5)hg za_lP%>|bm&i>oJs%MqA7K@Cy^JrP(Q&j|<$2}GRhUuFm6_}EFThr=J%@+YxGPhogx znUl3W3VR95urFVN>?MZ{7ujAQnS<7?M4k^Gm29r?IHgm6O zFtn$h)vycWi}Sm>E=*SXd5HWpDKh_hWZl!d*B7)Ylh`~+Fm-E%go z;h;PQtKCEH?1b08QtkD_Ng`rjb7@a)uG}-C*q_dpZx5NSIGmR3AHO%&AiaUR!P>(y z_H(ID?%Hu=(2ne{V|<;<3s=J%Wc$jv>e225>?MIKXR&+&4||ZMc@7gn5FLnR9gF=Y zAUmnR`~oHoOSAkhVB-iLg7q(AE0kD>A(Ogv8LGAJUKP0(=APYo?#^4|hMIdL6u$5Q z+4ZmD#N)~{yx(PceT=K_yBrLUsaR>?>i^g45aDROgQtvZrcatSmBEWk!WF7!0~3?Va&M9g3iT7@<7E3%Q+$n>1?h7KcW z>N@1Z#Mhi!HP%cKW)PJQG(0xPiGoYj*r04E?96~YryCWA8%BONjhua784dC?q!3&j zhp?duZ4`|oV5A0<#W(T08cc@(g+YK`i|NJ&Yx#=BwRe7tkp$*Get$8P+BXzgq0gE1 z_N1Oq#2IZ)t_0O&X4?5nCu1Vg2su8lt+gk8DF|fB8 zlYlu`LCybVdrl(j@-@r=L5A?|VHs7%amK zBST?Ndrktqe#`*Xc=fgR*E1NwB*{Ws{wD`w`Y{PTp3cLir?bUQxoUT798G<3vIdzQ z7pgh-{hq}jmH2MQZzGxD+1~h-9jf;vF-xiaOE!c<^5A|yCPq1tU-^XpDlz%1B3SRo zwjg_$fI5H)<7-Y~06TyS(MJzpdw3)$Dm;?fLl=J0E@*p-u{~y4d$V8{+bv1 zR3OVJ4#TB5*w`3?aRQS;>DW zmRU!Jh}4`!ZXH>t`5j*VSL{E)f7{X^WK zt@0VxXVeM_{3v9G8Tr8Dci)N2v@^*93^eS(hUEO`n<-wI> zC-b+IteWf2PDY;oiU7SiY^!w_38Jq!?uvfU`9D3_@peKNiUk+UKzQ$SnxO&SMU! z;=<4Smgm1*J(9VoD24k%y`0DBWC@X9zhAyQO9hp5x06VvRn> zPQerc0}6e1=_5qN>)4l=BtnKjz)QSj69VZk@oHZHXfI%*_;0ogm>KRzoUwq(<14mv z0WSeW!Sn*AK$5`hC?p8Lul}okf!r%hpWq0Ig2S({E%?90yutzy2m`NQVNUoHjTbR{ zJQAcYVg?f2%$Ak43&iqdvT5tdZ?%Vu%Dd87YNVsQ`j{x|)gt!$KR=iGWz3L(52*{S z;sC?;tmI0qLdC)c)wy0x3EbCZZd>WQKN8n>XpYc$`OUp30Y(Z}6l*CBC->(xzl|V1 zuxOT{KmEBi@yK{0IPw+~Q9;6ZjwoAic-W z69nM#9QQ_V|I!cIEWi#?gP@5d2j2; z?sSxO0$M(zZVH|mGkU3z%5R4S`Gk@r5mPyh{ z{LsdhVRDn@M_?K1{P>`E;5t6U$NPVJnXUVY~EKH$T;gYU+dkKW$` zKEt21bWZ*+y@>kkvhLd>3?~9d@6%ly9F;rC@TTA3oP^&+HhBFNI?goi;NGTW`9vD(&Bs|V(1 z)I)Q}{SKa*s9BzmA5IvJp1R&zgeY+Lclb><{L9vq+NtWZ5dCb#>sfKa8Qetk2RTRAT#u_G>D!BBtS!Nf7I`!?jJheKm?R%>E zJ@>M0ZRJVnIhUn*Us2PXf`RE%4IchYZgz8fRrIY!C-TnSQ0`qjAl;o?+S)8QH+{ZlGqd)H#dliB=lZYv;~rNh(Zf-T8XG0O4y~P>r4~>yVVnJw!PCn3df-Yk8{65 zb$m_#_uPUe5pO*tDa*}wS~UM(fu&~xXRheMV2Rj@K#3sw2d|@BPSo6e6ptNCa81U>TcywIr-E}Qp1oyOI-16J z$(->PtZ%s7(4Fg(<4TW0bL6zzoh2N*&zQB~o!W)N?+IdIvi@~^Gv*qze%CquJJmYFl$6c)Q7_DI3uuF-N1FK6;!e4qTCP zrQ4_wm)8@P&YcilW3Tk?F!XIqH=;l;r)v0H-`J}zoL4VYex(lA&+z+f4=C=3Wi1o?}fp4WfCSzs;}$Qt%Kd}P&U69 ze|(@Allc}d2y^aHYnB#yxa8sg{iNA?-2Fq<7liz0%#}mTgR?h#U6Sg$ZuY(B2 zu+X2(q%Ff6eTQG|mHDddB-Q0R8t8h!$C4+xxvGA+_(N0P#(jyvlRtM^52=~d4U=wM ztd=fF)QQ~{Q~mF+kDil98~WyVvf%VcPt>=tQ>zt=2?0_2!Uw+;ed##N*yMeEZA&^a ze+_e14^P<|Yryw7|Mr*?dHwpHuIgsXleT2fHKDz6o|<9Q@T%9{DPWh(vh5UV2VmRDmg|BT-j+sJ>X6^Eo@_k9&+%?+Gb#bqycXoX{B&+|xUZLG$hv>bXh>S{yZD;j( zT~w`O)`Z&E_IU>$BjQ{j?$MJWX~&-JF};AD zuH~AQ)VDa^<#hhNxX<_BW+8_B{U1haY+Ob9SN3w(POHTh*eE_J+uf8?a)Gd3wygN# zsGeQdykJH0H^I95sW#!I&jqHUD~~)hQ_mIsoV9=mpY7|$*g+vKwIDXUBBt3 zPG_6KpX0)cwzp#i&b*xz^y|0hYZ<$$DFsm+;M* z-ET`CK(q6=khQZ9@5SL! zojpiqXqlG0j>&ZT$0Kd4R>oV!uYPzR5?HeRaIyN@tYoxidxuC}-b8!OpT94Ra(a)L z`U`I6{V}0)-cFv2RhIqgQF-xjL-Y49C85tWLgsbYH@ki3gsc}3MYqqXz?f0k`s5Dv zbSnH~zF5Dih{RQYOh!JUqIXO`C@*6w`SR=z)C z_szBVuP?dJ6_1sM+_=;v*70iF!`zUry*rP0nVe}1vfpV?;Zz;_mt9_J?1G=iO0T6A zbwqu?8P)Ob8<&dm+YI?>#m28mN45EdrT8sE^jA&@{VJ~bpz-s?zXZ$b_Ri9=$v!psU>dWf2uI!M| zS8gMTPh>W8YhvENFNht`x48E6*EfsVc|H&8@!qwgyYI_~Jk~$E@a?eAZkpzu@aHoz z20~|Dmp!f!Ev`O3Fzw0Becfgou&t`}uY0}k@|{3aea9A(o35qce);3>rwOJPcC_5_ zbYXj%wwo3oy5RLa%D}+Sur6>^kUZ$+_4&|#O08F(0PWt^Xl2sw)3JVscIBTKnh7`d zJz=vP&A07X3oH8T0Uze1$Ie}6|4JK`9z4>YIbL%|;&$!1ZyiDJ!aU`bj)za#fHMwnpEwyAobsD-xORfWf$zYLm9Q)_Q(Sky zXr4l5+w}q{7HrR!YT02c`}`!8H~!}n11>DV zhu%MN;H*U>wk0OY8Jt^6=-+R&|A5zpR{~eAd##>4aDl_cd|PBiWb`2eFJ{@T(^r2Q z`9z*8`L^S)fro~H-L5I4%v1Y%YZDVVT{*hVzmWEAPdvBn@^KqW&&($j%5C#XndI*> zQL!RnGtTM37lO;dg*9PF8v6fco&SGo=$>>is0~YS21+{YH*_U|vlLn!EXn#Gg{H#E zA%U3|6M#A&&48~MvQ(U102!@A99R(99-_8BR?hljvW|P(e-&qcc~knb5I?urOVPrV zsGhKR>n|iLh}sI5Tx)PL_?@Z%iF?A|4*xES{e2bv%}Q?Pz^yXDsuV52jEf0zmHpbJ zLWt>N2qTPSm0hM5(_42JDdHcVbCL@xUvg5*AS>+t7uhNlks@Q{tLYLRr0&&mK)LJP zhk-J;_XZ%FPV=&kD%0ZB+8)E$dEmglBX0iw-un(kTs^6nrbr-N7Pw0maQ>P_W(yby z2=vv~Jy9IHLB9L=xO13t8S`-3sh=|s8Wp`fZW1MC{;2{JX zAzon+C_@vMdq%qM>=)0l@v+Eae47f}g&5^$P3%nXTEG?5sRkK=|pbnp%lFZXi2r`{AVuN3Sa*xkn!HG>>I>EQARVY|UwcZw z$?bHQEXv>&0y1*6D0#y&>@nFTZZfFIb;FMIHG~qp(giYpW@gr%02;WjCc1X`QeZYf6!pOywkc z>EywRB;c)2^U+?Gek8i_OqpUM<{E8Om}(Q<8`SW-M_IM#jYW1A#I!%Lz5UPBoOtWp z$+Y{~CyUwP;HN$IG|@h%M<2chzF-I4#tvOSwqem z0rK(Dp)sXnqb`QBk6eQ*rBY*ioxFIcx25~wTi@v=2Y4#6ZFsE0W z!7MH#nmCN`BS2w0?K~k2f?2iOX__4TOVFWJC`<-&z7D$v;M3HJruN`1gBB^&3JYa% z<2#q7m3G}8qR^$F$;7u_;EX9Po}VKuO=cm@>%!&F<%l?4-%Uh=3V6(DF*uP3lIsy< z<%3K!T0Dh&BaOTOIekhb1Myw7SRw>@I)l<(w7>8wDB4ZCg!jfJfr>fpxBypc+On5W zDDC=zHc0ZBLZo%cX9v)1PCLmL0E;g`bE^76W&PspevL*%h^1>mQzdP|l5w|V#X?fb zX!b|3uwdz@O$)8omw&=uuNyz{ftWqCcqGLVZ0@0LLCEnyaxbkx8sYrAd!E3)W|1!` zL$ROXEQ4f}cJi^kA3pn%F}acOa{;{FOS=Li;Jh78m4|?Q*yF_MCo3`d6aig!v}|7K z$qU}Utxiwm>?C8pz;Pcf6^9C6?xWS?@iE1orox3o^PMiVIyjnj*p)Vh3zu^ORd-q# z-r_5Er+tC(K5Lc-?KdLJ$+~oeHiZ+5vn9N;!;+#%YOMA!o(NN94h9ikc%U8|_Uf1m zI|Hh`XyGsy5b~zY!qVWAH_eHl?45vKddE?qKKe7l6DCH1k@;+D&96SilS}fCrKDE zzc5K$(0RTrx}FjY;oY5tC|ZjMCmZ^_%!SFTbk^E)ZNHtgzT-f!sLfVmU=vM~f)hbd zH0?6C5^QXZIqoxkEoTZyF|-a*71Mq14QD;>tpEGv&qWy1=Qn(DIGXdec^G&UL(4&M z0*(J!TA37ylURYgpRBPVUQVgWljF5{z~osksO9?Cu8&irpC zpeKod5X`(Lop-C`+^z|)zoc_@0C!p7oeyIrOy9p9H*CCqy+}OsF&t4;#E_#Zgj1z0 z!Li7>2t=rFyFPA`90uPj|QI2y%_iq2|?#!2prly{V#GsB<2JDiw=+@}HY zOj?oLPU2vv)};uI@v9pAG#r2{&TxF%ePD)cUs*GKZF56? zSVmKBK#nwo97ly~e4bf9Og=hsqi|D&Fq(~#rJQ;@ntVj7YLZ>Gb_tjCx)C4&9G4Zl z5hVgV1eZL!5$XYWmnXat^Z^vN9K8`;0RafNdcF~|0RlKMw=TdDJ`gKNFp?!#1_^np zqlzR49K*AGB)Oc&Jc8$bJ)01>(*=1(TF*FZ(v~-$u9laV&=Dp9aF@Q&5gHLDSW3i*^wP`m+8Pam{1(1M>VidNjF94^jXJH2JmK zcEOX8-0g}km)O`5$qNM-vbV$i+SHC<0hg@V5t|4L07e0jWC1vrPudae0u2DSJ=+m6 z3mzm$a*!lankbsI#|W3Bn9l5Ls;#~2sY?R}alr&fmyG5SECF$sx#kg5DHH%59nB$K zZEfulkgd&~?akc{{yiQZPJUj#t^R%8?*0z{o)A3`T_2Y<=Mmup9RPus8R!wZ0-6W6 z)#wqG0Rqebmu%`08v!1di0Too0pYhc>k-cZ0YbM1?Gg6`0>c5f|M3x21pxrJRQC}a z1s{-zNJ5gyfg9u&>rx8!2`D){t<`)1P;If2e+yJ5e@_cAOHZjx&sng0s=Gyw-yExRs#YB z0=I4n64?O;W&j940Th=_3lhT(06+ljLJGd|O^J8OUh;Bx`=vpoMZ zLIboyr*l6qmjwWIO6c4R$S2J)600Ng54-zv0 z1D8q<5;6_~*tdS8H+b9kf$#Tv7nh0;5_c#Az{^&X?aHh-EDY{O3~RSGP3mgz;^L*1 zlh8WY@G@@!fO!efc|ZWSDG(A80s005Ux6A~f;3zu;d5;8!*fLErnYFed=t5;8_M0sUZw5-lr zwCWIH0;O;@-0EC{jd|(0NAOw>WzE&^*8DIbgU;!DI z2`3VHBc1??PVWMM<3`{B8Gr@WE$L=p4iLcsfF9ief8EU!AYs1&m!&5Xf&m_vC@2z5 z2Z1;yBR2+RmwYG^I7b~=s1ue#YOzTG9DqcjAQvR)1r%5~_y}wOq|EVItn?uOAOzAm zEPT0Tig*NgbaZfPie}Y#04Ta~s&?=uu#Z>OG*L? z1p-9V)P@322oW-r!a*Mk3HTHcpoc>NnhQZb{Uuc@0GFjH5`qclAYi!wQ~>}iw=gOa z3IqWYmpd*Jg#i|q!7dUc0ssNG=PnYi0s&i>mN627EC`qc@e@$|;Tu2s$2UIlkKcUd zL%;dMUq1DR!GY)};QH53!SyH6{p^FE1Ghvn5;F`21fEEaW*N7AJ`&*q0_H)tU_laQ z0T3SmEC2ui0Kfwr0ssa7U?-QsF#$7|A5Z}ql1CSpPf!5{mu;j0iVs7I97(dI$&)Bk z|El!jp_5QKD+6j16qBJ@6Ms);)2dy|wyoQ@aO29IOE)Llx_I;I-OIPH-@kwZ%e*VN zu;Igq6DwZKIIgG0kRwZ;Ou4e<#Dp(v-pskP=g**fW)4ldwCU5RQ#*dFy0z=quw%>q z$$GZ!+qiSb@87_K3qMwnlmH_y(!yZ7&X zw}T%~zP$Ob;?JvJ&z@?4_weJ(pHIKO{rmXy>)+3Rf7MRy1t{QvO~Kbv00$=M0sn#v zD#+l24o2AEgb-3FVTBl8sG)@%X4qkZ@BIfLfh3k_;!X?-7a~pRo#^6=0j{WGii1%H z5Ot=SeD>w z0toE+rf41r zaHx^8DuC*$8(eziOs;xRzy<|$Dr~2K-X`dXHIb@-0PjJH>U$2b`jUau!bD^LhzLBJ zB?7A^`d$I0YU&cT)Ak5%0mTlhZj$NFb}X_o1yCruE0ilS_*}akWJZ&DM?t;UjrazE5OUoa*Ou2&wuWTugklVP4C%rM!WW?1pk`z z(SQqSCASs(9YC*H#@g_K2UmPEsx2wIcH%9a`R~%P#*DaBB-GS(CN_axGXJ!!rkrP) zzcQOT+X^R)UbsJ;t4 ztL*tR&b{p|QQN-=g)4fU3wQ{Gk(Ka;E=VctU`xAL;SyD-rV+|-j*^!HDkiVg`6_7W z@|)Tms6Cpgje&$}A5$P@s6#=mTx1#(Td~*B7p{HstsQ1X_IQy!I-DG!$l5Q_Hx+LEEP2W=CKNPX#3TB za;3CbDF9mNLKO411{7{lPh_Ezq5e?CJjtz5T88Uh!_M_Ip#70qEL51Qc-BYfxzSrT zTz_Mu{xvqB@lJ}EY|jF{C%ssWQDFe%AfZwutHT}dK>gZaqH@Kp!v%mp}; zHIPw`gNngkNIMq6izWoLm96Myy33U+S|oGhF_CGuWkzdpFPW4uZB?|EZIF)z%a|e2 zc*jh7(>!4!-k!46!$u)&XxfWez1SE*RDZ^CS;WH^vt*?`P(~_JwZx~K5G55rr4JJ~ z8Q>V32CxSukBcrj=*29^H0@1oTFD#V#2PwLrjc@Ky!@s{xwFXv$p6iX8?5IT1(_mT z7Oi%{QX}y`c(4!F&WSY3XB-igORxO%5-56=nCz0JJz1`DESeDdVp1j}iD08h{eMo< zE;%tQX78K=W2y(V_d@B(X+f8y>dq8p)u&x`s(C_QM!A;9UncdeXw9ile0o%0LMetk zan_AAu-({Y-L+V+#rC$u8fOVpq0TKBsD*v+nXKNa2SdUuKq z+F5wVE8g;w_q^s!FM8Lj-uANhz3z>#P({Sp@7njiY0)Eo_sid`bhp0%4h-;7{wv@D z8(1{@-L8{i-5!4qo-a|&df*b97$^ijv5Hlk;uX8tz%72UjQbno8Qa*tHNLTqnVaJs z`?$9~{;`l%tKT6Tna4$55C^2%OH5rWMFui2dY_EPBU@QLNaBD5wk&~+IuxP%+Sxo0 z$Hh^R5@Cu$See!QG&T#2&0o%wn)?{md8+xiSI%>ATBLtv324C2U5<(N3YIO=L+>FN~u0D$K50cZrf({Ztnm^Sm92|6`Z zYnpGob9K}XN7X^I8F}-JRhseK>0ZyKMWFt(pa1N|dQA?CbT%`=2B<=Us=CxzUGufV z*GDIMmC=6=b@irw&28iW`_ICbzySnJX;`EA(2;{0!VsNi?a|s|4^{P`l}$=a(=uz@ z?zX=7tX~csK-hm4S2X85s;Ie};PI|@!O*N}s9wxk)UF}l&RytOxq06hA5N0{yk+xw zids;P&zyEfYB|w}sU{b!wGub6rc$XU=nelbEP)+Ii21 zzNsJ+{pfv4GSdH-zA>XS{pnM3I@G5wB&k#V>Niq4*0)Y2t8@M91Cn}~5I1(9gZ=E$ zar%-wIW8>1#N9917ux5p@t^yIfZj`Jp?t=m3!b!UbPxP)f}E{Hv9MJnl;+yRdA#94 zQ}BO~w@r|Lbvkmou~owZ)>J21OTb6|^Rbycz0l~y#c|7{&_m-sc@6s3M@H*y~b2IEO}2V-jRR_~uYBktnFcG;j8WAQp&%IEaK;h=zEG zh?t0qxQL9{i1ncqb~tf0gfh1SMU#KxJ}h%LycA{d)rs=;iR49capH-jSYDzSBB)r3 zs)&lG2w(rH2#TlJim8d#jn24?!AOnMc#YDSjn?>!u(*t?=!xFQjjrg7-`I=%S2=cv6WD(ihs*fx=_iF5kZJLm5UH412O=30|Nfp2W$Xf=QlJlAHjgo%aZz&-I;JsgBdxnMuK%Xd<6D zMW6rbIiQ{~osK!3tI3tvshrDcpZ7T+{>c^wiWB?EpGXm*&9$Hms*?^HS+ltroN1xc zvY!cRm*#1dxLKdTnVATB6CnzoBXsFHClJQ^>Ix+4(@s)7Th z|CGQMs@htXdYZAyk0bh~nHr}n=ct@InJBuc1e&KnS*uoht4s=gNAaq4%Bro3rQswnxEFfsAid^J%OyWxfjYRsjxY#C5fYuQJV)+tk!=boVYqJ*2)vu3Zm<(j@yb_ zL+Y)c(XO%zlqpiCF+r^}X>)UW9^#4@?+UL{`l~T=8IRc#_zDyHI->o09@0t|ks4ae zs!8%nn-wdVFdD7Yxv=QkutNf)5F4#^j)nE)%YuQjpkak1G7vw*2&SURmdJFYGJ6E9mCoN2TT$*cc_ zx)o77uT*QWTYI6Zsj&~Mw5RG4AgiTayBL`gws9e}%0;v$Te6Iiw&k<5!m6oCdyZK< z8N)gkGdr|ys~&mF8G-AW2x_-ZJGOVLtKc-Ia?yXcemkjbO0dtWuVqWQ4^p;7F}RRH zq9NOW)Gxur`ZmW!~M`<1JE7$GX0 zoolt8x+c3js-a66U|XtWOS!nKwv{=&hGDCG>$%wpxuOfVi&47Jdb(4qxIYWMYx}y3 z;HrPl8?MExx7fS03mc-`J08(WwT|1i11r0cOBvWJaL0?FbNjR{xwx(Sz0$j(|6`%K zIa7}Szcfm{%{serTfdiUxqEB2y@|B_Yf}#lywfYennb{p zTf2u#tsc<9x~mrHY8Va7mTGl|S4&qms~CT~yTEp0!OOd{8JxL%%CD6{w>H(n?+d$s z>#xL{7Xo~&I-J6_tHRAYno8Oj8jGauQpAi9yVXm@H_X8%?8Nn(vYj~z#^jpDMzTN<9H8;L#c|ukQai`@+q6DPr`vxk zv#f>2T#>s?g2mx`#NZSeKpeDQti55(xIVm`6Z*S9k+6MAolhdkY)r{Rg2VqV3dbxr z8HfC)uWY!T44a(nzfdd6Sev_~yvB*p#uV(rEgZp-Ri~+tiQf2#}>TF zu#C0sscudcp>9Wn-7R-B~j_l6% z2o(N|n#Nj(Gfczti?$R^&AhA7@;t>Z3zMaFycheg>T0+c?U=r6(PccYeJp>?h@iz2 z%oql}ww58%BJIseL6L~;7CC(rh^w@=In?c0wwZ#eG<^s*J;Jm*x~xnT|2!?vb_|mr z&CHAn7f5}jqP)?$(}LolmX4H>->Mqg|TE(4c8PZ*G;U!Op(>&yvKQ66niZbh^wQG?a$#U z*pOVPEzt#T+%Egw{=L=WtrTEg)^r@ybINO+ z9oT?crhiJ=C=TBj-PC`E@YKIe#e;nn_`JXH+~If~#pAu=*^9j{dE@=f-30#7vb@=2 zs=_c{2r{lC6)v{9oZCxJ_zp& ztOYIBP;uGG&EZw<-p35$V6NpJXVrxJ<#2w$BR%F1-PZe=-e7-huFc|Ape?b!?c{CV z=U!_*LZ?@9KIedq<8}_oBwFNdjww=p*F^5vQ0C!)sF|91a|mz%|EGQcpe6tZ!0KG~ z>aU*WY7Wxi@#JFboSPndlTPW5?l~?=&d==Fglpot9^qnJ)$oBusIKbFuIj1I?64l~ zq9$(3-t5jEo!oyNP`w(X+D+P(PLsv%IZ|t`y#DR#ijtbGu;k9uRH@Rpoa-2!q-%#o z%Kq%o4(p&M?OO(F{Lbu8)9llE0RDFBR?4H6!`n{X1j)Zs5Dl>(uv_J*??g zUe_Lza}O>brf%)eE^b>EZqW|y)?V`dcJigVGs8-)|3ZJ~vMvY;@2^j8?t)3~m5I>h zF5Q;?=!0$XJFeHS<0-&cKAcJK(9Y_tuIjF?>aWi4`(EGMb4lJT)*s7~*vZtwXn@=x#d%|7=Py6!p8 zvkHCeAd7$S3BTxo`@?u!_PSn~h|kXlI=p?a^Vf>*?(N^K$nj-q^mO0sAfNB6?(cE` zG=9pI+>CSFH+F3Q_&~nLg3shJU&*7H?QkmgrnJ(R(MR>)#&RPPG z*)9Ckwp@#kBac;@Vr3ecmqW)*OKN}Vj?HZVf8tD4R?jVF{5{iztZ(DkHeE}_Wt*Q7 z-&C_^4O?}k`X}q)NU!jEvf-DW0pRhU}T0{l{lUX zdW;B$d)^3ufH^d}c_RTj`KPlKyGQ<&s-wxR8}2hDqjUn86P_aa;hKLQSV~bg8v)W{YUza2+MJG@Lr5Tcsz~Z(==F)mW<)O9 zq@%Yi+S{0%<$2SgFEE;HqsB$r>~WL+S|W>RUYh^Vkhc)(SE+z)>s^r6QH9EvxN-Bz zd-T~UA6l&5xDH)=>gOarihg^hsEqoW?U@E<+the@8bhF9$||d`vj=}O1}%T%R%=n2owwa=Wjl8y|fD(?yb9f1aS9 z3dRNq_IG9@BTcgT>J)$MEG_q!8EI($yj#%v5S{lvMg#kF(m8_)F@-WOW0uAx0iy9B zZm|VPYj?_;R$A=1$6JqFTwF?zcG%j&p2YP<|F4p4=R$W-gn}EQ=XJAQ!rgc19lI-h zo5~f;fAf;~uvjq{-6n+B!p)oPw#7(GAESGS2>`2Mx+xX;Jc@tw&JPw!!8MoR1io+U zJay~er|`NMvXg(rrHldorbe|T%Cq5&C zoFF{c2j_$(FY$khTF;^flt9>mdKH{Q0+oe5&1esT0J@eAcetblt|Eg*-NRo>2t%1x>MdmseI3O1?IwimxCOH3DqA-yg^*u~<0rTJh3AmLa8nK2j+#co_ z=oILoaX3h1;AJWT$2b~jkB?d+A#XD!6Zwl*ev=}Zf*5~A+qJMGXla)uRzi+Ml!Ig~ zq!k-LV}nhoAYPhzq#`>rs+-+#B<=$waSF7y?hxcFXb@IiI5-}!5|J$J(p>(vOc9Z8kGg!|#o+J-ovq<6$HUm+T zON)ErBCPC0BTFW45(Ryi4IKi?${A)d5rvG`%K3jZ;k|5ZowJ)r?Qx>kRR*2G^wyGW zxtXT!P>@+DDLtFW9f~d0f)mVVEcsBmvmC;b<sbJeaSh(Mj(LIN z78`wLq>C!mfg$huH>WHYBjC>||`sD$>d1*o&=_$Ioz)B+N zEK}0p6a;O9H*_=HZ=2gni4yEE4eV0fM%RB%aoU%4l)VCUF(_RRnRR2%2*-Afr!};U z?S*RSQ@1_}GwIDmByudnHw_Zf0N25=Am(9Di3>GD6>Dd74Biz+T)_cbp}^&XRwTv| z&}h!5yOh(d4AbLddoJx3)YaLCNg?8ExeP%pb#Wk>EZjCyki%-KFn&kcki$3`d@z5m zf{dd}`dftzUNg3JEfioht$)l|UN$6BNYt_#S zt5Y2)>E2?M(#5u~wDAn(3Vx-7r%dh}IC#$U|w=CWJe5Nh7Nbc;`2PQ2qcwD`rJlyQ|u`{OWgoy=!099}taW)JQ3 z4u@=WJF~py3p)4Dqg`}(*ZlwJrxRUJQx4W&vl7ipZ*{+gj`1cYedV}J>Y?V`{136 z#hjd7mwGQe9ZroHze9=WjHmhJX+HPL*W-25OMKMHj(H?+74nhC`saVf_0oqE^$JXz z4&M;m#jD;ueHZ;vexXpikQeuyjXk3-&wC^L{`VnP=6%PCRoL_1@lJoBz02buCv9jx zXhC~441zEGIh_9blh*!$vaijM9|-xeSAG+i&!AZ#paAOsLyY2tkMvO+M`S*|a_ur2GlLpj{|C8sH-t3v5Kg2-+#EA=}p9jRq3_M`^$;lfjCnjJwH%?o?q=WFdHL zp~jh@ZJ;3AIiLE)$r;k%4N_o?;DHS~pa9?jANe#oH)_FM8;7V6eBqXBr8k@dHsLRLyF;3S)`qn7``mtz`1eBu&noMsnXj<_ApHo=n~(HPoa{2BlCAWjwXy@A2df_@q%t zUQwPxMMC9iOl4Fa|K$Pcr1mZ4CpBf!0A*Fu8dw^fSXyIFCS~%yWLIj?SCXX)NF`Lh zC0t(R0iA#4_@$*<0s-K)I` z!Ofg!mL_Pv=2O-tRraQD{-$cKrmpOyZtiAmUgm#n7M^kj9&=s~_|4o_I>~Fo0%9hn zaHb@7W~Xy*4|KwubXo&-9_DENCJ_c_c><@(i6CJrh7pJSr4Cl0KB{3x>SD1#>JX)dczzUpR1E1q3zmL038X5O??>zKx8wmO-(G8wsMr?P{M0DR;z5VLwFT^n?km57>wiw_v*s%+ z3F@FC>A_;?z)BXrj-SMKV8c4BAz^>WCo1fDLhHgZY{8CUzb2=}9+t_*9LNF^#%3%` zK?lb&Xu`&<%HEpDjx5BMD9Zkp&h9MDBAm^lpuAcn&(_z+`s|AVt@)Acl@cw!vFp)l zS<)&k&d&d+%z7-;9uUiBtk6QJ(Y7nrMs2IQD%JX^)t+h7@~YI*-qKzt+A@Ev+rBN> zhV7KLEZ62E+%jy(%I##S?b?#9lA0~7;_a7SP|M!l#ttsRC2m$d?cNfM)($G$#%JSN z>*D5T--@2yo~Y##-po2K--_*#YVHSeZq}BrmYr^q((Ts%EuW??<$3Mrni}T%o#Y~{ z-d3*cnjY=eZtEIq;99Hh?rwkR?&wFJAV6lr>k8i2GOzFg4ezd9iU@!MSj;D?ftmML5<9UtLU9uxm*EJU@=n$jW?n5eo)&NM4^Tx-9cyn4c%nPb zA0fjbK|WyoelPvvu^w-o3;P@Tts-r7Zy@L3{ze}oH?sUXvZg_Dxf!n>$iVF#t|$?( z0ek;0DtB@M6R(KcE{5iD+phAs@p0t(u3Ty|na(mR*YX7GuxvxKl3r`YA`b`H&g{tu zck4ZiXFQkfJm-I|LjxT|M>IGS>q7TlE?ackVKj9nG(LLtG=Fq6hxBn`Gd(x7Y@Req z_cA<>^iHyK&b~A~yt7QNbVYA-@ZR+Q9kh(iv{nvuxc;=hrnH4>w6nJKCLcB5CAFpw z|241H^o(*e+U4}v?sWJz^*BE@RL8VVBW_7YY*Byp@&tc%flW2ClC@2rwUMPYbgi{g znsr&fHLb<9WzBW+U3Is0^0hu6BR;w01Auc7E2iTlY3;3%0NZw}I|92vT%$%ieJ#_f|W#HdD8AyUuSHQgSJ%mF8HKvIEPob zh5vVD2l(WsHicLCgJ*PvlkS9P_J^m`g@5aaoAh|!?uVmzii`Jv6ZC#t_l=9RieD^? z^Qnu!c!(P_kn3|cv-F7{ID+SRb@Q{17q^eA^ph_+l=F9iQ@K*hI4qYqYTI~|Ulx*Q zX@`H?nVFxti*Grkl6jyC`R@|Bn2))Y^YoS5d3~?BRCjqafBBHBxtz~fhSO%B8!DQ6 zDxe2?R4@Zfo${T#G8`Cvms{ViaO%p>=f|2jlM zx`0PHlf!ttM#BUjq$p|v2Fl>953r%*WT$`cxRy)0mqh~tI6xtf;u~(l1QI(XpKr1& z`?528vpf5Z7re2fJ`$)kMAYl5+Z>AWx0AJZTr zTi^uBd>Bk{8mfHG+W^Gtyv~n&&jWqF2mR0|&B+`2kwb$8V=|T4yOHRJ(G&l@%DZUP zOUBPrJ<3D<)oXoeWIgQ6yUV`1C>?+9*5~{_k^R}DecG%2gP>E(yL@S|A%eOr|E|4K zaDe)vB7$O5EmShy*F8f>Fjv+9{F(%y+d)cCB3GA5sn@N#ANLX}vP1{YNamh=i6D?6L?*%c%DBIzMT$WlpTD?ERUH)(bTH&PI3 zMpz@a5&%q0U47dkCwaUY94X0CgQ8+hULGeSnwBz>V);yB9xp%tg;uG|zC3Az7`~3$ zg_gj91PlJ4x5b+X7QHSlbVo0urz>p&Efd5lhomZ*BzkOw!i^bkBQ5^{3U)=^$CZuT zFg$jOBg$?pYueOwO2>bh7wWcDSpn@`&MyXw8a--69tTv%aBjL@dV@A$cLqbLy zR^#Z*i6SZm)v>okkzggGB)mxIl9?q7_ZHKvt!A`&hR#mhy?k+`L5Hml*sG7U!T{_F zsp7>)=Q(2rZV8LWeJeAWJbCR6XOS)Qot%m?XVB3+TYlUE91DLos4!DD4VxtzU#WTe z1zoAL7skAM)A|TVZ|vb;R1rUpJUO1fnw2}Bnr4&l>C}rnzfScv_U+tZ>+TNTdG+z+ zdxSraKE3+&?Av2655Kzm`Sk1CzmGrvo%sBF>;Dg6fC3IkU}gOs|Adkxeg;ZtoeMc(=9z0Q z%4nm)q#?}?I;bFNrIcPeX{MHHis`1Fb_yz|qJBDRsHC0>YEVohI;5knz6z@z(T#XY zS2?gMWURXG%IjqSfk=gLx8fROuf`r5>#QQy+61vVA`5M_X-5A+Vz9R2;B2wdZp$r@ z%7!?}wKsoc3uCwDo=fAmA&MYw7UXt_ZoKl6sP2d1Hv2BT^X|)Uh17B(pmj9kV%d~z?u9``45%Pw#C z@2auw&`dS~cfu~dE3^D^&pr=#@n42XCWlH*2>pMn6J+WENDHDk0JSNdq}=h&{QZn| z)}JL^0|FatP=EtqV?ilUZYuBxC>%sxzy_#XI}R{hivft+Vs8NT2HG*g@vv6Ir*+_h z-xM_1K)DT+4A`LIwwurBC4d57r87xTW`raF-old6LEB)D|DdWl z2&EE`w6x?cfBCaqK1i11>Ln|IiA;Z&84_4#RHZSClFVqfOqdQLrn{cm7-?#AV$^KV zE@z2Nqil1W2kRz-teMDgLX({Al$SXdWUWuC(?jj7=egdgpl=p)o&~X|Kex3^dvTJN z{QS*74~ndTYG{t~Ea)r{3ejGn#V&2BC`B)7(Trkr|Dzi1C`Ui)(U5|4q#1vu-aZ}r z(1@y3SCipDOJB+Ym&O#P0g!1;X=>A);&i7o?deT@s#Boy^ru7(YEfO&B$NtdrA%$A zIh49or%H9ID1&NBsfyLCD#EHL(yCX#$~msa0<2^$Ynj9f3$veZ=ued}KTs?vYH9s#g~g{WY6RM^DY^RS3jtYf#ySRy=jvf7NSWGRc; zTUvIrob9YigvW5Ev;!!i`vwxcD1Z+t!rNk+t|u>wzRFSZEuU)-0F6>yzQ-T ze+%5;3U|1~Ev|8oi`?WYce%`Mu5+IY-RMepy3~`cu63`A-Rx?2yWD^6u6Mr+-tdZd zyyPvfdC!a9^s0Bg>}{`m-wWUP%6Go>t*?FWi{Jd}cfb7YuYdmw-~bDFzyvO^fe(z} z1S@#K3~sQ49}M9LOL)Q*uCRqKjNuGxc*7j-u!lbk;t-2?#3U}UiBF8;6svf}EN-!j dUku|I%Xr2#uCa}8jN=O&>v+dJ-f;*306U7J_zM64 diff --git a/microsite/blog/assets/20-10-22/cost-insights-2-engineer.png b/microsite/blog/assets/20-10-22/cost-insights-2-engineer.png index 44f105b7e48347d66f7773d72d8e36ddb29dc097..1e9293f5c19eed25b76053ecdcb31ee51e3669f4 100644 GIT binary patch literal 197810 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 Xu9?NMn0`DSUuCFgqWe(C{;&TBpyu4V literal 238388 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�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�`3FES0&s}TKI4}C_l4>Pu&<{a_oFcV9|;$l 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

14&WgmW0Qa>pjzj#~7j4RQ4ksoXz&O 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 U9z1KNrh0iC@cyb|e?ZFr0;~{%IRF3v diff --git a/microsite/blog/assets/20-10-22/cost-insights-3-data.png b/microsite/blog/assets/20-10-22/cost-insights-3-data.png index cf5257d773d2ef3afbd234e6ecd2bed53c1ac93c..941f0487da2e3cbbce8f134d6d90c909c940e9b0 100644 GIT binary patch literal 206998 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%0A<83_i1LS=VZp*}GkwMl(*SbnqVkyw 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

&N~c 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%0DX?A&Hgk1~d9F953ZP>W8TvLI$4Jg4qzoN7 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

(fdG?|g0M-&v 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

jbIjt;9yA4quKi%)=?_m^W1uK_bI6^^Ex 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

XjP@6klZ7jZ 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/packages/core/src/components/EmptyState/assets/missingAnnotation.svg b/packages/core/src/components/EmptyState/assets/missingAnnotation.svg index 4f69605e6a..08f5a513eb 100644 --- a/packages/core/src/components/EmptyState/assets/missingAnnotation.svg +++ b/packages/core/src/components/EmptyState/assets/missingAnnotation.svg @@ -1,42 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/packages/core/src/components/EmptyState/assets/noBuild.svg b/packages/core/src/components/EmptyState/assets/noBuild.svg index d84f36af30..832d98efa7 100644 --- a/packages/core/src/components/EmptyState/assets/noBuild.svg +++ b/packages/core/src/components/EmptyState/assets/noBuild.svg @@ -1,44 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/packages/core/src/components/EmptyState/assets/noInformation.svg b/packages/core/src/components/EmptyState/assets/noInformation.svg index c199cf8b13..9a1c230e97 100644 --- a/packages/core/src/components/EmptyState/assets/noInformation.svg +++ b/packages/core/src/components/EmptyState/assets/noInformation.svg @@ -1 +1 @@ - + \ No newline at end of file From 6611a8e719df7989107f41a438f46ddeb5eca396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20=C3=85lund?= Date: Thu, 22 Oct 2020 14:53:31 +0200 Subject: [PATCH 272/323] Fix Cost Insights demo video --- microsite/pages/en/demos.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/pages/en/demos.js b/microsite/pages/en/demos.js index 6c2eb1b769..63c15ab698 100644 --- a/microsite/pages/en/demos.js +++ b/microsite/pages/en/demos.js @@ -103,7 +103,7 @@ const Background = props => {

XjP@6klZ7jZ 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 { - + + + + Control cloud costs + + How do you control cloud costs while maintaining the speed and + independence of your development teams? With the{' '} + Cost Insights plugin{' '} + for Backstage, managing cloud costs becomes just another part of + an engineer’s daily development process. They get a clear view of + their spending — and can decide for themselves how they want to + optimize it. Learn more about the{' '} + + Cost Insights plugin + + . + + + Watch now + + + + + + + + + @@ -96,7 +130,7 @@ const Background = props => { . - + Watch now From a0d83b92e7da51af4fa4c79275fde499afc1a85a Mon Sep 17 00:00:00 2001 From: ImgBotApp Date: Thu, 22 Oct 2020 12:36:24 +0000 Subject: [PATCH 271/323] [ImgBot] Optimize images *Total -- 1,691.92kb -> 1,596.19kb (5.66%) /microsite/blog/assets/20-10-22/cost-insights-3-data.png -- 248.48kb -> 202.15kb (18.65%) /microsite/blog/assets/20-10-22/cost-insights-2-engineer.png -- 232.80kb -> 193.17kb (17.02%) /packages/core/src/components/EmptyState/assets/noBuild.svg -- 4.37kb -> 4.31kb (1.43%) /packages/core/src/components/EmptyState/assets/createComponent.svg -- 4.78kb -> 4.74kb (0.94%) /microsite/blog/assets/20-10-22/cost-insights-1-dau.gif -- 1,191.17kb -> 1,181.58kb (0.81%) /packages/core/src/components/EmptyState/assets/missingAnnotation.svg -- 7.73kb -> 7.67kb (0.76%) /packages/core/src/components/EmptyState/assets/noInformation.svg -- 2.58kb -> 2.57kb (0.04%) Signed-off-by: ImgBotApp --- .../assets/20-10-22/cost-insights-1-dau.gif | Bin 1219760 -> 1209933 bytes .../20-10-22/cost-insights-2-engineer.png | Bin 238388 -> 197810 bytes .../assets/20-10-22/cost-insights-3-data.png | Bin 254445 -> 206998 bytes .../EmptyState/assets/createComponent.svg | 37 +------------- .../EmptyState/assets/missingAnnotation.svg | 43 +---------------- .../components/EmptyState/assets/noBuild.svg | 45 +----------------- .../EmptyState/assets/noInformation.svg | 2 +- 7 files changed, 4 insertions(+), 123 deletions(-) diff --git a/microsite/blog/assets/20-10-22/cost-insights-1-dau.gif b/microsite/blog/assets/20-10-22/cost-insights-1-dau.gif index 742536a89cfa6a5443f1efc1fbad65b28a9258c9..df9396439dbbbc952f9480e2201b6f5345f82608 100644 GIT binary patch delta 200454 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�}GWd*MWHJ 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%0AtR;K7l6O5=1`OrtF0E*wEa?=F5Wp#3C~CX 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